druserx/larva

GitHub: druserx/larva

larva 结合 ETW 事件追踪与周期性内存扫描,实时检测 Windows 上常见的进程注入技术。

Stars: 0 | Forks: 0

# larva Windows 进程注入监控工具。结合使用 ETW (Event Tracing for Windows) 和对内存区域的周期性扫描,实时检测常见的进程注入技术。 名字来源于拉丁语—— *larva* 意为“面具”或“幽灵”。对于监控隐藏在暗处的东西来说,这似乎很贴切。 ## 检测技术 **内存扫描(周期性扫描):** - 没有映射文件的 `PAGE_EXECUTE_READWRITE` 区域(`MEM_PRIVATE`)—— shellcode 或 reflective DLL loading 的经典特征 - 任意进程中匿名的可执行页面 - 从可疑路径(`\Temp\`、`\AppData\`、`\Downloads\` 等)加载的模块 **通过 ETW(`Microsoft-Windows-Kernel-Process`):** - `Win32StartAddress` 指向可执行私有内存的线程 —— 标志着带有 shellcode 的 `CreateRemoteThread` **使用 `-H` flag:** - process hollowing:比较内存中与磁盘上文件的关键 PE header 字段(`e_magic`、`e_lfanew`、`Machine`) ## 用法 ``` larva.exe [opcoes] -p foca num processo específico -i intervalo entre scans (padrão: 5000ms) -e desativa ETW, só varredura de memória -H ativa detecção de hollowing (mais lento) -o salva alertas em arquivo de log -v verboso ``` 需要以 **管理员** 身份运行,才能获得对其他进程内存的完全访问权限并启动 ETW 会话。 ## 编译 mingw-w64: ``` make ``` 依赖项:`psapi`、`tdh`、`advapi32`(已包含在 MinGW-w64 中) ## 局限性 1. 通过 `Microsoft-Windows-Kernel-Process` 的 ETW 不会公开创建线程的 PID —— 只有目标 PID。要精确追踪来源,需要使用 `Microsoft-Windows-Threat-Intelligence` provider,这要求具有 PPL 或内核 driver。 2. hollowing 检测比较的是 PE header 字段,而不是节区的内容。重定位和合法的补丁可能会导致 header 出现差异 —— 在生产环境中请谨慎使用 `-H`。 3. RWX 区域在某些 JVM 和动态语言 runtime 中是合法存在的。如果要监控特定目标,请使用 `-p` 按进程进行过滤。 ## 参考 - [ETW 深入探究 — Matt Graeber](https://posts.specterops.io/data-source-analysis-and-dynamic-windows-re-using-wpp-and-tracelogging-e465f8b653f7) - [检测进程注入 — endgame.com](https://www.endgame.com/blog/technical-blog/ten-process-injection-techniques-technical-survey-common-and-trending-process) - Windows Internals Part 1,第 3 章(进程与线程)
标签:AMSI绕过, ETW, 内存扫描, 威胁检测, 客户端加密, 防御侧