當前位置:
首頁 > 新聞 > Hide』N Seek Bot:重用Mirai代碼

Hide』N Seek Bot:重用Mirai代碼

一、介紹

在主流軟體開發中重用互聯網上提供的代碼是一種常見做法。這種做法與惡意軟體開發沒有什麼不同。許多惡意軟體源代碼已經泄露,這樣就使許多惡意黑客和惡意軟體作者能夠學習並打造自己的惡意軟體。

2016年9月,Mirai源代碼在黑客社區Hackforums上泄露。據了解,Mirai已被用於通過大規模分散式拒絕服務(DDoS)攻擊暫時癱瘓高端服務。自從在線發布此代碼以來,許多人都試圖對其進行修改,結果出現了許多變體和派生體,佔據物聯網威脅的一角。 2018年3月3日,我的同事Dario Durando在西班牙馬德里的RootedCon安全會議上介紹了對這些變體的研究,我們確定其源自Mirai源代碼。從簡單的修改(例如將更多證書添加到可用於暴力攻擊的證書列表)到更複雜的方法(例如漏洞利用)將惡意軟體傳播到物聯網設備,這些變體都在使用Mirai的代碼庫。

有了這些知識,許多惡意軟體作者在自己的惡意軟體程序中使用了泄漏的惡意軟體源代碼,FortiGuard實驗室對調查其他利用Mirai代碼模塊的惡意軟體非常感興趣。有趣的是,我們調查的其中一個家族是Hide"N Seek(HNS)bot,於2018年1月被發現。HNS是一個複雜的殭屍網路,它使用P2P與節點/其他受感染設備進行通信以接收命令。在這篇文章中,我將討論Mirai代碼在HNS中的使用方式。

二、Mirai Bot回顧

原始Mirai惡意軟體具有以下組件:

·Bot——通過暴力攻擊感染並傳播到物聯網設備,聯繫命令和控制伺服器(C2)以接收來自殭屍網路主機/用戶的命令,對指定目標啟動DoS攻擊。

·命令和控制伺服器——用於控制受感染的物聯網設備,對指定目標發起DDoS攻擊。

·報告伺服器——偵聽來自受感染的IoT設備的報告,此報告包含新受害者的IP和登錄憑證。

·Loader——將bot載入到新的受害設備。

圖1. Mirai工作模式

在這篇文章中,我們只關注bot。Mirai bot有三個主要模塊:

·Attack ——攻擊模塊包含各種DoS攻擊方法(UDP,TCP,HTTP)。

·Killer ——殺死進程(telnet,SSH,HTTP,其他bot)。

·Scanner——生成一個隨機IP地址列表,在殭屍網路中暴力使用。

圖2. Mirai的主要模塊

三、Hide 『N Seek Bot及Mirai代碼重用

HNS於2018年1月被發現,它比Mirai更複雜,因為它以複雜和分散的方式進行通信(定製的P2P通信),以便接收命令執行其各種惡意程序。HNS不會發起DoS攻擊,但具有傳輸數據和執行其他代碼的功能。

乍看之下,很難注意到Hide"N Seek正在使用一些Mirai模塊,特別是如果沒有閱讀Mirai源代碼或者之前未分析Mirai二進位文件。有一些很棒的IDA插件,可以使用它們來識別二進位文件中是否具有相似函數。但是,在這個樣本上他們不能為我所用,所以我不得不手動進行分析。

如果嘗試編譯Mirai源代碼,就會注意到它的加密字元串存儲在已編譯的ELF二進位文件的只讀數據段(.rodata)中。考慮到這一點,我開始檢查HNS二進位文件的.rodata段以查找可能的加密字元串。

圖3. .rodata 段可能包含加密的字元串

當我檢查了其中一組數據的代碼引用時,指向這個數據的指針,作為第一個參數傳遞給同一個函數。這讓我覺得該函數可能是一個解密函數。

圖4.代碼片段顯示指向某數據的指針作為參數傳遞給同一函數

進入函數之後,看到它確實是一個解密程序。解密從硬編碼的單位元組異或key開始。該key與字元串的第一個位元組異或,然後將結果添加到key中。XOR結果與key的和作為第二個位元組的key,後續過程依此類推。從分析的二進位文件中看到了兩個不同的key(0xA(ARM)和0xA0(x64)),但這都可以更改。

