瞄准物联网,“Gafgyt”木马新变种出现
-
作者:火绒安全
-
发布时间:2023-08-28
-
阅读量:724
近期,火绒安全实验室发现一起病毒入侵事件,经排查分析后,确认为 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