工作原理
漏洞扫描器向目标计算机发送数据包,然后根据对方反馈的信息来判断对方的操作系统类型、开发端口、提供的服务等敏感信息。
端口扫描原理:
端口扫描的原理其实非常简单,简单的利用操作系统提供的connect()系统调用(有各种协议),与目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()能够成功,否则,这个端口是不能用的,就是没有提供服务。
漏洞扫描原理
检测扫描目标主机中可能大量已知的漏洞,如果发现潜在漏洞可能,就报告扫描者。这种扫描器的威胁更大,因为黑客可以直接利用扫描结果进行攻击。
理解
目标为ip
- 操作系统识别
- 端口扫描
- 开放的服务
- 服务版本
- 服务漏洞精准poc
- web站点
- web指纹识别
- 确认web指纹
- poc打击+漏洞扫描
- 非开源项目
- 漏洞扫描
- 漏洞扫描
- 目录扫描
- 目录树
- 信息搜集
- js等静态文件中获取
- 组件版本识别
- 登录页面查找
- 功能点测试
- sql注入
- xss
- 逻辑漏洞等
区别
也可以优缺点结合,采用AWVS接口去爬虫,Xray去漏扫
被动+主动扫描器
xray
golang开发
通过代理模式进行被动扫描
代理模式下的基本架构为,扫描器作为中间人,首先原样转发流量,并返回服务器响应给浏览器等客户端,通讯两端都认为自己直接与对方对话,同时记录该流量,然后修改参数并重新发送请求进行扫描。这种原理和Burpsuite的自带的漏扫原理是一样的。
- webscan --listen监听本地端口
爬虫模式主动扫描
- webscan --basic-crawler
因为被动扫描的特性(设置代理即可)
- 可以xray+burp
- xray+awvs
- xray+appscan
优点
- 支持主动、被动多种扫描方式
- 自备盲打平台
- 可以灵活定义 POC
- 支持Windows /macOS /Linux 多种操作系统
缺点
- 容易造成差错
- 如修改密码重发,添加文章重发等
- 不进行指纹识别直接上特定组件poc
poc编写
name: poc-yaml-example-com
rules:
- method: GET
path: "/update"
expression: "true"
search: |
<input type="hidden" name="csrftoken" value="(.+?)"
- method: POST
path: "/update"
body: |
id=';echo(md5(123));//&csrftoken={{1}}
expression: |
status == 200 && body.bcontains(b'202cb962ac59075b964b07152d234b70')
目标漏洞是一个简单的代码执行,但因为是POST请求,所以需要先获取当前用户的CSRF Token。所以,我们的POC分为两个Rule,第一个Rule发送GET请求,并使用search指定的正则提取返回包中的csrftoken表单值,此时expression直接执行表达式true
,表示第一条规则一定执行成功;第二个Rule发送POST请求,此时,我们可以在path、body、headers中使用前一个规则search的结果,如{{0}}
、{{1}}
等。
所以其实就是根据yaml文件构造请求,然后通过返回包数据判断
也不能做到更复杂的利用POC
也可以用在线网站编写
https://phith0n.github.io/xray-poc-generation/
Goby
go开发,跨平台
原理
Goby是一款基于网络空间测绘技术的新一代网络安全工具,它通过给目标网络建立完整的资产知识库,进行网络安全事件应急与漏洞应急。
Goby可提供最全面的资产识别,目前预置了超过10万种规则识别引擎,能够针对硬件设备和软件业务系统进行自动化识别和分类,全面的分析出网络中存在的业务系统。Goby可提供最快速对目标影响最小的扫描体验,通过非常轻量级地发包能够快速的分析出端口对应的协议信息。Goby也为安全带来了高效,Goby预置了最具攻击效果的漏洞引擎,覆盖Weblogic,Tomcat等最严重漏洞。并且每日更新会被用于真实攻击的漏洞。
优点
- 速度快
- 系统扫描+应用扫描
- 截图验证非常直观
- 自定义poc,自定义字典
- 支持子域扫描
POC编写
依赖查询规则
app=“Ruijie-NBR-Router”
图形化填写,然后生成json文件
主动扫描
appscan
基于站点的扫描
工作原理
1)通过“探索”功能,利用HTTP Request和Response的内容,爬行出指定网站的整个Web应用结构
2)AppScan本身有一个内置的漏洞扫描的规则库,可随版本进行更新。从探索出的url中,修改参数or目录名等方式,构造不同的url对照组向服务器发送请求or攻击
3)根据HTTP Response返回的内容,和正常请求所返回的响应作对比,是否产生差异性,而这种差异性又是否符合扫描规则库的设定规则,以此来判断是否存在不同类型的安全漏洞
4)若APPScan可判断存在安全漏洞,则对这些漏洞的威胁风险给出说明,进行严重程度提示,并给出修复的建议和方法,以及漏洞发现的位置提示
优点
- 详细,监测问题比较全,树结构清晰明了
- 可自定义扫描策略
- 准确率高
- 验证方便,内置请求数据包对比清晰可见
- xss详细,可测出单一浏览器的xss
- 可进行登录扫描
缺点
- 速度慢
- 占用内存大,持续时间过长容易出现卡顿
- 仅windows
sqlmap
后面会跟代码分析单独写一篇
nessus
Nessus采用客户/服务器体系结构,客户端提供了运行在window 下的图形界面,接受用户的命令与服务器通信,传送用户的扫描请求给服务器端,由服务器启动扫描并将扫描结果呈现给用户;扫描代码与漏洞数据相互独立,Nessus 针对每一个漏洞有一个对应的插件,漏洞插件是用NASL(NESSUS Attack Scripting Language)编写的一小段模拟攻击漏洞的代码,这种利用漏洞插件的扫描技术极大的方便了漏洞数据的维护、更新
Nessus 具有扫描任意端口任意服务的能力
以用户指定的格式(ASCII 文本、html 等)产生详细的输出报告,包括目标的脆弱点、怎样修补漏洞以防止黑客入侵及危险级别。
Nessus的可延伸性使得扫描更具有发展空间,因为它随意增加原本没有的侦测模式,也就是可以自定义插件
优点
- 可拓展
- 主要用于系统层扫描
- 扫描速度快,准确率高,漏洞规则库全面,报表功能强大
缺点
- 但是应用层不是很好
Awvs
工作原理
- 扫描整个网络,通过跟踪站点上的所有链接和robots.txt来实现扫描,扫描后AWVS就会映射出站点的结构并显示每个文件的细节信息。
- 在上述的发现阶段或者扫描过程之后,AWVS就会自动地对所发现的每一个页面发动一系列的漏洞攻击,这实质上是模拟一个黑客的攻击过程(用自定义的脚本去探测是否有漏洞) 。AWVS分析每一个页面中需要输入数据的地方,进而尝试所有的输入组合。这是一个自动扫描阶段 。
- 在它发现漏洞之后,AWVS就会在“Alerts Node(警告节点)”中报告这些漏洞,每一个警告都包含着漏洞信息和如何修补漏洞的建议。
- 在一次扫描完成之后,它会将结果保存为文件以备日后分析以及与以前的扫描相比较,使用报告工具,就可以创建一个专业的报告来总结这次扫描
优点
- 速度快准确率较高,漏洞规则库较为全面。
- 报表功能完整且美观。
- 漏洞验证可查看请求响应代码
缺点
- 无中文界面。
扫描器常见问题
WEB漏洞扫描器的好坏取决于爬行页面数、漏洞库数量、扫描效率、误报率等等
误报
不可避免,但是要尽量减少
减少手段
- 推广,进行实战测试,去除或者修改误报率高的POC
漏洞检测
插件分类
- 参考awvs
流量去重
重复请求包的定义是域名及协议和url路径相同,同时参数的key是完全一致。
像这种为重复
这种则需要再次扫描
- https://www.beysec.com/test.php?id=2&name=bey0nd
- https://www.beysec.com/test.php?id=6&name=zhangsan&data=hello
识别同一错误页面
访问肯定不存在页面,得到返回内容然后对比相似度>90
大量请求造成拒绝服务或扫描行为被入侵检测设备发现
- 伪造请求假装正常用户交互
- 根据响应,提示是否放缓请求速度
- 代理
- 将所有执行扫描任务的 worker 的测试流量全转发到 proxy 服务器上,由 proxy 服务器统一调度发送测试请求频率,直接使用 proxy 方案优点是可以兼容之前没做限速功能的扫描器,缺点是所有基于 time based 的检测均无效(当然也可以让 proxy 返回真正的响应时间来进行判断,不过仍需要修改检测模块),也不允许在检测模块中加入超时设置。
- 双重队列
- 1.worker1 从队列中取到名为 target1 的任务
2.worker1 从 target1 队列中取出和 target1 相关的任务
3.默认单并发执行和 target1 相关任务,根据设置的 QPS 限制,主动 sleep 或者增加并发
漏洞特征库
- 及时跟进国内外最新漏洞