supunhg/filo

GitHub: supunhg/filo

Filo 是一个基于机器学习的文件取证与修复工具,旨在帮助安全专业人士识别和修复未知或损坏的文件。

Stars: 2 | Forks: 0

# Filo - 取证智能与学习操作器 **面向安全专业人士的久经考验的文件取证平台** Filo 能将未知的二进制数据块转化为已分类、可修复且可解释的文件工件,并具备离线的机器学习能力。 ## 功能 - 🔍 **深度文件分析**:多层签名、结构及 ZIP 容器分析 - 🎯 **智能格式检测**:区分 DOCX/XLSX/PPTX、ODT/ODP/ODS、ZIP、JAR、APK、EPUB - 🧠 **增强型机器学习**:判别性模式提取、丰富的统计特征、N-gram 分析 - 🔧 **智能修复**:通过 21 种修复策略自动重建损坏的文件头 - 📊 **灵活输出**:简洁的证据显示(默认显示前 3 项),使用 -a/--all-evidence 查看完整详情 - 😎 **置信度分解**:使用 --explain 标志进行可审计的检测(符合法庭证据要求的透明度) - 🛡️ **矛盾检测**:识别恶意软件、多义性文件、结构异常(用于恶意软件分类) - 🕵️ **嵌入文件检测**:查找隐藏在文件内部的文件 - EXE 中的 ZIP、EOF 后的 PNG(恶意软件猎手的利器) - 🔧 **工具指纹识别**:识别文件的创建方式、时间及所用工具(用于取证溯源) - 🔐 **加密检测** *(新版 v0.3.0)*:检测加密数据,识别加密算法类型(AES-ECB、OpenSSL、PGP),分析块对齐方式,解释熵值 - 非常适合 CTF 挑战 - 🔍 **YARA 扫描** *(新版 v0.3.0)*:使用自定义 YARA 规则扫描文件 - 规则编译、匹配解析、标签和元数据提取 - 📄 **Office 宏分析** *(新版 v0.3.0)*:检测 OLE2 文档中的 VBA 宏 - 自动执行宏、50+ 可疑关键字 - 🔤 **字符串提取** *(新版 v0.3.0)*:高级的 `filo strings` 命令,支持正则表达式、熵过滤、编码检测、JSON 输出 - 📊 **熵值可视化** *(新版 v0.3.0)*:使用 `--entropy-viz` 标志生成颜色编码的熵图 - ⚠️ **多义性文件检测** *(v0.2.5)*:检测双格式文件(GIFAR、PNG+ZIP、PDF+JS)并评估风险 - 🖥️ **CPU 架构检测** *(v0.2.8)*:自动检测可执行文件的 CPU 架构(支持 90+ 种架构:x86、ARM、RISC-V、XTensa、MIPS 等) - 🎨 **zsteg 兼容隐写分析** *(v0.2.7)*:60+ 种位平面 LSB/MSB 提取(PNG/BMP),自动 base64 解码,文件类型检测,针对 CTF 优化 - 🌐 **PCAP 分析** *(v0.2.6)*:网络捕获文件分析,包含协议检测、字符串提取、base64 解码、旗标搜索 - 🚀 **批量处理**:并行目录分析,可配置工作线程数 - 🔗 **哈希溯源追踪**:为法庭证据提供加密的监管链 - 📦 **容器检测**:对 Office 和归档格式进行基于 ZIP 的深度格式检查 - ⚡ **性能分析**:识别大规模分析中的瓶颈 - 🎨 **增强型 CLI**:彩色输出、十六进制转储、修复建议 - 🧹 **易于维护**:通过简单命令重置机器学习模型和溯源数据库 ## 快速开始 **选项 1:pip 安装(Linux / macOS / Windows)** ``` pip install filo-forensics # file pip install filo-forensics[yara] # Identify CPU architecture (ELF/PE/Mach-O executables) pip install filo-forensics[all] ``` **选项 2:Docker(任意平台)** ``` docker pull ghcr.io/supunhg/filo:latest docker run --rm -v $(pwd):/data filo:latest analyze /data/target_file ``` **选项 3:从源码安装(开发用途)** ``` git clone https://github.com/supunhg/Filo cd Filo pip install -e . ``` **选项 4:.deb 包(仅限 Linux)** ``` git clone https://github.com/supunhg/Filo cd Filo ./build-deb.sh sudo dpkg -i filo-forensics_0.3.0_all.deb ``` **用法:** ``` # Detect encrypted data (CTF-optimized) filo analyze suspicious.bin # Example output: "Medium entropy - AES-aligned (3 blocks) - Possible AES-ECB" filo analyze binary # Shows: x86-64, ARM64, Xtensa, etc. # Detect steganography (zsteg-compatible with auto base64 decoding) filo analyze cipher.bin # Shows entropy, block alignment, cipher hints # Analyze PCAP network capture files # Show detailed confidence breakdown (forensic-grade) filo stego challenge.png # CTF flag hunting filo stego image.png --all # Show all 60+ bit plane results filo stego image.png --extract="b1,rgba,lsb,xy" -o flag.txt # Show all detection evidence and embedded artifacts filo pcap capture.pcap # Analyze with JSON output filo analyze --explain file.bin # Teach ML about a file format filo analyze -a -e file.bin # Batch process directory filo analyze --json file.bin > report.json # Repair corrupted file filo teach correct_file.zip -f zip # Reset ML model or lineage database filo batch ./directory # Clone repository filo repair --format=png broken_image.bin # Build .deb package filo reset-ml -y filo reset-lineage -y ``` ## 安装说明 ### 📦 简易安装(推荐) - Debian/Ubuntu 安装 Filo 最简单的方式是构建并安装 `.deb` 包: ``` # Install git clone https://github.com/supunhg/Filo cd Filo # Start using immediately ./build-deb.sh # Clone and install with dev dependencies sudo dpkg -i filo-forensics_0.2.8_all.deb # Run tests filo --version filo analyze file.bin ``` **特点:** - ✅ 隔离安装在 `/opt/filo/` 目录下(无系统冲突) - ✅ 自动管理依赖项 - ✅ 全局 `filo` 命令(可在任何位置使用) - ✅ 无需手动激活虚拟环境 - ✅ 干净卸载:`sudo dpkg -r filo-forensics` **支持系统:** Ubuntu 20.04+、Debian 11+ 及兼容发行版 **注意:** 所有用户数据存储在 `/home/user/.filo/` 目录中: - 机器学习模型:`/home/user/.filo/learned_patterns.pkl` - 溯源数据库:`/home/user/.filo/lineage.db` ### 从源码安装(开发用途) ``` git clone https://github.com/supunhg/Filo cd Filo pip install -e . ``` ### 开发环境设置 ``` # Python API git clone https://github.com/supunhg/Filo cd Filo pip install -e ".[dev]" # Analyze file with ML enabled pytest ``` ## 使用示例 ### View detection evidence ``` from filo import Analyzer, RepairEngine from filo.batch import analyze_directory from filo.export import export_to_file from filo.container import analyze_archive # Teach ML about correct format analyzer = Analyzer(use_ml=True) result = analyzer.analyze_file("unknown.bin") print(f"Detected: {result.primary_format} ({result.confidence:.0%})") print(f"Alternatives: {result.alternative_formats[:3]}") # Batch process directory for evidence in result.evidence_chain[:3]: print(f" {evidence['module']}: {evidence['confidence']:.0%}") # Export to JSON/SARIF with open("sample.zip", "rb") as f: analyzer.teach(f.read(), "zip") # Analyze container (DOCX, ZIP, etc.) batch_result = analyze_directory("./data", recursive=True) print(f"Analyzed {batch_result.analyzed_count} files") # Repair file export_to_file(result, "report.json", format="json") # CLI container = analyze_archive("document.docx") for entry in container.entries: print(f"{entry.path}: {entry.format}") # Analysis with limited evidence (default: top 3) repair = RepairEngine() repaired_data, report = repair.repair_file("corrupt.png") ``` ### Show all evidence and embedded artifacts ``` # Show detailed confidence breakdown (auditable, court-ready) filo analyze suspicious.bin # Combine for full transparency filo analyze -a -e suspicious.bin # Disable ML for pure signature detection filo analyze --explain file.bin # Analysis with JSON output filo analyze --explain -a -e file.bin # Detect embedded files (ZIP in EXE, PNG after EOF) filo analyze --no-ml file.bin # Identify tool/creator fingerprints filo analyze --json suspicious.bin # Batch processing with export filo analyze malware.exe -e # Teach ML about file formats filo analyze document.pdf # Automatically fingerprints # Reset ML model or lineage database filo batch ./directory --export=sarif --output=scan.sarif # Export to JSON for scripting filo teach correct_file.zip -f zip filo teach image.png -f png # Security: Detect embedded malware in documents filo reset-ml -y filo reset-lineage -y # Automation: Filter files with critical contradictions filo analyze --json file.bin | jq '.primary_format' # Check for hidden files filo analyze suspicious.docx # Automatically checks for contradictions # Chain-of-custody: Query file transformation lineage filo analyze *.docx --json | \ jq 'select(.contradictions[]? | .severity == "critical")' # View lineage history filo analyze *.png --json | \ jq 'select(.embedded_objects | length > 0)' # Export lineage for court filo lineage $(sha256sum repaired.png | cut -d' ' -f1) # Concise output (default) filo lineage-history --operation repair # Full evidence when needed filo lineage $FILE_HASH --format json --output chain-of-custody.json ``` ## 关键改进 ### 基于 ZIP 的格式检测 Filo 现在通过检查容器内容,能够准确区分基于 ZIP 的格式: - **Office Open XML**:DOCX、PPTX、XLSX(通过 `[Content_Types].xml` 检测) - **OpenDocument**:ODT、ODP、ODS(通过 `mimetype` 文件检测) - **归档文件**:JAR、APK、EPUB、普通 ZIP - **大文件**:高效处理 >10MB 的文件(通过文件路径访问) ### 增强的机器学习特性 机器学习检测的三大改进: 1. **判别性模式提取**:自动发现特定格式的字节序列 2. **丰富特征分析**:8 种统计特征,包括压缩率、熵值、字节分布 3. **N-gram 分析**:使用前 100 个字节三元组进行模糊匹配,用于相似度检测 ### 更简洁的输出 证据显示现在默认只展示最相关的前 3 项: ``` # Output: filo analyze file.zip # 🔍 Steganography Analysis: image.png filo analyze --all-evidence file.zip ``` ## 文档 - [快速入门指南](QUICKSTART.md) - 5 分钟上手 - [隐写分析检测](docs/STEGANOGRAPHY_DETECTION.md) - 隐藏数据提取(LSB/MSB、元数据、尾随数据) *(新版)* - [嵌入文件检测](docs/EMBEDDED_DETECTION.md) - 查找隐藏在文件内部的文件 - [工具指纹识别](docs/TOOL_FINGERPRINTING.md) - 取证溯源(谁/何时/如何) - [置信度分解](docs/CONFIDENCE_BREAKDOWN.md) - 可审计的检测解释 - [哈希溯源](docs/HASH_LINEAGE.md) - 监管链追踪 - [多义性文件检测](docs/POLYGLOT_DETECTION.md) - 双格式文件检测 - [矛盾检测](docs/CONTRADICTION_DETECTION.md) - 恶意软件与异常检测 - [系统架构](ARCHITECTURE.md) - 详细的设计说明 - [示例](examples/README.md) - 代码示例与演示 ## v0.2.6 更新内容 🎨 **隐写分析检测** 检测图像文件和文档中的隐藏数据: ``` filo stego image.png # # ✓ Potential Hidden Data Found (3 methods) # # Method: b1,rgb,lsb,xy # Confidence: 95% (FLAG PATTERN DETECTED) # Data: picoCTF{h1dd3n_1n_LSB} # Output: # 📊 Statistics ``` **功能:** - ✅ **LSB/MSB 检测**:从最低/最高有效位提取数据(PNG、BMP) - ✅ **多通道支持**:测试 RGB、RGBA、独立通道(r、g、b、a)、BGR - ✅ **位序**:支持 LSB 和 MSB,行/列主序 - ✅ **PDF 元数据**:从作者、标题、主题、关键字中提取隐藏的旗标 - ✅ **尾随数据**:检测 JPEG EOI、PNG IEND、PDF EOF 标记之后的数据 - ✅ **旗标识别**:自动检测 CTF 旗标模式(picoCTF{}、flag{}、HTB{}) - ✅ **自动解码**:自动 base64 和 zlib 解压 - ✅ **提取功能**:将特定通道/方法的数据保存到文件 **完整指南:** [隐写分析检测文档](docs/STEGANOGRAPHY_DETECTION.md) 🌐 **PCAP 网络分析** 快速分类网络捕获文件: ``` filo pcap dump.pcap # Packets: 1,234 # Protocols: TCP (800), UDP (400), ICMP (34) # # 🚩 FLAGS FOUND (2) # picoCTF{n3tw0rk_f0r3n51c5} # flag{hidden_in_packets} # # 📝 Base64 Data # cGljb0NURnsuLi59 → picoCTF{...} # Output: # Entropy: 5.49 bits/byte ``` **功能:** - ✅ **协议检测**:IPv4、IPv6、TCP、UDP、ICMP、ARP - ✅ **字符串提取**:从数据包负载中提取 ASCII 字符串 - ✅ **Base64 解码**:自动检测并解码 - ✅ **旗标搜索**:在所有数据包中搜索 CTF 旗标模式 - ✅ **HTTP 提取**:GET/POST 请求及头部信息 - ✅ **轻量级**:无需 Wireshark/tshark 依赖即可快速分类 **新增格式支持:** - 📦 **PCAP/PCAPNG**:网络捕获文件(小端/大端) - 📜 **Shell 归档 (shar)**:自解压 Shell 脚本归档 ## 历史版本
v0.3.0 - 加密检测(最新) 🔐 **重大增强:密码学分析与加密检测** Filo 现在能够自动检测加密数据,识别加密算法类型,并为 CTF 挑战和恶意软件调查提供取证级别的密码学分析: ``` filo analyze cipher.bin # (Medium - compressed data, weak encryption, or obfuscation) # Crypto indicators: File size is AES-aligned (3 blocks) # # 🔐 Encryption Detected: 95% confidence # • OpenSSL command-line encryption format # • File size is AES-aligned (3 blocks) # # Possible Cipher Types: # • AES (block size: 16 bytes) # • OpenSSL enc (likely AES-256-CBC) # Output: # 🖥️ CPU Architecture: ``` **关键特性:** - ✅ **熵值解释**:人类可读的香农熵解释(极低 → 极高) - ✅ **分组密码分析**:检测 AES/DES/Blowfish 块对齐、PKCS#7 填充、块数量 - ✅ **ECB 模式检测**:通过发现重复的密文块识别不安全的 ECB 模式(安全漏洞指标) - ✅ **格式识别**:OpenSSL enc(`Salted__`)、PGP/GPG 加密文件、二进制加密格式 - ✅ **CTF 优化**:通过熵值和块对齐提示完美识别加密的 CTF 挑战 - ✅ **JSON 导出**:完整的加密分析以 JSON 格式输出,便于自动化工作流 - ✅ **全面测试**:26 项测试覆盖所有加密检测场景 **可检测模式:** - **高熵值**:强加密或加密随机数据(>7.9 比特/字节) - **块对齐**:检测 AES(16字节)、DES/Blowfish(8字节)块 - **ECB 模式**:通过重复的密文块检测安全漏洞 - **填充**:检测分组密码的 PKCS#7 填充 - **格式**:OpenSSL、PGP/GPG、通用加密数据 **实际用例:** 非常适合像 "Old Habits" 这样的 CTF 挑战,您需要识别: - 加密算法(例如 AES-ECB) - 块大小和对齐方式 - 是尝试暴力破解还是寻找密码提示 **文档:** 详细用法和示例请参阅 [docs/CRYPTO_DETECTION.md](docs/CRYPTO_DETECTION.md)。 **发布日期**:2026年2月13日
v0.2.8 - CPU 架构检测 🖥️ **重大增强:CPU 架构检测** Filo 现在能够自动检测并报告可执行文件的 CPU 架构: ``` filo analyze astronaut # • Tensilica Xtensa Architecture (32-bit, Little-endian) # Format: ELF | Machine Code: 0x005E # Output: # ⚠ Polyglot Detected: ``` **关键特性:** - ✅ **支持 90+ 种架构**:x86、x86-64、ARM、ARM64、RISC-V、MIPS、PowerPC、Xtensa、SPARC、AVR、Alpha、IA-64 等等 - ✅ **三种可执行文件格式**:ELF(Linux/Unix)、PE/COFF(Windows)、Mach-O(macOS/iOS) - ✅ **完整信息**:架构名称、地址宽度(32/64位)、字节序、机器代码 - ✅ **CTF 优化**:瞬间解决架构识别挑战 - ✅ **全面测试**:24 项测试覆盖所有主要架构 **支持的架构包括:** - 常见架构:x86、x86-64、ARM(32/64位)、RISC-V、MIPS、PowerPC - 嵌入式架构:Xtensa(物联网/WiFi)、AVR(Atmel)、SuperH、M68k - 专用架构:SPARC、Alpha AXP、IA-64(Itanium)、S390(大型机) - 特殊架构:VAX、PDP-10/11、TMS320C6000、Elbrus e2k、BPF **文档:** 完整指南请参阅 [docs/ARCHITECTURE_DETECTION.md](docs/ARCHITECTURE_DETECTION.md) 📊 **测试覆盖**:24 项新测试(100% 通过) 🎯 **CTF 就绪**:一条命令即可解决架构挑战
v0.2.7 - zsteg 兼容隐写分析 ✨ **重大增强:zsteg 算法兼容性** Filo 的隐写分析检测现在与行业标准 `zsteg` 工具完全一致: **关键特性:** - ✅ 每张图像测试 **60+ 种位平面配置** - ✅ 与 zsteg 相比,**逐字节完全一致**的提取结果 - ✅ **多位提取**(b1、b2、b4),具有正确的半字节/字节打包 - ✅ **自动 base64 解码** - 直接显示解码后的旗标(相比 zsteg 的改进!) - ✅ **文件类型检测** - OpenPGP 密钥、Targa、Applesoft BASIC、Alliant - ✅ **智能结果过滤** - 默认隐藏元数据噪声 - ✅ **zsteg 风格输出** - CTF 玩家熟悉的格式 **v0.2.7 中的其他改进:** - 降低了嵌入对象的误报率(置信度阈值从 0.70 提高到 0.80) - 添加了格式排除规则(跳过 ELF/PE 二进制文件中的 WASM/ICO 模式) - 嵌入检测中引入父格式感知 **测试:** - 在 CTF 挑战图像(picoCTF)上验证 - 与 zsteg 参考输出进行算法验证 - 测试多位提取(b2、b4 位平面) 📊 **测试覆盖**:85%+(所有测试通过) **完整详情:** [RELEASE_v0.2.7.md](docs/RELEASE_v0.2.7.md)
v0.2.6 - 隐写分析与 PCAP 分析 ✨ **新增功能:** - 隐写分析检测(LSB/MSB 分析、PDF 元数据、尾随数据) - PCAP 网络捕获分析,包含旗标搜索 - 增强的输出过滤
v0.2.5 - 多义性文件与双格式检测 ⚠️ **主要新功能:多义性文件与双格式检测** Filo 现在能够检测同时满足多种格式规范的文件: ``` filo analyze suspicious_image.gif # • GIF + JAR - GIF + JAR hybrid (GIFAR attack) (91%) # Risk: HIGH | Pattern: gifar" # Now, let's count the lines. I'll number each line starting from 1. # 1. With optional YARA support ``` **支持的多种性文件模式:** - **GIFAR**(GIF+JAR) - 高风险:绕过图像过滤器的经典攻击向量 - **PDF + JavaScript** - 高风险:包含嵌入式 JS 载荷的恶意 PDF - **PE + ZIP** - 高风险:同时也是 ZIP 归档的 Windows 可执行文件 - **PNG + ZIP** - 中等风险:包含隐藏 ZIP 归档的图像 - **JPEG + ZIP** - 中等风险:包含嵌入式归档的 JPEG 文件 **关键特性:** - ✅ 多格式验证(PNG、GIF、JPEG、ZIP、JAR、RAR、PDF、PE、ELF) - ✅ 安全风险评估(高、中、低) - ✅ 置信度评分(70-98%) - ✅ PDF 中的 JavaScript 载荷检测 - ✅ 用于测试的演示多种性文件 - ✅ 全面的测试套件(26 项新测试) **文档:** 完整指南请参阅 [docs/POLYGLOT_DETECTION.md](docs/POLYGLOT_DETECTION.md) 📊 **测试覆盖**:总体 67%(173/173 项测试通过,+26 项多种性文件测试) 🎯 **支持格式**:60+ 种文件格式 🔬 **检测精度**:干净文件 95%+,损坏文件 70%+
v0.2.4 - 嵌入检测与工具指纹识别(上一版本) ✨ **增强功能:** 1. **嵌入对象检测** - 查找隐藏在文件内部的文件(EXE 中的 ZIP、EOF 后的 PNG、多种性文件) 2. **工具指纹识别** - 识别创建工具、版本、操作系统、时间戳(用于取证溯源) 3. **短标志** - `-a` 查看所有证据,`-e` 查看所有嵌入工件 4. **重置命令** - `filo reset-ml` 和 `filo reset-lineage` 方便维护 5. **演示文件** - `demo/` 目录中的复杂测试文件 6. **哈希溯源追踪** - 为所有转换提供加密的监管链 7. **格式矛盾检测** - 识别恶意软件、多种性文件、嵌入的可执行文件 8. **置信度分解** - 使用 --explain 标志进行可审计的检测 9. **ZIP 容器分析** - 准确检测 DOCX/XLSX/PPTX/ODT/ODP/ODS 10. **增强的机器学习** - 模式提取、丰富特征、N-gram 分析 📊 147/147 项测试通过
## 参与贡献 我们欢迎贡献!优先领域包括: - 格式规范(YAML) - 分析插件 - 测试语料样本 - 性能优化 ## 安全与稳定性 Filo 在设计时充分考虑了安全性: - 非破坏性分析(除非明确使用修复命令) - 资源限制处理 - 所有层级的输入验证 - 无外部网络调用(完全离线的机器学习) ## 作者 Supun Hewagamage ([@supunhg](https://github.com/supunhg)) **当你需要知道的不仅仅是某物*是*什么,还有它*为何*如此,以及*如何*修复它。**
标签:Apex, CTF竞赛工具, YARA规则扫描, 二进制分析, 云安全运维, 加密检测, 字符串提取, 宏分析, 嵌入文件检测, 工具指纹, 文件修复, 文件智能, 智能修复, 机器学习, 格式检测, 格式识别, 法庭就绪, 深度分析, 熵可视化, 矛盾检测, 离线学习, 结构分析, 证据展示, 请求拦截, 逆向工具