AoiAWD-轻量级EDR系统
AoiAWD 是一个由Aodzip(安恒信息 海特实验室研究员、HAC战队成员)维护的一个针对于CTF AWD模式的开源项目。专为比赛设计,便携性好,低权限运行的EDR系统。任何人都可以在 GNU AGPL-3.0 许可下使用该项目和分享该项目的源码。 AoiAWD地址:https://github.com/DasSecurity-HatLab/AoiAWD
应用场景
在常见的AWD比赛中,选手往往拥有一台(或若干台)开放了SSH服务和题目服务的“靶机”作为自己防守的阵地。
在实际比赛中,主办方往往会限制选手的SSH权限到一般用户/仅可管理题目的权限。并且针对一些常见的通用防火墙脚本(通防脚本)进行轮询式check。
AoiAWD是针对以上场景的限制和痛点设计的,组件间基于socket通信以便灵活部署,具有图形可视化界面。所有行为探针均支持在最低系统权限下运行,且默认不会干扰题目业务逻辑的正常运行,可以绕过绝大部分check脚本的行为检查。支持如下维度的行为捕获能力:
Web输入输出数据捕获、输出流量篡改(没错,你可以动态替换掉输出的flag为任意字符 串)
PWN类题目输入输出交互流量包捕获、当次运行时内存结构捕获、输出流量篡改 服务器进程UID、PID、父进程、启动参数、运行时间捕获服务器文件系统新建、删除、修改、权限变化行为捕获。
本系统还内置了生命周期钩子,可以针对某一次行为的产生编写特定的插件去实现流量层面的临时热补丁、增加大屏告警、替换输出字符等操作。系统默认内置了如下插件可供参考:
FlagBuster:当检测到输出流量中包含了符合正则的flag字符串,产生大屏告警、标记触发规则的数据包、并将flag精准替换为看起来也像flag的随机数。
KingWatcher:KoH类比赛中,当有其他队伍替换掉了赛点文件时,产生大屏告警。
ZombieKiller:当文件系统上出现了不死马行为,标记可疑文件并产生大屏告警。
系统简介
AoiAWD 分为六个组件,组件间互相配合实现系统的完整功能
MongoDB Server: 日志数据存储数据库
AoiAWD Core:中心数据处理与插件后端服务器
Frontend: 数据可视化平台前端
Guardian: PWN行为探针
TapeWorm: Web行为探针
RoundWorm: 系统进程与文件系统行为探针
我们在正式进入安装Aoiawd之前要设置虚拟机的静态ip 先设置为桥接模式
编辑虚拟网络编辑器。 利用`ipconfig /all`找到网络的`连接描述`、`子网掩码`和`默认网关
更改桥接模式的描述
打开虚拟机用`ifconfig`获得虚拟机的网卡名称
打开Ubuntu网络接口配置
sudo vim /etc/network/interfaces
输入以下内容
输入:wq退出 重启网卡
在进行操作之前,习惯性先进行更新
然后下载`git`和利用`git`来下载`AoiAWD`
回到初始页面,安装所需要的mongdb依赖
在这里,提示我们要对`php.ini`进行更改 在`etc/php/7.2/cli`文件夹中找到`php.ini`进行修改
sudo vim /etc/php/7.2/cli/php.ini
然后把这两个开关改为
进行保存
下一步安装inotifywait
构建Fronted项目
(如果遇到npm WARN 可以直接用npm install -f和npm run build -f)
直接接入淘宝的源,这样npm的时候比较快,但是也需要比较长的时间。也可以选择另一种方式,直接更改为国内npm的源
清除缓存 重新进行`npm install` 安装成功会是这个画面
构建成功后将在dist/目录下得到 index.html static/
构建AoiAWDcore
构建成功得到aoiawd.phar
构建TapeWorm
构建成功后得到tapeworm.phar
构建Guardian
构建成功后得到guardian.phar
构建RoundWorm
构建成功会得到roundworm
启动AoiAWD
可以得到一串token值作为本次登陆的临时密钥,默认访问端口为1337,监听端口为5023。这样就可以在本机中进行访问了。
恢复动态IP
把刚刚修改的ens33网卡修改为:
重启网卡之后,再将桥接模式改为NET模式即可恢复。
使用方法
搭建完后把刚刚那些文件夹中的生成的文件例如xxx.phar等发送到提供给我们的靶机上去,然后记得赋予权限,ip是云服务器ip,端口就是默认8023
参考文章:https://www.wlhhlc.top/posts/16692/