Sopra-no/malware-analysis-upx-elf
GitHub: Sopra-no/malware-analysis-upx-elf
一份完整的 ELF/UPX 加壳类 Mirai DDoS 僵尸网络恶意软件静态分析实战教程,记录了手动修复 UPX 头绕过反分析并提取 IOC 的全过程。
Stars: 0 | Forks: 0
# 🔍 恶意软件分析 — ELF/UPX 加壳 DDoS 僵尸网络(类 Mirai)
## 📋 项目概述
本项目记录了对来自 [MalwareBazaar](https://bazaar.abuse.ch) 的加壳 ELF 恶意软件样本的完整静态分析过程。目标是识别加壳技术、解壳 payload,并提取妥协指标(IOC)。
| 属性 | 详情 |
|---|---|
| **样本来源** | MalwareBazaar (abuse.ch) |
| **文件类型** | ELF 32位, Linux/i386 |
| **加壳工具** | UPX 5.02 (魔数头被修改) |
| **恶意软件家族** | 类 Mirai DDoS 僵尸网络 |
| **攻击目标** | Linux / IoT 设备 |
## 🧪 实验环境
- **操作系统:** Kali Linux (隔离虚拟机)
- **网络:** 分析期间禁用 (无互联网连接)
- **快照:** 在进行任何样本交互前拍摄
## 🛠 使用的工具
| 工具 | 用途 |
|---|---|
| `strings` | 从二进制文件中提取可读字符串 |
| `file` | 识别文件类型和架构 |
| `upx` | 解壳 payload |
| `xxd` | 检查原始字节 (十六进制转储) |
| `radare2` | 反汇编和深入的静态分析 |
| MalwareBazaar | 样本库 |
## 📌 分析 — 逐步过程
### 步骤 1 — 识别加壳工具
```
file malware-original.elf
# ELF 32-bit LSB 可执行文件,Intel i386,静态链接,无 section header
strings malware-original.elf | grep -i upx
# $Info: 此文件已使用 UPX 可执行文件压缩工具打包
# $Id: UPX 5.02 版权所有 (C) 1996-2025
```
**观察结果:** 只有 701 个可读字符串——对于一个真正的程序来说非常少。证实了内容是被压缩和隐藏的。
### 步骤 2 — 尝试自动解壳
```
upx -d malware-original.elf
# NotPackedException: 未被 UPX 打包
```
**发现:** UPX 魔数被恶意软件作者故意修改,以阻止自动解壳——这是一种经典的反分析技术。
### 步骤 3 — 手动修复和解壳
魔数 `UPX!` 被损坏。在使用 Python 手动恢复正确的头字节后,解壳成功:
```
upx -d malware-original.elf
# 133590 <- 60808 45.52% linux/i386
```
文件大小从 **60,808 字节** (加壳) 增加到 **133,590 字节** (解壳)——揭示了真实的 payload。
### 步骤 4 — 从解壳后的 payload 中提取 IOC
```
# 搜索 IP
strings malware-original.elf | grep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"
# 搜索攻击命令
strings malware-original.elf | grep -iE "flood|udp|syn|tcp"
# 搜索可疑二进制文件
strings malware-original.elf | grep -iE "shell|exec|wget|curl|/bin"
```
## 🚨 妥协指标 (IOC)
### 网络
| 类型 | 值 | 描述 |
|---|---|---|
| IP | `58.0.3029.110` | C2 服务器 (命令与控制) |
| User-Agent | `Mozilla/5.0 ... Chrome/58.0.3029.110` | 用于伪装的伪造 Chrome 头 |
| 协议 | HTTP GET, POST, HEAD | 与 C2 的通信 |
### 功能
| 指标 | 描述 |
|---|---|
| `!udpcustom` | UDP 洪水攻击模式 |
| `!udpplain` | 普通 UDP 洪水攻击 |
| `!syn` | SYN 洪水攻击 (DDoS) |
| `/bin/sh` | 远程 shell 执行 |
| `/bin/busybox` | IoT 工具包 (在 Mirai 变种中常见) |
| `wget` / `curl` | 下载额外的 payload |
| `/proc/net/tcp` | 受感染主机上的网络监控 |
## 💡 核心要点
1. **加壳的恶意软件会隐藏其真实内容** —— 解壳前的可读字符串非常少 (701 个),解壳后则多得多。
2. **被修改的 UPX 头会阻止自动工具** —— 需要人工干预来恢复魔数。
3. **类 Mirai 僵尸网络以 IoT 设备为目标** —— 使用 `busybox`、ELF 32位 i386 和 DDoS 命令是其强烈的特征。
4. **使用伪造的 User-Agent 来进行伪装** —— 恶意软件将其 HTTP 流量伪装成正常的浏览器流量。
## ⚠️ 免责声明
本分析是在完全隔离的环境中进行的,**仅供教育目的**。样本从公共威胁情报平台 MalwareBazaar 获取。在分析过程中没有执行任何恶意软件。
## 👤 作者
**CHAHIM Adam**
网络安全爱好者 | 恶意软件分析学习者
[LinkedIn](www.linkedin.com/in/adam-chahim-26484236b) | [GitHub](https://github.com/Sopra-no)
*在 AI 辅助下指导了本次分析,作为学习工具。所有命令均已实际执行并进行了结果的亲手解读。*
标签:DAST, DDoS僵尸网络, ELF分析, IOC提取, IoT安全, Linux恶意软件, Mirai, Radare2, TLS指纹, UPX脱壳, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 加壳与混淆, 反分析技术, 威胁情报, 开发者工具, 恶意软件分析, 无线安全, 样本分析报告, 红队与蓝队, 网络信息收集, 网络安全, 逆向工具, 逆向工程, 隐私保护, 静态分析