{"repo":"christarcher/0RAYS-AWD-Filechecker","free":true,"listed":false,"github":"https://github.com/christarcher/0RAYS-AWD-Filechecker","clone":"git clone https://github.com/christarcher/0RAYS-AWD-Filechecker.git","description":"用Go编写的轻量文件监控器. 可以监控终端上指定文件夹内的变化, 阻止删除,修改,新增操作. 可以用于AWD比赛或者终端应急响应","language":"Go","stars":40,"topics":["awd","awd-tools","blue-team-tool","ctf","edr","file-monitoring","monitoring","monitoring-tool"],"license":"GPL-2.0","category":"analytics","readme_excerpt":"0RAYS-AWD-Filechecker 一个用Golang编写的, 轻量级的文件监控器, 会监控指定文件夹内文件删除, 修改, 新增操作, 然后立刻告警并复原. 效果如图所示 一开始是为AWD比赛写的, 主要是为了防止靶机的web目录被上马. 但也可以用到蓝队等场景上. 由于使用的Linux的lstat系统调用, 故 仅支持Linux环境使用, 不支持windows . 工作流程 1. 程序启动后扫描指定监控目录，将所有符合条件的文件完整备份到workspace下的backup目录中 2. 对所有监控文件建立基线信息，记录文件大小、修改时间、权限、UID/GID等元数据 3. 发现所有子目录后，为每个目录启动一个独立的goroutine进行监控 4. 每个goroutine每200ms扫描其负责目录的直接子文件，通过lstat获取文件元数据与基线对比 5. 监测文件的元数据是否有变化, 以及文件和路径是否有被删除等 6. 告警机制：所有异常变化都会记录日志，如果配置了API端点则同时发送HTTP告警 功能特性 - 支持指定拓展名, 例如指定php文件, 这样避免监控一些静态的html,css文件, 减少占用 - 高频检测, 期望响应时间100ms, 基本上php马刚传上来就立刻被删除 - notifier.py支持跨平台, 有python环境即可, 会通过弹窗告警, 告知选手或队员立即处理问题(可选) 注意事项 1. 本项目只是把文件备份后观察文件的变化, 不能抵御一些完美的在不影响元数据的情况下作出的修改, 不适合防御APT攻击 2. 不能防御内存马. 假如项目中有漏洞, 可以实现无文件落的打内存马, 这是无法防御的 3. 攻击者依然有可能打条件竞争, 由于项目是100ms监测一次, 对于http请求来说是很短的间隔, 但若攻击者一直打上传和运行的这个timing, 依然有可能导致成功运行马子 . 所以你要是担心这个问题, 建议调整间隔, 在时间和性能之间取舍. 对于一般的AWD或者蓝队, 100ms是很足够了, IO占用也很低了, 攻击者基本都会以为传不上来或者被杀掉了. 使用 release里面直接下载对应的平台的版本即可. 或者go build awd-filechecker.go Filechecker参数 notifier.py参数 典型场景 监控php webshell: 监控jsp, 不使用notifier notifier api接口","default_branch":null,"files":null,"tree":[],"storefront":"/r/christarcher","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/christarcher/0RAYS-AWD-Filechecker/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}