
Técnica de injeção de shellcode em C++ usando criptografia XOR e conversão de string UUID para contornar o Windows Defender, com ofuscação de chamada de função e execução de memória via VirtualAlloc e EnumChildWindows.
Outra técnica de injeção de shellcode usando C++ que tenta contornar o Windows Defender usando feitiçaria de criptografia XOR e loucura de strings UUID :).
Primeiramente, gere um payload em formato binário (usando Havoc, CobaltStrike ou msfvenom). Por exemplo, no msfvenom, você pode fazer assim (o payload que estou usando é apenas para ilustração, pode usar qualquer payload desejado):
msfvenom -p windows/messagebox -f raw -o shellcode.bin
Em seguida, converta o shellcode (em formato binário/bruto) para o formato de string UUID usando o script Python3 bin_to_uuid.py:
./bin_to_uuid.py -p shellcode.bin -o uuid.txt
Criptografe com xor as strings UUID no arquivo uuid.txt usando o script Python3 xor_encryptor.py:
./xor_encryptor.py uuid.txt > xor_crypted_out.txt
Copie o array no estilo C do arquivo xor_crypted_out.txt e cole no arquivo C++ como um array de unsigned char, ou seja, unsigned char payload[]{seu_output_do_xor_crypted_out.txt}
Esta técnica de injeção de shellcode compreende as seguintes etapas consecutivas:
VirtualAllocxor o payload usando o valor da chave xorUuidFromStringA para converter strings UUID em sua representação binária e armazená-las na memória previamente alocada. Isso é usado para evitar o uso de APIs suspeitas como WriteProcessMemory ou memcpy.EnumChildWindows para executar o payload previamente carregado na memória (no passo 1)memcpy ou WriteProcessMemory, que são conhecidas por disparar alarmes em AVs/EDRs. Este programa usa a função da API do Windows chamada UuidFromStringA, que pode ser usada para decodificar dados e também escrevê-los na memória (Não é ótimo, pessoal? E por favor, não digam "NÃO!" :)).xor (linha 85) para o que desejar. Isso também deve ser feito no script Python3 ./xor_encryptor.py, alterando a variável KEY. As chaves devem coincidir!executable filename (linha 90) para o nome do seu arquivo.mingw, mas você pode usar o compilador de sua preferência. :)make


O binário foi escaneado usando antiscan.me em 01/08/2022.
