工具介紹
0RAYS-AWD-Filechecker一個用Golang編寫的, 輕量級的文件監控器, 會監控指定文件夾內文件刪除, 修改, 新增操作, 然后立刻告警并復原.
一開始是為AWD比賽寫的, 主要是為了防止靶機的web目錄被上馬. 但也可以用到藍隊等場景上.
由于使用的Linux的系統調用, 僅支持Linux環境使用.
工作流程
- 程序啟動后會首先掃描指定目錄下的文件和子目錄, 然后備份指定的workspace文件夾中
- 遞歸找出所有子目錄, 然后為每一個子目錄分配一個goroutine
- 每個goroutine每200ms列目錄, 然后對文件lstat, 檢查時間和字節數是否有變化
- 觀察是否有刪除, 新增, 修改等. 如果有立刻恢復備份文件夾中的文件
- 如果設置有API, 會上報告警可疑的變化, 沒有則會在終端中打印
- 新增的可疑文件會被隔離, 供觀察
┌─────────────────┐ HTTP API ┌──────────────────┐
│ 文件監控器 │ ────────────? │ notifier.py │
│ (awd-checker) │ │ (桌面彈窗告警) │
└─────────────────┘ └──────────────────┘│▼
┌─────────────────┐
│ 靶機文件系統 │
│ ┌─── 監控 ─┐ │
│ ├─── 備份 ──┤ │
│ └── 隔離 ──┘ │
└─────────────────┘
功能特性
- 支持指定拓展名, 例如指定php文件, 這樣避免監控一些靜態的html,css文件, 減少占用
- 遞歸搜索子目錄的內容
- 高頻檢測, 期望響應時間100ms, 基本上php馬剛傳上來就立刻被刪除
- notifier.py支持跨平臺, 有python環境即可, 會通過彈窗告警, 告知選手或隊員立即處理問題
使用
release里面直接下載對應的平臺的版本即可
或者go build awd-filechecker.go即可
Filechecker參數
-m 監控目錄路徑(必須) -m /var/www/html
-b workspace目錄路徑(必須) 用于存放backup_和isolate_子目錄-b /home/ctf/edr_workspace
-e 監控的文件擴展名,逗號分隔 -e .php,.jsp,.html
-a API端點地址,用于發送告警 -a 172.16.66.66:8080
-h 顯示幫助信息
notifier.py參數
-p, --port HTTP服務監聽端口8080
-H, --host 監聽地址0.0.0.0
--no-sound 禁用告警音效
--test 發送測試通知
典型場景
監控php webshell:
./awd-filechecker -m /var/www/html -b /home/ctf/edr_workspace -e .php -a [選手靶機]:8080
監控jsp, 不使用notifier
./awd-filechecker -m /var/www/html -b /home/ctf/edr_workspace -e .jsp,.asp
notifier api接口
GET /api/agent/edr-alert?type=warning&message=檢測到可疑文件shell.php
工具下載
https://github.com/christarcher/0RAYS-AWD-Filechecker