护网蓝队自动化工具开源-BlueService
引言
在2022年有幸以蓝队身份参加了国护2022的行动,也在护网过程中有幸与永安寺线下面基。由于这是本喵第一次参加蓝队,因此抱着学习的态度,向负责同一个项目的各路大佬学习指教,并在护网期间写出了这样一套开源蓝队自动化工具(其实就是自动封IP,欸嘿)
初入蓝队
因为是第一次来参加蓝队护网,而且一直听网上各个大佬说蓝队很辛苦,并且可能自己吃着薯片唱着歌,突然甲方就说咱们穿了,让咱们回家了的情况都有发生。
当驻场完一天后,我逐渐发现,蓝队,他喵的就是:
1 | while not hvv.finsihed(): |
就比如我们驻场的厂商,我们需要一天12个小时,从早上9点到晚上9点时不时的看着4台不同厂商的安全设备,一旦发现有报警,立刻封IP,尝试溯源,写报告,然后循环14天。然后本喵闲着也是闲着,想着先写个脚本(其实就是个爬虫),自动爬取安全设备上的事件,然后再自动对接封禁IP.不就好了?说干就干,经过两个版本的迭代,终于产生了现在的开源版本。
PS:因为我的甲方只有两个公司的安全设备,所以暂时只有这几个设备的驱动
效果图
特点
整合抽象各类安全设备,便于二次开发
支持SYSLOG协议
快速可调的响应处理流程(说白了封IP快)
24小时无人值守
详细的消息推送机制
高可定制化事件处理
等等(show me code)
主程序运行图
控制台
微信消息自动推送
脚本结构介绍
脚本整体结构由主程序和插件构成,其中configs目录下存储各类安全设备的配置文件,configs/config.py中存储账号密码。devices目录下存储各类设备驱动,fillter目录下存储自定义的规则脚本,pusher目录下存储消息推送服务接口,utils目录下是各类组件,一般不用修改。主服务脚本为BleuService.py脚本,其中包含对各个其他脚本的加载,调用等,terminal.py是对主服务脚本的封装,一般只需运行terminial.py即可。
配置文件
config.py中填写各类安全设备的登陆密码,用于自动加载设备
设备驱动
device中包含各类安全设备的驱动类,其中需要开发者手动封装并实现必要接口
日志获取设备
日志获取设备只需要包含以下三个接口即可
应急响应设备
应急响应设备着重需要半酣bandIp这一接口,当出现安全事件时,主服务将会自动调用此接口进行相应操作
过滤器
过滤器中需要开发者手动针对其他情况实现对主服务下发的事件进行分析过滤的代码,本来想用表达式就实现,但是想到不同场景下会存在不同的要求,用代码来实现过滤操作反而会更加方便,快捷,并且可读性、可操作性更强。
在此处开发者需要在self._filter_list中注册过滤代码,主服务将会依次调用,并根据返回结构中的option(是否封禁),push(是否推送)执行想用的操作。
推送器
现在系统使用的是本人的公众号,大家可以免费试用,公众号名称嗷呜科技服务
推送器需要开发者实现上述接口,其中pushData中的msg结构如下所示,开发者可直接调用utils.tools.newAlertData()生成如下结构
1 | { |
主程序
当写好设备驱动后,即可在terminial.py中使用对应接口将设备注册进主服务中,上图中,22至42行是对各类安全设备驱动的初始化操作,45至59行是将安全设备、应急响应设备、消息推送设备、过滤器等注册进主服务中。
开源地址
https://gitee.com/nekokami0527/BlueService
后记
说实话,红队真滴不讲武德,好几次攻击、扫描都是在深夜12点之后进行,年轻人要耗子尾汁,好好反思,不要搞偷袭。我发现有人攻击之后,嘿嘿嘿,直接config delay 5,把检测时间改成了5s一次,行,你扫描,扫一次封一个IP,看是我队列长,还是你IP多。我们这个厂商有两个系统都需要hvv,我负责的是另一个系统,有一天突然听老板说我们负责的公司的目标穿了,还下了我一跳,仔细一调查,穿的那个不是我负责的,哦~那没事了。
偷偷记录
有一天晚上还以为我们负责的系统穿了,晚上11点连夜回目标熬夜看着,幸好最后是虚惊一场。说实话,夜晚的地铁真美。
护网蓝队自动化工具开源-BlueService
https://nekokami0527.com/2022/08/25/护网蓝队自动化工具开源-BlueService/