0X01 前言

怎么衡量一个扫描器的好坏,扫描覆盖率高、扫描快、扫描过程安全

而最直接的效果就是扫描覆盖率高(扫的全)

怎么扫描全面,1 流量全面 2 规则漏报低

流量方面上篇已经讲过,这篇主要讲扫描规则。

扫描规则漏报率低,从整体考虑,一方面是规则全,广度上有保证;一方面是检测手段有深度,可以跨能力联动检测,有能力解决主要和旁枝末节处的漏报场景

0X02 规则来源

扫描器的规则主要有两种类型

针对接口的web漏洞,通常是通用型漏洞,OWASP TOP 10,sql注入、xss、ssrf、xxe等,以下简称web规则

针对主机(包括整个站点)的漏洞,通常是特定框架/应用/组件的0day/nday漏洞,以下简称主机规则。

2.1 主机规则

2.1.1 覆盖nday

针对nday,主要考虑的是企业内资产。

在资产方面获取到企业内所有IP与端口后,进行端口指纹识别(服务指纹识别/WEB应用指纹识别),根据每种指纹的数量排序,优先解决TOP100 / TOP 200 / TOP 500 的服务的历史高危漏洞。

2.1.2 覆盖新出的漏洞

针对0day漏洞,我们要解决的是新曝光的影响面较大的0day(很多情况下,新漏洞都是靠朋友圈/公众号,这部分是随人的,可能随着人员流动、发现的敏锐度会变化,所以尽量做成自动化运营流程)。

这里主要通过漏洞预警功能(或类似叫法)。

周期获取cve漏洞列表,匹配内网资产,再检测其他平台是否有对应cve编号。优先判断又有资产又有poc或exp的漏洞是否有影响,有较多资产代表影响范围较大,有poc或exp代表外部大概率已经有人在扫描与利用了。

然后再判断有资产的但没有poc与exp的是否影响范围较大,是否需要投入人力对漏洞进行研究(个人认为这是甲方的研究的一个需求,但是往往投入产出较低,所以需求较低)。

对应的功能是各家乙方的漏洞预警公告

阿里云漏洞库

腾讯云漏洞扫描服务情报中心

如果短期无法进行流程建设,定期由运营人员去看一下这些列表,判断资产匹配程度,有资产的漏洞编写成插件进行扫描,也可以有较好的收敛效果。

另外说一下资产指纹识别,理想情况下通过指纹识别打标,可以知道企业所有服务。但指纹识别有一个难点在于不知道有什么资产,就写不出对应的指纹规则。

所以需要有对应的打标流程,上文提过指纹打标,通过多特征组合成规则的形式,完成一个打标功能建设。

打标的需求源头,主要一方面就是漏洞预警,针对0day快速检测对应服务的资产数量,否则内网几十万的机器量级,每次都花费数小时全部扫描一遍来判断服务数量,影响漏洞响应时间(MTTR)。同时完善资产指纹,对资产较多的服务,历史漏洞也处理一遍。

2.2 web规则

2.2.2 覆盖场景全

web规则主要是针对通用型漏洞。

首先把场景保存下来,以靶场的形式,可以周期进行验证,验证每个漏洞类型是否每个场景都能检出。

靶场作为裁判员,安全产品作为运动员。

怎么能找出所有的web通用型漏洞呢?

a. 漏洞类型

寻找各种同类安全产品支持检测的扫描类型,从中排除掉危害较低的或者不存在于公司场景的

b. 每种类型的漏洞场景

常常有这样的情况,有检测sql注入、存储xss的插件,但是有些场景没有顾及到,比如header里的注入、post json中的注入等。

场景考虑齐全,需要针对每种漏洞抽取出维度,有一部分是公共维度,有一部分是私有维度,再进行维度相乘,得到最终各种场景。

举个例子:比如注入有哪些类型和场景?

维度可以是 不同来源/不同过滤与防御条件/不同执行方式/不同输出方式等,而这些是公共维度,类比到其他漏洞类型也可以按这样划分;私有维度比如数据库版本、数据库报错是否开启等(单独影响该漏洞场景)。

将每个维度的种种可能乘起来,得到各种场景,其中之一例如 来源于cookie+过滤了单引号+jdbc执行+无回显+mysql5.7。

2.2.2 覆盖新场景

主要是漏洞召回,来源如应急响应中心、等保测评、红蓝对抗等。

召回时排查全流程问题,流量有没有进入引擎、是否绑定了对应的检测规则、扫描过程的结果是什么、最后结果有没有入库等。如果是规则问题,需要新增靶场

召回会有一部分原因是固定的无法快速解决的,比如流量缺失(post/cookie等)、检测能力不足,召回一段时间后再重点推动解决导致漏报的大头问题。

2.3 准确率保障:靶场

另外说靶场,这里靶场是一个比较重要的安全产品

