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, 云资产可视化, 云资产清单, 域名枚举, 安全, 恶意软件分析, 超时处理, 逆向工具, 逆向工程