FlipForensics/AIFT

GitHub: FlipForensics/AIFT

基于 Dissect 解析引擎和大语言模型的自动化取证分诊工具,将磁盘镜像中 Windows/Linux 取证痕迹的提取、分析与报告生成整合为一条本地化流水线,大幅缩短应急响应中的初步分析时间。

Stars: 18 | Forks: 0

AIFT Logo

# AIFT - AI Forensic Triage V1.4.1 **由 AI 驱动的自动化 Windows 和 Linux 取证应急分诊工具。** AIFT 将数小时的手动痕迹分析缩短至几分钟。上传磁盘镜像,选择要解析的内容,即可获得 AI 生成的取证报告——所有操作均在浏览器中完成,并在本地机器上运行。支持 Windows 和 Linux 磁盘镜像。 专为需要快速获取结果的应急响应人员打造,同时操作极其简便,非取证团队成员也能轻松使用。 **本项目正处于积极开发中。欢迎贡献代码。如果遇到任何错误,请告诉我!** ## 工作原理 ``` Upload Evidence → Select Artifacts → Parse → AI Analysis → HTML Report ``` 1. **运行应用程序** - 浏览器中将打开一个本地 Web 界面。 2. **上传证据** - 拖放 E01、VMDK、VHD、原始镜像或压缩包,或者指定本地路径加载大型镜像。 3. **选择痕迹** - 从 25 种 Windows 或 19 种 Linux 取证痕迹中进行选择,这些痕迹将由 [Dissect](https://github.com/fox-it/dissect) 进行解析。 4. **获取结果** - AI 会分析每个痕迹的入侵指标,关联不同痕迹间的发现,并生成包含证据哈希值和完整审计追踪的独立 HTML 报告。 无需 Elasticsearch。无需 Docker。无需数据库。只需一个 Python 脚本,一条命令。 ![](https://raw.githubusercontent.com/FlipForensics/AIFT/main/images/AIFT.gif) ## 文档 - **用户指南**: https://github.com/FlipForensics/AIFT/wiki - **代码参考**: https://flipforensics.github.io/AIFT/docs/ ## 示例报告 使用了一个[公开的测试镜像](https://cfreds.nist.gov/all/BenjaminDonnachie/CompromisedWindowsServer2022simulation)(由 Benjamin Donnachie, NIST CFReDS 提供的被入侵 Windows Server 2022 模拟镜像)来对比各个 AI 提供商的效果。分析提示词中包含了一个真实的 IOC(`PsExec`)和一个未观察到的 IOC(`redpetya.exe`),以测试每个模型识别真实发现和避免误报的能力。 ## | 模型 | 成本 | 运行时间 | 质量 | 报告 | |-------|------|---------|---------|--------| | Kimi | $0.20 | ~5 min | :star::star::star: | [查看报告](https://flipforensics.github.io/AIFT/example_reports/KIMI.html) | | OpenAI GPT | $0.94 | ~8 min | :star::star::star::star: | [查看报告](https://flipforensics.github.io/AIFT/example_reports/ChatGPT5.2.html) | | Claude Opus 4.6 | $3.01 | ~20 min | :star::star::star::star::star: | [查看报告](https://flipforensics.github.io/AIFT/example_reports/Opus4.6.html) | | 本地: qwen3:8b
(RTX 2070 8GB VRAM + 32k context window) | $0 | ~2.5h | :star: | [查看报告](https://flipforensics.github.io/AIFT/example_reports/qwen-3-8b.html) | | 本地: gpt-oss 120b
(DGX Spark 128GB (V)RAM + 128k context window) | $0 | ~20 min | :star::star::star: | [查看报告](https://flipforensics.github.io/AIFT/example_reports/gpt-oss-120b.html) | ## 快速入门 ### 1. 安装 ``` git clone https://github.com//aift.git cd aift pip install -r requirements.txt ``` 需要 Python 3.10-3.13。所有依赖均为纯 Python —— 无需 C 库,无需系统包。 由于上游 `dissect.target` 的兼容性问题,目前不支持 Python 3.14+。 ### 2. 运行 ``` python aift.py ``` 应用启动后会在浏览器中打开 `http://localhost:5000`。首次运行时,会自动创建默认的 `config.yaml`。 ### 3. 配置你的 AI 提供商 点击界面右上角的**齿轮图标** (⚙)。选择你的 AI 提供商并输入所需的凭据: - 对于 **Claude** 或 **OpenAI**:粘贴你的 API key 并点击保存。 - 对于 **Kimi**:粘贴你的 Moonshot API key 并点击保存。 - 对于**本地模型**:输入你的服务器 URL(例如,`http://localhost:11434/v1`)和模型名称。 点击 **Test Connection** 验证一切是否正常。完成——你已准备就绪。 ### 4. 分析你的第一个镜像 - 将证据拖放到上传区域(E01、VMDK、VHD、原始镜像、ZIP、7z、tar)以上传,或者切换到 **Path Mode** 并输入大型镜像或目录的文件路径。 - AIFT 会打开该镜像或应急分诊包。 - 手动选择痕迹或点击 **Recommended**。你可以选择将选定的痕迹保存为配置文件,以便在未来的案例中加载。 - 点击 **Parse**。进度将实时显示。 - 输入你的调查背景(例如,“怀疑在 2026 年 1 月 1 日至 15 日期间发生了未授权访问。请查找新账户和远程访问工具。已识别的 IOC:abc.exe”)。 - 点击 **Analyze**。AI 完成每个痕迹的分析后会实时流式传输单项发现,随后提供跨痕迹的总结。 - 下载 HTML 报告和/或原始 CSV 数据。 - **与 AI 聊天**讨论结果 —— 提出后续问题、请求关联分析,或深入查看特定痕迹,而无需重新运行分析。 ## AI 聊天 (问答) 分析完成后,在结果页面点击 **Show Chat** 以提出后续问题、请求跨痕迹的关联分析,或深入研究特定的 CSV 数据 —— AI 会参考其先前的分析,并在需要时自动检索匹配的行。 ## AI 提供商 AIFT 支持四种 AI 后端,并且可以完全隔离运行。所有配置均通过应用内的设置页面完成。 | 提供商 | 所需条件 | 备注 | |----------|--------------|-------| | **Anthropic Claude** | 来自 [console.anthropic.com](https://console.anthropic.com) 的 API key | 推荐用于获取最佳分析质量 | | **OpenAI / GPT** | 来自 [platform.openai.com](https://platform.openai.com) 的 API key | GPT-4o 或更高版本 | | **Kimi** | 来自 [platform.moonshot.ai](https://platform.moonshot.ai) 的 API key | Moonshot AI 的 Kimi K2 - 兼容 OpenAI | | **本地模型** | 任何兼容 OpenAI 的服务器 | Ollama, LM Studio, vLLM, text-generation-webui | ### Ollama (本地、免费、私密) ``` ollama pull llama3.1:70b ollama serve ``` 在 AIFT 设置中:选择 **Local**,将 URL 设置为 `http://localhost:11434/v1`,模型设置为 `llama3.1:70b`。 **重要提示:请将 `Analysis Max Tokens` 设置为与你模型的 context window 相匹配**(Settings > Advanced)。例如,具有 32K 上下文的 `qwen3:8b` → 设置为 `32000`。云模型 (Claude, OpenAI, Kimi) 默认为 128K,通常无需调整。 当痕迹的数据超出上下文预算时,AIFT 会自动将 CSV **分块**,通过多次 AI 调用确保每一行数据都被分析。然后,分块的发现结果会被分层合并 —— 将它们分组为符合上下文窗口大小的批次,由 AI 进行合并,并重复此过程直到剩下单一结果。这确保了无论模型大小如何,都不会丢失数据。在回退之前最大的合并轮数可以在高级设置中通过 `Max Merge Rounds` 进行配置(默认值:5)。 强烈建议至少具备 32K tokens 的容量。 ### 环境变量 也可以通过环境变量而不是 UI 来设置 API 密钥: ``` export ANTHROPIC_API_KEY="sk-ant-..." export OPENAI_API_KEY="sk-..." export KIMI_API_KEY="sk-..." ``` ## 支持的痕迹 AIFT 使用由 Fox-IT (NCC Group) 提供的 [Dissect](https://github.com/fox-it/dissect) 进行取证解析 —— 纯 Python,无外部依赖。打开镜像时会自动检测操作系统类型。 ### Windows (25 种痕迹) | 类别 | 痕迹 | |----------|----------| | **持久化** | Run/RunOnce 键,计划任务,服务,WMI 持久化 | | **执行** | Shimcache,Amcache,Prefetch,BAM/DAM,UserAssist,MUIcache | | **事件日志** | Windows 事件日志(所有通道),Defender 日志 | | **文件系统** | NTFS MFT,USN 日志,回收站 | | **用户活动** | 浏览器历史记录,浏览器下载记录,PowerShell 历史记录,活动缓存 | | **网络** | SRUM 网络数据,SRUM 应用程序使用情况 | | **注册表** | Shellbags,USB 设备历史记录 | | **安全** | SAM 用户账户,Defender 隔离区 | ### Linux (19 种痕迹) | 类别 | 痕迹 | |----------|----------| | **持久化** | Cron 任务,Systemd 服务 | | **Shell 历史** | Bash 历史,Zsh 历史,Fish 历史,Python 历史 | | **身份验证** | 登录记录 (wtmp),失败登录 (btmp),上次登录,用户账户,用户组,Sudoers 配置 | | **网络** | 网络接口 | | **日志** | Syslog,Systemd 日志,软件包历史 | | **SSH** | SSH 授权密钥,SSH 已知主机 | 仅显示镜像中存在的痕迹。不可用的痕迹会自动显示为灰色。 ## 支持的证据格式 AIFT 使用 [Dissect](https://github.com/fox-it/dissect) 加载证据,支持多种取证镜像和磁盘格式。 | 类别 | 格式 | 备注 | |----------|---------|-------| | **EnCase (EWF)** | `.E01`, `.Ex01`, `.S01`, `.L01` | 同一目录下的分段文件 (`.E02`, `.E03`, ...) 会被自动发现 | | **Raw / DD** | `.dd`, `.img`, `.raw`, `.bin`, `.iso` | 逐位磁盘镜像 | | **Split raw** | `.000`, `.001`, ... | 分段原始镜像 - 传入第一个分段即可 | | **VMware** | `.vmdk`, `.vmx`, `.vmwarevm` | 虚拟磁盘和虚拟机配置(自动加载关联的磁盘) | | **Hyper-V** | `.vhd`, `.vhdx`, `.vmcx` | 传统与现代 Hyper-V 格式 | | **VirtualBox** | `.vdi`, `.vbox` | VirtualBox 磁盘和虚拟机配置 | | **QEMU** | `.qcow2`, `.utm` | QEMU 写时复制和 UTM 捆绑包 | | **Parallels** | `.hdd`, `.hds`, `.pvm`, `.pvs` | Parallels Desktop 镜像 | | **OVA / OVF** | `.ova`, `.ovf` | 开放虚拟化格式 | | **XenServer** | `.xva`, `.vma` | Xen 和 Proxmox 导出 | | **备份** | `.vbk` | Veeam 备份文件 | | **Dissect 原生** | `.asdf`, `.asif` | Dissect `acquire` 输出 | | **FTK / AccessData** | `.ad1` | 逻辑镜像 | | **压缩包** | `.zip`, `.7z`, `.tar`, `.tar.gz` | 解压并扫描内部的证据文件 | 证据也可以作为**目录路径**提供(例如,Windows 的 KAPE 或 Velociraptor 应急分诊输出,或 Linux 的 UAC 应急分诊输出)。 对于超过 2 GB 的镜像,请使用 **Path Mode** 而不是上传 —— 输入本地文件路径,AIFT 会直接读取它。 ## 路线图 正在积极开发中的功能: - **多镜像支持**:在单个案例中分析多个证据源(例如,工作站 + 服务器 + 域控制器)。包括跨系统关联分析,以识别横向移动和共享的 IOC。 - **移动设备支持**:使用 [iLEAPP](https://github.com/abrignoni/iLEAPP) 和 [ALEAPP](https://github.com/abrignoni/ALEAPP) 进行 iOS 和 Android 设备分析。涵盖通话记录、短信、浏览器历史记录、已安装应用程序、位置数据等。 ## 取证完整性 AIFT 在构建时充分考虑了取证的可靠性: - **证据为只读。** 磁盘镜像绝不会被修改。Dissect 以只读模式打开所有内容。 - **SHA-256 + MD5 哈希**:在接收和生成报告前进行哈希(可以在 Settings → Advanced 中跳过,以加快大型镜像的接收速度)。报告会验证并显示哈希匹配情况。 - **完整的审计追踪。** 每一项操作(上传、解析、分析、报告)都会附带 UTC 时间戳记录到每个案例的 `audit.jsonl` 文件中。 - **AI 护栏。** AI 被指示引用特定记录,明确陈述不确定性,绝不捏造证据。发现结果包含置信度评级(高 / 中 / 低)。 - **提示词审计追踪。** 发送给 AI 的每个提示词(系统提示词 + 用户提示词)都会保存到案例的 `prompts/` 目录中。这允许对 AI 被要求执行的操作进行全面审查,而无论提供商是谁。 - **每份报告均包含免责声明。** AI 辅的发现结果在用于法律或正式程序之前,必须由合格的检验员进行验证。 ## 报告输出 AIFT 生成一份**独立的 HTML 报告** —— 所有 CSS 均为内联,无外部依赖。可在任何浏览器中打开、打印或存档。报告包含: - 证据元数据和哈希验证 - 包含置信度评估的执行摘要 - 附带引用证据的单项痕迹发现 - 调查缺口和建议的下一步操作 - 完整的审计追踪 解析后的痕迹数据也可作为可下载的 CSV 压缩包提供,以便进行进一步分析。 ## 系统要求 - Python 3.10-3.13 - 由于上游 `dissect.target` 的兼容性问题,目前不支持 Python 3.14+ - 最低 8 GB 内存(用于解析大型痕迹) - 磁盘空间:约为证据文件大小的 2 倍(用于解析后的 CSV 输出) - 无 C 库依赖 - Dissect 是纯 Python ## 免责声明 AIFT 的输出是由 AI 辅助生成的。所有发现结果在任何法律、监管或正式的调查程序中使用前,必须由合格的取证检验员进行独立验证。AI 仅分析所提供的数据,可能无法捕获所有相关的痕迹或上下文。 使用基于云的 AI 提供商时,解析后的痕迹数据将被发送到外部服务器进行分析。请注意证据的敏感性 —— 如果数据受隐私法规、法律限制或保密要求的约束,请考虑改用本地模型。 ## 许可证 AIFT 由 Flip Forensics 作为开源软件发布,可在 https://github.com/FlipForensics/AIFT 获取。 许可条款:AGPL3 (https://www.gnu.org/licenses/agpl-3.0.html)。 联系方式:info@FlipForensics.com
标签:AI数字取证, AI风险缓解, Dissect框架, E01镜像, HTML报告生成, HTTPS请求, HTTP请求, IOC分析, Linux取证, Petitpotam, Python安全工具, VMDK解析, Windows取证, 入侵指标, 后端开发, 库, 应急响应, 数字证据, 数据隐私保护, 无云服务, 本地化部署, 磁盘镜像分析, 离线取证, 网络安全, 自动化分类, 逆向工具, 隐私保护