浅析开源蜜罐识别与全网测绘(安全客)
前言
蜜罐是網(wǎng)絡(luò)紅藍攻防對抗中檢測威脅的重要產(chǎn)品。防守方常常利用蜜罐分析攻擊行為、捕獲漏洞、甚至反制攻擊者。攻擊方可以通過蜜罐識別技術(shù)來發(fā)現(xiàn)和規(guī)避蜜罐。因此,我們有必要站在紅隊攻擊者的角度鉆研蜜罐識別的方式方法。
?
介紹
蜜罐是一種安全威脅的檢測技術(shù),其本質(zhì)在于引誘和欺騙攻擊者,并且通過記錄攻擊者的攻擊日志來產(chǎn)生價值。安全研究人員可以通過分析蜜罐的被攻擊記錄推測攻擊者的意圖和手段等信息。
根據(jù)蜜罐的交互特征,可以分為低交互蜜罐和高交互蜜罐。后者提供了一個真正的易受攻擊的系統(tǒng),為的就是讓攻擊者認(rèn)為自己在攻擊一個真實的系統(tǒng),在一些甲方實際的蜜罐建設(shè)中還提出了使用真實的服務(wù)組件構(gòu)建蜜罐系統(tǒng)的想法。低交互蜜罐則沒有這么復(fù)雜,其提供了一個不完善的交互系統(tǒng),有的甚至僅僅模擬了一個響應(yīng)。互聯(lián)網(wǎng)中的低交互蜜罐大部分為開源蜜罐。由于其特有的開放特性,人們能夠?qū)ζ涮卣鬟M行識別和規(guī)避。
在本次淺析的過程中,探測的目標(biāo)為使用了默認(rèn)配置的開源蜜罐。我們調(diào)查了19種開源蜜罐和Fuzz testing 特征蜜罐。本次淺析的目的是從攻擊者角度出發(fā)找出開源蜜罐的特征,同時完成了多種開源蜜罐全網(wǎng)的分布。本次分析的蜜罐如表2-1所示。
表2-1 本次分析的蜜罐
?
基于特征的蜜罐檢測
3.1? 協(xié)議的返回特征
部分開源蜜罐在模擬各個協(xié)議時,會在響應(yīng)中帶有一些明顯的特征,可以根據(jù)這些特征來檢測蜜罐。
拿Dionaea 的Memcached協(xié)議舉例,在實現(xiàn)Memcached協(xié)議時Dionaea把很多參數(shù)做了隨機化,但是在一些參數(shù)如:version、libevent和rusage_user等都是固定的。
可以通過組合查詢其固定參數(shù)來確定蜜罐,其他蜜罐在協(xié)議上的特征如表3-1所示。
協(xié)議實現(xiàn)的缺陷
在部分開源的蜜罐中模擬實現(xiàn)部分協(xié)議并不完善,我們可以通過發(fā)送一些特定的請求包獲得的響應(yīng)來判斷是否為蜜罐。
3.2.1??SSH協(xié)議
SSH協(xié)議(Secure Shell)是一種加密的網(wǎng)絡(luò)傳輸協(xié)議,最常用的是作為遠(yuǎn)程登錄使用。SSH服務(wù)端與客戶端建立連接時需要經(jīng)歷五個步驟:
-
協(xié)商版本號階段。
-
協(xié)商密鑰算法階段。
-
認(rèn)證階段。
-
會話請求階段。
-
交互會話階段。
SSH蜜罐在模擬該協(xié)議時同樣要實現(xiàn)這五個步驟。Kippo 是一個已經(jīng)停止更新的經(jīng)典的SSH蜜罐,使用了twisted來模擬SSH協(xié)議。在kippo的最新版本中使用的是很老的twistd 15.1.0版本。該版本有個明顯的特征。在版本號交互階段需要客戶端的SSH版本為形如SSH-主版本-次版本 軟件版本號,當(dāng)版本號為不支持的版本時,如SSH-1.9-OpenSSH_5.9p1就會報錯“bad version 1.9”并且斷開連接。通過Kippo的配置來看,僅僅支持SSH-2.0-X和SSH-1.99-X兩個主版本,其他主版本都會產(chǎn)生報錯。
3.2.2??Mysql協(xié)議
部分Mysql蜜罐會通過構(gòu)造一個惡意的mysql服務(wù)器,攻擊者通過連接惡意的mysql服務(wù)器后發(fā)送一個查詢請求,惡意的mysql服務(wù)器將會讀取到攻擊者指定的文件。
最早的如https://github.com/Gifts/Rogue-MySql-Server,可以偽造一個惡意的mysql服務(wù)器,并使用mysql客戶端連接,如下圖可見惡意的mysql服務(wù)器端已經(jīng)成功讀取到了客戶端的/etc/password內(nèi)容。
檢測此類蜜罐的步驟可分為如下幾步:
1.? 偽造客戶端連接蜜罐mysql服務(wù)
2.? 連接成功發(fā)送mysql查詢請求
3. ?接受mysql服務(wù)器響應(yīng),通過分析偽造的mysql客戶端讀取文件的數(shù)據(jù)包得到的報文結(jié)構(gòu):文件名長度+1 + \x00\x00\x01\xfb + 文件名
那么我們就可以通過socket構(gòu)造對應(yīng)的流程即可識別偽造的mysql服務(wù)器,并抓取讀取的文件名。
3.2.3???Telnet協(xié)議
HFish蜜罐中實現(xiàn)了Telnet協(xié)議,默認(rèn)監(jiān)聽在23端口。模擬的該協(xié)議默認(rèn)無需驗證,并且對各個命令的結(jié)果都做了響應(yīng)的模板來做應(yīng)答。在命令為空或者直接回車換行時,會響應(yīng)default模板,該模板內(nèi)容為test。因此可以利用這個特征進行該蜜罐在telnet服務(wù)上的檢測如圖所示。
3.3? 明顯的WEB的特征
部分開源蜜罐提供了web服務(wù),這些web服務(wù)中常常會帶有一些明顯的特征,可以根據(jù)這些特征來檢測蜜罐。如特定的js文件、build_hash或者版本號等。
還是拿HFish舉例。HFish在默認(rèn)8080端口實現(xiàn)了一個WordPress登錄頁面,頁面中由一個名為x.js的javascript文件用來記錄嘗試爆破的登錄名密碼。直接通過判斷wordpress登錄頁是否存在x.js文件就可判斷是否為蜜罐。
還有g(shù)lastopf蜜罐,其沒做任何偽裝是最明顯的。可以通過頁面最下方的blog comments的輸入框進行識別。
其他的常見的開源蜜罐在WEB上的特征如下表所示。
3.4? 上下文特征
部分開源蜜罐存在命令執(zhí)行上下文明顯的特征,本節(jié)以Cowrie和HFish為例。
2020年6月份研究人員發(fā)現(xiàn)Mirai的新變種Aisuru檢測可以根據(jù)執(zhí)行命令的上下文檢測到Cowrie開源蜜罐。當(dāng)滿足如下三個條件時Aisuru將會判定為蜜罐:
-
設(shè)備名稱為localhost。
-
設(shè)備中所有進程啟動于6月22日或6月23日。
-
存在用戶名richard。
查看Cowrie源碼在默認(rèn)配置中執(zhí)行ps命令,發(fā)現(xiàn)進程的啟動時間都在6月22或6月23。不過在最新版的Cowrie中richard被phil替換,并且主機名由localhost替換為svr04。
由Aisuru的啟發(fā),是可以根據(jù)一些特定的上下文來檢測蜜罐的。比如最新版的Cowrie,在默認(rèn)配置下一些一些命令得到的結(jié)果是固定不變的。如:cat /proc/meminfo 這個命令無論執(zhí)行多少次得到的內(nèi)容都是不變的,而這真實的系統(tǒng)中是不可能的。
再說HFish蜜罐,HFish同樣也實現(xiàn)了SSH協(xié)議,默認(rèn)監(jiān)聽在22端口。該蜜罐的SSH協(xié)議同樣可以很容易的通過上下文識別出來。和telnet協(xié)議一樣SSH協(xié)議在直接進行回車換行時會默認(rèn)執(zhí)行default輸出test。
3.5? Fuzz testing 特征
Fuzz testing(模糊測試)本是一種安全測試的方法,通過產(chǎn)生隨機的數(shù)據(jù)輸入測試系統(tǒng)查看系統(tǒng)響應(yīng)或者狀態(tài),以此發(fā)現(xiàn)潛在的安全漏洞。部分蜜罐借用Fuzz testing的思想實現(xiàn)了蜜罐系統(tǒng),通過360 Netlab的 zom3y3大哥在《通過Anglerfish蜜罐發(fā)現(xiàn)未知的惡意軟件威脅》中對Fuzz testing蜜罐的介紹,我們得知有以下幾點特征:
-
響應(yīng)任意端口的TCP SYN Packet。
-
根據(jù)協(xié)議特征,永遠(yuǎn)返回正確的響應(yīng)。
-
返回預(yù)定義或者隨機的Payload特征庫集合。
該蜜罐很容易通過人工判斷,其目的為模擬蜜罐fuzzing特征,通過預(yù)定義大量的關(guān)鍵字實現(xiàn)對掃描器的干擾。該類蜜罐可以通過跨服務(wù)的特征進行判斷,如開放了HTTP服務(wù)同時響應(yīng)了upnp協(xié)議,或者根據(jù)server的長度或者個數(shù)來判斷。由于未知哪種蜜罐產(chǎn)品提供的這個蜜罐服務(wù),quake將此蜜罐標(biāo)記為未知蜜罐,可以使用語法app:"未知蜜罐"搜索。
?
開源蜜罐的使用情況
4.1? 蜜罐分布
在確定了部分開源蜜罐的特征后,我們利用特征進行了全網(wǎng)匹配,發(fā)現(xiàn)了369161條服務(wù)數(shù)據(jù)和72948個獨立IP。全球和全國蜜罐分布如圖所示。
可以看到在這些開源蜜罐中,中國的數(shù)量是最多的。其中,中國臺灣占據(jù)了1/3,位于國內(nèi)第一。并且在全球省份排名中,臺灣省的數(shù)量是第一的。
從ASN的分布上來看,ASN數(shù)量全球TOP5如表所示。發(fā)現(xiàn)開源蜜罐主要還是部分部署在云廠商或者教育網(wǎng)中。
4.2? 生命周期
結(jié)合蜜罐服務(wù)資產(chǎn)數(shù)和ASNTOP5全年的分布可以看,蜜罐數(shù)量在全年有三個峰值,分別為四月、六月和十二月。
在之前討論蜜罐的fuzz testing時,發(fā)現(xiàn)在響應(yīng)中含有大量與服務(wù)有關(guān)的關(guān)鍵詞,用來干擾掃描器服務(wù)識別。其中發(fā)現(xiàn)在服務(wù)的響應(yīng)中含有weblogic關(guān)鍵詞的蜜罐在十一月開始爆發(fā),我們知道在十月份CVE-2020-14882 weblogic未授權(quán)命令執(zhí)行漏洞被披露出來。由此可以看出此類蜜罐可根據(jù)熱點漏洞進行進行靈活配置,以達到捕捉掃描器的目的。
結(jié)論
本文通過蜜罐協(xié)議返回特征、協(xié)議實現(xiàn)缺陷、明顯的WEB特征和Fuzz testing特征四種方法對常見的19種開源蜜罐進行了分析。我們的研究發(fā)現(xiàn),互聯(lián)網(wǎng)中存在有超過369161個蜜罐服務(wù)(72948個獨立IP),這些蜜罐都可以通過最簡單的特征被檢測出來,因為這些蜜罐都是在默認(rèn)配置情況下被開放在互聯(lián)網(wǎng)上,基本上是一種自我暴露的狀態(tài)。
從全球分布上來看中國臺灣集中了大量的蜜罐,在全球蜜罐的ASN分布中,主要集中在云廠商和教育網(wǎng)絡(luò)中。同時在全年的蜜罐數(shù)量上在四月份、六月份和十二月份存在三個峰值,并且通過部分蜜罐響應(yīng)的關(guān)鍵字來看,蜜罐的數(shù)量可能會隨著熱點漏洞的披露而增長。
最后,本文中所涉及的蜜罐均可在Quake中搜索,我們提供了三種渠道:
1. 直接搜索特定蜜罐,搜索語法見附錄(所有用戶可用)。
2. 使用?type:"蜜罐"?獲取全網(wǎng)全量蜜罐設(shè)備(高級會員、終身會員可用)。
3.?在Quake專題欄目中直接查看,專題地址如下:
https://quake.360.cn/quake/#/specialDetail/5ff5678693fe78dcaa8b2f094.?使用Quake命令行工具進行識別(https://github.com/360quake/quake_rs)。
參考
[1]? 蜜罐技術(shù)研究新進展[J]. 石樂義,李陽,馬猛飛.? 電子與信息學(xué)報. 2019(02)
[2]? 基于數(shù)據(jù)包分片的工控蜜罐識別方法[J]. 游建舟,張悅陽,呂世超,陳新,尹麗波,孫利民.? 信息安全學(xué)報. 2019(03)
[3]? VETTERL, A., AND CLAYTON, R. Bitter harvest: Systematically fingerprinting low- and medium-interaction honeypots at internet scale.In 12th USENIX Workshop on Offensive Technologies, WOOT’18.
[4]??http://books.gigatux.nl/mirror/honeypot/final/ch09lev1sec1.html
[5]? https://mp.weixin.qq.com/s/_hpJP6bTuoH-3cQtDawGOw
[6]? https://www.avira.com/en/blog/new-mirai-variant-aisuru-detects-cowrie-opensource-honeypots
[7]? https://hal.archives-ouvertes.fr/hal-00762596/document
[8]? https://subs.emis.de/LNI/Proceedings/Proceedings170/177.pdf
[9]??https://www.freebuf.com/articles/ics-articles/230402.html
[10] http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/
[11]?https://github.com/mushorg/conpot
[12]?https://github.com/cowrie/cowrie
[13]?https://github.com/DinoTools/dionaea
[14]?https://github.com/jordan-wright/elastichoney
[15]?https://github.com/bontchev/elasticpot
[16]?https://github.com/mushorg/glastopf
[17]?https://github.com/hacklcx/HFish/
[18]?https://github.com/omererdem/honeything
[19]?https://github.com/desaster/kippo
[20]?https://github.com/madirish/kojoney2
[21]?https://github.com/jrwren/nepenthes
[22]?https://github.com/thinkst/opencanary
[23]?https://github.com/Gifts/Rogue-MySql-Server
[24]?https://github.com/jaksi/sshesame
[25]?https://github.com/Cymmetria/weblogic_honeypot
[26]?https://github.com/bg6cq/whoisscanme
[27]?https://github.com/zeroq/amun
[28]?https://github.com/foospidy/HoneyPy
[29]?https://github.com/Cymmetria/StrutsHoneypot
?
附錄:
| 蜜罐 | Quake系統(tǒng)搜索語法 |
| STRUTSHONEYPOT | app:"StrutsHoneypot" |
| CONPOT HTTP?蜜罐 | app:"Conpot Http?蜜罐" |
| CONPOT MODBUS?蜜罐 | app:"Conpot modbus?蜜罐" |
| CONPOT S7?蜜罐 | app:"Conpot s7?蜜罐" |
| KIPPO?蜜罐 | app:"kippo?蜜罐" |
| HONEYPY HTTP?蜜罐 | app:"Honeypy Http?蜜罐" |
| HONEYPY ES蜜罐 | app:"Honeypy ES蜜罐" |
| AMUN IMAP?蜜罐 | app:"amun imap?蜜罐" |
| AMUN HTTP蜜罐 | app:"amun http蜜罐" |
| NEPENTHES NETBIOS蜜罐 | app:"Nepenthes netbios蜜罐" |
| NEPENTHES FTP?蜜罐 | app:"Nepenthes FTP?蜜罐" |
| SSHESAME SSH?蜜罐 | app:"sshesame ssh?蜜罐" |
| OPENCANARY蜜罐管理后臺 | app:"opencanary蜜罐管理后臺" |
| DIONAEA SIPD?蜜罐 | app:"Dionaea sipd?蜜罐" |
| DIONAEA SMBD?蜜罐 | app:"Dionaea smbd?蜜罐" |
| DIONAEA HTTP?蜜罐 | app:"Dionaea Http?蜜罐" |
| DIONAEA MSSQL?蜜罐 | app:"Dionaea MSSQL?蜜罐" |
| DIONAEA FTP?蜜罐 | app:"Dionaea ftp?蜜罐" |
| DIONAEA MEMCACHED?蜜罐 | app:"Dionaea Memcached?蜜罐" |
| KOJONEY SSH?蜜罐 | app:"Kojoney SSH?蜜罐" |
| WEBLOGIC蜜罐 | app:"weblogic蜜罐" |
| MYSQL蜜罐 | app:"MySQL蜜罐" |
| HFISH蜜罐 | app:"HFish蜜罐" |
| HFISH蜜罐管理后臺 | app:"HFish蜜罐管理后臺" |
| HONEYTHING物聯(lián)網(wǎng)蜜罐 | app:"honeything物聯(lián)網(wǎng)蜜罐" |
| ELASTICSEARCH蜜罐 | app:"elasticsearch蜜罐" |
| HOSTUS蜜罐 | app:"HostUS蜜罐" |
| WHOISSCANME蜜罐 | app:"whoisscanme蜜罐" |
| 未知蜜罐 | app:"未知蜜罐" |
| COWRIE TELNETD蜜罐 | app:"Cowrie telnetd蜜罐" |
| GLASTOPF蜜罐 | app:"glastopf蜜罐" |
總結(jié)
以上是生活随笔為你收集整理的浅析开源蜜罐识别与全网测绘(安全客)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单API接口签名验证
- 下一篇: [NOIp2017提高组]奶酪(BFS)