DAST黑盒漏洞扫描器性能如何,第四篇报告揭示了哪些细节?

2026-04-28 08:592阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1325个文字,预计阅读时间需要6分钟。

DAST黑盒漏洞扫描器性能如何,第四篇报告揭示了哪些细节?

0X01+前言+针对大多数安全产品的承载框架+提高性能的目标是免费跟得上生产,不限于堆积,留有剩余能力应对突发流量,可以从以下几方面考虑+流量:减少无效流量+规则:减少规则冗余

0X01 前言

大多数安全产品的大致框架

提高性能的目的是消费跟得上生产,不至于堆积,留有余力应对突增的流量,可以从以下几个方面考虑

  • 流量:减少无效流量
  • 规则:减少规则冗余请求
  • 生产者:减少无效扫描任务
  • 引擎:灵活扩缩容的分布式引擎节点
0X02 减少无效流量 2.1 URL 2.1.1 去重——去除重复流量

第三篇2.1.2 、2.1.3 说到去重、流量清洗服务,这里简单说一下去重:
同一个逻辑只有一条流量对于扫描器来说是有意义的,长得不同的流量扫描多了是浪费性能。
场景:有如第三篇 2.1.2 所说

去重步骤

(1) 预处理

过滤 CSS/JS/zip等静态资源文件,能过滤掉80%以上流量

(2) 归一化去重

归一化,即用正则或其他方式,比如列表匹配,判断某一段路径或者域名是否在列表中,这种在 {city}.meituan.com中运用;
把URL中相似的部分替换成相同的字符串,最后根据归一化后的值是否相同来判断是否重复:
把 tieba.baidu.com/p/1000000001 替换为 tieba.baidu.com/p/1
把 bj.meituan.com/meishi/ 替换为 {city}.meituan.com/meishi/

再计算逐条规则替换后的url的hash,查询之前是否有过,没有该hash才输出

经过这一步,基本上 日均流量 百亿量级-> 百万量级。具体的设计实现方式不多赘述,挑战在于百亿级别的流量+几十上百的去重规则下的性能、上百万key的缓存交互。
还有其他细碎的优化,比如不同域名设置不同的规则,动态参数名怎么判断保留多少个,同一个参数名下保留多少个参数值,单个缓存key的有效时间等。

各类实现思路可以参考关键字“URLnormalization”的论文,url去重其实已经学术界工业界已经研究了十几年,比较成熟了。

(3) 相似度去重

在百万量级的基础上,进行二次去重,基于页面相似度 simhash改进的算法,再将流量量级降到十万上下

SimHash算法是Google在2007年发表的论文《Detecting Near-Duplicates for Web Crawling》中提到的一种指纹生成算法,被应用在Google搜索引擎网页去重的工作之中。
也有很多其他优秀且性能更好的页面相似度算法

DAST黑盒漏洞扫描器性能如何,第四篇报告揭示了哪些细节?

其实去重说起来也有些类似于搜索引擎的去重,而目前搜索引擎的去重算法都已经比较成熟了,可以搜索各种论文,找找这些去重算法。
这里需要注意json格式的响应虽然可能相似,但接口可能各不相同,可以结合URL相似度来做。

2.1.2 去除无效流量

