首頁>技術>

0x01前言

蜜罐是網路紅藍攻防對抗中檢測威脅的重要產品。防守方常常利用蜜罐分析攻擊行為、捕獲漏洞、甚至反制攻擊者。攻擊方可以透過蜜罐識別技術來發現和規避蜜罐。因此,我們有必要站在紅隊攻擊者的角度鑽研蜜罐識別的方式方法。

0x02介紹

蜜罐是一種安全威脅的檢測技術,其本質在於引誘和欺騙攻擊者,並且透過記錄攻擊者的攻擊日誌來產生價值。安全研究人員可以透過分析蜜罐的被攻擊記錄推測攻擊者的意圖和手段等資訊。

根據蜜罐的互動特徵,可以分為低互動蜜罐和高互動蜜罐。後者提供了一個真正的易受攻擊的系統,為的就是讓攻擊者認為自己在攻擊一個真實的系統,在一些甲方實際的蜜罐建設中還提出了使用真實的服務元件構建蜜罐系統的想法。低互動蜜罐則沒有這麼複雜,其提供了一個不完善的互動系統,有的甚至僅僅模擬了一個響應。網際網路中的低互動蜜罐大部分為開源蜜罐。由於其特有的開放特性,人們能夠對其特徵進行識別和規避。

在本次淺析的過程中,探測的目標為使用了預設配置的開源蜜罐。我們調查了19種開源蜜罐和Fuzz testing 特徵蜜罐。本次淺析的目的是從攻擊者角度出發找出開源蜜罐的特徵,同時完成了多種開源蜜罐全網的分佈。本次分析的蜜罐如表2-1所示。

表2-1 本次分析的蜜罐

0x03基於特徵的蜜罐檢測3.1 協議的返回特徵

部分開源蜜罐在模擬各個協議時,會在響應中帶有一些明顯的特徵,可以根據這些特徵來檢測蜜罐。

拿Dionaea 的Memcached協議舉例,在實現Memcached協議時Dionaea把很多引數做了隨機化,但是在一些引數如:version、libevent和rusage_user等都是固定的。

可以透過組合查詢其固定引數來確定蜜罐,其他蜜罐在協議上的特徵如表3-1所示。

表3-1 協議響應特徵的蜜罐

3.2 協議實現的缺陷

在部分開源的蜜罐中模擬實現部分協議並不完善,我們可以透過傳送一些特定的請求包獲得的響應來判斷是否為蜜罐。

3.2.1 SSH協議

SSH協議(Secure Shell)是一種加密的網路傳輸協議,最常用的是作為遠端登入使用。SSH服務端與客戶端建立連線時需要經歷五個步驟:

1、協商版本號階段。

2、協商金鑰演算法階段。

3、認證階段。

4、會話請求階段。

5、互動會話階段。

SSH蜜罐在模擬該協議時同樣要實現這五個步驟。Kippo 是一個已經停止更新的經典的SSH蜜罐,使用了twisted來模擬SSH協議。在kippo的最新版本中使用的是很老的twistd 15.1.0版本。該版本有個明顯的特徵。在版本號互動階段需要客戶端的SSH版本為形如SSH-主版本-次版本 軟體版本號,當版本號為不支援的版本時,如SSH-1.9-OpenSSH_5.9p1就會報錯“bad version 1.9”並且斷開連線。透過Kippo的配置來看,僅僅支援SSH-2.0-X和SSH-1.99-X兩個主版本,其他主版本都會產生報錯。

3.2.2 Mysql協議

部分Mysql蜜罐會透過構造一個惡意的mysql伺服器,攻擊者透過連線惡意的mysql伺服器後傳送一個查詢請求,惡意的mysql伺服器將會讀取到攻擊者指定的檔案。

最早的如https://github.com/Gifts/Rogue-MySql-Server, 可以偽造一個惡意的mysql伺服器,並使用mysql客戶端連線,如下圖可見惡意的mysql伺服器端已經成功讀取到了客戶端的/etc/password內容。

檢測此類蜜罐的步驟可分為如下幾步:

1、偽造客戶端連線蜜罐mysql服務

2、連線成功傳送mysql查詢請求

3、接受mysql伺服器響應,透過分析偽造的mysql客戶端讀取檔案的資料包得到的報文結構:檔名長度+1 + \x00\x00\x01\xfb + 檔名

那麼我們就可以透過socket構造對應的流程即可識別偽造的mysql伺服器,並抓取讀取的檔名。

3.2.3 Telnet協議

Hfish 蜜罐中實現了Telnet協議,預設監聽在23埠。模擬的該協議預設無需驗證,並且對各個命令的結果都做了響應的模板來做應答。在命令為空或者直接回車換行時,會響應default模板,該模板內容為test。因此可以利用這個特徵進行該蜜罐在telnet服務上的檢測如圖所示。

3.3 明顯的WEB的特徵

部分開源蜜罐提供了web服務,這些web服務中常常會帶有一些明顯的特徵,可以根據這些特徵來檢測蜜罐。如特定的js檔案、build_hash或者版本號等。

還是拿Hfish舉例。HFIsh在預設8080埠實現了一個WordPress登入頁面,頁面中由一個名為x.js的javascript檔案用來記錄嘗試爆破的登入名密碼。直接透過判斷wordpress登入頁是否存在x.js檔案就可判斷是否為蜜罐。

還有glastopf蜜罐,其沒做任何偽裝是最明顯的。可以透過頁面最下方的blog comments的輸入框進行識別。

