找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1757

积分

0

好友

257

主题
发表于 5 天前 | 查看: 17| 回复: 0

背景介绍

根据该超大规模僵尸网络运行时输出的信息及其对wolfSSL库的调用情况,安全研究人员将其命名为Kimwolf。Kimwolf是一个使用NDK编译的僵尸网络(Botnet),主要感染Android IoT设备。除了典型的DDoS攻击能力外,它还集成了代理转发、反向Shell以及文件管理等功能。整体架构设计并不复杂,但具备几个值得关注的技术特点:样本使用了一种简单高效的栈XOR操作来加密敏感数据;同时,它利用DNS over TLS(DoT) 协议封装DNS请求,以规避传统安全检测。此外,其C2身份认证采用了基于椭圆曲线的数字签名保护机制,Bot端只有在签名校验通过后才会接受通信指令。近期,它甚至引入了EtherHiding 技术,利用区块链域名来对抗封禁。这些特性在同类恶意软件中相对少见。

Kimwolf的攻击目标主要针对运行Android系统的各类网络设备,包括智能电视、机顶盒、平板电脑等。部分受感染的设备型号如下:

图片

高调记仇的攻击者

Kimwolf的作者在恶意代码中留下了带有强烈个人情绪和侮辱性的字符串,如下图所示:

图片

该攻击者表现得非常“记仇”。在其某个C2地址被安全研究人员抢注后,便在后续版本的ssl_socketDDoS攻击模块中加入了侮辱性字眼进行反击:

图片

这种夸张的做法甚至蔓延到攻击载荷(Payload)中。Kimwolf经常在DDoS攻击的Payload里嵌入各种嘲讽、挑衅乃至勒索信息。

嘲讽内容:
图片

挑衅内容:
图片

勒索内容:
图片

Kimwolf总体技术分析

Kimwolf在感染设备中启动后,首先通过创建文件套接字实现单实例运行,确保同一设备只有一个进程持续活动。随后,它解密内嵌的C2域名,并为了躲避传统检测,使用DNS-over-TLS 协议向公共DNS服务(如8.8.8.8或1.1.1.1)的853端口发起查询,以获取真实的C2 IP地址。最后,它与该IP建立通信连接,进入等待命令的状态。

Kimwolf在不同版本中采用了两种获取真实C2 IP的方法。第一种是直接查询C2域名的A记录。第二种则是在获取IP后,还需进行一次XOR运算。以C2域名rtrdedge1.samsungcdn.cloud为例,解析出的IP是44.7.0.45;与密钥0xce0491进行XOR运算后,得到真实的C2 IP45.206.3.189。如下图所示:

图片

随后,Kimwolf开始利用EtherHiding 技术。样本引入了一个ENS(以太坊名称服务)域名pawsatyou.eth,C2地址被隐藏在名为“lol”的TXT文本记录中。如下图所示:

图片

但真正的C2并非“lol”记录中的IPv6地址,而是通过取该地址的最后4个字节并执行异或操作来获取。以fed0:5dec:ea5e:d013:130:9:1be7:8599为例,取最后4个字节1b e7 85 99,与密钥0x93141715进行异或操作后,得到真实的C2 IP136.243.146.140

图片

ENS的技术本质是一个部署在以太坊上的智能合约系统。pawsatyou.eth的合约地址是0xde569B825877c47fE637913eCE5216C644dE081F。Kimwolf通过这个合约实现了一个类似云配置的C2分发通道。即使某个C2 IP被查封,攻击者只需更新ENS合约中的“lol”记录即可快速发布新的C2地址。这个通道依赖于区块链的去中心化特性,难以被传统手段封锁。

图片

字符串解密

Kimwolf使用简单的栈XOR操作来加密敏感数据,如C2地址、DNS解析器等。在IDA反编译的伪代码中可以看到大量类似的代码片段。veorq_s64是一条8字节的XOR指令,因此解密过程很简单:提取操作数并执行XOR即可。在下图中,变量v63解密后的内容正是C2地址staging.pproxy1[.]fun

图片

通过观察上述代码片段可知,解密后的C2字符串是函数sub_8F00的第二个参数。基于这一特性,可以利用模拟器实现C2地址的批量自动解密。

