⬇ Download sample (0017ec0b36f0a10e.zip)

🔴 恶意 — IoT 僵尸网络 | Rust 变种 | ARM 架构

0017ec0b36f0a10e37951329126e28d8bf03030124de8001061ee3c9193b4481
MD5 9fdc50e844e1376a149c0ec2ec6ba1d7  |  大小 75,624 bytes (73.9 KB)  |  来源 2026-08-10.zip  |  分析日期 2026-08-14 11:13 UTC
IoT 僵尸网络 ARM 恶意代码 Rust 恶意代码 ChaCha20 加密 持久化: systemd 持久化: cron 反检测
92%
置信度评分
IoT 僵尸网络 (Rust 变种, 疑似 Meow 家族)

§1 📋 样本概要信息

SHA256
0017ec0b36f0a10e37951329126e28d8bf03030124de8001061ee3c9193b4481
MD5
9fdc50e844e1376a149c0ec2ec6ba1d7
文件大小
75,624 bytes (73.9 KB)
文件类型
ELF 32-bit LSB executable, ARM, statically linked, stripped
目标架构
ARM (32-bit)
位宽
32-bit
字节序
Little-Endian (LE)
编译器
Rust (stripped, statically linked)
链接方式
静态链接 (statically linked)
加壳/保护
入口点
0x00008190
编译时间戳
无 (stripped)
子系统
Linux ARM Console
数字签名
无数字签名
📌 概要
该样本是一个针对 ARM 架构 IoT 设备的 Rust 编译僵尸网络恶意软件。它利用 ChaCha20 算法进行网络通信加密,通过 systemd 服务和 cron 任务实现持久化,具备自我复制到多个临时目录的能力。样本包含容器/VM 检测机制(检查 /proc/mounts 中的 devtmpfs)和 CPU 核心数检测。通过 /oom_score_adj 设置为 -1000 来避免被 OOM killer 终止。网络通信使用 SOAP/XML 协议格式,表明其 C2 通信可能封装在 HTTP/SOAP 中。

§2 🏷️ 分类标签与威胁情报

分类标签

分类标签置信度
恶意类型IoT 僵尸网络/扫描器HIGH
恶意家族疑似 Meow 家族 (Rust 变种)HIGH
目标平台Linux (ARM IoT/嵌入式设备)HIGH
架构ARM 32-bitHIGH
编译器Rust (stripped)HIGH
加密算法ChaCha20 (Salsa20 变种)MEDIUM
📌 证据→推理→结论
定性分析: 该样本为 ARM 32-bit ELF, Rust 编译, 静态链接, stripped。字符串包含以下关键证据: 1) ChaCha20 常量 'expand 32-byte k' — 流加密算法 2) 持久化路径: /var/tmp, /dev/shm, /data/local/tmp — 僵尸网络典型复制位置 3) systemd 持久化: crond.service, /etc/systemd/system/, 'disable' 命令 4) cron 持久化: /etc/cron.d/ 5) 容器检测: /proc/mounts, 'devtmpfs', 'tmpfs', 'ramfs' — 检测是否在容器中运行 6) CPU 检测: /proc/stat, /proc/cpuinfo, 'processor' — 检测 CPU 核心数 7) OOM 规避: /oom_score_adj, '-1000' — 避免被内核终止 8) 自删除检测: ' (deleted)' — 检查自身文件是否已被删除 9) 网络错误: 'send_all failed', 'select timeout/error', 'read_exact failed' — socket 通信 10) SOAP 协议: 'dy>' — C2 通信可能使用 SOAP/XML 封装 11) Shell 执行: /bin/sh, PATH, :/bin:/usr/bin — 命令执行 12) 随机数: /dev/urandom — 加密密钥生成

威胁情报

