当前位置: 首页 > news >正文

Go编写的轻量文件监控器. 可以监控终端上指定文件夹内的变化, 阻止删除,修改,新增操作. 可以用于AWD比赛或者终端应急响应

工具介绍

0RAYS-AWD-Filechecker一个用Golang编写的, 轻量级的文件监控器, 会监控指定文件夹内文件删除, 修改, 新增操作, 然后立刻告警并复原.

一开始是为AWD比赛写的, 主要是为了防止靶机的web目录被上马. 但也可以用到蓝队等场景上.

由于使用的Linux的系统调用, 仅支持Linux环境使用.

工作流程

  1. 程序启动后会首先扫描指定目录下的文件和子目录, 然后备份指定的workspace文件夹中
  2. 递归找出所有子目录, 然后为每一个子目录分配一个goroutine
  3. 每个goroutine每200ms列目录, 然后对文件lstat, 检查时间和字节数是否有变化
  4. 观察是否有删除, 新增, 修改等. 如果有立刻恢复备份文件夹中的文件
  5. 如果设置有API, 会上报告警可疑的变化, 没有则会在终端中打印
  6. 新增的可疑文件会被隔离, 供观察
┌─────────────────┐    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
http://www.dtcms.com/a/349383.html

相关文章:

  • TensorFlow深度学习实战(34)——TensorFlow Probability
  • GO学习记录八——多文件封装功能+redis使用
  • Node.js(2)—— Buffer
  • 安卓Android低功耗蓝牙BLE连接异常报错133
  • Docker Compose 部署 Elasticsearch 8.12.2 集成 IK 中文分词器完整指南
  • Go初级三
  • 上海AI实验室突破扩散模型!GetMesh融合点云与三平面,重塑3D内容创作
  • 少儿舞蹈小程序需求规格说明书
  • AutoCAD Electrical缺少驱动程序“AceRedist“解决方法
  • 【STM32】G030单片机的独立看门狗
  • ELKB日志分析平台 部署
  • 完美世界招数据仓库工程师咯
  • ArcGIS JSAPI 高级教程 - 创建渐变色材质的自定义几何体
  • three.js+WebGL踩坑经验合集(8.3):合理设置camera.near和camera.far缓解实际场景中的z-fighting叠面问题
  • 大数据平台ETL任务导入分库分表数据
  • Jenkins+docker 微服务实现自动化部署安装和部署过程
  • TDengine IDMP 应用场景:电动汽车
  • AI测试工具midsence和browse_use的使用场景和差异
  • react+taro打包到不同小程序
  • Flutter旧版本升级-> Android 配置、iOS配置
  • 机器视觉的3C玻璃盖板丝印应用
  • KeepAlived+Haproxy实现负载均衡(SLB)
  • window显示驱动开发—混合系统 DDI 和 dList DLL 支持
  • Shell 循环编程:for 与 select 轻松入门
  • HTTP 与 HTTPS 深度解析:从原理到实际应用
  • Kubernetes (K8s)入门指南:Docker之后,为什么需要容器编排?
  • 安全合规:AC(上网行为安全)--下
  • LeetCode热题100--102. 二叉树的层序遍历--中等
  • 什么是JSON-RPC 2.0,在项目中应该怎么使用
  • 09-数据存储与服务开发