现在处于测试阶段,功能迭代中,基本可用,有BUG请反馈,
不适适用于可疑样本的行为审计,会漏行为。
概述
ETWTrace是一款无驱动的系统行为审计工具,基于Windows 事故跟踪 (ETW) 利用在操作系统内核中实现的缓冲和日志记录机制,ETW 为用户模式(应用)和内核模式组件(驱动步调)引发的事故提供基础结构。 NT Kernel Logger 与用户态 Provider,覆盖文件、注册表、历程、线程、镜像加载、系统调用、网络、堆栈回溯以及 Threat-Intelligence、AMSI、PowerShell、句柄与 ALPC 等关键行为。

主要特性
- 行为覆盖:Process/Thread/Image/ Syscall(NtWriteVirtualMemory、NtProtectVirtualMemory、NtCreateThreadEx)、File、Registry、Network、StackWalk、Threat-Intelligence(TI)、AMSI、PowerShell、ALPC
- CSV 输出:
- 全列表 ETWTrace_readable.csv(含中文 summary)
- 简版表 ETWTrace_quick.csv(仅 ts,type,pid,summary),便于现场快速欣赏
- 链路摘要:镜像加载后 2 秒内出现线程创建,输出“模块→线程”链路到控制台与快速 CSV
- 告警集:CLR 寄生、DLL 侧加载、WebShell 子历程、诱饵文件触碰、注册表持久化、DNS 隧道/心跳/速率突增、LSASS 敏感句柄访问/复制、ALPC Flood
- 体积控制:
- ETL 循环文件 + 上限(默认 256MB,可设置)
-
Syscall 1 秒内去重 + 每秒每类型最多 100 条采样,溢出写入快速 CSV 的摘要行
--alerts-only仅写告警(普通事故不写 JSONL)
系统要求与兼容性
- 操作系统支持:
- Windows 10 (1709+) / Windows 11 / Server 2016+: 完整支持所有功能(包罗 Handle 审计)。
- Windows 7 SP1 / Server 2008 R2: 基础支持(Process/Thread/Image/File/Net/Reg/ALPC),不支持 Handle 审计。
- Windows XP / 2003: 不支持。
兼容性详细边界
| 基础审计 (Proc/Thread/Img) | PROCESS | THREAD | IMAGE_LOAD|
Windows 7+ 以上 核心功能全版本可用 |
| 文件 I/O | DISK_FILE_IO | FILE_IO | Windows 7 + 默认开启 |
| 网络审计 | NETWORK_TCPIP(0x10000) | Windows Vista + 默认开启 |
| 注册表/ALPC | REGISTRY/ ALPC | Windows Vista + 默认开启 |
| 句柄审计 | OB_HANDLE(0x80000040) | Windows 10 |
仅在 Win10+ 自动启用,旧系统自动降级 |
注意 工具会在运行时自动检测操作系统版本。如果在 Windows 7/8.1 上运行,OB_HANDLE标志会自动被屏蔽,以防止 StartTrace失败。用户无需手动调整参数;失败时还将自动尝试 WPR/xperf 兜底。
文件输出阐明
- 可读日志:ETWTrace_readable.log(中文摘要)
- 全列 CSV:ETWTrace_readable.csv
- 简版 CSV:ETWTrace_quick.csv
系统模式与数据边界
- 触发方式:交互模式中“输入路径”留空,进入系统模式,监控后续新创建历程的活动。
- 默认边界:为避免数据爆炸,系统模式自动启用噪声过滤与采样控制。
- 历程事故:若无 --image 过滤,仅记录历程启动/退出;设置 --image 时仅记录匹配镜像的历程事故。
- 文件事故:忽略 Read操作;忽略系统目次(如 System32/SysWOW64)下的非删除操作。
- 注册表事故:忽略 QueryValue 与 OpenKey等只读查询;保留写入/删除等修改行为。
- 镜像加载:忽略常见系统 DLL 在系统目次的加载;记录非系统路径加载。
- 阐明:系统模式的过滤与采样只影响详单输出,不会屏蔽告警与链路摘要;采样溢出将写入 ETWTrace_quick.csv的 summary行。
权限与自我掩护
- 入口自动启用特权:SeDebugPrivilege/SeSystemProfilePrivilege/SeSecurityPrivilege/SeBackupPrivilege
- 历程缓解计谋(默认启用,允许注入):
- 二进制签名审计(不强拦第三方签名 DLL 注入)
- 禁止动态代码(降低历程内 RWX Shellcode 风险)
- 系统DLL优先(降低 DLL 侧加载风险)
> 如遇兼容问题可利用 --no-mitigations关闭;或利用 --mitigation-strict显式启用。
告警规则(示例)
- CLR 寄生:非托管历程加载 clr.dll/mscoree.dll/mscorlib.dll
- DLL 侧加载:知名系统 DLL(user32/kernel32/version/winhttp)不在 System32/SysWOW64 下加载
- WebShell 子历程:父历程为 Web 服务器(w3wp/httpd/nginx/tomcat),子历程为 cmd/powershell/net/whoami
- 诱饵文件触碰:热点目次(Desktop/Documents/C:\)下以 `_` 开头的文件被写或重命名
- 注册表持久化:Run/Services 写操作由 cmd/powershell/rundll32 发起
- DNS 行为:端口 53 高频/心跳方差极低/速率相对基线突增
- LSASS 敏感句柄:高权限访问或 DuplicateHandle
- ALPC Flood:非白名单端口 1 分钟超过 200 次发送
体积与性能控制计谋
- ETL:循环文件 + MaximumFileSize上限,避免磁盘膨胀
- JSONL:--alerts-only+ Syscall 1 秒内去重(同键仅写一次)
- CSV:
每秒每类型最多 100 条详单;溢出写入简版 CSV 的 summary行
卡巴OP检测通过,VT检测启发式AI杀