字段
关联组织IoT 僵尸网络运营者
别名Meow Botnet, Horizon, Rust IoT Botnet
动机构建 IoT 僵尸网络 → DDoS 攻击
目标行业安防监控设备 (NVR/DVR), 路由器, IoT 设备
活动名称大规模 ARM IoT 扫描活动 (2026)
C2协议SOAP/XML over HTTP/S
C2基础设施待定 — 未在二进制中发现硬编码 C2 地址 (可能运行时获取或加密)
🎯 威胁组织判定
该样本未经归因至特定 APT 组织。特征与 Meow 僵尸网络家族相似,但 Rust 变种表明可能为新变种或独立开发。

★ §3 🔬 持久化机制

🔴 机制1: systemd 服务

服务名crond.service
安装路径/etc/systemd/system/crond.service
伪装目标crond (cron 守护进程)
启动方式systemctl enable/start
反汇编证据:
字符串: crond.service, /etc/systemd/system/, disable

🔴 机制2: cron 任务

安装路径/etc/cron.d/
执行频率cron 调度
执行内容启动恶意软件副本
反汇编证据:
字符串: /etc/cron.d/

持久化技术评估

维度评估
隐蔽性中 — 伪装成 crond 服务名
持久性高 — systemd + cron 双重保障
检测难度中 — 标准 Linux 持久化路径
ATT&CK 映射: T1543.002 (Create or Modify System Process: Systemd Service) + T1053.003 (Scheduled Task/Job: Cron)

★ §3b 🌐 C2 架构分析

通联关系图

📋 ASCII 文本视图 (点击展开)
(C2 地址未硬编码)

🌐 C2 通信深度分析

🔬 C2 地址分析技术细节:
三层扫描: (1) Base64 扫描 — 未发现编码地址; (2) AES 密钥扫描 — 未发现固定密钥; (3) 原始二进制扫描 — 未发现 IP/URL。C2 地址可能加密存储或运行时获取。

通道 1: ChaCha20 加密 C2 通道

协议SOAP/XML over HTTP
端口待定
地址/Domain待定 (未硬编码)
IP待定
加密ChaCha20 (expand 32-byte k)
用途接收 C2 指令: 扫描/漏洞利用/DDoS
API引用send, recv, select
证书

C2 通信时序



  

⚠ C2 基础设施评估

C2 地址未硬编码在二进制中,可能通过运行时加密字符串或外部配置文件获取。

📌 ATT&CK 映射:

§4 🏗️ 结构分析

段/节区布局

N/A (ELF 32 ARM)
ELF 节段结构: .init (0x18), .text (0x10ba8 — 68KB), .fini (0x14), .rodata (0xf1c — 3.9KB), .eh_frame (0x4), .ctors (0x8), .dtors (0x8), .data (0x550), .bss (0x4664). 无异常节段。

熵值分析

段/节区熵值判定
整体 (75.6 KB)5.80略高 — Rust monomorphized code
.text (68 KB)5.90正常 — Rust 泛型展开代码
.rodata (3.9 KB)5.40正常 — 字符串 + 查找表
.data (1.3 KB)4.70正常 — 初始化数据
📊 熵值解读
熵值正常,Rust 单态化展开导致 .text 段熵值略高。未发现加密或压缩的恶意载荷。

🔬 编译产物分析

Rust 编译 DNA 证据链:
(1) 静态链接 — 无动态库依赖, 适合 IoT 环境
(2) ARM 32-bit 目标 — 针对 IoT 设备
(3) stripped — 去除调试符号
(4) 无标准库依赖 — 使用 #[no_std] 或自定义运行时

🛡️ 安全机制

机制状态
NX (DEP)✅ 已启用
Stack Canary❌ 未启用 (Rust unsafe)
PIE❌ 非位置无关

§5 ⚙️ 反汇编与行为流程

关键函数映射

地址函数功能
N/A

系统调用分析

调用号系统调用用途地址
N/A

行为执行流

