airbus-cert/etl-parser

GitHub: airbus-cert/etl-parser

一个纯 Python 实现的 Windows ETL(Event Trace Log)文件解析器,用于提取和分析 ETW 跟踪日志中的内核事件及网络抓包数据。

Stars: 153 | Forks: 24

# etl-parser 纯 Python 的 Event Trace Log 文件读取器 `etl-parser` 是一个纯 Python 3 解析库,用于解析 `ETL` Windows 日志文件。`ETL` 是 [ETW](https://docs.microsoft.com/en-us/windows/win32/etw/event-tracing-portal) 的默认格式,也是内核日志记录器的默认格式。 `etl-parser` 没有系统依赖,在 Windows 和 Linux 上均可正常运行。 由于此格式没有公开文档,我们整合了 [Geoff Chappel](https://www.geoffchappell.com/) 博客中的信息以及 Airbus CERT 团队进行的逆向工程成果。 什么是 `ETL`,为什么处理它令人头疼?可以将 `ETL` 理解为一种容器格式,就像 `AVI` 对于视频文件一样。读取 `ETL` 就像没有正确的编解码器却要读取 `AVI` 文件一样令人沮丧。 `etl-parser` 通过内置以下常见日志格式的解析器来尝试解决这一问题: * ETW manifest base provider * TraceLogging * MOF for kernel log ## 如何使用 `etl-parser`? `etl-parser` 提供了两个脚本。 第一个脚本 `etl2xml` 将所有已知的 ETL 事件转换为 XML: ``` etl2xml -i example.etl -o example.xml ``` 第二个脚本 `etl2pcap` 将通过 `netsh` 创建的网络抓包转换为 `pcap` 文件格式: ``` netsh trace start capture=yes netsh trace stop etl2pcap -i NetTrace.etl -o NetTrace.pcap ``` 你也可以将 `etl-parser` 作为库使用: ``` from etl.etl import IEtlFileObserver, build_from_stream from etl.system import SystemTraceRecord from etl.perf import PerfInfo from etl.event import Event from etl.trace import Trace from etl.wintrace import WinTrace class EtlFileLogger(IEtlFileObserver): def on_system_trace(self, event: SystemTraceRecord): """Mof kernel message with Process Id and Thread Id""" mof = event.get_mof() # Invoke MOF parser def on_perfinfo_trace(self, event: PerfInfo): """Mof kernel message with timestamp""" mof = event.get_mof() # Invoke MOF parser def on_trace_record(self, event: Trace): """unknown""" def on_event_record(self, event: Event): """ETW event this is what you search""" # Choose the "parse_" function which corresponds to your event message = event.parse_tracelogging() # Invoke TraceLogging parser message = event.parse_etw() # Invoke Manifest based parser def on_win_trace(self, event: WinTrace): """unknown""" etw = event.parse_etw() with open("example.etl", "rb") as etl_file: etl_reader = build_from_stream(etl_file.read()) etl_reader.parse(EtlFileLogger()) ``` # 安装说明 `etl-parser` 可通过 pip 安装: ``` pip install etl-parser ``` 或者,你也可以使用 `setup.py` 安装 `etl-parser`: ``` git clone https://github.com/airbus-cert/etl-parser.git cd etl-parser pip install -e . ``` ## 缺少某个解析器? 如果遇到解析问题,请在 Airbus CERT GitHub 仓库中提交 issue。 ## 为什么需要 ETL 解析器? `EVTX` 日志格式有相当完善的文档,目前也有大量的库和工具可用。但 `ETL` 并非如此:在开发时,我们所知没有任何重要的开源项目,且 `ETL` 格式的文档也非常匮乏。 ETL 被 Windows 系统程序员广泛用于记录有用的工件: * `C:\Windows\System32\WDI\LogFiles\BootPerfDiagLogger.etl` * `C:\Windows\System32\WDI\LogFiles\ShutdownPerfDiagLogger.etl` * 通过 `netsh` 生成的 `NetTrace.etl` * `C:\Windows\System32\WDI\\\snapshot.etl` * 等等。 许多新 API(如 `Tracelogging` 或 `WPP`)都基于 ETW。这些 API 被 Microsoft 开发者在 Windows 中广泛使用。`etl-parser` 已支持 `Tracelogging`,`WPP` 将在未来版本中支持。 Microsoft 提供了大量生成 ETL 跟踪的工具,例如 `xperf.exe`、`logman.exe`、`netsh.exe` 等。 我们相信这对 DFIR 分析师来说是一座金矿。 ## 致谢 - 本项目由 [Airbus Computer Emergency Response Team (CERT)](https://www.trusted-introducer.org/directory/teams/ai-cert.html) 版权所有,基于 [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) 许可证分发 - 感谢 [Geoff Chappel](https://www.geoffchappell.com/) 在其博客上提供的所有信息 ## 许可证 `etl-parser` 基于 [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) 许可证发布。
标签:API监控, APT检测, Awesome, BSD, CIDR扫描, Conpot, CSV输出, DAST, ETL文件解析, ETW, ETW日志解析, Event Tracing for Windows, Hpfeeds, OISF, pcap转换, Python, SecList, SQLite数据库, Windows事件日志, Windows事件追踪, Windows内核, Windows安全, XML转换, 事件关联, 事件日志, 事件追踪, 二进制日志格式, 二进制解析, 云资产清单, 代码逆向, 内存取证, 内核日志, 内核日志分析, 内核监控, 大数据处理, 威胁情报, 安全日志分析, 安全运营中心, 开发者工具, 开源, 异常检测, 性能监控, 恶意行为检测, 恶意软件分析, 操作系统内核, 数字取证, 数据包解析, 数据挖掘, 数据提取, 数据结构解析, 数据解析, 文件系统, 无后门, 日志处理, 日志管理, 日志转换, 日志采集, 流量捕获, 渗透测试红队工具, 漏洞利用分析, 白帽子, 系统日志, 系统管理, 系统编程, 系统调用, 纯Python日志解析库, 线程监控, 终端安全, 结构化数据, 网络协议分析, 网络安全, 网络拓扑, 网络映射, 网络流量分析, 自动化脚本, 蓝队防御工具, 运维日志, 逆向工程, 隐私保护