DAST 黑盒漏洞扫描器 第二篇:规则篇
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 黑盒漏洞扫描器 第二篇:规则篇的更多相关文章
- DAST 黑盒漏洞扫描器 第六篇:运营篇(终)
0X01 前言 转载请标明来源:https://www.cnblogs.com/huim/ 当项目功能逐渐成熟,同时需要实现的是运营流程和指标体系建设.需要工程化的功能逐渐少了,剩下的主要工作转变成持 ...
- DAST 黑盒漏洞扫描器 第三篇:无害化
0X01 前言 甲方扫描器其中一个很重要的功能重点,就是无害化,目的是尽量降低业务影响到可接受程度. 做过甲方扫描器,基本上对于反馈都有所熟悉. "我们的服务有大量报错,请问和你们有关么&q ...
- DAST 黑盒漏洞扫描器 第四篇:扫描性能
0X01 前言 大多数安全产品的大致框架 提高性能的目的是消费跟得上生产,不至于堆积,留有余力应对突增的流量,可以从以下几个方面考虑 流量:减少无效流量 规则:减少规则冗余请求 生产者:减少无效扫描任 ...
- DAST 黑盒漏洞扫描器 第五篇:漏洞扫描引擎与服务能力
0X01 前言 转载请标明来源:https://www.cnblogs.com/huim/ 本身需要对外有良好的服务能力,对内流程透明,有日志.问题排查简便. 这里的服务能力指的是系统层面的服务,将扫 ...
- ref:【干货分享】PHP漏洞挖掘——进阶篇
ref:http://blog.nsfocus.net/php-vulnerability-mining/ [干货分享]PHP漏洞挖掘——进阶篇 王陶然 从常见的PHP风险点告诉你如何进行PH ...
- XSS报警机制(前端防火墙:第二篇)
XSS报警机制(前端防火墙:第二篇) 在第一章结尾的时候我就已经说了,这一章将会更详细的介绍前端防火墙的报警机制及代码.在一章出来后,有人会问为什么不直接防御,而是不防御报警呢.很简单,因为防御的话, ...
- web网络漏洞扫描器编写
这两天看了很多web漏洞扫描器编写的文章,比如W12scan以及其前身W8scan,还有猪猪侠的自动化攻击背景下的过去.现在与未来,以及网上很多优秀的扫描器和博客,除了之前写了一部分的静湖ABC段扫描 ...
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
随机推荐
- CVE-2022-22947 SpringCloud GateWay SpEL RCE
CVE-2022-22947 SpringCloud GateWay SpEL RCE 目录 CVE-2022-22947 SpringCloud GateWay SpEL RCE 写在前面 环境准备 ...
- LC-242
利用ASCII码构成哈希表来映射 和这题类似: https://leetcode-cn.com/problems/minimum-window-substring/solution/li-yong-a ...
- Java学习——数组的基础知识
数组的特点.分类:一维.二维数组的使用:数组的声明和初始化.调用数组的指定位置的元素.获取数组的长度.遍历数组.数组元素的默认初始化值
- 序列化器中钩子函数源码分析、many关键字源码分析
局部钩子和全局钩子源码分析(2星) # 入口是 ser.is_valid(),是BaseSerializer的方法 # 最核心的代码 self._validated_data = self.run_v ...
- ThingsBoard安装编译搭建环境踩坑记录
1.首先从github拉下来项目,我们采用源码编译的方式部署 git clone https://github.com/thingsboard/thingsboard.git 2.切换分支 git c ...
- Machine Learning 02 学习笔记 卷积、感知机、神经网络
理解卷积公式. 卷积的物理意义. 图像的卷积操作. 卷积神经网络. 卷积的三层含义. 感知机. 感知机的缺陷. 总结. 神经网络. 缺陷. 激活函数
- Java 在Word指定段落/文本位置插入分页符
在Word插入分页符可以在指定段落后插入,也可以在特定文本位置处插入.本文,将以Java代码来操作以上两种文档分页需求.下面是详细方法及步骤. [程序环境] 在程序中导入jar,如下两种方法: 方法1 ...
- 【直播回顾】OpenHarmony知识赋能第四期直播——标准系统HDF开发
3月10日晚上19点,OpenHarmony开发者成长计划社群内,我们举办了知识赋能第四期直播课<OpenHarmony标准系统HDF框架介绍>,吸引了数千名开发者线上观看学习,并 ...
- Myeclipse+svn相关文章
Myeclipse安装svn插件https://www.cnblogs.com/liuyk-code/p/7519886.html 使用svn https://jingyan.baidu.com/ar ...
- docker基础_docker引擎内部原理
docker引擎内部原理 docker主要由以下主要组件构成:docker客户端.docker守护进程(daemon).containerd.runc.shim daemon daemon的主要功能包 ...