7、连接C&C,等候发动攻击
Mirai的攻击类型包含UDP攻击、TCP攻击、HTTP攻击以及新型的GRE攻击。其中,GRE攻击就是著名安全新闻工作者Brian Krebs的网站KrebsOnSecurity.com遭受的主力攻击形式,攻击的初始化代码如下:
C&C会被初始化在一张表中,当Mirai回连C&C时,会从表中取出C&C进行连接。
连接C&C成功后,Mirai会进行上线,其上线过程非常简单,自身简单向C&C发送4个字节的0。
接下来会等候C&C的控制命令,伺机对目标发动攻击。对于接受控制命令处做了一些处理,比如首先会进行试读来做预处理(控制指令长度判定等等),最后才会接受完整的控制命令。
当接受到控制命令后,Mirai对控制命令做解析并且执行。控制命令格式如下:
type Attackstruct {
Durationuint32
Typeuint8
Targetsmap[uint32]uint8 //Prefix/netmask
Flagsmap[uint8]string // key=value
}
其中,前4个字节为攻击时长,接下来的4个字节为攻击类型(攻击ID),然后是攻击目标,攻击目标格式如下:
目标数(4个字节)IP地址(4个字节)MASK(一个字节)IP地址(4个字节)MASK(一个字节)IP地址….MASK…最后是Flags,Flag是一系列的键值对数据,结构类似于攻击目标的格式。下面列出Mirai僵尸网络攻击功能列表。
攻击类型(32位)类型值攻击函数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(已经被取消)ATK_VEC_HTTP10attack_app_http这其中的GRE攻击也就是9月20日安全新闻工作者Brian Krebs攻击事件的主力攻击类型。
scanListen分析
ScanListen主要用于处理bot扫描得到的设备信息(ip、端口、用户名、密码),并将其转化为如下格式后输入给Load处理。
Load分析
Load模块的主要功能是处理scanListen的输入并将其解析后针对每个设备实施感染。其感染实现方法如下:
(1)首先通过Telnet登陆目标设备。
(2)登陆成功后,尝试运行命令/bin/busybox ps来确认是否可以执行busybox命令。
(3)远程执行/bin/busybox cat /proc/mounts;用于发现可读写的目录。
(4)如果发现可用于读写的文件目录,进入该目录并将/bin/echo拷贝到该目录,文件更名为dvrHelpler,并开启所有用户的读写执行权限。
(5)接下来通过执行命令”/bin/busybox cat /bin/echo\r\n”来获取当前设备架构信息。
(6)如果获取架构信息成功,样本试图通过三种方式对设备进行感染,这三种方式分别为echo方式、wget方式、tftp方式。
(7)接下来通过Telnet远程执行下放的程序。
(8)最后远程删除bot程序。