精品国产免费观看久久久_久久天天躁狠狠躁夜夜爽_无码人妻少妇久久中文字幕_狠狠做深爱婷婷久久综合一区

互聯網知識

精準傳達 ? 價值共享

洞悉互聯網前沿資訊,探尋網站營銷規律

查看其它板塊

Web指紋識別技術研究與優化實現

作者:github.com/TideSec | 2021-11-25 09:31 |點擊:

本文通過分析web指紋的檢測對象、檢測方法、檢測原理及常用工具,設計了一個簡易的指紋搜集腳本來協助發現新指紋,并提取了多個開源指紋識別工具的規則庫并進行了規則重組,開發了一個簡單快捷的指紋識別小工具TideFinger,并實現了一套在線的指紋識別平臺“潮汐指紋”,希望能為大家帶來方便。

 

前言

在web滲透過程中,Web指紋識別是信息收集環節中一個比較重要的步驟,通過一些開源的工具、平臺或者手工檢測CMS系統是公開的CMS程序還是二次開發至關重要,能準確的獲取CMS類型、Web服務組件類型及版本信息可以幫助安全工程師快速有效的去驗證已知漏洞。

在指紋識別的學習過程中,借用了很多開源的工具和指紋庫,如fofa、WhatWeb、w11scan、WebEye、御劍等等,在此感謝各種大佬的無私奉獻。本文并無技術上的創新和突破,只是把一些指紋庫重新進行了整合和梳理并進行了開源。

tips:文末有福利我們將搜集到的一些指紋工具、指紋庫等資料打包供大家下載

 

常見指紋檢測的對象

1、CMS信息:比如大漢CMS、織夢、帝國CMS、phpcms、ecshop等;

2、前端技術:比如HTML5、jquery、bootstrap、pure、ace等;

3、Web服務器:比如Apache、lighttpd, Nginx, IIS等;

4、應用服務器:比如Tomcat、Jboss、weblogic、websphere等;

5、開發語言:比如PHP、Java、Ruby、Python、C#等;

6、操作系統信息:比如linux、win2k8、win7、kali、centos等;

7、CDN信息:是否使用CDN,如cloudflare、360cdn、365cyd、yunjiasu等;

8、WAF信息:是否使用waf,如Topsec、Jiasule、Yundun等;

9、IP及域名信息:IP和域名注冊信息、服務商信息等;

10、端口信息:有些軟件或平臺還會探測服務器開放的常見端口。

 

常見的指紋識別方式

1、特定文件的MD5

一些網站的特定圖片文件、js文件、CSS等靜態文件,如favicon.ico、css、logo.ico、js等文件一般不會修改,通過爬蟲對這些文件進行抓取并比對md5值,如果和規則庫中的Md5一致則說明是同一CMS。這種方式速度比較快,誤報率相對低一些,但也不排除有些二次開發的CMS會修改這些文件。

2、正常頁面或錯誤網頁中包含的關鍵字

先訪問首頁或特定頁面如robots.txt等,通過正則的方式去匹配某些關鍵字,如Powered by Discuz、dedecms等。

或者可以構造錯誤頁面,根據報錯信息來判斷使用的CMS或者中間件信息,比較常見的如tomcat的報錯頁面。

3、請求頭信息的關鍵字匹配

根據網站response返回頭信息進行關鍵字匹配,whatweb和Wappalyzer就是通過banner信息來快速識別指紋,之前fofa的web指紋庫很多都是使用的這種方法,效率非常高,基本請求一次就可以,但搜集這些規則可能會耗時很長。而且這些banner信息有些很容易被改掉。

根據response header一般有以下幾種識別方式:

  • 查看http響應報頭的X-Powered-By字段來識別;
  • 根據Cookies來進行判斷,比如一些waf會在返回頭中包含一些信息,如360wzws、Safedog、yunsuo等;
  • 根據header中的Server信息來判斷,如DVRDVS-Webs、yunjiasu-nginx、Mod_Security、nginx-wallarm等;
  • 根據WWW-Authenticate進行判斷,一些路由交換設備可能存在這個字段,如NETCORE、huawei、h3c等設備。

4、部分URL中包含的關鍵字,比如wp-includes、dede等URL關鍵特征

通過規則庫去探測是否有相應目錄,或者根據爬蟲結果對鏈接url進行分析,或者對robots.txt文件中目錄進行檢測等等方式,通過url地址來判別是否使用了某CMS,比如wordpress默認存在wp-includes和wp-admin目錄,織夢默認管理后臺為dede目錄,solr平臺可能使用/solr目錄,weblogic可能使用wls-wsat目錄等。

