文章总结: 本文分析了针对华硕路由器的新型恶意软件KadNap,其利用KademliaDHT协议构建去中心化P2P网络以隐藏C2服务器,有效规避传统监控。该恶意软件通过脚本持久化,结合加密算法进行节点发现与指令接收,将设备转化为恶意代理进行售卖。该网络隐蔽性强,建议结合文中IOC指标进行排查与防御。 综合评分: 88 文章分类: 恶意软件,IoT安全,逆向分析,威胁情报
感染便成为恶意流量代理!批量华硕路由器正沦为僵尸网络
二进制空间安全
2026年3月16日 16:29 北京
将二进制空间安全设为”星标⭐️”
第一时间收到文章更新
技术背景
#
#
具备这种自动化僵尸网络建立能力的是一款名为”KadNap”新型复杂恶意软件,KadNap 采用了一种定制版的Kademlia分布式哈希表(DHT)协议,该协议被用于在P2P系统中隐藏其基础设施的IP地址,从而绕过传统的网络监控。受感染的设备利用DHT协议来定位并连接C2服务器,而防御者却难以发现这些C2服务器并将其添加到威胁列表中。
Kademlia是分布式哈希表(DHT)的一种实现,允许在对等节点间高效地进行去中心化信息查找,并已通过BitTorrent DHT、eMule、I2P 和以太坊等多个现实世界的协议得到了验证。
为了更好地理解这一系统,可以将Kademlia想象成通过“朋友链”来寻找某人的电话号码:每个朋友都不知道完整的号码,但都知道谁能让你离答案更近一步。沿着这条链条传递你的请求,你很快就能拼凑出完整的电话号码。同样地,Kademlia节点会将查询转发给那些在逻辑上更“接近”目标的节点,从而在无需知晓整个网络结构的情况下,实现快速高效的搜索。
简而言之,这种对DHT协议的创新性使用,使得恶意软件能够通过隐藏在合法的P2P流量噪声中,建立起难以被阻断的稳健通信信道。一旦接入网络,这些僵尸设备便通过一项名为“Doppelganger”的代理服务进行售卖,该服务专为犯罪活动量身定制。
技术分析
大多数被感染的华硕设备都在与一组特定的服务器进行通信, 在被感染的设备中,恶意文件会从IP地址为212.104.141[.]140 的服务器下载一个名为 aic.sh 的 Shell 脚本。该脚本一旦执行,便将受害者设备加入到一个P2P网络,脚本内容如下图:
该文件设置了一个定时任务,在每小时的第55分钟从服务器拉取恶意Shell脚本,将其重命名为 .asusrouter,然后从 /jffs/.asusrouter 位置执行它。在持久化机制初始化完成后,它会下载一个针对华硕路由器的恶意ELF文件,将其重命名为 kad,随后执行该文件:
一旦加载了来自恶意软件服务器的ELF文件,KadNap的安装过程随即开始。除了构建用于查找隐藏C2地址的“电话树”外,该恶意软件还具备一定的通用性, 每个样本在初始化时都会执行 fork操作,将标准输入(STDIN)、标准输出(STDOUT)和标准错误(STDERR)重定向至 /dev/null,确定外部IP地址,并将其存储在一个初始化的结构体中, 如下图:
接下来,它会遍历一个NTP服务器列表直至建立连接,获取当前时间,并将其与主机运行时间(uptime)一同存储。这些值将在后续的网络通信中用于生成哈希值,以便“联系朋友”并在网络中查找其他对等节点,如下图:
时间同步完成后,恶意软件会执行fork操作创建一个子进程。该子进程利用已知的引导节点(bootstrap nodes)连接到BitTorrent网络,并生成一个自定义的DHT数据包,以搜索其他受感染节点从而接收指令。随后,子进程通过以下方式创建一个自定义的信息哈希值:它使用一个 XOR 密钥填充bencoded字符串中的“name”字段,该XOR密钥是通过联系NTP服务器并结合计算机的运行时间计算得出的。接着,它将硬编码的0x40字节字符串 6YL5aNSQv9hLJ42aDKqmnArjES4jxRbfPTnZDdBdpRhJkHJdxqMQmeyCrkg2CBQg 与该XOR密钥进行SHA-1哈希运算,并将所得值存储在bencoded字符串的“pieces”字段中,如下图:
随后,它对完整的bencoded字符串进行SHA-1 哈希运算,并将结果作为信息哈希值用于查找其他对等节点,然后通过管道将该值发送出去,供另一个线程读取。系统会立即创建另一个线程,从管道中读取六个字节,这些数据代表网络上某个对等节点的IP地址和端口号。该线程会连接到该对等节点,接收一个大小为0x1000字节的缓冲区,并使用硬编码的密钥对其进行解密。接着,它对解密后的负载进行SHA-1哈希运算,并将生成的哈希值作为密钥,用于加密和解密后续的通信流量,如下图:
随后,它解析该负载并再次对其进行SHA-1哈希运算。此哈希值将作为密钥,用于对后续流量进行 AES 加密和解密。
当连接到最终的对等节点后,如果初始握手成功,恶意软件将接收到一个额外的负载,该负载会被解密并保存为文件。文件的路径和文件名会被发送到第二个管道中,供另一个线程读取。在与恶意软件所寻找的最终对等节点建立联系后,共接收到了两个文件。其中一个名为 fwr.sh(可能用于设置防火墙规则),该脚本还会关闭受感染设备上的 22 端口。
父线程在启动上述两个线程后继续运行,并进入一个循环,该循环调用两个主要函数。第一个函数 readCommandFromPipe2AndExecute 负责从管道中读取文件名并执行该文件,如下图:
上面的tmpSose函数会检查文件 /tmp/.sose 是否存在;如果存在,则从该文件中读取十个字节。/tmp/.sose 文件包含 C2服务器的IP地址和端口列表,以及其他一些配置信息。随后,样本会执行fork操作创建子进程,并尝试连接这些 C2 服务器。
在真正的Kademlia点对点网络中,最终节点会随时间变化,这反映了其去中心化的特性。然而分析过程中发现,在到达C2服务器之前,总是经过相同的两个最终跳节点。这表明攻击者维护着持久化的节点,以保留对网络的控制权。这两个长期存在的节点分别是 45.135.180[.]38 和 45.135.180[.]177,如下图:
总结
KadNap僵尸网络在众多支持匿名代理的僵尸网络中独树一帜,它利用P2P网络实现去中心化控制。其意图显而易见:逃避检测,并增加防御者的防护难度。KadNap的僵尸程序通过名为“Doppelganger”的服务进行售卖,该服务的用户利用这些被劫持的设备实施各种恶意活动,包括暴力破解攻击和高度定向的漏洞利用行动。因此,与该僵尸网络相关的每一个IP地址都对组织和个人构成了重大且持久的风险。
(全文完)
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:二进制空间安全 《感染便成为恶意流量代理!批量华硕路由器正沦为僵尸网络》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论