BL3IP/malware-re-ghidra

GitHub: BL3IP/malware-re-ghidra

一个将 Ghidra headless 静态逆向分析与 YARA、Sigma 检测规则自动生成相结合的恶意软件分析实验项目,实现了从逆向发现到 SOC 可部署检测规则的端到端流程。

Stars: 0 | Forks: 0

# 05 — 恶意软件逆向工程:Ghidra → YARA + Sigma 一个安全、可复现的静态逆向工程实验室。它驱动 **Ghidra 12.1.2 headless** 来分析二进制文件,提取其函数/导入/字符串,并将这些发现转化为 **YARA** 和 **Sigma** 检测规则——这是真正的“RE → 检测工程” pipeline。 ## 目标 在无需专用 VM 的 Windows 主机上展示完整的恶意软件分析师循环:安全地 安装工具,执行自动化静态分析,并编写出 SOC 可以实际部署的检测规则。 ## 精确的设置命令 ``` cd C:\Users\banlv\cyber\05-malware-re # Portable JDK 21 (无需管理员权限) + Ghidra 12.1.2 已解压至 .\work\ : # curl -sL -o jdk.zip "https://api.adoptium.net/v3/binary/latest/21/ga/windows/x64/jdk/hotspot/normal/eclipse"; tar -xf jdk.zip # curl -sL -o ghidra.zip ; tar -xf ghidra.zip # 将 Ghidra 指向 JDK(仅一次):在 work\ghidra_12.1.2_PUBLIC\support\launch.properties 中设置 JAVA_HOME_OVERRIDE # Python 检测工具: & "C:\Users\banlv\AppData\Local\Programs\Python\Python312\python.exe" -m venv .venv .\.venv\Scripts\python.exe -m pip install yara-python sigma-cli pysigma-backend-splunk .\.venv\Scripts\sigma.exe plugin install sysmon # 1) Headless 静态分析二进制文件(默认为良性 hostname.exe): .\.venv\Scripts\python.exe -V # sanity .\work\ghidra_12.1.2_PUBLIC\support\analyzeHeadless.bat .\work\ghidra_proj malre ` -import .\work\hostname.exe -overwrite ` -scriptPath .\ghidra_scripts -postScript DumpInfo.java .\analysis # 2) 验证并测试检测: .\.venv\Scripts\python.exe scripts\test_yara.py samples\synthetic_sample.bin work\hostname.exe .\.venv\Scripts\sigma.exe check rules\sigma\ .\.venv\Scripts\sigma.exe convert -t splunk -p sysmon rules\sigma\c2_dns_query.yml ``` ## 运行效果证明 **对 `hostname.exe` 进行 Ghidra headless 分析**([完整报告](./analysis/hostname.exe_ghidra_report.txt)): ``` Format : Portable Executable (PE) Language : x86:LE:64 Functions : 38 Imports : 52 Strings : 100 Recovered imports incl.: GetHostNameW, WSAStartup, GetSocketErrorMessageW, WS2_32.dll, MSWSOCK.dll ``` **YARA — 4 条规则,全部匹配其目标:** ``` synthetic_sample.bin -> Synthetic_Sample_Marker, Synthetic_Header_Magic, Win_ProcessInjection_API_Combo hostname.exe -> Win_Hostname_Utility_FromGhidra (authored FROM the Ghidra findings) ``` **Sigma — `sigma check` → `0 errors, 0 issues`**,两条规则均转换为 Splunk ([产物](./analysis/sigma_splunk_queries.txt)): ``` c2_dns_query.yml -> EventID=22 QueryName="*synthetic-sample.test*" process_injection_remote_thread.yml -> EventID=8 SourceImage IN ("*\\synthetic_sample.exe","*\\rundll32.exe") TargetImage="*\\explorer.exe" ``` ## 截图 参见 [`./screenshots/`](./screenshots)。补充:`analyzeHeadless` 运行摘要,以及终端中的 Ghidra 报告 / YARA 匹配输出。 ## 我的自定义扩展 - **`DumpInfo.java`** — 一个自定义的 Ghidra 后处理脚本(函数 + 导入 + 字符串 → 文本报告)。 Ghidra 12 放弃了内置的 Jython,因此它是作为原生 **Java GhidraScript** 编写的。 - **RE → 检测循环**:`Win_Hostname_Utility_FromGhidra` YARA 规则是直接根据在 Ghidra 中 恢复的导入/字符串构建的——展示了分析输出如何转化为真实的签名。 - **两条 Sigma 规则**(C2 DNS 查询 T1071.004,远程线程注入 T1055)已验证,并 通过 pySigma sysmon pipeline 交叉编译为 Splunk。 - **可复现、免管理员的工具链**:便携版 JDK 21 + `JAVA_HOME_OVERRIDE`,使 Ghidra 能够完全 以 headless/非交互方式运行(修复了 JDK 提示挂起的问题)。 ## 简历要点 - 构建了一个自动化静态恶意软件分析 pipeline,利用自定义的 Java 分析脚本驱动 **Ghidra 12 headless**,将函数、导入和字符串提取到结构化报告中。 - 实践了**端到端的检测工程**:将逆向工程发现转化为 **4 条 YARA 规则和 2 条 Sigma 规则**(已验证,并编译为 Splunk SPL)。 - 将实验室设计为**构建即安全**——仅对良性二进制文件和 合成样本进行静态分析——从而避免活动恶意软件和 AV 的干扰。 ## 进阶想法 - 在一次性 VM / Docker 沙箱中添加真实的(已防御化处理、受密码保护的)恶意软件样本。 - 使用类似 `yarGen` 的评分机制,从 Ghidra 字符串自动生成 YARA。 - 使用 Ghidra 反编译器 API 反编译一个函数,并将 C 语言输出包含在报告中。 - 将规则接入检测即代码的 CI pipeline(项目 07)。 status: ✅ complete & tested ``` ✅ PROJECT COMPLETE & FULLY TESTED in its isolated folder. All works. Ready for portfolio. ```
标签:DAST, Ghidra, JS文件枚举, YARA, 云资产可视化, 云资产清单, 域名枚举, 安全, 恶意软件分析, 超时处理, 逆向工具, 逆向工程