jazz-max/gitmon

GitHub: jazz-max/gitmon

gitmon 是一个基于 git status 的 Web 服务器文件完整性入侵监控器,用于检测和告警未经授权的文件变更(如植入的 Web Shell 和代码注入)。

Stars: 0 | Forks: 0

**English** · [Русский](README.ru.md) # gitmon — git-status 入侵监控器 一个小巧、可审计的监控器,可检测您的 Web 应用程序中的**未经授权的文件更改**, 并通过 **Telegram、MAX 和电子邮件**提醒您。它按计划对每个受跟踪的工作树运行 `git status`, 并仅报告真正*新增的*偏差 —— 正是这一信号 可以捕获被植入的 Web Shell(未跟踪的 `?? evil.php`)和注入的文件(修改了 `vendor/composer/autoload_real.php`)。 纯 Python 3 + coreutils,无外部依赖包。设计用于在嘈杂的代码库中保持安静,并 抵御常见的规避手段。 ## 为什么使用 git status? 发生入侵后,攻击者会植入 Shell 并将代码注入到文档根目录中。在由 Git 管理的 站点中,这些会立即显示为**未跟踪**(`??`)或**已修改**(` M`)条目 —— 这正是 `git status` 所呈现的内容。gitmon 将这种一次性的取证技巧转变为持续的监控。 ## 工作原理 - **发现并去重**已配置的 git 工作树(基于 realpath)。 - 对每个代码库运行 `git status --porcelain=v1 --untracked-files=all -z`(支持 NUL 安全解析,对 文件名中的空格/换行符/UTF-8 具有鲁棒性),以及当前的 HEAD 和受跟踪的 `.gitignore` 文件的哈希值。 - **增量告警**:首次运行会静默记录基线;之后它仅对与基线相比*新增的* 记录发出警报。这是必不可少的 —— 一个真实的站点可能有成千上万 未跟踪的上传文件;您绝不能对它们全部发出警报,而只能对最新出现的进行警报。 - **严重程度** - `HIGH` — 带有可执行 PHP 扩展名的新文件(`.php .phtml .php5 .pht .suspected .htaccess`), 受跟踪的代码文件被修改/添加/删除,强制判定为 HIGH 的 IOC(`vendor/composer/autoload_real.php`, 任何 `index.php`、`.htaccess`、`.gitignore` 的更改)。 - `INFO` — 所有其他情况(正常的媒体上传 `.jpg/.png/.gif`、文档等)。当 `notify_level = HIGH`(默认值)时,INFO 会被记录并归入基线,但**不会进行推送**。 - **内容二次检查(可选)**:新增的未跟踪媒体/文本文件将被传递给内容 扫描器([scan-webshells](https://github.com/jazz-max/scan-webshells))。一个*伪装成图片*的 Shell (`GIF89a
标签:Git, Python, 告警通知, 无后门, 网络信息收集, 网络安全研究, 运维