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, 子域名枚举, 安全合规, 无后门, 系统安全, 网络代理, 逆向工具