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脱壳, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 加壳与混淆, 反分析技术, 威胁情报, 开发者工具, 恶意软件分析, 无线安全, 样本分析报告, 红队与蓝队, 网络信息收集, 网络安全, 逆向工具, 逆向工程, 隐私保护, 静态分析