EVTX是一款针对Windows XML 事件日志 (EVTX) 格式的快速安全解析工具,该工具拥有跨平台特性,可以在多个平台上实现对Windows XML EventLog 格式日志的解析任务。
1、使用 100% 安全的 Rust 实现,并且适用于 Rust 支持的所有平台(具有 stdlib)。
2、运行速度非常快,它同类工具实现都快几个数量级。
3、支持多线程任务执行。
4、支持 XML 和 JSON 输出,均直接从令牌树构建并且彼此独立(不执行 xml2json 转换)。
5、支持一些丢失记录/块的基本恢复。
Rust
Python
由于该工具基于Rust开发,因此我们首先需要在本地设备上安装并配置好最新版本的Rust环境。
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/omerbenamram/evtx.git
Cargo安装
cargo install evtx
发布版安装
我们还可以直接访问该项目的Releases页面下载针对 Windows、macOS 和 Linux 的自动构建版本。(仅限 64 位可执行文件)。
此包提供的主要二进制实用程序是evtx_dump,它提供了一种将.evtx文件转换为不同输出格式的快速方法。
命令样例:
evtx_dump <evtx_file>:将把 evtx 记录的内容转储为 xml。
evtx_dump -o json <evtx_file>:将把 evtx 记录的内容转储为 JSON。
evtx_dump -f <output_file> -o json <input_file>:将会把 evtx 记录的内容以 JSON 形式转储到给定文件中。
除此之外,evtx_dump还可以和fd结合,方便批量处理文件:
fd -e evtx -x evtx_dump -o jsonl:将扫描一个文件夹并将所有 evtx 文件转储到单个 jsonlines 文件中。
fd -e evtx -x evtx_dump '{}' -f '{.}.xml:将在每个 evtx 文件旁边创建一个 xml 文件,以递归方式为文件夹中的所有文件创建一个 xml 文件。
如果需要将文件的来源添加到json,xargs(或者gxargs)和jq中,可以使用下列方法:
fd -a -e evtx | xargs -I input sh -c "evtx_dump -o jsonl input | jq --arg path "input" '. + {path: \$path}'"
注意:默认情况下,evtx_dump将尝试使用多线程,这意味着记录可能会无序返回。
use evtx::EvtxParser;
use std::path::PathBuf;
// Change this to a path of your .evtx sample.
let fp = PathBuf::from(format!("{}/samples/security.evtx", std::env::var("CARGO_MANIFEST_DIR").unwrap()));
let mut parser = EvtxParser::from_path(fp).unwrap();
for record in parser.records() {
match record {
Ok(r) => println!("Record {}\n{}", r.event_record_id, r.data),
Err(e) => eprintln!("{}", e),
}
}
使用“多线程”功能进行编译时,会启用并行版本(默认启用)。
本项目的开发与发布遵循MIT开源许可协议。
EVTX:
https://github.com/daniel2005d/mapXplore
https://github.com/omerbenamram/pyevtx-rs https://pypi.org/project/evtx/