
Technique d'injection de shellcode en C++ utilisant le chiffrement XOR et la conversion de chaîne UUID pour contourner Windows Defender, avec obfuscation des appels de fonction et exécution mémoire via VirtualAlloc et EnumChildWindows.
Une autre technique d'injection de shellcode utilisant C++ qui tente de contourner Windows Defender en utilisant la sorcellerie du chiffrement XOR et la folie des chaînes UUID :).
Tout d'abord, générez un payload au format binaire (en utilisant soit Havoc, CobaltStrike ou msfvenom) par exemple, dans msfvenom, vous pouvez le faire comme ceci (le payload que j'utilise est à des fins d'illustration, vous pouvez utiliser le payload de votre choix) :
msfvenom -p windows/messagebox -f raw -o shellcode.bin
Ensuite, convertissez le shellcode (au format binaire/brut) en un format de chaîne UUID à l'aide du script Python3, bin_to_uuid.py :
./bin_to_uuid.py -p shellcode.bin -o uuid.txt
Chiffrez avec xor les chaînes UUID dans le fichier uuid.txt à l'aide du script Python3, xor_encryptor.py :
./xor_encryptor.py uuid.txt > xor_crypted_out.txt
Copiez le tableau de style C dans le fichier xor_crypted_out.txt et collez-le dans le fichier C++ en tant que tableau de unsigned char, c'est-à-dire unsigned char payload[]{your_output_from_xor_crypted_out.txt}
Cette technique d'injection de shellcode comprend les étapes suivantes :
VirtualAllocxor en utilisant la valeur de la clé xorUuidFromStringA pour convertir les chaînes UUID en leur représentation binaire et les stocker dans la mémoire précédemment allouée. Cela permet d'éviter l'utilisation d'APIs suspectes comme WriteProcessMemory ou memcpy.EnumChildWindows pour exécuter le payload précédemment chargé en mémoire (à l'étape 1)memcpy ou WriteProcessMemory qui sont connues pour déclencher des alarmes auprès des AV/EDR. Ce programme utilise la fonction API Windows appelée UuidFromStringA qui peut être utilisée pour décoder des données et aussi les écrire en mémoire ( N'est-ce pas génial les amis ? Et s'il vous plaît, ne dites pas "NON !" :) ).xor (ligne 85) selon vos souhaits. Cela doit également être fait dans le script Python3 ./xor_encryptor.py en modifiant la variable KEY. Les clés doivent correspondre !executable filename (ligne 90) avec le nom de votre fichier.mingw a été utilisé mais vous pouvez utiliser le compilateur de votre choix. :)make


Le binaire a été scanné en utilisant antiscan.me le 01/08/2022.

https://research.nccgroup.com/2021/01/23/rift-analysing-a-lazarus-shellcode-execution-method/