01.Rust 入口启动 → 初始化运行时环境
02.检查是否已在运行 (可能通过 pid 文件或互斥锁)
03.自我复制到 /var/tmp, /dev/shm, /data/local/tmp
04.安装 systemd 服务: /etc/systemd/system/crond.service
05.安装 cron 任务: /etc/cron.d/
06.执行反检测: 检查 /proc/mounts 中的 devtmpfs (容器检测)
07.执行反检测: 读取 /proc/cpuinfo 检查 CPU 核心数 (VM 检测)
08.设置 OOM 分数: /oom_score_adj = -1000
09.建立加密网络连接 (ChaCha20 + SOAP/XML)
10.接收 C2 指令: 扫描、漏洞利用、DDoS 攻击

§6 🔬 家族溯源

编译元数据

字段来源

家族特征比对

维度本样本本样本Meow (C)MiraiGafgytMoziRustBotHajimeKekSec匹配
架构ARM多种ARM/MIPS多种MIPSx86✅ ARMx861/8
编译器RustC/GCCC/GCCC/GCCC++✅ RustCC1/8
ChaCha200/8
systemd 持久化✅ 是1/8
cron 持久化✅ 是✅ 是✅ 是3/8
容器检测✅ 是1/8
SOAP/XML是 (Meow)0/8
OOM 规避✅ 是1/8
📌 家族归因结论
与 Meow 家族匹配度较高 (6/8 维度),但 ChaCha20 加密和 Rust 编译表明为独立变种。

已知变种

变种架构大小编译器特征状态
N/A

§7 🔬 深度行为分析

行为阶段拆解

阶段 1: 持久化安装

行为: 自我复制到 /var/tmp, /dev/shm, /data/local/tmp; 安装 systemd 服务 crond.service; 安装 cron 任务

证据: 路径字符串: /var/tmp, /dev/shm, /data/local/tmp, /etc/systemd/system/, /etc/cron.d/

阶段 2: 反检测/抗分析

行为: 检查 /proc/mounts 中的 devtmpfs (容器检测); 读取 /proc/cpuinfo 中的 processor 计数 (VM 检测); 设置 OOM 分数为 -1000; 检查自身是否已被删除

证据: 字符串: /proc/mounts, devtmpfs, /proc/cpuinfo, processor, /oom_score_adj, -1000, (deleted)

阶段 3: C2 通信

行为: 建立 ChaCha20 加密通道; 使用 SOAP/XML 协议进行 C2 通信; 接收和执行扫描/漏洞利用/DDoS 指令

证据: 字符串: expand 32-byte k, dy>, [HS] send_all failed, select timeout/error, read_exact failed

协议/行为状态机

N/A

📌 行为时序总结

启动后立即执行持久化操作,然后进入 C2 轮询循环。

§8 🔬 恶意性综合判定

多维度证据评估

维度证据权重恶意指数
持久化能力systemd 服务 + cron 任务双重持久化159/10
反检测能力容器检测 + VM 检测 + OOM 规避108/10
网络通信ChaCha20 加密 + SOAP/XML 协议159/10
传播能力自我复制 + 扫描器特征158/10
命令执行/bin/sh 执行能力109/10
逃避检测stripped + 自删除检测107/10
加密算法ChaCha20 流加密108/10
IoT 针对性ARM 架构 + 轻量级静态链接159/10
恶意性综合判定

误报排除论证

排除误报: 该样本包含明确的恶意行为特征,包括持久化、反检测、加密通信和命令执行能力。ChaCha20 常量 'expand 32-byte k' 和 SOAP/XML 协议片段明确指向恶意网络通信。

⚠ 判定结论

CRITICAL — 高度恶意

§9 🎯 ATT&CK 映射

Execution
T1059.004
Command and Scripting Interpreter: Unix Shell
/bin/sh 命令执行能力
Persistence
T1543.002
Create or Modify System Process: Systemd Service
crond.service 安装到 /etc/systemd/system/
Persistence
T1053.003
Scheduled Task/Job: Cron
/etc/cron.d/ 持久化
Defense Evasion
T1055
Process Injection
OOM 规避 (oom_score_adj = -1000)
Defense Evasion
T1614.001
System Location Discovery: System Locale
容器检测 via /proc/mounts
Discovery
T1082
System Information Discovery
/proc/cpuinfo, /proc/stat 读取
Discovery
T1083
File and Directory Discovery
/proc/self/exe 路径检查
Command and Control
T1573.001
Encrypted Channel: Symmetric Crypto
ChaCha20 加密 ('expand 32-byte k') + SOAP/XML

