原文地址:http://drops.wooyun.org/tips/862

0x00 前言


在渗透测试和安全扫描工作中,发现越来越多站点部署了应用防护系统或异常流量监控系统,其中包括:WEB应用防火墙(软件WAF、硬件WAF、云WAF)、入侵检测系统、入侵防御系统、访问监控系统等。很多防护系统不仅可实时检测攻击和拦截,并且具备自动阻断功能。当系统检测到某些IP在特定时间段内产生大量攻击行为时会开启阻断功能,阻断该IP在一定时间内的任何访问。

常见应用防护系统和异常流量监控系统的阻断策略主要有以下几种:

1、单IP访问频率 
2、单IP+URL访问频率 
3、单IP+COOKIE特定时间段内攻击次数 
4、单IP造成可疑或攻击行为频率 
5、单IP特定时间段内触发HTTP404状态次数 
6、识别扫描器暴力扫描行为(扫描器指纹) 

0x01 分布式漏洞扫描


1) 分布式漏洞扫描基本思路

通过自开发的“代理分发程序”,将扫描器发送的大量测试请求以自轮询的方式分发给成千上万台HTTP代理服务器或webshell http proxy。通过该方法把扫描器的大量测试请求平均负载到多台中间代理服务器上,这样防护系统通过判断访问频率和攻击频率的方式都无法触发阻断策略,可达到自动化扫描的目的。同时,通过在中间加一层BURP的过滤,可将各个扫描器的特殊指纹擦除,防护系统更加难以判断攻击行为。

分布式漏洞扫描的整体框架图如下:

2014011309344133329.png

2) 常见扫描器及漏洞检测工具

漏洞扫描器根据功能和特点分为多种类型,主要总结为以下几类:

全能应用漏洞扫描器

Acunetix Web Vulnerability Scanner
IBM Appscan
HP WebInspect
Netsparker
Nussus
W3af
BurpSuite
N-Stalker

特定漏洞工具

Sqlmap
Havij
Pangolin
Safe3

目录猜解工具

DirBuster
wwwscan
wscan 

3) 扫描器指纹擦除

利用BURP擦除漏洞扫描器指纹

利用BURP的请求修订功能可将数据流中的扫描器指纹信息进行擦除,排除明显的扫描行为特征。

开启Burp,进入“Proxy——>Options”中的“Match and Replace”功能将扫描器指纹信息消除,扫描器指纹信息大多包含Http头部字段、http参数值、COOKIE特殊参数等如下图:

2014011309350183102.png

以下总结部分常见应用漏洞扫描器的指纹:

Acunetix Web Vulnerability Scanner 指纹特征

特征一:

请求的HTTP头部字段包含以下几种自定义字段名:

Acunetix-Aspect 
Acunetix-Aspect-Password 
Acunetix-Aspect-Queries 

特征二:

请求的参数值中包含字符串特征:

acunetix_wvs_security_test 

特征三:

请求的URI地址包含字符串特征:

/acunetix-wvs-test-for-some-inexistent-file 

特征四:

请求的COOKIE参数名包含字符串特征:

acunetixCookie 

HP WebInspect指纹特征

特征一:

请求的HTTP头部字段包含以下几种自定义字段名:

X-WIPP 
X-RequestManager-Memo 
X-Request-Memo 
X-Scan-Memo 

特征二:

请求COOKIE参数名包含特征:CustomCookie

Netsparker指纹特征

特征一:

请求中的参数值包含字符串:

netsparker 

4) HTTP代理分发程序

HTTP代理分发程序用于将来自漏洞扫描器的大量测试请求和流量平均的引流到多个代理IP地址或者webshell的代理IP,通过将大量的扫描流量分散到大量代理IP上,可规避防护及监控系统的阻断策略,从而顺利实施扫描测试。

抓取大量代理服务器IP地址,并提取出针对目标站点可访问的代理地址形成“有效代理列表”。分发程序从“有效代理列表”中依次提取代理地址,每发送一个测试请求即切换代理IP,并进行轮询分发。

0x02 总结


一句恒久远永流传的话——在攻与防的对立统一中寻求突破。