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的过滤,可将各个扫描器的特殊指纹擦除,防护系统更加难以判断攻击行为。
分布式漏洞扫描的整体框架图如下:
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特殊参数等如下图:
以下总结部分常见应用漏洞扫描器的指纹:
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 总结
一句恒久远永流传的话——在攻与防的对立统一中寻求突破。
您好,方便留个联系方式,想和您进行深入合作。
我也没看出来分布式,只是把流量分布了。好比我通过某个漏洞获取100台肉鸡,顶多是100台肉鸡做了流量分布。根本上在性能没法满足。。。
如果能做到获取肉鸡,利用肉鸡的cpu、内存之类的进行扫描才好。。
总结下,我感觉LZ的分布式应该是利用肉鸡的网络带宽。。。假如要是scan 255*255*255*255·····
学习了
流弊。
抓
没有肉鸡怎么办
学习。
有理。有的时候还得自己动手,不是么。
我觉得这个事情的实现成本
(一个稳健到接入一个webshell都能负载均衡,而且可靠能避免数据获取不到不影响扫描器分析的机制)
已经超过了所遇到的问题
(有多少WAF存在按照频率屏蔽访问的功能)。
而且我觉得,能完成这件事情,应该就不需要使用别人的扫描器和用BURP来抹除信息了。
没有复杂的分布式算法。发现可以把公开的匿名代理和webshell用来做一些针对基于统计的防护设施,比如:突破撞库防护、暴力破解防护、地址猜解防护、突破指纹猜解防护等
通过自开发的“代理分发程序”,将扫描器发送的大量测试请求以自轮询的方式分发给成千上万台HTTP代理服务器或webshell http proxy
分布式在哪里?