pTn1ne/ShadowHook
GitHub: pTn1ne/ShadowHook
结合 Python 控制器与 Frida 插桩的动态恶意软件行为追踪器,用于敏感 API 调用遥测和反调试信号采集,输出结构化日志并生成带 ATT&CK 映射的 HTML 分析报告。
Stars: 0 | Forks: 0
# ShadowHook
ShadowHook 是一个处于早期阶段的动态恶意软件分析追踪器,它结合了 Python 控制器、Frida 插桩 agent 和 HTML 报告生成管道。它专为受控实验室分析、恶意软件初步分类、逆向工程和 DFIR 研究而设计。
该项目专注于高弹性的遥测数据收集:追踪敏感的 API 调用、将反调试检查记录为信号,并生成结构化的 JSONL 输出,以便后续进行搜索或输入到其他分析管道中。
## 演示预览


## 追踪内容
- 文件系统活动:`CreateFileW`、`CreateFileA`
- 进程和注入相关行为:`CreateProcessW`、`WriteProcessMemory`、`CreateRemoteThread`、`NtCreateThreadEx`、`QueueUserAPC`
- 内存权限更改:`VirtualAlloc`、`VirtualAllocEx`、`VirtualProtect`、`VirtualProtectEx`、`NtMapViewOfSection`
- 注册表访问:`RegOpenKeyExW`、`RegSetValueExW`、`RegCreateKeyExW`、`RegDeleteValueW`
- 服务控制活动:`CreateServiceW`、`StartServiceW`
- 网络边界:`connect`、`send`、`recv`、`WinHttpSendRequest`、`InternetOpenUrlW`
- 加密边界:`BCryptEncrypt`、`BCryptDecrypt`
- 反调试信号:`IsDebuggerPresent`、`CheckRemoteDebuggerPresent`、`NtQueryInformationProcess`
ShadowHook 会记录反分析检查,但不会修改它们的返回值。这使得该框架适用于防御性研究,并避免将基础项目变成通用规避工具包。
分析结果包含 MITRE ATT&CK 上下文,例如 `T1055: Process Injection`、`T1622: Debugger Evasion` 和 `T1543.003: Windows Service`。
## 安装
在 Windows 上使用 Python 3.10+。
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e ".[dev]"
```
Frida 必须能够附加到目标进程。请根据你的实验室目标所需的权限来运行终端。
## 用法
启动并追踪一个进程:
```
shadowhook --output reports\notepad.jsonl --spawn notepad.exe
```
捕获通过 `WriteProcessMemory` 写入的有界内存痕迹:
```
shadowhook --output reports\sample.jsonl --dump-dir dumps --spawn sample.exe
```
附加到现有的 PID:
```
shadowhook --attach-pid 4242 --output reports\sample.jsonl
```
通过进程名称附加:
```
shadowhook --attach-name notepad.exe --output reports\notepad.jsonl
```
每个事件都以 JSONL 格式输出:
```
{"api":"CreateFileW","args":{"creationDisposition":"0x3","desiredAccess":"0x80000000","path":"C:\\sample.bin"},"kind":"trace","module":"kernel32.dll","pid":1234,"result":"0x128","tid":456}
```
从追踪记录生成 HTML 报告:
```
shadowhook-report reports\notepad.jsonl --html reports\notepad.html
```
将分类后的发现导出为 JSON:
```
shadowhook-report reports\notepad.jsonl --findings-json reports\findings.json
```
报告会高亮显示可疑行为,例如可写可执行内存、进程注入候选目标、服务活动、反调试检查、加密边界、网络活动以及类似 `VirtualAllocEx -> WriteProcessMemory -> CreateRemoteThread` 的有序 API 序列。
## 配置文件
配置文件位于 `profiles/` 目录下。默认配置文件为 `profiles/windows-default.json`,它控制着启用哪些 hook 家族。
```
{
"enabled_hooks": ["filesystem", "process", "memory"],
"capture_args": true,
"report_backtraces": false
}
```
`profiles/anti-analysis-telemetry.json` 是一个仅用于观察的配置文件,用于收集反调试和反分析信号。它不会隐藏 Frida、修改返回值或干预目标行为。
`profiles/mitre-attack-map.json` 记录了报告分类器使用的 ATT&CK ID。
## 路线图
- 具备 PE 感知能力的模块清点和可疑区域快照
- 针对分析师拥有的样本和内存区域提供可选的 payload 提取
- 基于规则且映射到 ATT&CK 技术 ID 的行为摘要
- 针对 Linux 目标的 GOT/PLT 追踪配置文件
- 更安全的插件接口,用于分析师编写的 hook 包
- 便于截图的演示追踪和发布构件
## 安全模型
ShadowHook 旨在用于隔离的恶意软件分析环境。请勿在包含个人数据、生产凭据或可访问生产网络的主机上运行不受信任的样本。
本仓库故意以“观察优先”的插桩方式作为起点。对于基线项目而言,增加隐身、持久化、凭据访问、破坏性操作或通用反分析绕过等功能的贡献均不在考虑范围内。
## 开发
```
python -m pip install -e ".[dev]"
ruff check .
pytest
```
## 演示工作流
```
shadowhook --output reports\notepad.jsonl --spawn notepad.exe
shadowhook-report reports\notepad.jsonl --html reports\notepad.html
```
追踪完成后,从 `reports` 目录打开生成的 HTML 报告。
你也可以在不运行实时目标的情况下生成报告:
```
shadowhook-report examples\sample_trace.jsonl --html reports\sample.html --findings-json reports\findings.json
```
## 许可证
MIT。版权所有 (c) 2026 pTn1ne 及 ShadowHook 贡献者。
## 维护者
由 pTn1ne 创建并维护。
标签:API Hook, API追踪, Cloudflare, DAST, Docker支持, Frida, HTML报告, HTTP工具, IP 地址批量处理, JSONL, MITRE ATT&CK, Python, URL发现, Windows API, 云资产清单, 加密解密监控, 反调试检测, 多模态安全, 安全检测, 实验室分析, 恶意软件分析, 文件系统监控, 无后门, 时序数据库, 沙箱, 注册表监控, 网络安全, 进程注入检测, 逆向工具, 逆向工程, 遥测数据, 防御研究, 隐私保护