日前,一場(chǎng)大規模的互聯(lián)網(wǎng)癱瘓席卷了美國,2016年10月21日 11:10 UTC(北京時(shí)間19:10左右)惡意軟件Mirai控制的僵尸網(wǎng)絡(luò )對美國域名服務(wù)器管理服務(wù)供應商Dyn發(fā)起DDOS攻擊,從而導致許多網(wǎng)站在美國東海岸地區宕機。以下是來(lái)自青蓮云對感染IOT設備的惡意軟件Mirai的分析。
本文您將看到:
1、攻擊事件回顧
2、惡意軟件Mirai是什么
3、Mirai如何感染IOT設備的
4、Mirai如何控制IOT設備發(fā)起攻擊
5、Mirai的另一種攻擊思路
6、如何防止智能設備被惡意利用
附錄:《感染IOT設備的惡意軟件Mirai源代碼分析》

攻擊事件回顧
日前,一場(chǎng)大規模的互聯(lián)網(wǎng)癱瘓席卷了美國,2016年10月21日 11:10 UTC(北京時(shí)間19:10左右)惡意軟件Mirai控制的僵尸網(wǎng)絡(luò )對美國域名服務(wù)器管理服務(wù)供應商Dyn發(fā)起DDOS攻擊,從而導致許多網(wǎng)站在美國東海岸地區宕機。
你可能沒(méi)有聽(tīng)說(shuō)Dyn,但你一定知道這些網(wǎng)站,如GitHub、Twitter、PayPal等。Dyn為這些著(zhù)名網(wǎng)站提供基礎的DNS服務(wù),當其受到攻擊時(shí),用戶(hù)無(wú)法通過(guò)域名訪(fǎng)問(wèn)這些站點(diǎn)。
惡意軟件Mirai是什么
安全研究人員表示,造成此次網(wǎng)絡(luò )宕機事件的罪魁禍首,可能是大量的物聯(lián)網(wǎng)設備——包括聯(lián)網(wǎng)的攝像頭和數字錄像機,這些設備可能因遭到黑客劫持而被利用。
據悉,控制這些設備的惡意軟件名為Mirai。Mirai惡意軟件的源代碼由匿名人士開(kāi)發(fā),并于10月公開(kāi)。Mirai軟件能夠感染各類(lèi)存在漏洞的物聯(lián)網(wǎng)設備,其中包括安保攝像頭、DVR以及互聯(lián)網(wǎng)路由器等。通過(guò)惡意感染,這些物聯(lián)網(wǎng)裝置將成為僵尸網(wǎng)絡(luò )中的肉雞設備,并被用于實(shí)施大規模DDoS攻擊。
Mirai如何感染IOT設備的
1、網(wǎng)絡(luò )掃描存在telnet服務(wù)
2、61組用戶(hù)名密碼組合暴力破解存在弱密碼和出廠(chǎng)密碼的iot設備
3、登陸telnet成功以后,遠程執行命令獲取iot設備指紋信息
4、遠程下載iot設備架構對應的惡意可執行程序并執行
5、惡意程序執行以后,在局域網(wǎng)內掃描存在該漏洞的其他設備
6、感染周邊的設備
Mirai如何控制IOT設備發(fā)起攻擊
Mirai惡意程序有很強的自我保護性,會(huì )隱身,有反GDB調試能力,有防止watchdog重啟設備能力;同時(shí)mirai有很一定的排它能力,能后殺死其他惡意程序或者僵尸網(wǎng)絡(luò )遠程控制。
Mirai一旦感染設備以后,獲得設備的絕對控制權,會(huì )自動(dòng)加載DDoS攻擊模塊,當有新的攻擊指令下發(fā)的時(shí)候,就會(huì )發(fā)起DDoS攻擊。
Mirai的另一種攻擊思路
Mirai感染設備后,擁有絕對控制權,除了把設備當成攻擊的發(fā)起者來(lái)進(jìn)行DDoS攻擊以外,還能夠對設備本身的系統、業(yè)務(wù)、數據造成嚴重危害,比如能夠篡改數據、竊取數據、修改系統配置、刪除系統文件、殺死業(yè)務(wù)服務(wù)等等。
如何防止智能設備被惡意利用
1、提高安全意識,杜絕使用初始密碼以和弱密碼,提供密碼安全等級
2、關(guān)閉多余的系統功能以及命令
3、限制busybox使用權限
4、關(guān)閉48101端口
5、添加監控,防止惡意程序的運行
附錄:《感染IOT設備的惡意軟件Mirai源代碼分析》
目錄
一、源碼結構樹(shù)
二、源碼主要包含了三大塊功能
三、loader功能
四、bot模塊
五、CnC command and control模塊
1 源碼結構樹(shù)
整個(gè)源碼量不大,一個(gè)較小的工程,總共48個(gè)定義、實(shí)現文件。文件結構如下圖

2 源碼主要包含了三大塊功能
1、loader
攻擊程序加載器,用于將實(shí)際攻擊程序加載到目標IOT設備上。
2、bot
用于實(shí)施惡意攻擊的程序模塊,該模塊為被控制端。
3、cnc
控制端模塊,用于管理bot以及命令的應答和處理。
3 loader功能
由于線(xiàn)程處理邏輯相對其他來(lái)說(shuō),比較復雜,這里摘除不容易理解部分分析說(shuō)明一下。
handle_event函數負責處理server與目標肉雞telnet連接上交互的數據。
處理主要分為三個(gè)大部分,每個(gè)大部分又有很多小的步驟來(lái)組成。為了區分每個(gè)步驟的處理邏輯,handle_event中維護了簡(jiǎn)單的狀態(tài)機,定義如下:
TELNET_CLOSED, // 0
……
TELNET_CLEANUP // 19
這部分在查看代碼的時(shí)候會(huì )發(fā)現,大量用到ECCHI命令。
主要有兩個(gè)方面的考慮:
篩選目標telnet肉雞系統,防止目標是比較完整的linux機器,甚至能夠識別出一些蜜罐系統比如cowrie。因為這些無(wú)關(guān)的系統在執行busybox ECCHI命令后,會(huì )提出一些helper信息,而不是簡(jiǎn)單的”ECCHI: applet not found”
起標簽作用,攻擊者在很多命令后面都會(huì )添加上"/bin/busyboxECCHI",在返回處理結果的數據中,可以找”ECCHI: applet not found”的位置,來(lái)區分獲取想要得到的數據。


4 bot模塊
bot模塊,用于實(shí)施攻擊的程序,包含自身保護機制、掃描、域名解析、各種DDoS攻擊等。
攻擊模塊加載初始化,添加udp、tcp、dns、vse、syn等多種攻擊模塊,具體每種攻擊實(shí)現都可以在attack_xx.c文件中找到。

5 CnC command and control模塊
攻擊主控端模塊,主要創(chuàng )建兩個(gè)服務(wù),分別監聽(tīng)在23/101端口上。分別提供主要提供bot相關(guān)的管理;命令的應答處理。
