攻防扫描系统的AI赋能
之前
大伙可能还记得很久很久以前我照着ARL的逻辑写过一个资产扫描器,最初只是为了单个2核2G的服务器能完成攻防项目而设计的,2核2G的服务器开不了多少并发,于是就开始想邪门歪道提高扫描速度;后来随着攻防规模越来越大,我也为这个扫描器开发了分布式扫描功能。现在这玩意的效果就是,反正也别管准确率了,上万个主域名的攻防项目能用三台机器一星期给你扫完也是算我牛逼(小字:仅限测绘,未进行漏扫,缓存命中率处于实验室环境典型值70%以上)
有啥用
现在AI浪潮这么凶猛,各家也渐渐推出了自己的“智能人工渗透”产品,原先攻防项目的最大收益点已经悄悄转移,AI虽然目前还有点傻了吧唧,但是它不用睡觉,精力是无限的,AI可以对所有的目标一视同仁的进行渗透,相比以往的人力攻防,在大体量场景下,AI攻防能发现更多人类盲点
可是
这个扫描器作为我自己经常用的产品,必须要权衡成本,首先作为提供给肯花“小钱”的单干选手的扫描器,出口IP不是无限的、AI的token不是无限的、背锅能力也不是无限的。让AI一个站一个站弄过去成本太高,有的站还有waf容易被封掉,万一来个drop table没人受得了
而且让AI做风险太高的事情风险太高,作为人类精力的无限扩展,人类是不可能一直盯着类人干活的,除非人类一直盯着类人干活;作为大脑肌无力患者,我不能背锅,我也不能一直盯着AI干活,于是只能让AI干点不容易出事的、人来干也很累的活
所以目前我的想法是,从目标设定下手,辅以口头约束,都是提示词要干的事
搞成啥了
目前我打攻防有个痛点,就是爬虫出来的敏感信息太多太多了,有时候一个目标单位能弄个几万甚至十几万的路径/敏感信息,如何快速找到致命脆弱点是一个必须攻克的难题
所以考虑到刚才提到的限制,我让AI帮我做快速筛选脆弱点的工作——从几百上千个网站或服务中挑选几个最容易打的,然后我去打打看
可是AI要怎么挑?虽然这是AI自己要考虑解决的问题,但是作为AI的甲方,必须提供AI所需的资料,必须给AI定好目标以及交付标准
所以我告诉AI去找我最关心的几个漏洞类型,让AI用只读的方式“旁敲侧击”去评估哪几个目标系统最可能存在漏洞,给AI提供数据库的只读工具,限定读取范围是当前项目,让AI自己去看扫描结果,AI可以写脚本、运行脚本、发送http请求
AI除了无限精力,还有一个优势是看图说话,就是AI可以通过扫描器出来的结果,基于无敌经验主义判断这个地方通常有没有风险,再辅以实际的轻量化验证,最后产出的结果也非常诱人(但是不一定准)

我的扫描器作为分布式架构,AI调用肯定是运行在平台端的,但是HTTP请求、脚本等AI功能不可能在平台端运行,这样会破坏设计约束,于是AI运行架构如图