5、開發語言的識別

web開發語言一般常見的有PHP、jsp、aspx、asp等,常見的識別方式有:

  • 通過爬蟲獲取動態鏈接進行直接判斷是比較簡便的方法。

asp判別規則如下<a[^>]*?href=(‘|”)[^http][^>]*?.asp(?|#|),其他語言可替換相應asp即可。

  • 通過X-Powered-By進行識別

比較常見的有X-Powered-By: ASP.NET或者X-Powered-By: PHP/7.1.8

  • 通過Set-Cookie進行識別

這種方法比較常見也很快捷,比如Set-Cookie中包含PHPSSIONID說明是php、包含JSESSIONID說明是java、包含ASP.NET_SessionId說明是aspx等。

 

指紋識別工具

在研究指紋識別技術的時候,不可避免的分析了大量指紋識別工具,在此將自己用過的幾個感覺不錯的工具和平臺介紹一下。

國外指紋識別工具

WhatWeb(推薦指數★★★★★)

下載地址:https://github.com/urbanadventurer/WhatWeb

Whatweb 是一個開源的網站指紋識別軟件,擁有超過1700+個插件,它能識別的指紋包括 cms 類型、博客平臺、網站流量分析軟件、javascript 庫、網站服務器,還可以識別版本號、郵箱地址、賬戶 id、web 框架模塊等。

Whatweb 是基于 ruby 語言開發,因此可以安裝在具備 ruby 環境的系統中,目前支持 Windows/Mac OSX/Linux。 在debian/ubuntu系統下可直接apt-get install whatweb,kali已自帶。

使用非常簡單whatweb http://www.tidesec.net即可,也可以加參數-v顯示更詳細的信息。

Wapplyzer(推薦指數★★★★)

下載地址:https://github.com/AliasIO/Wappalyzer

Wappalyzer 是一個實用的跨平臺網站分析工具,用于幫助開發者、研究者和設計者檢測網頁使用的是什么技術,以更好地衡量自己的項目中該使用什么技術。Wappalyzer 的功能和 BuiltWith 類似,可檢測內容管理系統(CMS),電子商務平臺、Web服務器、JavaScript框架和已安裝的分析工具等。

Wappalyzer可直接在chrome或火狐的應用商城直接搜索安裝。Wappalyzer目前可識別65個大類的1216個應用,查看可檢測的應用程序列表:https://wappalyzer.com/applications

Whatruns(推薦指數★★★★)

Whatruns是為chrome開發的一款web指紋識別程序,還可以顯示托管的CDN、wordpress插件、wordpress字體等,擁有豐富的插件支持。

跟Wappalyzer安裝類似,Whatruns可直接在chrome應用商城直接搜索安裝。

安裝完成后,通過插件圖標來獲取服務的詳細運行信息,效果如下。有時候信息會比Wapplyzer還詳細一些,但有時候獲取速度稍慢。

Plecost(推薦指數★★★)

下載地址:https://github.com/iniqua/plecost

Plecost是Wordpress博客引擎的漏洞指紋識別和漏洞查找器,能識別Wordpress版本并能查找到cve,不過訪問不了google的話可能有些功能就受限了。Plecost基于python架構,利用了Beautiful Soup來解析html、xml文件識別網站使用的插件及版本。

使用也比較方便 plecost -i /usr/share/plecost/wp_plugin_list.txt http://www.freebuf.com

BlindElephant(推薦指數★★)

下載地址:https://github.com/lokifer/BlindElephant

BlindElephant是一款Web應用程序指紋識別工具。該工具可以讀取目標網站的特定靜態文件,計算其對應的哈希值,然后和預先計算出的哈希值做對比,從而判斷目標網站的類型和版本號。目前,該工具支持15種常見的Web應用程序的幾百個版本。同時,它還提供WordPress和Joomla的各種插件。該工具還允許用戶自己擴展,添加更多的版本支持。

不過該軟件最新更新是在2013年,插件庫應該算比較舊的了。

下載及安裝可參考https://github.com/lokifer/BlindElephant,kali中已經內置。

使用命令:BlindElephant.py http://www.freebuf.com wordpress

國內指紋識別工具

御劍web指紋識別程序

下載地址:https://www.webshell.cc/4697.html

御劍web指紋識別程序是一款CMS指紋識別小工具,該程序由.NET 2.0框架開發,配置靈活、支持自定義關鍵字和正則匹配兩種模式、使用起來簡潔、體驗良好。在指紋命中方面表現不錯、識別速度很快、但目前比較明顯的缺陷是指紋的配置庫偏少。

windows下圖形界面,比較親民,掃描速度略慢,指紋庫略少,可手工更新。

Test404輕量WEB指紋識別

下載地址:https://www.test404.com/post-1618.html

Test404輕量WEB指紋識別程序是一款CMS指紋識別小工具,配置靈活、支持自行添加字典、使用起來簡潔、體驗良好。在指紋命中方面表現不錯、識別速度很快。可手動更新指紋識別庫,而且該軟件在2019.04月剛剛更新了一版。

w11scan分布式WEB指紋識別平臺

w11scan是一款分布式的WEB指紋識別系統(包括CMS識別、js框架、組件容器、代碼語言、WAF等等),管理員可以在WEB端新增/修改指紋,建立批量的掃描任務,并且支持多種搜索語法。

安裝和下載可參考:https://github.com/w-digital-scanner/w11scan

手工安裝稍微復雜,不過作者提供了docker部署,方便很多,使用了Mongodb,內置了1800多條常見的指紋,可以識別多達538種常見CMS,當然也可以手工添加指紋。

Dayu指紋識別工具

下載地址:https://github.com/Ms0x0/Dayu

“大禹”為一款c/s結構jar文件工具,只需本地安裝java環境,加參數-u即可,具體設置參數可參考github介紹。

WebEye

下載地址:https://github.com/zerokeeper/WebEye/

WebEye可快速簡單地識別WEB服務器類型、CMS類型、WAF類型、WHOIS信息、以及語言框架,使用異步實現指紋的快速識別。

識別速度比較快,不過指紋庫不是很多,指紋庫不是基于md5之類的,而是類似于fofa通過http頭信息、關鍵字等進行快速識別。

作者對指紋進行了分類,如攝像頭、waf、cdn、網絡設備等,很多指紋都是精心搜集的。

WTF_Scan

下載地址:https://github.com/dyboy2017/WTF_Scan

WTF團隊出品的指紋識別平臺,包括的功能也相對比較多,除了指紋識別外,還有DNS解析、子域名、CDN、端口掃描、敏感目錄等。

不過就單獨說指紋規則來說,不算很多,可以自己添加完善,在WTF_Scan/wtf/app/api/cms/cms.txt文件中進行指紋修改。

Webfinger

基于fofa的規則庫進行快速檢索,大約2000+條指紋數據,位于lib/web.db可自行添加修改。

下載地址:https://github.com/se55i0n/Webfinger

類似的還有個CMSCANhttps://github.com/cuijianxiong/cmscan/

FingerPrint

好像是百度的一個MM用perl寫的一款工具,調用Wappalyzer模塊進行指紋識別。

下載地址:https://github.com/tanjiti/FingerPrint

在線指紋識別

云悉指紋識別

http://www.yunsee.cn/

指紋庫很強大,速度也很快,我們前端還仿了下云悉的界面,免費服務,還能提供api接口!

如果指紋能開源就好了,哈哈~~

bugscaner指紋識別

http://whatweb.bugscaner.com/look/

目前好像指紋比較少,很多都識別不出來了。

whatweb.net

https://whatweb.net/

之前功能還不錯,現在好像只能查看到header信息了。

 

TideFinger

上面介紹了那么多超級工具,都不好意思寫自己做的小破爛東西了…大佬們可以關掉本頁面了…

通過對各種識別對象、識別方法、識別工具的分析,發現大家的指紋庫各式各樣,識別方式也是各有千秋,傳統的md5、url路徑的方式居多,識別header信息的也是不少,但沒有一個能集眾家之長的小工具。

于是我們就做了一個小工具TideFinger

https://github.com/TideSec/TideFinger

指紋庫整理

我們搜集了上面所有的指紋軟件,從中提取了指紋庫,進行了統一的格式化處理并進行去重,最終得到了一個大約2078條的傳統指紋庫。本來想把fofa的庫也合并進來,發現格式差異有些大,便保持了fofa指紋庫,并把WebEye的部分指紋和fofa指紋進行了合并。這樣就保留了兩個指紋庫,其中cms指紋庫為傳統的md5、url庫,大約2078條指紋,可通過關鍵字、md5、正則進行匹配,fofa庫為2119指紋,主要對Header、url信息進行匹配。

指紋庫優化

在對指紋庫整理去重后,對每個指紋進行了命中率的標識,當匹配到某個指紋時該指紋命中率會加1,而在使用指紋時會從優先使用命中率高的指紋。

然后我們從互聯網中爬取了10W個域名進行了命中率測試,然后對一些誤報率比較高的指紋進行了重新優化,得到了一份相對更高效的指紋庫。

未知指紋發現

目前新指紋的識別基本還是靠人工發現然后分析規則再進行添加,所以各平臺都有提交指紋的功能,但是我們沒有這種資源,只能另想辦法。

于是想到了一個比較笨的方法:從網站中爬取一些靜態文件,如png、ico、jpg、css、js等,提取url地址、文件名、計算md5寫入數據庫,這樣再爬下一個網站,一旦發現有相同的md5,就把新的url也加入到那條記錄中,并把hint值加1,這樣爬取10W個站點后,就能得到一個比較客觀的不同網站使用相同md5文件的數據了。

獲取鏈接代碼部分

excludeext = ['.png', '.ico', '.gif','.svg', '.jpeg','js','css','xml','txt']

def getPageLinks(url):

    try:
        headers = requests_headers()
        
        content = requests.get(url, timeout=5, headers=headers, verify=False).text.encode('utf-8')
        links = []
        tags = ['a', 'A', 'link', 'script', 'area', 'iframe', 'form']  # img
        tos = ['href', 'src', 'action']
        if url[-1:] == '/':
            url = url[:-1]
        try:
            for tag in tags:
                for to in tos:
                    link1 = re.findall(r'<%s.*?%s="(.*?)"' % (tag, to), str(content))
                    link2 = re.findall(r'<%s.*?%s='(.*?)'' % (tag, to), str(content))
                    for i in link1:
                        links.append(i)

                    for i in link2:
                        if i not in links:
                            links.append(i)

        except Exception, e:
            print e
            print '[!] Get link error'
            pass
        return links
    except:
        return [] 

有興趣的可以查看具體代碼https://github.com/TideSec/TideFinger/blob/master/count_file_md5.py文件。

爬取的結果如下:

當然了,里面肯定很多都屬于誤報,比如上圖中第一個其實是個500錯誤頁面,所以出現的比較多,第二個是政府網站最下邊那個常見的“糾錯”的js,所以用的也比較多…

經過一些分析整理也發現了一些小眾的CMS和建站系統的指紋,比如三一網絡建站系統的newsxx.php,比如大漢JCM的jhelper_tool_style.css等等,后續會持續把這些新的指紋豐富到指紋庫中去。

指紋識別腳本

有了指紋庫之后,識別腳本就相對比較簡單了,已有的一些也都比較成熟了,直接使用了webfinger和whatcms的部分代碼并進行了整合優化,于是就有了TideFinger。

1、功能邏輯都比較簡單,先用fofa庫去匹配,然后獲取一定banner,如果banner中識別除了cms,則返回結果,如果未識別到cms,則會調用cms規則庫進行匹配各規則。

2、腳本支持代理模式,當設置了-p參數,且proxys_ips.txt文件包含代理地址時,腳本會隨機調用代理地址進行掃描,以避免被封ip,不過這樣的話效率可能會低一些。畢竟搜集的免費代理質量還是差一些,速度會慢很多。有錢人可以找收費代理池,然后每個規則都用不同代理去請求,這樣肯定不會被封!

代理地址的搜集可以使用我修改的另一個代理池https://github.com/TideSec/Proxy_Pool,提供了自動化的代理ip抓取+評估+存儲+展示+接口調用。

3、經測試,一般網站把所有指紋跑一遍大約需要30秒時間,個別的網站響應比較慢的可能耗時更長一些,可以通過設置網站超時時間進行控制。

安裝python2依賴庫

pip install lxml
pip install requests
pip install bs4

說明:sqlite3庫在Python 2.5.x 以上版本默認自帶了該模塊,如提示sqlite3出錯請自行排查。

執行腳本

$ python TideFinger.py

    Usage: python TideFinger.py -u http://www.123.com [-p 1] [-m 50] [-t 5]

    -u: 待檢測目標URL地址
    -p: 指定該選項為1后,說明啟用代理檢測,請確保代理文件名為proxys_ips.txt,每行一條代理,格式如: 124.225.223.101:80
    -m: 指紋匹配的線程數,不指定時默認為50
    -t: 網站響應超時時間,默認為5秒

指紋識別界面如下:

指紋識別平臺

在有了指紋庫和識別腳本之后,我們想繼續完善下這個功能,于是又加入了其他一些功能,有了這個在線指紋查詢平臺http://finger.tidesec.net

開始想加的很多,但后來在速度和時間方面不得不進行了一定的取舍,于是就有了目前如下的功能。

1、網站信息:網站標題、狀態碼、302跳轉信息等;

2、IP地址信息:IP歸屬地、IP服務商信息、GPS信息;

3、CDN識別:對目標是否使用CDN進行檢測,但目前CDN識別指紋還不多,對部分識別出使用CDN的目標還會列出來CNAME;

4、中間件識別:主要通過http頭信息中的XPB、server等字段獲取中間件信息,如nginx、iis、tomcat等;

5、更多banner:主要是調用了whatweb和Wapplyzer進行更多banner信息的獲取,如jquery、bootstrap等;

6、操作系統識別:識別比較簡單,通過ttl值和文件大小寫是否敏感…用nmap去識別的話速度太慢…

7、本來還加入了子域名發現、端口掃描和waf探測等等,但發現耗時相對較長,而且比較容易被封IP,所以又去掉了。

團隊沒有專門做前端的,看云悉界面比較美觀,所以就參考了云悉和WTF_Scan的界面布局,大佬不要打我們…使用了TP5框架,因為平臺的功能都比較low,以防被噴就不放源碼了。

大家可以試用下,給我們提提意見http://finger.tidesec.net

注冊需要驗證碼,關注下我們公眾號回復“潮汐指紋”即可被逼拉流量O(∩_∩)O哈哈

 

待解決的問題

1、指紋庫的繼續完善:這是個曠日持久的工作,希望能堅持下去,我們也會持續的開源最新指紋庫,希望大家手頭有好的資源也可以貢獻出來。

2、代理問題:雖然集成了代理功能,但經實際使用來看,搜集的免費代理質量還是差一些,速度會慢很多。

3、IP會被封:有的網站防護對目錄枚舉或一些路徑非常敏感,會封IP地址;

4、下一步嘗試對http頭進行語義分析,從海量網站中提取分析header的共性,更高效的發現未知指紋;

5、因為窮,所以目前還是單節點進行指紋的識別,如果是第三步進入常規目錄檢測的方式的話可能速度會比較慢。

 

參考資料

在指紋庫搜集和腳本開發過程中,查閱了大量資料,下面列舉的可能不全,在此一并感謝這些無私奉獻的安全研究者。

https://www.freebuf.com/articles/2555.html

https://blog.51cto.com/simeon/2115190

https://www.freebuf.com/news/137497.html

https://www.freebuf.com/articles/web/129939.html

https://www.freebuf.com/sectool/135216.html

https://www.test404.com/post-1299.html?wafcloud=1

https://github.com/se55i0n/Webfinger

https://github.com/tanjiti/FingerPrint

https://github.com/dyboy2017/WTF_Scan

https://github.com/zerokeeper/WebEye/

https://github.com/Ms0x0/Dayu

https://github.com/w-digital-scanner/w11scan

https://www.webshell.cc/4697.html

https://github.com/lokifer/BlindElephant

https://github.com/iniqua/plecost

https://github.com/AliasIO/Wappalyzer

https://github.com/urbanadventurer/WhatWeb

小福利

1、指紋檢測工具下載

我們把上面的13款指紋識別工具和搜集到的一些論文資料進行了匯總打包,大家可以直接下載。

下載地址:https://pan.baidu.com/s/190K34cwjAWDUMLtR8EWvNA 提取碼:5y4o 解壓密碼www.tidesec.net

后續如有更新,會在我們公眾號TideSec安全團隊上提供下載,回復“指紋工具”即可獲取最新指紋識別工具下載地址。

2、指紋庫下載

我們在GitHub上提供的是2019年4月的指紋庫(還未進行大量的命中率測試),后續我們還會優化調整命中策略、未知指紋識別方法,持續更新優化指紋庫。

最新指紋庫的下載請關注我們公眾號TideSec安全團隊,回復“指紋庫”即可獲取最新指紋庫下載地址。

關注我們

TideSec安全團隊:

Tide安全團隊正式成立于2019年1月,是以互聯網攻防技術研究為目標的安全團隊,目前聚集了十多位專業的安全攻防技術研究人員,專注于網絡攻防、Web安全、移動終端、安全開發、IoT/物聯網/工控安全等方向。

想了解更多Tide安全團隊,請關注團隊官網: http://www.TideSec.net


如沒特殊注明,文章均為狐靈科技原創,轉載請注明?? "Web指紋識別技術研究與優化實現
多一份免費策劃方案,總有益處。

請直接添加技術總監微信聯系咨詢

網站設計 品牌營銷

多一份參考,總有益處

聯系狐靈科技,免費獲得專屬《策劃方案》及報價

咨詢相關問題或預約面談,可以通過以下方式與我們聯系

業務熱線:15082661954 / 大客戶專線:15523356218