數字觀星Finger-P指紋平臺2021新年活動
聯合主辦方:觀星、谷安學院
贊助:零組文庫
地點:https://fp.shuziguanxing.com
前菜:
關注公眾號:觀星,並公開轉發文章到朋友圈即可參與抽獎活動,禮品池有:
20個數字觀星吉祥物玩偶
5個零組文庫邀請碼
2份100京東卡
將於2021年1月13日公布中獎名單(兌換時需提供公開轉發文章截圖)
主菜:
時間 2021年1月9日 0:00:00~2021年1月22日23:59:59
獎品:
在活動時間期間,提交指紋的星豆數達到2000個即可額外獲贈200京東卡,星豆數達到5000個即可額外獲贈500京東卡,如星豆數達到7000個即可額外獲得200+500京東卡。(ps:每500星豆可兌換500京東卡為平臺基礎獎勵,以上是活動期間的額外獎勵)
活動結束後結算活動期間提交積分前15名用戶可獲得零組文庫邀請碼一份。
特別獎品:活動結束後結算活動期間提交積分前3名用戶分別可獲得:
第一名 CISP-PTE免費培訓名額(谷安學院支持)
第二名 CISP-IRE免費培訓名額(谷安學院支持)
第三名 DevOps Foundation免費培訓名額(谷安學院支持)
4- 6名 數字觀星定製充電寶一份
7-10名 安全牛商城定製保溫杯(谷安學院支持)
10-20名 便攜時尚U型枕(谷安學院支持)
甜品:
針對實習生人群,提交指紋通過數量達40條,可申請由數字觀星頒發的編寫指紋能力認證(企業行為),為你的簡歷增添色彩。
最終解釋權歸數字觀星所有
特別感謝:
感謝谷安學院、零組文庫的大力支持。
請通過抽獎小程序參加抽獎活動:
一、 前言
我們通過玩一個小遊戲——找不同,來引入話題。
在上述圖片中,你一共找到幾處不同的地方?6處?7處?
接下來公布正確答案:
99%的人一定都至少找到圖片中的6處不同,但可能只有1%的人發現了藏在手指上指紋的不同。讀到這裡可能會有人想,「圖片裡指紋那麼小,誰會注意到?就算注意到了,誰又能那麼仔細的看出來兩張圖的區別?」但正是這最細微的差距,決定了1%和99%的人的區別。
什麼是指紋?
指紋,也叫手印,即是表皮上突起的紋線。由於人的指紋是遺傳與環境共同作用產生的,因而指紋人人皆有,卻各不相同。由於指紋重複率極小,大約150億分之一,故其稱為「人體身份證」。人體指紋識別隨著科技的發展也越來越廣泛的運用在我們的日常生活之中,我們不妨來數數看:每天早上我們通過指紋識別解鎖手機、去往單位的路上通過指紋付款購買豆漿和包子作為早飯、到達公司再用指紋打卡上班。僅僅一個早上,我們至少做了3次指紋識別。
在網際網路數字資產管理中,數字資產指紋就是數字資產的「身份證」,也是信息系統安全管理工作的基礎。通過網絡資產探測(指紋)可以在0day爆發時快速匹配到受影響的信息系統;還可以發現違規開放的資產,為安全運營管理提供便利 ,確保安全制度的穩健實施。指紋識別更是基線管理的基礎,正如生物指紋對於生物的價值一樣,數字資產指紋識別也在數字資產管理中起到了至關重要的作用。
在實際的滲透測試過程中,信息收集是非常重要的基礎工作;在信息收集中,指紋識別則信息收集環節中最基礎也是最重要的一步,全面、準確的信息收集可以使你在安全檢測的時候更加的得心應手。如果把滲透比作探索黑暗迷宮的話,那指紋信息收集就是前期的「跑圖」,它可以幫你點亮迷宮的大部分地圖。
所以,不論對於攻擊方還是防守方,數字資產的指紋信息的收集都是非常重要的。(PS:業內某大佬說,「黑掉全世界的第一步就是搜集指紋」。所以想成為黑客或者想要學習黑客技術的同學們,就把指紋收集當成你「偉大」壯舉的第一步吧!
(1)node.js環境的安裝,官網下載地址https://nodejs.org/en/
(2)通過Node.js安裝wappalyzer
記住這個路徑
C:\Users\xx\AppData\Roaming\npm\node_modules\wappalyzer之後講解調試指紋有用
(3)使用wappalyzer指紋識別
A、網頁中發現關鍵字
B、特定文件的MD5(主要是靜態文件、不一定要是MD5)
C、指定URL的關鍵字
D、指定URL的TAG模式
3、指紋識別分類基於Wappalyzer的指紋識別分類
分類編號
分類名稱
中文名稱
備註說明
1
CMS
內容管理系統
例如:wordpress
2
Message Boards
留言板
例如:phpBB
3
Database Managers
資料庫管理
例如:phpMyAdmin
4
Documentation Tools
文件工具
例如:GitBook
5
Widgets
窗口小部件
例如:Facebook
6
Ecommerce
電子商務
例如:Wikinggruppen
7
Photo Galleries
照片畫廊
例如:phpAlbum
8
Wikis
維基百科
例如:ikiwiki
9
Hosting Panels
主機控制板
例如:cPanel
10
Analytics
分析統計
例如:Webtrends
11
Blogs
博客
例如:Typecho
12
JavaScript Frameworks
JavaScript框架
例如:SoundManager
13
Issue Trackers
問題跟蹤
例如:Redmine
14
Video Players
視頻播放器
例如:Asciinema
15
Comment Systems
評論系統
例如:Question2Answer
16
Captchas
驗證碼
例如:Mollom
17
Font Scripts
字體腳本
例如:Ionicons
18
Web Frameworks
Web框架
例如:Includable
19
Miscellaneous
其它
例如:Twitter Emoji (Twemoji)
20
Editors
編輯器
例如:FrontPage
21
LMS
學習管理系統
例如:Dokeos
22
Web Servers
Web服務
例如:Apache
23
Cache Tools
緩存工具
例如:wpCache
24
Rich Text Editors
富文本編輯器
例如:TinyMCE
25
JavaScript Graphics
JavaScript圖形插件
例如:Timeplot
26
Mobile Frameworks
移動框架
例如:Mobify
27
Programming Languages
開發語言
例如:Go
28
Operating Systems
作業系統
例如:Gentoo
29
Search Engines
搜尋引擎
例如:Fact Finder
30
Web Mail
Web郵件
例如:SquirrelMail
31
CDN
CDN
例如:Netlify
32
Marketing Automation
自動化營銷
例如:Marketo
33
Web Server Extensions
Web伺服器擴展
例如:mod_wsgi
34
Databases
資料庫
例如:Mysql
35
Maps
地圖
例如:Ushahidi
36
Advertising Networks
廣告網絡
例如:Titan
37
Network Devices
網絡設備
例如:Moxa
38
Media Servers
媒體伺服器
例如:MediaTomb
39
Webcams
網絡攝像頭
例如:MOBOTIX
40
Printers
印表機
例如:Dell
41
Payment Processors
付款處理器
例如:Stripe
42
Tag Managers
標籤管理
例如:Google Tag Manager
43
Paywalls
付費
例如:Piano Solo
44
Build CI Systems
持續集成系統
例如:Jenkins
45
Control Systems
控制系統
例如:Schneider
46
Remote Access
遠程訪問
例如:ShellInABox
47
Dev Tools
開發工具
例如:Phabricator
48
Network Storage
網絡存儲
例如:Synology DiskStation
49
Feed Readers
Feed閱讀器
例如:Planet
50
Document Management Systems
文檔管理系統
例如:MHonArc
51
Landing Page Builders
引導頁
例如:ApexPages
52
Live Chat
在線聊天
例如:Aircall
53
CRM
客戶關係管理
例如:Salesforce
54
SEO
引擎優化
例如:Yoast SEO
55
Accounting
會計
例如:Akaunting
56
Cryptominer
挖礦程序
例如:ProjectPoi
57
Static Site Generator
靜態網站生成器
例如:Hugo
58
User Onboarding
聊天機器人軟體
例如:instabot
59
JavaScript Libraries
JavaScript庫
例如:jQuery
60
Containers
容器
例如:Docker
61
SaaS
SaaS
例如:Amazon ECS
62
PaaS
PaaS
例如:Amazon Web Services
63
IaaS
IaaS
例如:LocalFocus
64
Reverse Proxy
反向代理
例如:Nginx
65
Load Balancer
負載均衡
例如:Amazon ELB
1000
Service Banner
服務版本
例如:SSH
1001
Securities Web
證券行業web
例如:thinkive雲投顧
1002
Securities Remote Access
證券行業遠程訪問
例如:同花順
1003
APIs
API接口
例如:RESTful
1004
Web Management Interface
Web管理端
例如:管理後臺
1005
Router and Switch and VPN
路由器、交換機、VPN
例如:Cisco、Huawei、Sangfor
1006
Security Application Products
安全應用產品
例如:防火牆、防病毒、上網行為管理等
1007
Office Software
辦公軟體
例如:OA、財務軟體
1008
IoT
物聯網
例如:IoT設備
1009
Application Services
應用服務
例如:FTP、Telnet、SSH、RDP等
1010
Trojan Backdoor
木馬後門
例如:Backdoor
1011
Application Frameworks
應用框架
例如:spring
1012
Protocols
協議
例如:3CX Tunnel Protocol
指紋分五層
應用層:主要是各種web應用系統以及前端js框架等,比如dedecms、xxx應用系統、郵件系統等;
支撐層:主要是語言、後端框架等,比如java、php、struts、spring等;
服務層:主要是服務和應用,以及協議,包含openssh、apahce、tomcat、ssl、ntp、icmp等;
系統層:主要指作業系統,包含Linux、unix、centos、Ubuntu、Windows等;
硬體層:主要是硬體設備為主,包含路由器、交換機、防火牆、VPN、waf(現在不區分軟waf)、以及物聯網等設備;
4、指紋規則基於Wappalyzer的指紋規則說明
欄位
涵義說明
備註
cats
分類,會有多個分類
參見指紋分類表中的分類編號
icon
匹配軟體官方ICO
可以不寫
website
匹配軟體官方網站
implies
推斷,例如:存在wordpress,一定會存在php mysql。
可以不寫
excludes
排除,存在一個指紋,就肯定不會存在另外一個指紋。
可以不寫
js
匹配<script></script>之間內容
例如:"js":{"js_test": "(.*)\\;version:\\1"}
<script>
var js_test = "shuziguanxing";
</script>
headers
匹配response返回的頭信息
html
匹配html返回內容
要求必須精準,否則誤報很高
url
匹配傳遞URL中的數據
要求必須精準,否則誤報很高
cookies
匹配頭信息cookie內容
meta
匹配<meta>標籤中的參數和數據
script
<script src=匹配數據></script>
confidence
信心值,百分制,例如:50
"js": { "Mage": "\\;confidence:50" }
version
版本匹配信息
"script": "jquery-([0-9.]+)\.js\\;version:\\1"
product
產品名稱匹配
"html": "天融信(.*)</title>\\;product:\\1",
支持子表達式
\\1
返回第一個匹配數據
\\1?a:
如果第一個匹配數據存在,則返回a,否則返回空
\\1?a:b
如果第一個匹配數據存在,則返回a,否則返回b
\\1?:b
如果第一個匹配數據存在,則返回空,否則返回b
xxoo\\1
返回xxoo+第一個匹配數據
description
指紋應用描述
非必填,比如nginx,Nginx 是一個高性能的HTTP和反向代理web伺服器。
_fingerprint_test_url
測試指紋是否準確的URL
必填項,比如通過網站檢測指紋。
5、指紋識別例子講解
"Struts":{ "cats":[ 18 ], "description":" Apache Struts是一個用於開發Java EE網絡應用程式的開放原始碼網頁應用程式架構。", "html":"(?:href|action|src)\\s*?=\\s*?( ?:\"|')[^http|https]\\s*?( [^'\"]*?\\.(?:action|do))\\;confidence:50", "layer":2, "url":"(/.*\\.do$|/.*\\.action$)", "website":"http://struts.apache.org/" "_fingerprint_test_url":"https://www.shuziguanxing.com/" }描述:struts組件,分類18(web框架),匹配html中是否存在action,do後綴,定義可信值50,匹配URL中是否有do和action後綴,description是簡單描述這個應用,layer是指這個應用屬於5層中的那一層,該應用數據支撐層,_fingerprint_test_url為指紋識別測試的URL,默認不定義可信值則為100。備註:總體可信值如果超過100,也只會返回100。
6、簡單分析wappalyzer的執行過程Wappalyze執行文件在C:\Users\xx\AppData\Roaming\npm\下
Wappalyzer的包目錄在
C:\Users\xx\AppData\Roaming\npm\node_modules\wappalyzer
這裡我們重點看apps.json文件,apps.json文件是個什麼東西呢?apps.json
記錄的是整個的指紋規則,之後我們自己編寫的指紋就是要放進這裡調試。
看下裡面是一個怎麼樣的構造:
"$schema":"../schema.json", "apps":{ ".NET":{ "cats":[ 22 ], "description":"", "html":"content=\"Visual Basic .NET 7.1", "layer":1, "website":"https://www.iis.net" }, "04WebServer":{ "cats":[ 22 ], "description":"", "headers":{ "Server":"04WebServer/?([\\d\\.]+)?\\;version:\\1" }, "layer":3, "website":"http://www.soft3304.net/" } } "categories":{ "1":{ "name":"CMS", "priority":1 }, . }}Json文件裡面有兩部分apps與categories,我們可以發現apps裡面的信息跟上面指紋例子特別像,其實我們之後寫的指紋就是放在這裡面進行識別網站的,categories是指紋的類型,這項可以不用管,只看apps。
7、調試編寫好的指紋Wappalyzer在執行行過程中會調用apps.json文件內容進行指紋匹配。所以我們編寫好的指紋放進裡面進行調試。
如果你希望只顯示你要調試的指紋的話,你可以把apps.json文件備份為apps.json.bak,然後把apps.json中的apps部分裡面的內容刪除,只放入自己編寫的指紋。
以織夢cms為例子,執行全部的指紋:如果僅僅是測試cms,不想看到那麼其他信息,你可以刪除其他指紋,留下我們寫好要調試的指紋,這樣看起來就很清晰了。
三、 實戰編寫你的第一個web指紋總的來說,我們要寫指紋,首先是要有的放矢,尋找要寫web指紋的產品,有了產品目標,再尋找線上的產品樣例,然後確定在數字觀星Finger-P指紋平臺不存在這個產品指紋,隨後編寫指紋,提交指紋,這就是整個流程。
1、 查找線上樣例上shodan:https://shodan.io查找「zentaosid」(禪道)
2、 判斷觀星指紋平臺是否存在該指紋(排重)複製sofa查找到的目標到觀星指紋平臺,沒有該web應用指紋信息,那我們開始編寫這個web應用的指紋。
3、 觀察該web應用(1)cookie:zentaosid
(2)html
(3)script
4、 依據以上特徵編寫指紋下面的是依據上面分析來寫的,圈出來的信任值只是方便編譯時,查看命中哪條記錄,等最後調試完成後再按實際情況給信任值。
5、 提交到指紋平臺。https://fp.shuziguanxing.com/#/batchAdd
四、 批量編寫web指紋思想根據上面對指紋編寫的了解,我們知道要編寫指紋,大致可以分為五個部分:3、 排重:在數字觀星Finger-P指紋平臺不存在這個產品指紋從批量編寫的角度,我們可以從這五個部分一一拆分去批量或簡化。
1、 批量尋找產品:批量尋找通用的產品我們可以通過類似https://www.oschina.net/project,去批量獲取產品名錄;或者是批量獲取web軟體廠商名錄再去空間測繪的站點批量收集廠商的產品名錄;又或者直接範圍較廣的關鍵詞在空間測繪引擎中搜索批量獲取名單,諸如地名,應用類別名稱等關鍵詞。還有更多思路等待各位朋友的發掘。https://www.oschina.net/project示例:https://www.cnvd.org.cn/flaw/typelist?typeId=29示例:
https://www.shodan.io/示例:
某fa示例:
某eye示例:
2、 批量尋找線上樣例與排重當第一步完成的時候,批量尋找線上樣例這一步也就水到渠成了。直接接入到空間測繪引擎中即可。如果第一步中的產品列表就是從空間測繪引擎中獲取的,那麼這一步的準確率將會非常的高。但與此同時我們需要考慮排重的問題。可以接到指紋庫中查詢進行大概率排重。也可以考慮在批量尋找產品的時候,在大方向上避開Finger-P指紋平臺上已有的大塊,這個需要對Finger-P指紋平臺已有指紋的大塊有所了解和自行分析。通過避開Finger-P指紋平臺上已有的大塊來簡化排重這一個步驟。
https://fp.shuziguanxing.com/#/fingerprintList
3、 批量編寫指紋
當你書寫了多個以首頁特徵的web指紋,你會發現,指紋往往會出現在一些比較固定的地方,例如:server頭,title,meta信息等,所以我們可以在拿到線上樣例之後就獲取這些地方的信息,自動化拼接成指紋,後面再人工去快速篩選,處理即可成指紋半成品。還要補充廠商url,以及產品說明等信息,這一步可以對接搜尋引擎,為我們減少工作量。簡要代碼示例:注意:有一些類型的指紋是需要多行正則匹配,所以整個流程中,需要人工花時間最多的就是這一步的數據處理。上圖的欄位已經不全,請按目前的指紋要求進行編寫。
4、 提交指紋經過前面的努力,只需要到https://fp.shuziguanxing.com/#/batchAdd的「批量提交」中一次導入幾十條,上百條不可謂不痛快,成就感滿滿。五、 寫在最後本文從web指紋介紹,實戰編寫第一個web指紋,批量編寫web指紋,三步走來帶領讀者從入門到深入。但本文只是一個思想啟發的文章,更多的是希望啟蒙讀者能開發出更多的思路去編寫指紋,從而鍛鍊到思維和能力。我們已建立相關技術交流群,歡迎入群交流技術和感受活動氣氛,入群可聯繫vx:Jack_Chan_Jack ,二維碼如下: