yakohhhh/Latent-DFIR

GitHub: yakohhhh/Latent-DFIR

Latent 是一款 DFIR 取证引擎,通过全局模板解析从磁盘未分配空间、内存和损坏文件中重建被清除的 Windows 与 Linux 事件日志。

Stars: 0 | Forks: 0

# Latent [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/39faa54be350a1dab8afd3b2fb8c1c83e4d9cff84abfef2374d19a18053687c4.svg)](https://github.com/yakohhhh/Latent/actions/workflows/ci.yml) [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE) 通过全局模板解析还原被破坏的事件日志。 Latent 是一款命令行 DFIR 工具,用于重建攻击者清除的事件日志。它从磁盘映像、未分配空间、内存转储和损坏的文件中提取单条日志记录,通过全局模板数据库解析其结构,并将其转化为可在报告中作为支撑的标准化时间线。 ## 为什么需要 清除日志(MITRE ATT&CK T1070.001 / T1070.002)现已成为勒索软件 playbook 中的标准步骤。分析师面对的是带有空事件日志的加密系统,而那些至关重要的问题(入口点、潜伏时间、横向移动、数据外泄)却无法找到答案。 擦除日志几乎始终是逻辑操作,而非物理操作。记录数据会保留在磁盘的未分配空间中,直到被覆盖。现代日志格式也由独立的块构成:一个 64 KiB 的 EVTX 块自带字符串和模板表,因此即便周围的文件已丢失,单个幸存的块也能独立解码。 现有工具要么提取整个文件(一旦文件碎片化就毫无用处),要么只能解析完好无损的日志,要么仅解析本地块内的模板而超出范围便放弃。Latent 在记录级别运行,并跨越整个映像甚至更广范围来寻找模板。 ## 工作原理 Latent 对数据源进行两次扫描。第一遍将映像上任何完好块中发现的每个模板索引到全局模板数据库中。第二遍提取记录,并通过以下级联方式解析每一条记录: 1. 其自身块中本地引用的模板, 2. 在同一数据源的其他位置找到的匹配模板, 3. 按 provider、event id 和 OS build 索引的已知模板预构建语料库, 4. 根据 substitution array 形状进行的结构推断。 输出的每条记录都带有明确的置信度级别: | 级别 | 含义 | 用途 | |-------|---------|-----| | L0 | 完好块,校验和有效,本地模板 | 直接证据 | | L1 | 从同一数据源的其他块中恢复的模板 | 证据,值得在报告中记录 | | L2 | 来自外部语料库的模板,匹配 OS build | 强力线索,需相互印证 | | L3 | 根据 substitution 指纹推断出的结构 | 仅作调查线索 | | L4 | 原始 substitution 值,无结构 | 人工解释 | 没有任何记录会在不标明其级别的情况下呈现,并且 L3 或 L4 记录绝不会以完好数据的模样展示。 ## 取证保证 - 对证据的严格只读访问,在 syscall 级别强制执行,绝非仅靠约定。 - 在打开和关闭时计算数据源哈希值;不匹配即为致命错误。 - 确定性输出:相同的输入和参数,产生位级完全一致的结果。 - 完全离线。在正常运行中无遥测,无网络访问。 - 每次运行都会生成审计日志和可追溯性清单,适合作为司法鉴定报告的附件。 - 该工具中不存在任何修改日志的功能,未来也不会添加。 ## 状态 处于早期开发阶段。工作区骨架和 CI 已就绪;扫描引擎和 EVTX pipeline 正在优先构建。进度通过[里程碑](https://github.com/yakohhhh/Latent/milestones)进行跟踪,从 L0(基础)到 L9(1.0 发布)。里程碑编号遵循路线图批次,与上述 L0-L4 置信度级别无关。 ## 计划接口 ``` latent scan Scan a source and extract log records latent resolve Resolve templates on an existing extraction latent merge ... Merge and deduplicate several result sets latent gaps Analyse record gaps, build the destruction report latent report Generate reports latent corpus build Build a template corpus from a reference machine latent corpus info List what the embedded corpus contains latent verify Check a manifest against its outputs latent triage Full pipeline with sensible defaults ``` 输入格式:raw/dd、E01/EWF、VMDK、VHDX、QCOW2、采集目录(KAPE、UAC、Velociraptor)、内存转储。目标 artifacts:EVTX、journald、wtmp/btmp/utmp、auditd、registry hives 和事务日志、$MFT/$UsnJrnl 等。输出:用于 Elastic/SOF-ELK 的 ECS JSONL,用于 Timeline Explorer 的 CSV,HTML 和 Markdown 报告。 ## 从源码构建 需要稳定的 Rust 工具链(1.85 或更高版本)。 ``` git clone https://github.com/yakohhhh/Latent.git cd Latent cargo build --release ./target/release/latent --help ``` ## 法律声明 ## 许可证 Apache-2.0。详见 [LICENSE](LICENSE)。
标签:可视化界面, 通知系统