AoiAWD-专为比赛设计,便携性好,低权限运行的EDR系统。
AoiAWD 是一个由Aodzip(安恒信息 海特实验室研究员、HAC战队成员)维护的一个针对于CTF AWD模式的开源项目。专为比赛设计,便携性好,低权限运行的EDR系统。任何人都可以在 GNU AGPL-3.0 许可下使用该项目和分享该项目的源码。
在常见的AWD比赛中,选手往往拥有一台(或若干台)开放了SSH服务和题目服务的“靶机”作为自己防守的阵地。
在实际比赛中,主办方往往会限制选手的SSH权限到一般用户/仅可管理题目的权限。并且针对一些常见的通用防火墙脚本(通防脚本)进行轮询式check。
AoiAWD是针对以上场景的限制和痛点设计的,组件间基于socket通信以便灵活部署,具有图形可视化界面。所有行为探针均支持在最低系统权限下运行,且默认不会干扰题目业务逻辑的正常运行,可以绕过绝大部分check脚本的行为检查。支持如下维度的行为捕获能力:
本系统还内置了生命周期钩子,可以针对某一次行为的产生编写特定的插件去实现流量层面的临时热补丁、增加大屏告警、替换输出字符等操作。系统默认内置了如下插件可供参考:
AoiAWD 分为六个组件,组件间互相配合实现系统的完整功能
参考构建流程简介进行操作: BUILD.md
用于记录庞大的流量文件的数据库,是整个系统的核心存储。
Vue编写的Web前端,用来浏览日志,产生报警动画等可视化展示。
是整个系统运行的核心,负责探针数据收集入库、插件生命周期管理、Web前端托管服务。
AoiAWD: Data Visualization Tool & Main Server
Usage: ./aoiawd.phar [OPTIONS]
-w [URI] HTTP server bind URI. Default: tcp://0.0.0.0:1337
-l [URI] Log recoard server bind URI. Default: tcp://0.0.0.0:8023
-m [URI] MongoDB server URI. Default: mongodb://127.0.0.1:27017
-t [STRING] Access token. Default: [RANDOM]
-h This help info
[2020-09-24 15:21:21] MainServer.notice: AccessToken: 0de8d57b3e91dc66 [] [] #<-- Web访问密钥
...
[2020-09-24 15:21:21] Amp\Http\Server\Server.info: Listening on http://0.0.0.0:1337/ [] [] #<-- Web前端地址
[2020-09-24 15:21:21] aoicommon\socket\AsyncTCPServer.info: Listening on 0.0.0.0:8023 [] [] #<-- 探针上线地址
一个二进制PWN的影子外壳,其原理是包裹在PWN题目外侧,在每次被启动的时候透明记录STDIN与STDOUT的流量,并快照PWN程序的内存结构(/proc/????/mem)上传回AoiAWD Core。
Guardian: AoiAWD ELF PWNMonitor Tool
Usage: ./guardian.phar [PATH]
-i [PATH] Original ELF.
-o [PATH] Path of patched ELF. Default: {$OriginalELF}.guardianed
-s [URI] Log recoard server URI. Default: 127.0.0.1:8023
-h This help info
一个PHP Web的影子外壳,其原理是自动注入到所有PHP文件的头部,支持输入输出流量的抓取与上报,同时具有处理输出数据的能力,实现输出内容篡改。
TapeWorm: AoiAWD PHP WebMonitor Tool
Usage: ./tapeworm.phar [PATH]
-d [PATH] WebMonitor inject dir.
-s [URI] Log recoard server URI. Default: 127.0.0.1:8023
-f [PATH] Inject file path. Default: {$dir}
-h This help info
一个监控文件系统和进程的系统行为监视器,其原理是扫描/proc文件夹获取当前正在运行的所有进程的信息,以及利用Linux系统的inotify功能对指定文件夹的敏感文件操作进行全面的记录。
RoundWorm: AoiAWD Filesystem & Process Monitor Tool
Usage: ./roundworm [OPTIONS]
-d Running in daemon mode.
-s [HOST] AoiAWD Probe IP. Default: 127.0.0.1
-p [PORT] AoiAWD Probe PORT. Default: 8023
-w [PATH] Inotify watch dir, ';' as divider. Default: /tmp
-i [MSECOND] Process watch interval. Default: 100
-h This help info