Aodzip@海特实验室
项目地址
关注本微信公众号,回复“AoiAWD”即可获得该项目的访问地址。
“AoiAWD”——轻量级EDR系统
AoiAWD 是一个由Aodzip(安恒信息 海特实验室研究员、HAC战队成员)维护的一个针对于CTF AWD模式的开源项目。专为比赛设计,便携性好,低权限运行的EDR系统。任何人都可以在 GNU AGPL-3.0 许可下使用该项目和分享该项目的源码。
应用场景
在常见的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-赛棍福音!针对CTF AWD的原创轻量级防御系统! AoiAWD-赛棍福音!针对CTF AWD的原创轻量级防御系统!]()
仪表盘
web日志列表
web日志详情
PWN日志列表
PWN日志详情
文件系统日志列表
系统进程列表
告警日志列表
双击告警日志后高亮关联
编译、安装与使用方法
MongoDB Server
用于记录庞大的流量文件的数据库,是整个系统的核心存储。
一般情况下建议和AoiAWD Core一起部署在选手自己可控的主机上。
无需额外的配置,Ubuntu环境下开箱即用,apt一下即可搞定。
Frontend
Vue编写的Web前端,用来浏览日志,产生报警动画等可视化展示。
一般情况下编译后将与AoiAWD Core集成为一个可执行文件。
无需单独的运行启动。
AoiAWD Core
是整个系统运行的核心,负责探针数据收集入库、插件生命周期管理、Web前端托管服务。
运行compile.php即可打包为一个单独的二进制文件,方便携带
一般情况下可直接无参数运行,如果需要特别的配置,可以增加-h参数查看帮助信息
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
运行后会显示本次启动后的临时密钥,是访问Web前端的必要信息
[2020-09-24 15:21:21] MainServer.notice: AccessToken: 0de8d57b3e91dc66 [] [] #<-- Web访问密钥
...
[2020-09-24 15:21:21] AmpHttpServerServer.info: Listening on http://0.0.0.0:1337/ [] [] #<-- Web前端地址
[2020-09-24 15:21:21] aoicommonsocketAsyncTCPServer.info: Listening on 0.0.0.0:8023 [] [] #<-- 探针上线地址Guardian
一个二进制PWN的影子外壳,其原理是包裹在PWN题目外侧,在每次被启动的时候透明记录STDIN与STDOUT的流量,并快照PWN程序的内存结构(/proc/????/mem)上传回AoiAWD Core。
在项目目录运行compile.php将会编译影子壳程序和捆绑程序: guardian.phar,一般是在选手电脑上进行捆绑后将生成文件上传到靶机。
直接运行捆绑程序会输出帮助文本,其中比较重要的一些参数是:
-i: 输入需要套壳的PWN题目程序路径
-s: 输入可以从靶机访问到探针上线地址的URL,比如说192.168.???.???:8023
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 infoTapeWorm
一个PHP Web的影子外壳,其原理是自动注入到所有PHP文件的头部,支持输入输出流量的抓取与上报,同时具有处理输出数据的能力,实现输出内容篡改。
程序内部的代码已经实现了单实例启动,即便是层层include了多次,也只会运行最先触发的影子外壳。所以不用担心复杂的题目影响性能。
自动注入程序会智能识别面向对象的文件(包含 namespace 关键字),和直接面向过程的PHP文件,一般情况下不会造成语法错误。
自动注入程序会识别已经被注入的脚本并加以跳过,所以多次反复无脑对web根目录运行注入程序并不会造成什么太大的问题。
运行compile.php就可以生成自动注入程序,一般情况下可以上传到靶机上直接对web根目录进行注入,或者在选手电脑上注入好之后再上传到靶机上。
一时注入一时爽,忘记备份宕机慌
直接运行注入程序会显示帮助文本,其中比较重要的一些参数是:
-d: 需要注入外壳的web根目录,会从此目录递归感染所有的PHP文件。
-s: 输入可以从靶机访问到探针上线地址的URL,比如说192.168.???.???:8023。
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 infoRoundWorm
一个监控文件系统和进程的系统行为监视器,其原理是扫描/proc文件夹获取当前正在运行的所有进程的信息,以及利用Linux系统的inotify功能对指定文件夹的敏感文件操作进行全面的记录。
直接运行make就可以编译生成
一般来讲该程序在靶机上运行,选手电脑上没必要执行这玩意。
添加-h参数即可看到帮助文档,其中比较重要的一些参数是:
-d: 后台运行,你当然不想关掉ssh的时候就把探针也给关了。
-s: 输入可以从靶机访问到探针上线地址的IP,比如说192.168.???.???。
-w: 需要监控文件变化的路径,如果有多个路径使用';'分割,比如: -w "/tmp;/var/www/html"
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项目地址
关注本微信公众号,回复“AoiAWD”即可获得该项目的访问地址。
HatLab知识星球
关于我们
人才招聘
一、物联网安全研究员(硬件安全方向)
工作地点:
1.杭州;
岗位职责:
1.嵌入式方向的安全漏洞挖掘;
2.嵌入式系统硬件软件设计与研发。
任职要求:
1.熟练使用C语言,可规范使用指针,结构体,联合体;
2.熟练使用Linux操作系统,理解Makefile原理并可编写Makefile文件;
3.了解数字电路原理,具有较扎实的计算机系统结构知识,理解操作系统原理;
4.了解WEB或PWN方向的漏洞挖掘过程,会使用相关工具如Zap、IDA等,会自行编写漏洞利用工具。
加分项:
1.具有网络安全公司实习经验;
2.具有网络安全赛事经验;
3.有设计电路板原理图和四层PCB布局经验;
4.熟练焊接0402,0201,QFN,BGA等元器件封装;
5.有AVR,ARM,MIPS,Xtensa等内核的MCU/SoC开发经验;
6.向知名平台提交过物联网方向的漏洞报告。
二、物联网安全研究员(固件安全方向)
工作地点:
1.杭州;
岗位职责:
1. 物联网通用协议、组件、操作系统漏洞挖掘与漏洞复现;
2. 物联网设备漏洞挖掘与漏洞复现;
3. 参与创新物联网安全研究项目;
任职要求:
1.具有二进制漏洞挖掘经验,熟悉ARM、MIPS等其他架构的漏洞利用技巧;
2.熟练掌握gdb、IDA等工具的使用;
3.具有一定的硬件基础和动手能力,掌握常见的嵌入式设备固件提取及解包的方法;
4.至少掌握一门编程语言,如C/C++/Perl/Python/PHP/Go/Java等。
加分项:
1.具有知名物联网设备/网络设备漏洞挖掘成果证明;
2.参加CTF比赛并获奖;
3.参与GeekPWN、HackPWN等智能设备破解大赛并取得成绩。
三、物联网安全研究员(无线电安全方向)
工作地点:
1.杭州;
岗位职责:
1. 无线通信协议的通用漏洞挖掘;
2. 无线通信应用系统的漏洞挖掘,如智能设备等。
任职要求:
1. 掌握无线通信基本原理及数字信号处理理论,熟悉各种调制解调算法,信道编码算法等;
2. 熟悉C/C++、MatLab、Python等编程语言;
3. 熟悉至少一种常见无线通信协议及其安全问题,如Wi-Fi、Bluetooth、Zigbee、4/5G等;
4. 熟练掌握SDR外设和GNURadio等工具的使用。
加分项:
1. 具有信息安全公司实习经验;
2. 有嵌入式固件逆向分析经验;
3. 参加CTF比赛并获奖;
4. 有智能设备的破解经验;
5. 通信工程、信息安全专业。
感兴趣的小伙伴请联系姜女士,或将简历及应聘职位投送至下方邮箱。(请注明来源“研究院公众号”)
联系人:姜女士
邮箱:[email protected]
手机;15167179002,微信同号
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论