如何解密AWVS?15行代码就够了!

栏目: IT技术 · 发布时间: 4年前

内容简介:AWVS一直以来在圈子中都比较火,以速度快和高准确性深受大家喜爱。很多人想研究其运作机制却因闭源而不得其解。今天这里通过一个极其简单的方式,只用几行代码就能让你一见其核心代码。这是最新解码方法,除python3外无须安装任何依赖(没办法,python写的),支持11.x,12.x,13.x,以及后续版本^_^对于有IAST、DAST扫描器需求的同学,很有帮助。安全从业人员亦可以学习到业界顶尖的扫描技术;对于动手能力强的同学,还可以通过学习这几行代码,自动动手给AWVS添加插件哦。

项目介绍

AWVS一直以来在圈子中都比较火,以速度快和高准确性深受大家喜爱。很多人想研究其运作机制却因闭源而不得其解。

今天这里通过一个极其简单的方式,只用几行代码就能让你一见其核心代码。这是最新解码方法,除 python 3外无须安装任何依赖(没办法,python写的),支持11.x,12.x,13.x,以及后续版本^_^

对于有IAST、DAST扫描器需求的同学,很有帮助。安全从业人员亦可以学习到业界顶尖的扫描技术;对于动手能力强的同学,还可以通过学习这几行代码,自动动手给AWVS添加插件哦。

如何解密AWVS?15行代码就够了!

项目地址

https://github.com/gatlindada/awvs-decode/

解密原理

awvs的版本迭代历史

1. 6.5版本之前,awvs的扫描规则是明文可见

2. 6.5 – 10.x,awvs的规则变为.script结尾的javascript脚本,执行程序也使用了TMD加壳,分析较难,但也可以使用解密脚本从文件夹提取,因过于古老,脚本就没必要放出来了

3. 11.x – 13.x(当前最新),awvs把脚本放到了“wvsc_blob.bin”文件中,起初误以为加密了,没承想,经过静态分析后发现程序没加壳,wvsc_blob.bin也没有加密,只是google protobuf协议压缩存储了。简单理解:类似把文件使用ZIP工具压缩一下。所以新版本中,使用解密这个词有些不准确了,准确地讲是解码(decode)而非解密(decrypt)。

使用方法

wvsc_blob.bin文件一般在“C:\Program Files (x86)\Acunetix XXX\core\wvsc_blob.bin”

将wvsc_blob.bin文件放到和脚本同一目录,执行脚本即可,输出在以‘awvs_script_blob_decode_’开头的目录下。

$ python3 awvs-decode.py

目录解读

awvs使用Google V8引擎执行javascript的扫描脚本,脚本在/Scripts/目录下的”.script”后缀文件,”.script”文件中“#include”包含的是/Scripts/Includes目录下的文件,使用宏替换的方式加载,而非require。

/Scripts/PerFile/: 针对文件路径中文件名相关的漏洞,常用于检测备份文件、BashRCE、PHP CGI、URI XSS等
/Scripts/PerFolder/: 针对URI路径中文件夹的漏洞探测,如备份文件夹、探测后台路径等
/Scripts/PerScheme/: 针对变量输入点的扫描,包括GET、POST参数、Http请求头、Cookie参数等
/Scripts/PerServer/: 针对不同域名或主机的检测,每个“站点”只执行一次
/Scripts/PostCrawl/: 针对POST请求的扫描,在爬虫期间即可执行
/Scripts/PostScan/: 只针对POST请求的扫描,常用于存储型漏洞扫描,执行期间不会上报漏洞,通常借助于DNSLog技术异步触发,一旦触发即漏洞存在。
/Scripts/WebApps/: 只针对检测到的相关WebApps类型进行检测。awvs会识别服务类型,新版指纹特征在/httpdata/12-WebAppDetection.js中,11.x版本之前在.xml的配置文件中。
/Crawler下包含一些爬虫相关的处理脚本
/httpdata、/lib包含一些基础脚本
/lib/legacy/legacy.js是一个非常核心的文件,是所有脚本的先导,它解释了扫描引擎(C++)如何与V8进行数据交互,如果你想运行这些代码,你最好得模拟一个扫描引擎,代码量不小,不建议尝试。

其他的目录留给大家探索。

还有一个大家关注的,获取AWVS的漏洞描述文件:很简单,使用数据库连接 工具 连接pgsql后dump即可,用户名和密码在应用配置目录下找,一般在/AppData/隐藏目录下

核心代码

只有简简单单15行代码就搞定。确要精简的话5行代码也行。

#!/usr/bin/env python3
import struct, zlib, os, datetime

mask, pos = 2 ** 32 - 16, 32
base_path = os.path.abspath("awvs_script_blob_decode_" + datetime.date.today().isoformat())
with open('wvsc_blob.bin', 'rb') as fp:
    s = fp.read()
    while pos < len(s):
        file_len = struct.unpack('<I', s[pos:pos + 4])[0]
        d = zlib.decompress(s[pos + 4: pos + 4 + file_len])
        path_len = ord(struct.unpack('<c', d[1:2])[0])
        path = os.path.join(base_path, bytes.decode(d[2 + 1: 2 + path_len]))
        os.makedirs(os.path.dirname(path), exist_ok=True)
        open(path, 'wb').write(d[2 + path_len + 1 + 2 + (1 if (len(d) - path_len - 3) > 2 ** 14 else 0) +
                                 (1 if (len(d) - path_len - 3) > 2 ** 21 else 0):])
        pos += ((file_len + 4) & mask) + 16

免责声明

该脚本仅用于个人私下研究技术交流用,一切后果就使用者承担

*本文作者:gatlindada,转载请注明来自FreeBuf.COM


以上所述就是小编给大家介绍的《如何解密AWVS?15行代码就够了!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

硅谷创投课

硅谷创投课

[美]加里·维纳查克 / 林怡 / 北京联合出版社 / 2017-6 / 52

☆通用电气前CEO杰克·韦尔奇力荐,影响500强企业CMO的美国互联网意见领袖全新力作! ☆《纽约时报》榜单全新畅销书,把握来自硅谷的互联网风口浪潮! ☆70后创投鬼才,影响美国00后一代商业观的网络红人、科技公司天使投资人面对面解答你创投、管理、运营中的 一切困惑! ☆来自无数实战的真实商业意见!年轻人为什么买你的账?投资人凭什么会把钱交给你?企业家更应该做的事到底是什么?告诉......一起来看看 《硅谷创投课》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具