Mirai物联网僵尸攻击深度解析

zero(1个字节)IP地址(4bytes)端口(2bytes)用户名长度(4bytes)用户名(muti-bytes)密码长度(4bytes)密码(muti-bytes)

  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程序。