pTn1ne/ShadowHook

GitHub: pTn1ne/ShadowHook

结合 Python 控制器与 Frida 插桩的动态恶意软件行为追踪器,用于敏感 API 调用遥测和反调试信号采集,输出结构化日志并生成带 ATT&CK 映射的 HTML 分析报告。

Stars: 0 | Forks: 0

# ShadowHook ShadowHook 是一个处于早期阶段的动态恶意软件分析追踪器,它结合了 Python 控制器、Frida 插桩 agent 和 HTML 报告生成管道。它专为受控实验室分析、恶意软件初步分类、逆向工程和 DFIR 研究而设计。 该项目专注于高弹性的遥测数据收集:追踪敏感的 API 调用、将反调试检查记录为信号,并生成结构化的 JSONL 输出,以便后续进行搜索或输入到其他分析管道中。 ## 演示预览 ![ShadowHook 终端演示](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/511828cf2d233653.svg) ![ShadowHook 报告预览](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/437ad8adeb233659.svg) ## 追踪内容 - 文件系统活动:`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, 云资产清单, 加密解密监控, 反调试检测, 多模态安全, 安全检测, 实验室分析, 恶意软件分析, 文件系统监控, 无后门, 时序数据库, 沙箱, 注册表监控, 网络安全, 进程注入检测, 逆向工具, 逆向工程, 遥测数据, 防御研究, 隐私保护