近期,火绒安全实验室发现一起病毒入侵事件,经排查分析后,确认为Gafgyt木马病毒的新变种。Gafgyt是一款基于IRC协议的物联网僵尸网络程序,主要感染基于Linux的IoT设备来发起分布式拒绝服务攻击(DDoS)。它是除Mirai家族之外,最大的活跃物联网僵尸网络家族,其源码在2015年被泄露并上传至GitHub后,各类变种及利用层出不穷,对用户构成较大的安全威胁。目前,火绒安全产品可对上述病毒进行拦截查杀,请企业用户及时更新病毒库以进行防御。
火绒查杀图
一
样本分析
病毒首先对自身进程重命名为"/usr/sbin/dropbear"或 "sshd"隐藏自身:
进程重命名
其中发现被加密字符串,解密算法则是对0xDEDEFFBA的字节异或。使用时,只有用到的才进行单个解密,但实际引用的只有4个:
加密字符串及解密算法
其中第一个引用只是向屏幕输出对应字符串,中间两个引用则是对watchdog进程的操作,用以避免设备重启而丢失控制权:
解密并引用
剩余的操作在循环中进行,包括初始化C2连接(94.156.161.21:671),发送平台设备类型,接收回传命令并执行对应模块操作。且与Gafgy泄露的源码相比,命令的格式和处理并没有太大改动,命令下发的格式依旧为"!*Command [Parameter]"
循环操作代码
在 processCmd函数中,总共对14 个命令进行响应并发起对应的DDOS类攻击行为,包括:“HTTP”,“CUDP”,“UDP”,“STD”,“CTCP”,“TCP”,“SYN”,“ACK”,“CXMAS”,“XMAS”,“CVSE”,“VSE”,“CNC”,“NIGGA”
命令截图
其中CUDP、UDP、CTCP、TCP模块都能够向指定IP和端口发送随机字符串,且都可以通过自建IP 头的方式进行TCP 和UDP 报文重构,以此来隐藏源IP 地址。
报文构造
前缀 C猜测是 custom的缩写,以CUDP 和UDP 为例,在Gafgyt原始版本中,下发的命令中带有的参数包括:ip、port、time、spoofed、packetsize、pollinterval等字段值和标志位用于UDP报文的构建。而在该样本中,观察到的结果显示其为这些参数不同限制程度上的应用,能增强特定类型DDOS 攻击的灵活性。
CUDP 和UDP 对比
其它的模块的作用包括增加了大量的User-Agent字符串,用于发起CC 攻击的HTTP 命令:
CC 攻击
包括用于针对Valve Source引擎服务器的攻击:("Source Engine" 查询是使用Valve软件协议在客户端和游戏服务器之间进行日常通信的一部分 )
针对游戏行业攻击
包括可以切换连接IP 的CNC 命令:
切换连接IP
包括 SYN和 ACK攻击:
SYN 和ACK 攻击
包括 UDP STD flood 攻击:
STD 攻击
包括XMAS攻击:(即圣诞树攻击,通过把TCP 所有标志位设置为1,由此消耗目标系统更多响应处理资源 )
XMAS 攻击
NIGGA 模块相当于原版中的KILLATTK 命令,通过Kill 掉除主进程外的所有子进程来停止DoSS 攻击
NIGGA 模块
源代码中存放主要逻辑的函数processCmd 包括PING、GETLOCALIP、SCANNER、EMAIL、JUNK、UDP、TCP、HOLD、KILLATTK、LOLNOGTFO模块,在本次捕获的变种利用中共存的只剩简化版的UDP 和TCP 模块。
且在获取本地IP 操作中,原始版本是通过/proc/net/route 获取本地IP 并通过GETLOCALIP模块进行回传。在该变种中观察到同样的获取操作,但这里没有GETLOCALIP模块,且未观察到任何引用。
获取本地IP
值得注意的是,该类样本中没有原始版本的用于爆破SSH(22端口)的SCANNER模块,也没有其它变种中嵌入多种"应用/设备"的漏洞利用Payload进行传播。可见攻击者把传播模块拆分成独立的程序,在成功登录受害者主机后会通过执行shellcode的方式下载用于下一阶段的通信样本,即本次分析样本。
执行shellcode 示例
以获取到的同源样本为例,攻击者对大部分样本都剥离了调试信息,只有个别除外,如:x86:
文件类型信息
不同架构相比逻辑基本一致,在此不再重复分析:
样本对比图
二
附录
HASH
C&C