
FUD-UUID-Shellcode es otra técnica de inyección de shellcode usando C++ que intenta eludir Windows Defender usando magia de cifrado XOR y cadenas UUID loca.
Generación de shellcode
Primero, genere la carga útil en formato binario (usando CobaltStrike o msfvenom ) por ejemplo, en msfvenompuedes hacer esto (la carga útil que uso es ilustración propósito, puede usar cualquier carga útil que desee):
msfvenom -p windows/messagebox -f raw -o shellcode.bin
Luego convierta el shellcode (formato binario/sin formato) a UUID Usando el formato de cadena para scripts de Python3, bin_to_uuid.py:
./bin_to_uuid.py -p shellcode.bin > uuid.txt
xor cifrado UUID cadena en uuid.txt Usando secuencias de comandos de Python3, xor_encryptor.py.
./xor_encryptor.py uuid.txt > xor_crypted_out.txt
Copiar C-style matriz en archivo, xor_crypted_out.txty péguelo en un archivo C++ como una matriz unsigned char ES DECIR unsigned char payload[]{your_output_from_xor_crypted_out.txt}
implementar
Esta técnica de inyección de shellcode implica los siguientes pasos posteriores:
- En primer lugar, asigna memoria virtual para la ejecución y la residencia de la carga útil mediante
VirtualAlloc - eso
xorusarxorvalor central - usar
UuidFromStringAconvertirUUIDLas cadenas se convierten a su representación binaria y se almacenan en la memoria previamente asignada.Esto se usa para evitar el uso de API cuestionables comoWriteProcessMemoryomemcpy. - usar
EnumChildWindowsEjecutar el payload previamente cargado en la memoria (en el paso 1)
- No utiliza funciones estándar como
memcpyoWriteProcessMemoryConocido por alertar AV/EDR, el programa utiliza un programa llamadoUuidFromStringASe puede usar para decodificar datos y escribirlos en la memoria ( ¿No es este tipo increíble? Por favor, no digas «¡No!» 🙂). - usa ofuscación de llamada de función Sugerencias para llamar a las funciones de la API de Windows
- Finalmente, porque se ve único 🙂( ¿no es así? 🙂)
- tienes que cambiar
xorclave (línea 85) a lo que desea.Esto también debe ser./xor_encryptor.pysecuencia de comandos python3 cambiandoKEYCambiando. ¡Las llaves deben coincidir! - tienes que cambiar el valor por defecto
executable filenamevalor (línea 90) a su nombre de archivo. mingwUsado, pero puede usar cualquier compilador que desee. 🙂
compilar
- Simplemente ejecútelo en la terminal/shell:
make
Prueba de concepto (PoC)

análisis estático

resultado de escaneo AV
Usar binarios de escaneo Software anti-escaneo El 8 de enero de 2022.










