
Técnica de inyección de shellcode en C++ que utiliza cifrado XOR y conversión de cadenas UUID para eludir Windows Defender, con ofuscación de llamadas a funciones y ejecución de memoria a través de VirtualAlloc y EnumChildWindows.
Otra técnica de inyección de shellcode usando C++ que intenta evadir Windows Defender mediante hechicería de cifrado XOR y locura de cadenas UUID :).
Primero, genera un payload en formato binario (usando ya sea Havoc, CobaltStrike o msfvenom). Por ejemplo, en msfvenom, puedes hacerlo así (el payload que estoy usando es con fines de ilustración, puedes usar cualquier payload que desees):
msfvenom -p windows/messagebox -f raw -o shellcode.bin
Luego, convierte el shellcode (en formato binario/raw) a un formato de cadena UUID usando el script de Python3 bin_to_uuid.py:
./bin_to_uuid.py -p shellcode.bin -o uuid.txt
Cifra con xor las cadenas UUID en el archivo uuid.txt usando el script de Python3 xor_encryptor.py.
./xor_encryptor.py uuid.txt > xor_crypted_out.txt
Copia el array en estilo C del archivo xor_crypted_out.txt y pégalo en el archivo C++ como un array de unsigned char, es decir, unsigned char payload[]{tu_salida_de_xor_crypted_out.txt}
Esta técnica de inyección de shellcode comprende los siguientes pasos consecutivos:
VirtualAllocxor el payload usando el valor de la clave xorUuidFromStringA para convertir las cadenas UUID en su representación binaria y almacenarlas en la memoria previamente asignada. Esto se utiliza para evitar el uso de APIs sospechosas como WriteProcessMemory o memcpy.EnumChildWindows para ejecutar el payload previamente cargado en memoria (en el paso 1)memcpy o WriteProcessMemory, que son conocidas por activar alarmas en los AV/EDR. Este programa usa la función de la API de Windows llamada UuidFromStringA, que puede usarse tanto para decodificar datos como para escribirlos en memoria (¿No es genial, gente? Y por favor no digan "¡NO!" :)).xor (línea 85) por la que desees. Esto también debe hacerse en el script de Python3 ./xor_encryptor.py modificando la variable KEY. ¡Las claves deben coincidir!nombre del archivo ejecutable (fila 90) por el nombre de tu archivo.mingw pero puedes usar cualquier compilador que prefieras. :)make


El binario fue escaneado usando antiscan.me el 01/08/2022.
