本篇文章主要先从客户端和服务端分析AWVS扫描的特征,然后再稍微修改一下Apache的access.log的日志格式、使之可以显示POST请求行内容,最后编写分析识别AWVS扫描的脚本。
AWVS工具的扫描分析:
Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的Web网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。
AWVS在扫描目标网站的时候,首先会爬取目标网站的所有链接,包括被注释掉的浏览器不显示的链接。可以利用这一点,来区分是真人访问还是浏览器扫描。
这里由于是比较早的测试分析,使用的版本是AWVS 10.5。
客户端角度分析:
这里主要在扫描者的主机上使用Wireshark抓包分析AWVS扫描的一些特征。
1、扫描testhtml5.vulnweb.com
三次握手建立之后,AWVS首先会发送如下请求包尝试访问不存在的目录/acunetix-wvs-test-for-some-inexistent-file来查看Web服务器返回的错误页面,其中可以看出该版本中其header的User-Agent已经没有awvs字符而是将多个不同浏览器的UA放在一起:
在cookie字段中发现尝试溢出的请求:
Cookie: acunetixCookie=AAAAAAAAA
对于User-Agent的内容,和之前版本的标识为awvs的不同,其将UA修改为正常的UA,因而对于较新版本的AWVS无法利用UA进行简单的判断:
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21
不过会存在一些测试User-Agent字段的可以利用来判断:
User-Agent: ;print(md5(acunetix_wvs_security_test));
期间会有CONNECT方法请求代理服务器去访问目标站点,代理服务器为awvs的站点:
CONNECT www.acunetix.wvs:443 HTTP/1.1
然后是GET方法访问该代理服务器站点:
GET http://www.acunetix.wvs HTTP/1.1