作为检测能力的裁判员,主要的作用是

a. 将各种漏洞场景持久化沉淀下来,随着召回不断进行,场景也会越来越多

随着人员流动,当初某个规则所用到的测试环境,可能会消失。交接人员对规则进行优化时,又需要重复测试环境搭建过程,成本较大。而把场景转换成web代码场景、或者docker file沉淀下来,极大减小了优化过程的成本。

b. 衡量各种漏洞检测安全产品的能力,给出准确率、漏报率等数据

规则的准确率,是提高且稳定漏洞产出的一个重要环节,在规则数达到几百上千的情况下,每个规则是否有效,往往是编写时候临时做了验证。

后期可能因为某些原因(比如造成了业务影响、导致引擎性能问题)下掉或者减少检出场景,而忘了加回来丢在记忆角落里。次数多了,整体场景检出率可能很低,只有内网渗透召回时才发现那么多漏报。所以准确率验证十分有必要

c. 测试安全防护代码的可用性、有效性

安全防护代码是否有效,能防护住所有认知里的场景,是否在压测情况下对业务性能没有过多影响,这是靶场的验证效果。

整体来说,辅助功能比较大,极大的保证了每个规则的准确率,但直接产出可能不是很明显,属于发展到较为成熟时的能力。

0X03 检测方式

3.1 跨能力联动检测

结合各种侧信道功能,增强扫描能力

比如最常见的dnslog,命令执行时在服务器上执行dns查询,dns请求经过dns服务器层层穿透到外网,再传回给扫描器;根据dns标识,判断具体的扫描任务触发了。dns的特点在于可穿透不通网但不禁dns的场景,但无法锁定触发IP(一般为dns服务器IP)。

再比如http log,curl/wget发起http请求,根据http请求中的标识判断漏洞,无法检测不出网的环境,但是可以锁定访问IP。部署在公网的http log,主要面对于存储型xss这类请求可能是在外网触发的。

针对命令执行类的,最好是用部署在内网的http log。dnslog偶尔会出现触发了、但是和流量关系不大的问题,比如路由器不定时触发、某业务收集镜像流量并做了异步流量处理的定时任务、某个测试收到请求后好奇请求了一次,会有溯源难的问题。http log刚好把内网IP锁定,且ssrf也得使用内网http log。

java agent 探针,获取执行层的函数与参数,像注入/任意文件读写(写crontab等命令执行来检测有危害)这种也可以检测出来。

或者是主机agent (HIDS) 监控主机特定文件内容来判断文件操作

或者是sql日志聚合汇总来判断sql注入

另外检测时避免造成业务影响,比如log4J的ldap链接不断开可能导致业务hang住。

3.2 单一漏洞检测能力深入

比如针对XSS,现有很多场景都是前后端分离。单纯的 requests.get获取页面内容再正则匹配已经有点古老的。

使用headless浏览器解析JS。

监听弹框事件,针对所有参数插入payload;或者作预处理,针对所有payload出现的位置构造特定的payload等。

3.3 丰富检测所需流量资源

3.3.1 登录态

大多数检测所需要的登录态,镜像流量方案,无法使用用户的cookie、header(业务自定义header可能带有用户登录凭证),所以得构造测试cookie。

在有所有业务统一接入passport的情况下(一个cookie或者token对所有业务生效),和passport申请接口更新cookie就好了。

有的业务接入passport会将passport认证映射到自己的用户体系,登录passport后根据获取到的token,在后端自己验证所属用户后、赋予业务自己的账号权限。这种情况最好能找到passport下游接入调用方,统一更新对应业务的登录凭证。

而业务比较复杂、存在多种认证场景的情况下,比较麻烦。不同的域名或者子域名,需要定期的更新cookie。

这种情况需要一套自动登录程序,填写账号密码,加上验证码自动填写,获取到cookie后到每个单位的验证地址去验证cookie有效性。通过不断召回运营,丰富登录态。

3.3.2 后缀

正常情况下,流量过滤的步骤会过滤掉 js/css/zip/jpg/png等静态资源后缀。

但是有部分漏洞需要这些后缀,得通过召回丰富待检测资源。

比如 xxx.jpg?height=100&width=100,可能后端会根据参数构造返回包,会有dos的风险。

有的js文件会泄露未授权的接口,WADL文件存在接口泄露等

召回过程,会遇到很多流量缺胳膊短腿、任务丢失、核心请求函数不支持、检测手段不足、检测ROI低所以放弃等情况,路漫漫

0X04 总结

通过覆盖现有的漏洞场景,建立未知场景运营流程,深入检测手法、检测资源,并使用靶场确保每个漏洞场景都可以有效检出,可以做到保证整体覆盖率。

且自研DAST在规则检测上更贴合企业自身业务,更细、更全、更快。

