近期,火绒安全实验室发现一起病毒入侵事件,经排查分析后,确认为 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
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)