圖5.解密函數

為使字元串解密更容易一點,可以寫一個簡單的IDA python腳本來自動查找加密字元串的地址,然後應用解密演算法。也可以使用此腳本來添加註釋以包含解密的字元串。

圖6. 解密字元串

現在我們可以看到廬山真面目了,其中一些字元串很熟悉。Mirai中也發現了一些相同的字元串。

圖7. Mirai 配置表

解密這些字元串後,只需檢查對這些字元串的引用,然後將它們與原始Mirai源代碼中的函數進行比較,就可以很容易地識別出HNS中使用的Mirai函數。

圖8. Mirai 中的consume_pass_prompt函數

圖9. HNS 中的consume_pass_prompt函數

雖然很多函數都是直接複製的,但也有許多函數被清楚地修改以適應新型惡意軟體的需求。HNS有三個主要模塊:scanner,進程killer,以及等待來自同級節點連接的函數。

圖10. HNS的主要模塊: scanner, killer, P2P

其中兩個模塊scanner和killer模塊具有與Mirai scanner和killer模塊非常相似的代碼結構。

對於killer模塊,它們都會終止與其他bot相關的進程,如QBOT,Zollard甚至Mirai本身。

圖11. HNS終止其它bot

一個區別是HNS不會直接終止與HTTP,telnet和SSH相關的進程(通過埠號)。相反,攻擊者可以在運行時指定一個埠號。與此埠相關的進程將被終止。

圖12. HNS 終止與指定埠相關的進程

對於scanner,他們都會生成隨機IP地址列表來搜索潛在的受害者。主要區別在於埠掃描和攻擊方法的使用。HNS通過啟動原始套接字SYN連接隨機掃描埠80,8080,2323,9527,23。一旦與Mirai建立連接,它將通過telnet使用硬編碼的證書列表暴力破解進入設備。一旦成功,它可以通過多種方法將自己載入到設備上,例如echo,HTTP和TFTP。與HNS不同,在Mirai中,loader是一個單獨的二進位文件,而其他Mirai修改版則將loader嵌入其中。

圖13. HNS 隨機選擇埠掃描

我分析的樣本中HNS至少使用了三個漏洞,兩個用於傳播。其中一個目標是Netgear DGN DSL數據機/路由器(也被Reaper bot使用),而另一個目標則是TP-Link路由器。原始Mirai不使用漏洞傳播,其他修改版使用其他各種漏洞傳播。

圖14. HNS中的Netgear DGN DSL modem/router利用

圖15. HNS中的TP-Link router利用

在通過telnet成功登錄到ZyXEL PK5001Z數據機後,第三個(CVE-2016-10401)漏洞使用su將密碼為zyad5001的用戶提權到root。

圖16.HNS中的CVE-2016-10401

四、HNS其它細節

本文不關注HNS惡意軟體本身。相反,本文描述了在HNS中如何使用Mirai代碼。這使我們可以研究如何使用這種技術來尋找其他使用Mirai代碼的惡意軟體。但是,這裡也必須提到HNS的一些非常棒的功能。例如,HNS使用隨機生成的UDP埠或運行時指定的埠與對等設備或其他受感染設備建立定製的P2P通信。與Mirai不同,Mirai旨在針對某些目標發起DoS攻擊,但這種物聯網惡意軟體通過對等方接收命令來傳輸數據並執行其他代碼。這種P2P通信使得惡意軟體更難以分析。接收命令的分散方式也使得很難確定命令從哪裡發出以及數據放置點的位置。

圖17.P2P命令代碼片段

五、總結

正如過去看到的,惡意軟體源代碼泄漏導致更多惡意軟體被開發出來。而現在Mirai源代碼泄露也正在經歷同樣的過程,所以我們看到的新型惡意軟體系列很可能利用了Mirai源代碼。

與往常一樣,通過使用從這項研究中獲得的知識,FortiGuard實驗室的工作人員將繼續觀測、尋找使用Mirai源代碼的惡意軟體。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

五大開源OSINT工具介紹
Gray Heron與遭受黑客攻擊後名譽受損的Hacking Team存在聯繫?

TAG:嘶吼RoarTalk |