Lohith115/malware-analysis-lab

GitHub: Lohith115/malware-analysis-lab

恶意软件分析实验项目,记录三个恶意软件家族的完整分析流程并产出 YARA 检测规则与 IOC 指标。

Stars: 1 | Forks: 0

# 恶意软件分析实验室 ![YARA](https://img.shields.io/badge/YARA-9_Rules-red?style=flat-square) ![Samples](https://img.shields.io/badge/Samples_Analyzed-3-orange?style=flat-square) ![MITRE](https://img.shields.io/badge/MITRE-ATT%26CK_Mapped-blue?style=flat-square) ![Platform](https://img.shields.io/badge/Platform-FlareVM-green?style=flat-square) ![License](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square) ## 目录 - [概述](#overview) - [实验室环境](#lab-environment) - [分析样本](#samples-analyzed) - [使用工具](#tools-used) - [YARA 规则](#yara-rules) - [分析方法论](#analysis-methodology) - [仓库结构](#repository-structure) - [关键发现总结](#key-findings-summary) ## 概述 本实验室记录了使用标准 SOC 分析师工作流程对三个不同恶意软件家族的分析 —— 首先进行静态分析,随后在受控环境中进行动态引爆。每次分析均产出: - 包含行为记录的完整技术报告 - 提取的 IOC(哈希、域名、注册表键、文件路径) - 基于样本独有特征衍生的自定义 YARA 检测规则 - MITRE ATT&CK 技术映射 分析环境使用 **FlareVM** 配合 **FakeNet-NG** 进行网络模拟 —— 这是一种单虚拟机方案,无需单独的 REMnux 实例即可提供同等的网络拦截能力。 ## 实验室环境 | 组件 | 详情 | |-----------|---------| | 分析虚拟机 | VirtualBox 上的 FlareVM | | 基础操作系统 | Windows 10 Pro (评估版) | | 网络 | Host-Only 适配器 —— 完全隔离 | | 网络模拟 | FakeNet-NG (本地拦截 HTTP/HTTPS/DNS/FTP) | | 内存 | 分配给虚拟机 4 GB | | 存储 | 辅助驱动器上的 60 GB | 完整设置文档:[lab-setup.md](lab-setup.md) ## 分析样本 ### 样本 01 —— NukeReactor Loader / AsyncRAT | 字段 | 值 | |-------|-------| | 家族 | NukeReactor Loader + AsyncRAT Payload | | 类型 | PE32, .NET/C# compiled | | 技术 | Process Hollowing (T1055.012) | | C2 | `asyc.pukkre.com` (26 秒信标间隔) | | MD5 | `0747cb326d49150592588a04b2c803a0` | | SHA256 | `f622737668c513f985371efab074a144515a44e2f38216d46a60fa17e190f301` | | YARA 规则 | 3 条规则 | **有趣之处:** 该加载器在运行时解密 AES 加密的 Payload,并使用 Process Hollowing 技术将其注入到 `RegAsm.exe`(一个合法的 Microsoft .NET 工具)中。被掏空的 RegAsm.exe 随后每 26 秒向 C2 发送信标。整个注入链使用基于委托的动态 API 加载来规避静态导入检测。 [完整报告 →](analyses/01_NukeReactor_AsyncRAT/Sample01_NukeReactor_AsyncRAT_Report.md) ### 样本 02 —— JavaScript Dropper / PowerShell Stager | 字段 | 值 | |-------|-------| | 家族 | JS 多层 Dropper / PowerShell Stager | | 类型 | JavaScript (1.60 MB) | | 技术 | 5 层混淆 —— JS → PowerShell → BASE64 → XOR | | 网络 | 无 C2 通讯(疑似沙箱逃逸) | | MD5 | `7a424a1093f34208dcdcd7d403e1025f` | | SHA256 | `d51ea87c715039f7c8902c8698520ff59afc13a4c7ff5ccfa15085d0f1bcdd24` | | YARA 规则 | 3 条规则 | **有趣之处:** 五个不同的混淆层 —— JavaScript 变量混淆、BASE64 编码的 PowerShell、分段的 BASE64 Payload、旋转 XOR 解密(不是简单的 XOR —— 密钥索引基于密钥字节值 mod 7 进行旋转),以及三种自适应执行策略。沙箱中无网络活动 —— 符合反虚拟机行为。这种分层设计专门用于绕过邮件安全网关和 PowerShell 受限语言模式。 [完整报告 →](analyses/02_JS_PowerShell_Stager/Sample02_JS_PowerShell_Stager_Report.md) ### 样本 03 —— AutoIt Compiled Malware / Active C2 | 字段 | 值 | |-------|-------| | 家族 | AutoIt Compiled Stager | | 类型 | PE32, AutoIt v3 runtime wrapper | | 技术 | AutoIt 脚本滥用, HTTPS C2, token manipulation | | 网络 | 活跃 HTTPS C2 —— 加密数据被 FakeNet 捕获 | | VirusTotal | 42/72 检测引擎 | | MD5 | `a20a6d4e29a3749e6a642d006ff9a410` | | SHA256 | `e87caad17c5ddb66860c9c3f4301fd852502cb7d9e35d320d95c3d2a7b452552` | | YARA 规则 | 3 条规则 | **有趣之处:** AutoIt 是一款合法的 Windows 自动化工具 —— 恶意软件作者使用 AutoIt 的编译器将恶意 `.au3` 脚本编译为独立可执行文件,使得 Payload 更难提取。在分析过程中,FakeNet 捕获了通过 HTTPS 端口 443 传输到 C2 的实际加密二进制数据 —— 证实了活跃的通信。ProcMon 在 5 分钟内记录了超过 830 万个来自激进注册表枚举的事件。观察到同时运行的双进程实例。 [完整报告 →](analyses/03_AutoIt_Active_C2/Sample03_AutoIt_Active_C2_Report.md) ## 使用工具 ### 静态分析 | 工具 | 用途 | |------|---------| | Detect-It-Easy (DIE) | 文件类型, 编译器, 加壳, 熵 | | PEStudio | PE 导入, 字符串, 节区, VirusTotal 集成 | | dnSpy | .NET/C# 反编译 —— 从 .NET 恶意软件恢复源代码 | | Strings / strings64 | 从二进制文件提取原始字符串 | | Notepad++ | JavaScript 和脚本源代码分析 | | CyberChef | BASE64 / XOR / 十六进制解码 | ### 动态分析 | 工具 | 用途 | |------|---------| | FakeNet-NG | 网络模拟 —— 本地拦截所有流量 | | Process Monitor | 文件, 注册表, 进程活动(捕获 830 万+ 事件) | | Process Hacker | 实时进程树和注入检测 | | Process Explorer | 父子进程可视化 | | Wireshark | 数据包级别的网络捕获 | | Regshot | 注册表快照前后对比 | | x64dbg | 运行时调试 | ## YARA 规则 从本次分析中衍生出 9 条检测规则,涵盖所有 3 个样本及通用检测变体: | 规则 | 目标 | 置信度 | |------|--------|-----------| | `NukeReactor_AsyncRAT_Loader` | 样本 01 专用 | 高 | | `AsyncRAT_C2_Beacon_NukeReactor` | 样本 01 C2 域名 | 高 | | `ProcessHollowing_DotNET_Generic` | .NET Process Hollowing 家族 | 中 | | `JS_PowerShell_Stager_RotationalXOR` | 样本 02 专用 | 高 | | `JS_WSH_PowerShell_Dropper_Generic` | JS Dropper 家族 | 中 | | `PowerShell_Reflective_Loader_Generic` | 反射加载模式 | 中 | | `AutoIt_Compiled_Malware_Active_C2` | 样本 03 专用 | 高 | | `AutoIt_Compiler_Signature_Generic` | 任何编译的 AutoIt 二进制文件 | 极高 | | `AutoIt_Token_Manipulation_Stager` | AutoIt + 提权 | 高 | 所有规则:[yara-rules/all_rules.yar](yara-rules/all_rules.yar) **测试规则:** ``` # 针对单个 sample 进行测试 yara64.exe yara-rules/all_rules.yar samples/your_sample.exe # 针对目录进行测试 yara64.exe yara-rules/all_rules.yar C:\samples\ # 显示匹配字符串的详细 output yara64.exe -s yara-rules/all_rules.yar your_sample.exe ``` ## 分析方法论 每个样本均遵循此工作流程: ``` PHASE 1 — PREPARATION ├── Revert VM to clean snapshot ├── Start FakeNet-NG, ProcMon, Wireshark └── Regshot baseline (1st shot) PHASE 2 — STATIC ANALYSIS (no execution) ├── DIE — file type, language, packer, entropy ├── PEStudio — PE structure, imports, VirusTotal ├── Strings — extract all readable text └── Decompiler (dnSpy / Notepad++ / Exe2Aut based on type) PHASE 3 — DYNAMIC ANALYSIS (controlled execution) ├── Detonate sample ├── Monitor: Process Hacker (process injection) ├── Monitor: FakeNet (network callbacks, C2 domains) ├── Monitor: ProcMon (registry/file changes) ├── Wait 3-5 minutes └── Regshot compare (2nd shot) PHASE 4 — DOCUMENTATION ├── Write analysis report ├── Extract IOC list ├── Map to MITRE ATT&CK └── Write YARA detection rule ``` ## 仓库结构 ``` malware-analysis-lab/ ├── README.md ← This file ├── lab-setup.md ← FlareVM setup guide │ ├── analyses/ │ ├── 01_NukeReactor_AsyncRAT/ │ │ ├── report.md ← Full analysis report │ │ ├── iocs.txt ← Hashes, domains, registry keys │ │ └── detection.yar ← Sample-specific YARA rules │ │ │ ├── 02_JS_PowerShell_Stager/ │ │ ├── report.md │ │ ├── iocs.txt │ │ └── detection.yar │ │ │ └── 03_AutoIt_Active_C2/ │ ├── report.md │ ├── iocs.txt │ └── detection.yar │ └── yara-rules/ └── all_rules.yar ← All 9 rules combined ``` ## 关键发现总结 | # | 家族 | 关键发现 | MITRE 技术 | |---|--------|------------|----------------| | 1 | NukeReactor/AsyncRAT | 通过 RegAsm.exe 进行 Process Hollowing,AES Payload,向 `asyc.pukkre.com` 发送 26 秒 C2 信标 | T1055.012 | | 2 | JS PowerShell Stager | 5 层混淆,旋转 XOR,反沙箱逃逸 | T1027.013, T1059.007 | | 3 | AutoIt Stager | 活跃 HTTPS C2,传输加密数据,830 万注册表事件,42/72 VT | T1059.010, T1573 | ## 作者 **T Lohith** —— 网络与网络安全硕士。 专攻 OT/ICS 安全和蓝队行动。本项目是针对 SOC 分析师和安全工程师职位的网络安全作品集的一部分。 - GitHub: [github.com/Lohith115](https://github.com/Lohith115) - LinkedIn: [linkedin.com/in/its-lohith-944909318](https://linkedin.com/in/its-lohith-944909318) ## 许可证 MIT 许可证 —— 详情见 [LICENSE](LICENSE)。 *本研究中使用的所有恶意软件样本均合法获取自 MalwareBazaar (https://bazaar.abuse.ch),仅供教育和研究目的。*
标签:AsyncRAT, ATT&CK映射, Conpot, DAST, DNS信息、DNS暴力破解, DNS 反向解析, DNS 解析, FakeNet-NG, FlareVM, HTTP工具, IP 地址批量处理, SOC分析, Windows安全, YARA规则, 云安全监控, 云资产清单, 入侵指标IOC, 勒索软件, 威胁情报, 安全实验室, 开发者工具, 恶意软件分析, 数据包嗅探, 样本分析, 网络信息收集, 网络安全, 网络安全审计, 远控木马, 逆向工程, 速率限制处理, 隐私保护, 静态分析