引擎上进行流量格式化前后判断
(1 是不是40x/50x页面等不可访问页面,或者是集团内返回码200的404页面(自行收集)

往往有很多无效访问,因为导向返回码200的40x/50x页面,导致这一部分的流量漏去重。如果页面相似度去重已经上了,这一步也可以略过,用作召回去重程序的case。

(2) 排除找不到业务的流量: 镜像流量有时候会有奇怪的流量,比如对着nginx构造host等情况,需要排除掉找不到业务的流量。这部分流量即使有漏洞,漏洞找人也比较麻烦,后续无法实现全流程自动化。所以nginx无法解析的、domain没有记录的,过滤掉。再将这一部分流量定期汇总,做召回,看是否是nginx问题、或者是domain记录缺失。
(3) 排除掉恶意流量:流量镜像上收集到的流量,有很多是外部扫描器的,目录爆破/注入检测/CmsPoc/xss等等,这些没有意义,且一有就是大量的出现,即浪费了扫描性能、又占用了大量QPS,可以结合IDS/WAF过滤掉这一部分流量

2.2 HOST

扫描前对IP和端口做一次连接,再探测一遍端口连通性,以避免数据时间过长、端口早已关闭,但又浪费了一些资源去扫描。

IP端口往往无法及时更新,一小时扫一次全内网IP和端口已经是比较迅速了,但仍会有失效的端口,像JDWP这种,业务调试时开放、下班了关掉。
如果可以实时监控端口开放与关闭状态,开放了再进行指纹扫描,不必定时全量扫描,端口存活检测可只作为召回召回。但端口状态监控比较麻烦,比如www.558idc.com/jap.html 复制请保留原URL】

本文共计1325个文字,预计阅读时间需要6分钟。

DAST黑盒漏洞扫描器性能如何,第四篇报告揭示了哪些细节?

0X01+前言+针对大多数安全产品的承载框架+提高性能的目标是免费跟得上生产,不限于堆积,留有剩余能力应对突发流量,可以从以下几方面考虑+流量:减少无效流量+规则:减少规则冗余

0X01 前言

大多数安全产品的大致框架

提高性能的目的是消费跟得上生产,不至于堆积,留有余力应对突增的流量,可以从以下几个方面考虑

  • 流量:减少无效流量
  • 规则:减少规则冗余请求
  • 生产者:减少无效扫描任务
  • 引擎:灵活扩缩容的分布式引擎节点
0X02 减少无效流量 2.1 URL 2.1.1 去重——去除重复流量

第三篇2.1.2 、2.1.3 说到去重、流量清洗服务,这里简单说一下去重:
同一个逻辑只有一条流量对于扫描器来说是有意义的,长得不同的流量扫描多了是浪费性能。
场景:有如第三篇 2.1.2 所说

去重步骤

(1) 预处理

过滤 CSS/JS/zip等静态资源文件,能过滤掉80%以上流量

(2) 归一化去重

归一化,即用正则或其他方式,比如列表匹配,判断某一段路径或者域名是否在列表中,这种在 {city}.meituan.com中运用;
把URL中相似的部分替换成相同的字符串,最后根据归一化后的值是否相同来判断是否重复:
把 tieba.baidu.com/p/1000000001 替换为 tieba.baidu.com/p/1
把 bj.meituan.com/meishi/ 替换为 {city}.meituan.com/meishi/

再计算逐条规则替换后的url的hash,查询之前是否有过,没有该hash才输出

经过这一步,基本上 日均流量 百亿量级-> 百万量级。具体的设计实现方式不多赘述,挑战在于百亿级别的流量+几十上百的去重规则下的性能、上百万key的缓存交互。
还有其他细碎的优化,比如不同域名设置不同的规则,动态参数名怎么判断保留多少个,同一个参数名下保留多少个参数值,单个缓存key的有效时间等。

各类实现思路可以参考关键字“URLnormalization”的论文,url去重其实已经学术界工业界已经研究了十几年,比较成熟了。

(3) 相似度去重

在百万量级的基础上,进行二次去重,基于页面相似度 simhash改进的算法,再将流量量级降到十万上下

SimHash算法是Google在2007年发表的论文《Detecting Near-Duplicates for Web Crawling》中提到的一种指纹生成算法,被应用在Google搜索引擎网页去重的工作之中。
也有很多其他优秀且性能更好的页面相似度算法

DAST黑盒漏洞扫描器性能如何,第四篇报告揭示了哪些细节?

其实去重说起来也有些类似于搜索引擎的去重,而目前搜索引擎的去重算法都已经比较成熟了,可以搜索各种论文,找找这些去重算法。
这里需要注意json格式的响应虽然可能相似,但接口可能各不相同,可以结合URL相似度来做。

2.1.2 去除无效流量

引擎上进行流量格式化前后判断
(1 是不是40x/50x页面等不可访问页面,或者是集团内返回码200的404页面(自行收集)

往往有很多无效访问,因为导向返回码200的40x/50x页面,导致这一部分的流量漏去重。如果页面相似度去重已经上了,这一步也可以略过,用作召回去重程序的case。

(2) 排除找不到业务的流量: 镜像流量有时候会有奇怪的流量,比如对着nginx构造host等情况,需要排除掉找不到业务的流量。这部分流量即使有漏洞,漏洞找人也比较麻烦,后续无法实现全流程自动化。所以nginx无法解析的、domain没有记录的,过滤掉。再将这一部分流量定期汇总,做召回,看是否是nginx问题、或者是domain记录缺失。
(3) 排除掉恶意流量:流量镜像上收集到的流量,有很多是外部扫描器的,目录爆破/注入检测/CmsPoc/xss等等,这些没有意义,且一有就是大量的出现,即浪费了扫描性能、又占用了大量QPS,可以结合IDS/WAF过滤掉这一部分流量

2.2 HOST

扫描前对IP和端口做一次连接,再探测一遍端口连通性,以避免数据时间过长、端口早已关闭,但又浪费了一些资源去扫描。

IP端口往往无法及时更新,一小时扫一次全内网IP和端口已经是比较迅速了,但仍会有失效的端口,像JDWP这种,业务调试时开放、下班了关掉。
如果可以实时监控端口开放与关闭状态,开放了再进行指纹扫描,不必定时全量扫描,端口存活检测可只作为召回召回。但端口状态监控比较麻烦,比如www.558idc.com/jap.html 复制请保留原URL】