
4、重綁定技術(shù)防止外來者搶占資源
Mirai有一個(gè)特點(diǎn)就是具有排他性,設(shè)備一旦感染,其會通過端口來關(guān)閉Telnet(23)、SSH(22,編譯時(shí)可選刪除項(xiàng))、HTTP(80,編譯時(shí)可選刪除項(xiàng))服務(wù)并且會阻止這些服務(wù)進(jìn)行重啟,其主要實(shí)現(xiàn)方法是通過kill強(qiáng)制關(guān)閉這三個(gè)服務(wù)進(jìn)程,并強(qiáng)行占用這些服務(wù)開啟時(shí)所需要的端口。此舉Mirai既可以防止設(shè)備被其他惡意軟件感染,也可以防止安全人員從外部訪問該設(shè)備,提高M(jìn)irai的取證難度。此功能實(shí)現(xiàn)在killer.c文件中。
Telnet服務(wù)的重綁定實(shí)現(xiàn)如下圖,SSH和HTTP服務(wù)采用類似的方式實(shí)現(xiàn)。

SSH服務(wù)的重綁定實(shí)現(xiàn):

HTTP服務(wù)的重綁定實(shí)現(xiàn):

通過對實(shí)際樣本的分析我們發(fā)現(xiàn),大部分黑客并沒有對SSH和HTTP進(jìn)行重綁定操作,絕大部分都只針對于Telnet服務(wù)進(jìn)行了重綁定。
5、干掉競爭對手,獨(dú)占資源
Mirai會通過一種 memory scraping的技術(shù)干掉設(shè)備中的其他惡意軟件,其具體做法是搜索內(nèi)存中是否存在QBOT特征、UPX特征、Zollard蠕蟲特征、Remaiten bot特征來干掉對手,以達(dá)到獨(dú)占資源的目的。

此外,Mirai如果發(fā)現(xiàn)anime惡意軟件,同樣也會強(qiáng)行干掉它。

6、可感染設(shè)備探測
Mirai僵尸隨機(jī)掃描網(wǎng)絡(luò)中IOT設(shè)備的Telnet服務(wù)并通過預(yù)植的用戶名密碼進(jìn)行暴力破解,然后將掃描得到的設(shè)備IP地址、端口、設(shè)備處理器架構(gòu)等信息回傳給Load服務(wù)器。這里要注意的是,Mirai的隨機(jī)掃描是有一個(gè)過濾條件的,其中比較有意思就是他會過濾掉通用電氣公司、惠普公司、美國國家郵政局、國防部等公司和機(jī)構(gòu)的IP地址。

Mirai僵尸中內(nèi)置有60余個(gè)用戶名和密碼,其中內(nèi)置的用戶名和密碼是加密處理過的,加密算法是通過簡單的單字節(jié)多次異或?qū)崿F(xiàn),其密鑰為0xDEADBEEF, 解密密鑰為0xEFBEADDE。

Mirai使用高級SYN掃描技術(shù)對網(wǎng)絡(luò)中的設(shè)備進(jìn)行掃描破解,其速度較僵尸程序QBOT所采用的掃描技術(shù)快80倍,資源消耗減少至少達(dá)20倍。因此具備強(qiáng)大的掃描感染能力,黑客在收集肉雞過程中,曾經(jīng)每秒可新增500個(gè)IOT設(shè)備。
Telnet服務(wù)掃描實(shí)現(xiàn)如下:

當(dāng)Mirai掃描到Telnet服務(wù)時(shí),會連接Telnet并進(jìn)行暴力登錄嘗試。Mirai首先會使用內(nèi)置的用戶名和密碼嘗試登錄,之后通過發(fā)送一系列命令來判定登錄成功與否。如果成功則試圖進(jìn)行一些操作,比如開啟shell等操作,其發(fā)送的命令被初始化在一個(gè)Table中,如下表所示:
命令操作類型Index功能描述TABLE_SCAN_CB_DOMAIN18yesdomain to connect toTABLE_SCAN_CB_PORT19yesPort to connect toTABLE_SCAN_SHELL20yes‘shell’ to enable shell accessTABLE_SCAN_ENABLE21yes‘enable’ to enable shell accessTABLE_SCAN_SYSTEM22yes‘system’ to enable shell accessTABLE_SCAN_SH23yes‘sh’ to enable shell accessTABLE_SCAN_QUERY24yesecho hex string to verify loginTABLE_SCAN_RESP25yesutf8 version of query stringTABLE_SCAN_NCORRECT26yes‘ncorrect’ to fast-check for invalid passwordTABLE_SCAN_PS27no“/bin/busybox ps”TABLE_SCAN_KILL_928no“/bin/busybox kill -9 “以上表格中只有TABLE_SCAN_PS和TABLE_SCAN_KILL_9進(jìn)行了初始化而未對目標(biāo)設(shè)備進(jìn)行預(yù)執(zhí)行操作。從20到26的操作均是在發(fā)送用戶名和密碼后的登錄驗(yàn)證操作。其中TABLE_SCAN_CB_DOMAIN和TABLE_SCAN_CB_PORT為黑客配置的Load服務(wù)器,該服務(wù)器用于獲取有效的Telnet掃描結(jié)果,掃描結(jié)果中包含IP地址、端口、Telnet用戶名和密碼等信息。發(fā)送信息的格式如下: