一种新型难清除的恶意软件,可将千家万户路由器变成僵尸网络
将二进制空间安全设为”星标⭐️”
第一时间收到文章更新
恶意软件背景
根据作者在Telegram上的推广,这款名为Masjesu的恶意软件专门针对IOT设备、路由器、网关和嵌入式设备,对多种设备架构进行了定制化兼容,包括:i386、MIPS、ARM、SPARC、PPC、68K和AMD64, 这种广泛的针对性可以确保在碎片化的硬件中实现最大程度覆盖。该恶意软件可以轻松发起数百Gbps的DDOS洪水攻击, 并且感染的基础设施地理位置分布广泛,比较适合针对CDN、游戏服务器和企业实体。
以下是Masjesu恶意软件在Telegram上的推广:


恶意软件功能架构
该恶意软件从初始入侵到发起DDos攻击的全流程,其攻击链可分为五个核心阶段,其流程如下图:

(1).初始入侵与持久化
攻击者首先利用设备漏洞(如弱口令、未修复漏洞)植入恶意载荷,随后通过两种机制实现持久化:
-
定时任务:创建名为
/usr/lib/id-unix.so.2的定时任务,确保恶意程序随系统启动自动运行; -
进程伪装:伪造
systemd-journald系统进程,隐藏自身存在,同时以守护进程形式长期驻留。
(2).系统修改与防御规避
为巩固控制权并逃避检测,Masjesu会主动修改系统配置:
-
终止安全进程:强制关闭
wget、curl、iptables等工具(图中显示为killall相关命令),阻断用户下载安全工具或配置防火墙; -
文件权限加固:将关键恶意文件权限设为
CHMOD 400(仅所有者可读),防止被意外修改或删除。
(3).命令与控制连接
僵尸客户端会主动连接攻击者搭建的C2基础设施,图中列出了多个C2域名(如conn.elbird.zip、starlight.fans等),并设置198.16.54.252作为回退IP。通过C2通道,攻击者可远程下发指令、更新恶意程序或窃取数据。
(4).自我传播
Masjesu内置扫描器与传播模块,会随机扫描公网IP,重点 targeting D-Link、华为、Netgear等品牌的易受攻击设备,通过漏洞利用实现“感染循环”——即在新设备上重复“初始入侵→持久化→连接C2”流程,快速扩大僵尸网络规模。
(5).DDoS攻击发起
当攻击者需要发动DDoS攻击时,会通过C2向所有僵尸客户端下发指令,利用多种协议发起流量洪泛:
-
UDP洪水:发送大量UDP包耗尽目标带宽;
-
ICMP洪水:利用ping请求淹没目标;
-
TCP洪水:通过SYN、ACK等标志位组合(如ACK洪水)耗尽目标连接资源;
-
HTTP洪水:模拟正常HTTP请求,针对Web服务器发起应用层攻击。
功能逆向分析
(1).主函数功能分析
首先分析一下恶意软件的主函数,看看包含了哪些功能, 关键部分加了注释,如下图:

在上面的反编译代码中,首先初始化一个TCP socket并绑定到本地55988端口进行监听,随后调用fork创建子进程,并将自身转化为守护进程以隐藏运行痕迹。在核心逻辑中,程序进入循环等待连接,接收到数据后会先进行解密处理,接着利用内存操作修改程序参数,最终调用系统命令执行器(如system或execve)来运行解密后的指令,从而实现远程命令控制。
(2).ignore_signals()函数分析
该函数实际是用来处理Unix/Linux系统中的信号, 调用了四次signal(signum, handler)系统调用来改变进程对特定信号的响应方式。
首先看一下函数原型:
void (*signal(int signum, void (*handler)(int)))(int);第一个参数signum是要捕获的信号编号。第二个参数handler是信号处理函数。
接着分析一下恶意软件是如何调用的,代码如下:

其中涉及到几个信号的应用, 信号2是SIGINT(Interrupt from keyboard,通常是 Ctrl+C);信号15是SIGTERM(Termination signal)。
信号3是 SIGQUIT(Quit from keyboard,通常是 Ctrl+\);信号9是SIGKILL(Kill signal); 信号1是SIGHUP(Hangup detected on controlling terminal or death of controlling process)。
综上分析,ignore_signals() 函数的核心目的是增强进程的生存能力。通过忽略挂起(SIGHUP)、中断(SIGINT)、退出(SIGQUIT)和终止(SIGTERM)信号,该程序试图把自己变成一个“不死”的进程,防止被管理员意外终止或通过常规手段关闭。
(3).敏感字符串加解密
Masjesu对关键字符串的暴露非常谨慎,它通过将敏感字符串加密存储在查找表中来对其进行严密保护, 这些字符串仅在运行时解密。但是在逆向分析过程中,是可以写出固定解密函数的。
先看一下初始化查找表的函数table_init(), 如图:

在图中,我已将解密出的字符串与查找表进行了对应, 关键的解密操作,还在Decrypt函数之中, 下面看看Decrypt()函数反编译代码:

图中有一个操作就是在内存中解密后,再加密回去, 用来对抗内存静态搜索字符串。下面看一下最关键的解密算法:

(4).crontabinit()函数分析
该函数的主要目的是:检查系统环境是否满足条件,如果满足,则将一个指定的文件重命名为恶意路径,并将其添加到系统的计划任务中以实现持久化。如图:

其中add_to_crontab函数会向 crontab 添加一个条目,以便每 15 分钟运行一次恶意软件。代码如下图:

(5).守护进程函数daemonize()分析
在daemonize()函数中,恶意软件让自身脱离当前的终端控制,在后台“悄悄”运行,成为一个独立的系统进程。如图:

(6).initC2()函数分析
这个函数是Masjesu僵尸网络客户端核心逻辑,通过双重fork实现守护进程,并在后台运行,使用 while(1) 死循环,断线后会自动重连。通过执行fuckothernets()清理竞争对手,通过Methodinit()发起DDoS攻击,通过killChildren()管理攻击子进程。通过连接178.16.54.252:443,发送包含架构信息([arm])的心跳包,接收并执行指令。其核心代码如下:


(7).传播恶意程序
Masjesu 利用 *Createchildrenreplic()* 函数进行进一步传播。该函数会扫描随机IP地址查找特定的硬编码开放端口。根据识别出的端口,在目标设备上执行相应的漏洞利用程序。漏洞利用成功后,恶意载荷会被下载到受感染的设备上。
生成随机IP关键代码:

漏洞利用关键代码:

点进去可以看到漏洞利用的详细过程:

防护建议
(1).定期打补丁和更新:
该僵尸网络利用了D-Link、GPON 和 Netgear 等厂商设备中已知的漏洞。请立即为所有路由器、网关和其他物联网设备安装最新的固件和软件更新,以修复这些漏洞。
(2).更改默认密码
Masjesu和其他僵尸网络通常通过暴力破解弱密码或默认密码来入侵系统。设置完成后,请立即将物联网设备上的所有默认密码更改为强密码和唯一密码。
(3).监控出站流量
Masjesu使用独特的用户代理(“masjesu”),并尝试连接到特定的命令与控制 (C2) 域和 IP 地址。实施网络监控,以检测并阻止来自物联网设备的连接到已知恶意域以及异常的出站 HTTP 请求。
(4).进程和文件完整性监控
Masjesu会尝试通过将自身重命名为看似合法的系统文件(例如 usr/lib/ld-unix.so.2)和伪造进程名称(例如 /usr/lib/systemd/systemd-journald)来获得持久性。监控可疑的新cron 作业和意外的进程名称更改,尤其是在系统目录中。
(5).实施高级终端保护 :
使用基于行为的保护来实时检测威胁。由于该僵尸网络使用混淆技术来躲避标准杀毒软件的检测,因此在执行阶段检测其行为是防止感染的最可靠方法。
(全文完)
夜雨聆风