DAST 黑盒漏洞扫描器 第二篇:规则篇的更多相关文章

  1. DAST 黑盒漏洞扫描器 第六篇:运营篇(终)

    0X01 前言 转载请标明来源:https://www.cnblogs.com/huim/ 当项目功能逐渐成熟,同时需要实现的是运营流程和指标体系建设.需要工程化的功能逐渐少了,剩下的主要工作转变成持 ...

  2. DAST 黑盒漏洞扫描器 第三篇:无害化

    0X01 前言 甲方扫描器其中一个很重要的功能重点,就是无害化,目的是尽量降低业务影响到可接受程度. 做过甲方扫描器,基本上对于反馈都有所熟悉. "我们的服务有大量报错,请问和你们有关么&q ...

  3. DAST 黑盒漏洞扫描器 第四篇:扫描性能

    0X01 前言 大多数安全产品的大致框架 提高性能的目的是消费跟得上生产,不至于堆积,留有余力应对突增的流量,可以从以下几个方面考虑 流量:减少无效流量 规则:减少规则冗余请求 生产者:减少无效扫描任 ...

  4. DAST 黑盒漏洞扫描器 第五篇:漏洞扫描引擎与服务能力

    0X01 前言 转载请标明来源:https://www.cnblogs.com/huim/ 本身需要对外有良好的服务能力,对内流程透明,有日志.问题排查简便. 这里的服务能力指的是系统层面的服务,将扫 ...

  5. ref:【干货分享】PHP漏洞挖掘——进阶篇

    ref:http://blog.nsfocus.net/php-vulnerability-mining/ [干货分享]PHP漏洞挖掘——进阶篇 王陶然     从常见的PHP风险点告诉你如何进行PH ...

  6. XSS报警机制(前端防火墙:第二篇)

    XSS报警机制(前端防火墙:第二篇) 在第一章结尾的时候我就已经说了,这一章将会更详细的介绍前端防火墙的报警机制及代码.在一章出来后,有人会问为什么不直接防御,而是不防御报警呢.很简单,因为防御的话, ...

  7. web网络漏洞扫描器编写

    这两天看了很多web漏洞扫描器编写的文章,比如W12scan以及其前身W8scan,还有猪猪侠的自动化攻击背景下的过去.现在与未来,以及网上很多优秀的扫描器和博客,除了之前写了一部分的静湖ABC段扫描 ...

  8. [ 高并发]Java高并发编程系列第二篇--线程同步

    高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...

  9. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

随机推荐

  1. CVE-2022-22947 SpringCloud GateWay SpEL RCE

    CVE-2022-22947 SpringCloud GateWay SpEL RCE 目录 CVE-2022-22947 SpringCloud GateWay SpEL RCE 写在前面 环境准备 ...

  2. LC-242

    利用ASCII码构成哈希表来映射 和这题类似: https://leetcode-cn.com/problems/minimum-window-substring/solution/li-yong-a ...

  3. Java学习——数组的基础知识

    数组的特点.分类:一维.二维数组的使用:数组的声明和初始化.调用数组的指定位置的元素.获取数组的长度.遍历数组.数组元素的默认初始化值

  4. 序列化器中钩子函数源码分析、many关键字源码分析

    局部钩子和全局钩子源码分析(2星) # 入口是 ser.is_valid(),是BaseSerializer的方法 # 最核心的代码 self._validated_data = self.run_v ...

  5. ThingsBoard安装编译搭建环境踩坑记录

    1.首先从github拉下来项目,我们采用源码编译的方式部署 git clone https://github.com/thingsboard/thingsboard.git 2.切换分支 git c ...

  6. Machine Learning 02 学习笔记 卷积、感知机、神经网络

    理解卷积公式. 卷积的物理意义. 图像的卷积操作. 卷积神经网络. 卷积的三层含义. 感知机. 感知机的缺陷. 总结. 神经网络. 缺陷. 激活函数

  7. Java 在Word指定段落/文本位置插入分页符

    在Word插入分页符可以在指定段落后插入,也可以在特定文本位置处插入.本文,将以Java代码来操作以上两种文档分页需求.下面是详细方法及步骤. [程序环境] 在程序中导入jar,如下两种方法: 方法1 ...

  8. 【直播回顾】OpenHarmony知识赋能第四期直播——标准系统HDF开发

    3月10日晚上19点,OpenHarmony开发者成长计划社群内,我们举办了​​知识赋能第四期直播课<OpenHarmony标准系统HDF框架介绍>​​,吸引了数千名开发者线上观看学习,并 ...

  9. Myeclipse+svn相关文章

    Myeclipse安装svn插件https://www.cnblogs.com/liuyk-code/p/7519886.html 使用svn https://jingyan.baidu.com/ar ...

  10. docker基础_docker引擎内部原理

    docker引擎内部原理 docker主要由以下主要组件构成:docker客户端.docker守护进程(daemon).containerd.runc.shim daemon daemon的主要功能包 ...