import flare_emu
eh=flare_emu.EmuHelper()
def iterateHook(eh, address, argv, userData):
    if eh.isValidEmuPtr(argv[1]):
        buf=eh.getEmuString(eh.getRegVal('R1'))
        print(f"0x{address:x} ---> {buf}")
eh.iterate(0x00008F00, iterateHook)

最终效果如下,成功解密了6个C2地址:
图片

veorq_s64对应的指令码是VEOR Q8, Q8, Q9。通过定位所有包含此指令的函数,并根据不同函数中呈现的模式,使用flare_emuiterateemulateRange功能,可以方便地解密所有敏感字符串。如下图:

图片

网络协议

Kimwolf的网络通信全程使用TLS加密。在早期版本中,应用层协议直接通过TLS隧道传输;在当前版本中,发送register消息前会进行WebSocket握手,但后续并未实际使用该协议。其网络通信数据包遵循固定的“Header + Body”格式。Header中,保留字段为固定值1,而Magic值已迭代三次,目前为AD216CD4;消息体结构则根据消息类型变化。

type Header struct {
    Magic    [4]byte // "DPRK" -> "FD9177FF" -> "AD216CD4"
    Reserved uint8   // 1
    MsgType  uint8
    MsgID    uint32
    BodyLen  uint32
    CRC32    uint32
}

MsgType字段用于标识消息类型,其值与对应功能如下表所示:
图片

Bot与C2服务器之间的通信初始化采用三阶段握手机制。双方必须依次完成registerverifyconfirm交互,以在建立可信会话前实现双向身份认证。

图片

第一步:注册 (Bot -> C2)
Bot向C2发送一个18字节的头部,其中MsgType为0,MsgID、BodyLen、CRC32字段均为0,Magic为FD9177FF

第二步:验证 (C2 -> Bot)
C2使用私钥为随机消息生成椭圆曲线数字签名,并按照以下格式构建数据包主体:

type VerifyBody struct {
    MsgLen uint32
    Msg    []byte
    SigLen uint32
    Sig    []byte
}

解析示例数据包主体,含义如下:消息长度4字节,签名为0x47字节。
签名示例如下:
图片

当Bot接收到验证数据包时,会使用硬编码的公钥来验证签名。验证通过后,进入最终的确认阶段。这种网络安全与身份认证机制旨在保护其C2网络不被他人接管。

图片

第三步:确认 (Bot -> C2)
木马使用运行时传递的第一个参数作为组标识符,按照GroupBody结构构建数据包并上报给C2。示例中使用的组字符串是android-postboot-rt

type GroupBody struct {
    MsgLen uint32
    Group  []byte
}

C2服务器接收到确认数据包后,会检查其所属的组是否已在活动中预先启用。匹配成功后,Bot身份被确认为合法,C2会回复一个确认响应包(MsgType=2,MsgID、BodyLen、CRC32均为0)。

完成上述三步握手后,Bot与C2建立了可信连接,开始等待并执行C2发送的命令。当命令编号为12时,Kimwolf执行DDoS攻击功能,其涉及的网络协议与并发处理逻辑较为复杂。

type DDoSBody struct {
    AtkID     uint32
    AtkType   uint8
    Duration  uint32
    TargetCnt uint32
    Targets   []Target
    FlagCnt   uint32
    Flags     []Flag
}

Kimwolf支持以下13种DDoS攻击方法:
图片

后记

攻击者在获得智能电视等设备的root权限后,其危害远超传统网络空间。攻击者可能利用受控终端插入篡改、违法或极端的视频内容。

面对此类多重威胁,无论是普通用户、销售渠道、运营商,还是监管部门和制造商,都必须高度重视Android IoT设备的安全。对于用户而言,尤其需要:确保设备来自可靠渠道、使用能及时更新的固件、避免设置弱密码、并拒绝安装来源不明的APK应用,以降低被此类僵尸网络感染和控制的风险。

(全文完)




上一篇:Tesla到Pascal架构演进:五代NVIDIA GPU核心特性对比与CUDA能力解析
下一篇:Linux内核TCP数据接收深度解析:快路径与慢路径的工作机制与性能优化
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 21:10 , Processed in 0.255767 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表