asherakhan/-File-Integrity-Monitor-FIM-

GitHub: asherakhan/-File-Integrity-Monitor-FIM-

一个基于 SHA-256 哈希比对的轻量级 Python 文件完整性监控器,通过对比基线快照检测文件的增删改,无第三方依赖。

Stars: 0 | Forks: 0

# 文件完整性监控器 (FIM) 一个轻量级、无依赖的**蓝队**工具,通过比较文件的 **SHA-256 哈希值**与受信任的基线,来检测对文件未经授权的更改。它会报告任何**被添加、修改或删除**的文件——这是诸如 Tripwire、AIDE 和 OSSEC 等基于主机的完整性工具背后的核心理念。它是纯粹防御性的:它只**读取文件并报告发现**。不执行任何修改、网络活动或破坏性操作。 ## 为什么开发这个项目 文件完整性监控是一项基础的安全控制措施(也是 PCI-DSS / ISO 27001 的要求)。如果攻击者植入了 web shell、篡改了配置文件或更改了二进制文件,密码学哈希基线是发现它的最可靠方法之一——因为文件内容发生了变化,其 SHA-256 也会随之改变。该工具通过一个小巧、易读的 Python 脚本实现了这种检测逻辑。 ## 功能 - 对目录下的每个文件进行 **SHA-256 哈希**处理(采用流式处理,因此支持大文件) - 对照基线检测**已添加**、**已修改**和**已删除**的文件 - 记录每个哈希值旁边的文件大小和修改时间 - 可配置的**忽略模式** (globs),以跳过 `.git` 或 `__pycache__` 等干扰项 - 可选的发现结果 **JSON 导出**,用于 SIEM / pipeline 集成 - 当发现更改时返回非零退出代码(可在 cron / CI 中使用) - 仅使用标准库 —— 无需 `pip install` ## 用法 该工具有两种模式:`baseline`(记录受信任的状态)和 `check`(将当前状态与基线进行比较)。 ``` # 记录你想要保护的目录的 baseline python3 integrity_monitor.py baseline . # 之后,验证没有任何更改 python3 integrity_monitor.py check . # 将 findings 导出为 JSON python3 integrity_monitor.py check . --json findings.json # 忽略额外的 paths(可重复) python3 integrity_monitor.py baseline . --ignore "*.log" --ignore "tmp/*" # 使用自定义的 baseline 位置 python3 integrity_monitor.py -b /secure/baseline.json check . ``` ### 自己尝试检测 ``` python3 integrity_monitor.py baseline . # snapshot the clean state echo "tampered" >> app.conf # modify a file echo "x" > evil.sh # add a file rm start.sh # delete a file python3 integrity_monitor.py check . # all three are flagged ``` ## 示例输出 ``` ================================================================ FILE INTEGRITY CHECK REPORT ================================================================ Baseline created : 2026-06-15 16:32:15 Monitored dir : . Checked at : 2026-06-15 16:40:02 ================================================================ [!] MODIFIED (2): app.conf old: b35db452d1a4bdbb... (92 bytes) new: 3adaba36dee32e3e... (132 bytes) users.csv old: a102bf900a0a882a... (56 bytes) new: 980e21e1cc0291eb... (71 bytes) [!] ADDED (1): evil.sh (13 bytes) [!] DELETED (1): start.sh [i] Summary: 2 modified, 1 added, 1 deleted, 0 unchanged. ``` ## 工作原理 1. **Baseline** — 该工具遍历目标目录,通过 SHA-256 对每个文件进行流式处理,并将 `{path: {sha256, size, mtime}}` 存储在一个 JSON 文件中。 2. **Check** — 它重新构建快照并与基线执行集合比较:仅存在于新快照中的路径为**已添加**,仅存在于基线中的路径为**已删除**,而哈希值不同的共有路径为**已修改**。 3. 由于检测是基于哈希的,因此即使是单字节更改也能被捕获,而对于仅仅重新保存但内容相同的文件,则不会被误报。 ## 可能的扩展 - 通过 `cron` 计划运行,并在非零退出时发送电子邮件/Slack 警报 - 对基线进行签名或加密,使其免遭篡改 - 切换到 SHA-3 或添加多种哈希算法 - 使用 `inotify` 进行实时监控,而不是计划扫描 ## 许可证 MIT — 请参阅 [LICENSE](LICENSE)。 *作为一个实践安全项目而构建。该仓库包含合成的示例文件(`app.conf`、`users.csv`、`start.sh`),因此该工具开箱即用。*
标签:Homebrew安装, Python, SHA-256哈希, x64dbg, 子域名枚举, 安全合规, 无后门, 系统安全, 网络代理, 逆向工具