其他的常見的開源蜜罐在WEB上的特徵如下表所示。

表3-2 具有明顯WEB特徵的蜜罐

3.4 上下文特徵

部分開源蜜罐存在命令執行上下文明顯的特徵,本節以Cowrie和Hfish為例。

2020年6月份研究人員發現Mirai的新變種Aisuru檢測可以根據執行命令的上下文檢測到Cowrie開源蜜罐。當滿足如下三個條件時Aisuru將會判定為蜜罐:

1、裝置名稱為localhost。

2、裝置中所有程序啟動於6月22日或6月23日。

3、存在使用者名稱richard。

檢視Cowrie原始碼在預設配置中執行ps命令,發現程序的啟動時間都在6月22或6月23。不過在最新版的Cowrie中richard被phil替換,並且主機名由localhost替換為svr04。

由Aisuru的啟發,是可以根據一些特定的上下文來檢測蜜罐的。比如最新版的Cowrie,在預設配置下一些一些命令得到的結果是固定不變的。如:cat /proc/meminfo 這個命令無論執行多少次得到的內容都是不變的,而這真實的系統中是不可能的。

再說Hfish蜜罐,Hfish同樣也實現了SSH協議,預設監聽在22埠。該蜜罐的SSH協議同樣可以很容易的透過上下文識別出來。和telnet協議一樣SSH協議在直接進行回車換行時會預設執行default輸出test。

3.5 Fuzz testing 特徵

Fuzz testing(模糊測試)本是一種安全測試的方法,透過產生隨機的資料輸入測試系統檢視系統響應或者狀態,以此發現潛在的安全漏洞。部分蜜罐借用Fuzz testing的思想實現了蜜罐系統,透過netlab的 zom3y3大哥在《透過Anglerfish蜜罐發現未知的惡意軟體威脅》種對Fuzz testing蜜罐的介紹,我們得知有以下幾點特徵:

1、響應任意埠的TCP SYN Packet。

2、根據協議特徵,永遠返回正確的響應。

3、返回預定義或者隨機的Payload特徵庫集合。

該蜜罐很容易透過人工判斷,其目的為模擬蜜罐fuzzing特徵,透過預定義大量的關鍵字實現對掃描器的干擾。該類蜜罐可以透過跨服務的特徵進行判斷,如開放了HTTP服務同時響應了upnp協議,或者根據server的長度或者個數來判斷。由於未知哪種蜜罐產品提供的這個蜜罐服務,quake將此蜜罐標記為未知蜜罐,可以使用語法app:”未知蜜罐”搜尋。

0x04開源蜜罐的使用情況4.1 蜜罐分佈

在確定了部分開源蜜罐的特徵後,我們利用特徵進行了全網匹配,發現了369161條服務資料和72948個獨立ip。全球和全國蜜罐分佈如圖所示。

可以看到在這些開源蜜罐中,中國的數量是最多的。其中,中國臺灣佔據了1/3,位於國內第一。並且在全球省份排名中,臺灣省的數量是第一的。

從ASN的分佈上來看,ASN數量全球TOP5如表所示。發現開源蜜罐主要還是部分部署在雲廠商或者教育網中。

4.2 生命週期

結合蜜罐服務資產數和ASNTOP5全年的分佈可以看,蜜罐數量在全年由三個峰值,分別為四月、六月和十二月。

在之前討論蜜罐的fuzz testing時,發現在響應中含有大量與服務有關的關鍵詞,用來干擾掃描器服務識別。其中發現在服務的響應中含有weblogic關鍵詞的蜜罐在十一月開始爆發,我們知道在十月份CVE-2020-14882 weblogic未授權命令執行漏洞被披露出來。由此可以看出此類蜜罐可根據熱點漏洞進行進行靈活配置,以達到捕捉掃描器的目的。

0x05結論

本文透過蜜罐協議返回特徵、協議實現的缺陷、明顯的WEB特徵和Fuzz testing的特徵對常見的19種開源蜜罐進行了分析。我們的研究發現,網際網路中存在有超過369161個蜜罐服務,這些蜜罐都可以透過最簡單的特徵被檢測出來,因為這些蜜罐都是在預設配置情況下被開放在網際網路上,基本上是一種自我暴露的狀態。

從全球分佈上來看中國臺灣集中了大量的蜜罐,在全球蜜罐的ASN分佈中,主要集中在雲廠商和教育網路中。同時在全年的蜜罐數量上在四月份、六月份和十二月份存在三個峰值,並且透過部分蜜罐響應的關鍵字來看,蜜罐的數量可能會隨著熱點漏洞的披露而增長。

最後,本文中所涉及的蜜罐均可在Quake中搜索,我們提供了三種渠道:

1、直接搜尋特定蜜罐,搜尋語法見附錄(所有使用者可用)。

2、使用 type:”蜜罐” 獲取全網全量蜜罐裝置(高階會員、終身會員可用)。

3、 在Quake專題欄目中直接檢視,專題地址如下:

https://quake.360.cn/quake/#/specialDetail/5ff5678693fe78dcaa8b2f09

0x06參考

[1] 蜜罐技術研究新進展[J]. 石樂義,李陽,馬猛飛. 電子與資訊學報. 2019(02)

[2] 基於資料包分片的工控蜜罐識別方法[J]. 遊建舟,張悅陽,呂世超,陳新,尹麗波,孫利民. 資訊保安學報. 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

附錄:

35
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Android主流三方庫原始碼分析:EventBus