V0.1更新
1.发现SeSystemProfilePrivilege权限未获取的bug。
针对在 Windows 安全模型中,SeDebugPrivilege 和 SeSystemProfilePrivilege 等高危权限,即使是 SYSTEM 账号,默认是关闭的。更新后将从 lsass.exe 盗取令牌,确保权限完整,这是 ETW 获取内核堆栈的硬性前提。
- 输出时机:步调入口统一打印一次自检;若发生提权重启,新的历程会再次打印。
- 权限级别:显示 SYSTEM/Administrator/Standard三态,便于判定当前令牌。
- 特权双态:显示 SeDebug/SeSystemProfile/SeSecurity/SeBackup 的 Present/Enabled两列。
- Present=Y 表示令牌中包含该特权;Enabled=Y表示该特权当前已启用。
- 若 Present=Y/Enabled=N,通常为令牌未启用或计谋限制;入口会尝试启用。
- 组件探测:验证 tdh.dll/dbghelp.dll加载;检测当前目次可写 。
- 会话与 Provider:打印活动 Provider 数量与 TI 状态,列出当前 ETW 会话;同时声明默认 Kernel Flags。
- 故障边界:若启用失败,建议以
管理员运行或作为 SYSTEM 服务运行;
企业计谋可能移除部分特权导致 Present=N。
- 若缺失 SeSystemProfilePrivilege且为管理员,工具尝试通过 LSA 授权并重启以生效;仍失败则回退启用 SeProfileSingleProcessPrivilege。
- 自检中的 Present/Enabled可快速判断权限授权与权限启用状态。
- 优先盗取 lsass.exe令牌(SYSTEM),并校正 TokenSessionId到活动会话;失败时回退 winlogon.exe令牌。
- 需要管理员权限(或 SYSTEM 服务);
部分安全产品/企业计谋可能阻拦令牌复制,导致提权失败,功能失效。
2025.12.04 与赛门铁克/深佩服沟通排除了误报,扫了眼VT好像报得更多了,向Bitdefender发出假阳性排除申请,其他的懒得理它们,要报就报。国际大厂不报毒就行~
ETWTrace.rar