Anoop-Kumar-Sharma/ExecTrace
GitHub: Anoop-Kumar-Sharma/ExecTrace
一款通过交叉比对 BAM 与 SYSTEM.LOG 检测已删除执行记录的 Windows 取证工具。
Stars: 0 | Forks: 0
# ExecTrace — BAM & SYSTEM.LOG 执行取证
一款 Windows 取证工具,通过交叉比对 **Background Activity Monitor (BAM)** 注册表与 **SYSTEM.LOG** 事务日志,检测可执行文件活动。即使 BAM 条目已被删除,仍可识别已运行的程序。
## 工作原理
Windows 在两个位置记录程序执行信息:
1. **BAM 注册表** (`HKLM\SYSTEM\CurrentControlSet\Services\bam\State\UserSettings`)
记录每个用户 SID 最近执行的可执行文件及其时间戳。攻击者通常会清除或篡改这些条目以抹除执行痕迹。
2. **SYSTEM.LOG / SYSTEM.LOG1 / SYSTEM.LOG2**(注册表事务日志)
这些是 Windows 注册表 hive 维护的低级事务日志。即使对应的注册表键被删除,可执行文件路径仍可能保留在这些日志中。
ExecTrace 读取这两个来源,进行比对,并展示那些出现在 **SYSTEM.LOG** 中但 **缺失于 BAM** 的可执行文件——这是篡改或反取证活动的强烈指示。
## 功能特性
- 创建 **卷影副本(Volume Shadow Copy)**,以安全读取被锁定的注册表日志文件,避免干扰运行中的系统
- 使用正则表达式解析 `SYSTEM.LOG1` 和 `SYSTEM.LOG2`,提取 `\Device\HarddiskVolume` 路径
- 读取所有 BAM 条目及其最后执行时间戳
- 对两个来源执行 **差异比对(diff)**,并突出显示缺失的条目
- 需要并自动通过 UAC 提示请求 **管理员权限提升**
## 输出结果
工具将在控制台打印三个部分:
```
SYSTEM.LOG ENTRIES
Executables found in registry transaction logs
BAM ENTRIES
Executables with last execution timestamps from the live BAM registry
ENTRIES PRESENT IN SYSTEM.LOG BUT NOT IN BAM
Executables that may have had their BAM entries deleted — high suspicion
```
示例输出:
```
[+] Creating shadow copy...
[+] Shadow Path: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3
SYSTEM.LOG ENTRIES
\Device\HarddiskVolume3\Users\user\AppData\Local\Temp\payload.exe
\Device\HarddiskVolume3\Windows\System32\cmd.exe
BAM ENTRIES
\Device\HarddiskVolume3\Windows\System32\cmd.exe | 2024-11-01 14:32:11
ENTRIES PRESENT IN SYSTEM.LOG BUT NOT IN BAM
\Device\HarddiskVolume3\Users\user\AppData\Local\Temp\payload.exe
```
## 系统要求
| 要求 | 说明 |
|---|---|
| 操作系统 | Windows 10 / 11(64 位) |
| 权限 | 管理员(通过 UAC 自动提升) |
| 编译环境 | MSVC(Visual Studio),C++17 或更高 |
| 依赖项 | `wbemuuid.lib`(WMI)、标准 Win32 SDK |
## 编译构建
1. 在 **Visual Studio** 中打开项目
2. 确保项目目标平台为 **x64**
3. 链接 `wbemuuid.lib`(已通过 `#pragma comment` 设置)
4. 在 **Release** 模式下编译
```
cl /EHsc /std:c++17 exectrace.cpp /link wbemuuid.lib ole32.lib oleaut32.lib
```
## 使用方法
直接运行工具——如果未以管理员身份运行,它会通过 UAC 自动提升权限:
```
exectrace.exe
```
无需提供参数。结果将打印到控制台。按任意键退出。
## 使用场景
- **事件响应**——识别已被手动从 BAM 中清除的恶意软件执行痕迹
- **恶意软件分析**——验证可疑二进制文件是否在主机上执行过
- **蓝队取证**——用事务日志工件补充标准的 BAM/Prefetch 分析
- **反取证检测**——标记已被选择性清除 BAM 的主机
## 检测逻辑
```
Shadow Copy of C:\
|
v
SYSTEM.LOG1 + SYSTEM.LOG2
|
Regex scan for \Device\HarddiskVolume*.exe paths
|
+-----> Set A (all exe paths in logs)
BAM Registry (live)
|
+-----> Set B (all exe paths in BAM)
Result = Set A - Set B (paths in logs but missing from BAM)
```
## 局限性
- SYSTEM.LOG 条目不保证带有时间戳——只有 BAM 条目包含执行时间
- 卷影副本创建依赖 WMI,若 VSS 服务被禁用可能失败
- 基于正则表达式的日志解析可能因无关的注册表写入产生误报
- BAM 条目是按用户的,旋转或老化可能导致合法条目消失
## 法律声明
本工具仅限用于 **授权的取证调查、事件响应和安全研究**。请勿在未拥有或未经明确授权的系统上使用。
标签:AMSI绕过, BAM取证, HTTPS请求, SYSTEM.LOG取证, UAC提权, Windows, Windows取证, Windows系统编程, 卷影副本, 反取证, 可执行活动检测, 后台活动监控, 命令行取证工具, 威胁检测, 安全评估, 差异比对, 执行取证, 数字取证, 文件系统取证, 日志解析, 正则提取, 注册表事务日志, 管理员权限, 自动化脚本, 证书伪造, 证据篡改检测