
Tecnica di iniezione di shellcode in C++ che utilizza crittografia XOR e conversione di stringhe UUID per bypassare Windows Defender, con offuscamento delle chiamate di funzione ed esecuzione in memoria tramite VirtualAlloc e EnumChildWindows.
Un'altra tecnica di iniezione di shellcode usando C++ che tenta di bypassare Windows Defender usando la stregoneria della crittografia XOR e le stringhe UUID pazzia :).
In primo luogo, genera un payload in formato binario (usando Havoc, CobaltStrike o msfvenom) per esempio, in msfvenom, puoi farlo così (il payload che sto usando è per scopi illustrativi, puoi usare qualsiasi payload tu voglia):
msfvenom -p windows/messagebox -f raw -o shellcode.bin
Quindi converti lo shellcode (in formato binario/raw) in formato stringa UUID usando lo script Python3 bin_to_uuid.py:
./bin_to_uuid.py -p shellcode.bin -o uuid.txt
Cripta con xor le stringhe UUID in uuid.txt usando lo script Python3 xor_encryptor.py:
./xor_encryptor.py uuid.txt > xor_crypted_out.txt
Copia l'array in stile C dal file xor_crypted_out.txt e incollalo nel file C++ come array di unsigned char, cioè unsigned char payload[]{il_tuo_output_da_xor_crypted_out.txt}
Questa tecnica di iniezione dello shellcode comprende i seguenti passaggi successivi:
VirtualAllocxor usando il valore della chiave xorUuidFromStringA per convertire le stringhe UUID nella loro rappresentazione binaria e memorizzarle nella memoria precedentemente allocata. Questo viene utilizzato per evitare l'uso di API sospette come WriteProcessMemory o memcpy.EnumChildWindows per eseguire il payload precedentemente caricato in memoria (nel passaggio 1)memcpy o WriteProcessMemory che sono note per sollevare allarmi agli AV/EDR, questo programma utilizza la funzione API di Windows chiamata UuidFromStringA che può essere utilizzata per decodificare i dati e scriverli in memoria ( Non è fantastico, gente? E per favore non dite "NO!" :)).xor (riga 85) con quella che desideri. Questo deve essere fatto anche nello script Python3 ./xor_encryptor.py cambiando la variabile KEY. Le chiavi devono corrispondere!nome del file eseguibile (riga 90) con il tuo nome file.mingw ma puoi usare qualsiasi compilatore preferisci. :)make


Il binario è stato scansionato usando antiscan.me il 01/08/2022.

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