漏洞扫描器学习

工作原理

漏洞扫描器向目标计算机发送数据包,然后根据对方反馈的信息来判断对方的操作系统类型、开发端口、提供的服务等敏感信息。

端口扫描原理:

端口扫描的原理其实非常简单,简单的利用操作系统提供的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: |
      

目标漏洞是一个简单的代码执行,但因为是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

这种则需要再次扫描

  • 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 或者增加并发

漏洞特征库

  • 及时跟进国内外最新漏洞

你可能感兴趣的:(安全,学习,web安全,安全)