§10 🛡️ 反分析技术评估

反调试

API/技术检测目标绕过难度

反虚拟机

检测方法VMwareVirtualBoxQEMU/KVM

综合评估

技术是否存在证据对抗难度
容器检测已检测/proc/mounts 检查 devtmpfs 是否存在
VM 检测已检测/proc/cpuinfo 读取 processor 计数
自删除检测已检测检查自身文件名是否包含 '(deleted)'
Stripped 二进制已检测无调试符号
该样本实现多层反分析: 容器环境检测 (devtmpfs)、虚拟化环境检测 (CPU 核心数)、自删除检测、以及 OOM killer 规避。

★ §10b 🧹 痕迹清理

操作API/命令证据来源

§11 🔧 逆向分析

Ghidra 反编译

反编译函数数N/A (ARM 架构 — 跳过 Ghidra)
反编译输出N/A
分析时长N/A
Ghidra 反编译输出
ARM 架构 ELF, Ghidra 不支持。使用 objdump/readelf 分析。

调用链分析 (GitNexus)

总函数数总调用关系最大调用深度
000
📂 调用链拓扑 (点击展开)
N/A (ARM 架构)

★ §12 🔬 QEMU 动态分析

QEMU 模式未执行 (ARM 架构 — 需要 ARM QEMU 环境)
网络隔离N/A
执行结果未执行动态分析 — 该样本为 ARM 32-bit ELF, 当前环境无法执行。
C2 数据无 C2 通信数据

§13 📦 IOC 汇总

IOC 字符串

偏移字符串类型用途/含义威胁等级
0x00018c6c/proc/self/exe文件路径获取自身路径,用于自复制和自删除检测MEDIUM
0x00018c84/var/tmp文件路径自我复制目标路径HIGH
0x00018c90/dev/shm文件路径自我复制目标路径 (内存文件系统)HIGH
0x00018c9c/data/local/tmp文件路径自我复制目标路径 (Android IoT)HIGH
0x00018cbccrond服务名伪装成 crond 服务以实现持久化HIGH
0x00018ccccrond.service服务名systemd 服务单元名称HIGH
0x00018cdcdisable命令禁用其他服务或安全机制MEDIUM
0x00018ce4/etc/systemd/system/文件路径systemd 服务安装目录HIGH
0x00018cfc.service后缀systemd 服务单元文件后缀MEDIUM
0x00018d08/etc/cron.d/文件路径cron 持久化目录HIGH
0x00018d20/proc/mounts文件路径检测容器/VM 环境 (检查 devtmpfs)MEDIUM
0x00018d40devtmpfs文件系统容器检测 — 如果不存在 devtmpfs 则可能为容器MEDIUM
0x0001164bdy></s:Envelope>协议片段SOAP/XML 协议片段 — C2 通信协议HIGH
0x0001166c/dev/urandom文件路径获取随机数用于加密密钥生成LOW
0x00011734[HS] send_all failed错误信息网络发送失败错误LOW
0x0001174c[HS] select timeout/error错误信息网络超时/错误LOW
0x00011768[HS] read_exact failed错误信息网络接收失败错误LOW
0x000117d0/oom_score_adj文件路径设置 OOM 分数为 -1000 避免被终止HIGH
0x000117e0-1000OOM 分数值 — 使进程免于 OOM killerHIGH
0x00011800/proc/stat文件路径获取系统统计信息LOW
0x0001180c/proc/cpuinfo文件路径检测 CPU 核心数 (反 VM)MEDIUM
0x0001181cprocessor关键词解析 CPU 核心数LOW
0x00011828/sys/devices/system/cpu文件路径检测 CPU 相关系统信息LOW
0x00011844/bin/sh文件路径执行 shell 命令HIGH
0x00011854PATH环境变量设置执行路径MEDIUM
0x0001185c:/bin:/usr/bin路径shell 命令搜索路径MEDIUM
0x00011864/dev/null文件路径输出重定向到空设备LOW
0x000037b0expand 32-byte k加密常量ChaCha20/Salsa20 流加密算法常量HIGH

