7、連接C&C,等候發(fā)動攻擊
Mirai的攻擊類型包含UDP攻擊、TCP攻擊、HTTP攻擊以及新型的GRE攻擊。其中,GRE攻擊就是著名安全新聞工作者Brian Krebs的網(wǎng)站KrebsOnSecurity.com遭受的主力攻擊形式,攻擊的初始化代碼如下:

C&C會被初始化在一張表中,當Mirai回連C&C時,會從表中取出C&C進行連接。

連接C&C成功后,Mirai會進行上線,其上線過程非常簡單,自身簡單向C&C發(fā)送4個字節(jié)的0。

接下來會等候C&C的控制命令,伺機對目標發(fā)動攻擊。對于接受控制命令處做了一些處理,比如首先會進行試讀來做預(yù)處理(控制指令長度判定等等),最后才會接受完整的控制命令。
當接受到控制命令后,Mirai對控制命令做解析并且執(zhí)行。控制命令格式如下:
type Attackstruct {
Durationuint32
Typeuint8
Targetsmap[uint32]uint8 //Prefix/netmask
Flagsmap[uint8]string // key=value
}
其中,前4個字節(jié)為攻擊時長,接下來的4個字節(jié)為攻擊類型(攻擊ID),然后是攻擊目標,攻擊目標格式如下:
目標數(shù)(4個字節(jié))IP地址(4個字節(jié))MASK(一個字節(jié))IP地址(4個字節(jié))MASK(一個字節(jié))IP地址….MASK…最后是Flags,F(xiàn)lag是一系列的鍵值對數(shù)據(jù),結(jié)構(gòu)類似于攻擊目標的格式。下面列出Mirai僵尸網(wǎng)絡(luò)攻擊功能列表。
攻擊類型(32位)類型值攻擊函數(shù)ATK_VEC_UDP0attack_udp_genericATK_VEC_VSE1attack_udp_vseATK_VEC_DNS2attack_udp_dnsATK_VEC_UDP_PLAIN9attack_udp_plainATK_VEC_SYN3attack_tcp_synATK_VEC_ACK4attack_tcp_ackATK_VEC_STOMP5attack_tcp_stompATK_VEC_GREIP6attack_gre_ipATK_VEC_GREETH7attack_gre_ethATK_VEC_PROXY8attack_app_proxy(已經(jīng)被取消)ATK_VEC_HTTP10attack_app_http這其中的GRE攻擊也就是9月20日安全新聞工作者Brian Krebs攻擊事件的主力攻擊類型。
scanListen分析
ScanListen主要用于處理bot掃描得到的設(shè)備信息(ip、端口、用戶名、密碼),并將其轉(zhuǎn)化為如下格式后輸入給Load處理。

Load分析
Load模塊的主要功能是處理scanListen的輸入并將其解析后針對每個設(shè)備實施感染。其感染實現(xiàn)方法如下:
(1)首先通過Telnet登陸目標設(shè)備。
(2)登陸成功后,嘗試運行命令/bin/busybox ps來確認是否可以執(zhí)行busybox命令。

(3)遠程執(zhí)行/bin/busybox cat /proc/mounts;用于發(fā)現(xiàn)可讀寫的目錄。

(4)如果發(fā)現(xiàn)可用于讀寫的文件目錄,進入該目錄并將/bin/echo拷貝到該目錄,文件更名為dvrHelpler,并開啟所有用戶的讀寫執(zhí)行權(quán)限。

(5)接下來通過執(zhí)行命令”/bin/busybox cat /bin/echo\r\n”來獲取當前設(shè)備架構(gòu)信息。

(6)如果獲取架構(gòu)信息成功,樣本試圖通過三種方式對設(shè)備進行感染,這三種方式分別為echo方式、wget方式、tftp方式。

(7)接下來通過Telnet遠程執(zhí)行下放的程序。

(8)最后遠程刪除bot程序。