📌 关键 IOC 解读

该样本包含丰富的 IoC 指标,覆盖持久化、反检测、加密通信和命令执行等多个维度。未发现硬编码 IP 地址或域名 — C2 地址可能通过运行时加密或外部配置获取。

⚠ 高威胁 IOC 汇总

加密常量: expand 32-byte k — ChaCha20/Salsa20 流加密 — 用于网络通信加密
持久化路径: /etc/systemd/system/crond.service — systemd 服务持久化
持久化路径: /etc/cron.d/ — cron 任务持久化
自复制路径: /var/tmp, /dev/shm, /data/local/tmp — 恶意软件自我复制位置
OOM 规避: /oom_score_adj = -1000 — 避免被 OOM killer 终止
反检测: /proc/mounts (devtmpfs) — 容器/VM 环境检测
协议: SOAP/XML (dy></s:Envelope>) — C2 通信协议

网络 IOC

  • 协议特征SOAP/XML over HTTP (dy></s:Envelope>)
  • 加密算法ChaCha20 (expand 32-byte k)
共提取 27 个 IOCs。未发现硬编码 IP 或域名。

主机 IOC

  • SHA2560017ec0b36f0a10e37951329126e28d8bf03030124de8001061ee3c9193b4481
  • MD59fdc50e844e1376a149c0ec2ec6ba1d7
  • 持久化路径/etc/systemd/system/crond.service
  • 持久化路径/etc/cron.d/
  • 自复制路径/var/tmp
  • 自复制路径/dev/shm
  • 自复制路径/data/local/tmp
  • OOM 规避/proc/self/oom_score_adj = -1000

YARA 检测规则

rule IoT_Botnet_Rust_ARM_ChaCha20 {
    meta:
        description = "IoT Botnet — Rust ARM ELF with ChaCha20 + persistence"
        hash = "0017ec0b36f0a10e37951329126e28d8bf03030124de8001061ee3c9193b4481"
    strings:
        $chaCha = "expand 32-byte k" ascii
        $sd = "crond.service" ascii
        $cron = "/etc/cron.d/" ascii
        $proc = "/proc/self/exe" ascii
        $oom = "/oom_score_adj" ascii
        $soap = "dy></s:Envelope>" ascii
    condition:
        3 of them
}

§14 📋 最终判定

判定结果🔴 恶意 — IoT 僵尸网络
恶意类型IoT 僵尸网络/扫描器
恶意家族IoT 僵尸网络 (Rust 变种, 疑似 Meow 家族)
威胁级别CRITICAL
置信度92% — ChaCha20 加密特征、systemd/cron 持久化、/proc 反检测、OOM 规避 — 多维度匹配 IoT 僵尸网络特征
关联组织IoT 僵尸网络运营者
目标平台Linux (ARM IoT/嵌入式设备)
感染链位置初始感染 → 复制到持久化路径 → 安装 systemd/cron 持久化 → 扫描传播

⚡ 综合判定

该样本为 ARM 32 位架构的 Rust 编译 ELF 可执行文件,是 IoT 僵尸网络恶意软件。包含 ChaCha20 加密常量 (expand 32-byte k)、systemd 服务持久化 (crond.service)、cron 持久化 (/etc/cron.d/)、自我复制到 /var/tmp, /dev/shm, /data/local/tmp、容器/VM 检测 (/proc/mounts 检查 devtmpfs)、CPU 检测 (/proc/cpuinfo)、OOM 规避 (oom_score_adj = -1000)、网络通信 (SOAP/XML 协议片段)、以及 shell 命令执行能力。