
Depurar rapidamente shellcode extraído durante análise de malware
BlobRunner é uma ferramenta simples para depurar rapidamente shellcode extraído durante análises de malware.
O BlobRunner aloca memória para o arquivo alvo e salta para a base (ou offset) da memória alocada. Isso permite
que um analista depure rapidamente artefatos extraídos com mínimo esforço e sobrecarga.

Para usar o BlobRunner, você pode baixar o executável compilado na página de releases ou compilar o seu próprio usando as etapas abaixo.
Compilar o executável é direto e relativamente indolor.
Requisitos
Etapas de compilação
cl blobrunner.c
Compilar a versão x64 é virtualmente igual ao anterior, mas simplesmente usa as ferramentas x64.
cl /Feblobrunner64.exe /Foblobrunner64.out blobrunner.c
Para depurar:
BlobRunner.exe shellcode.bin
Depurar em um arquivo em um offset específico.
BlobRunner.exe shellcode.bin --offset 0x0100
Depurar em um arquivo e não pausar antes do salto. Aviso: Certifique-se de que você configurou um ponto de interrupção antes do salto.
BlobRunner.exe shellcode.bin --nopause
O parâmetro opcional --jit pode ser usado para depurar o shellcode com o depurador Just-In-Time (JIT) configurado.
Para acionar o depurador - o BlobRunner remove o acesso de execução da região de memória recém-alocada. Isso faz com que o programa levante
uma exceção de AccessViolation (0xC0000005) ao tentar executar o shellcode carregado.
As instruções para configurar o depurador JIT no Windows podem ser encontradas aqui. Para x64Dbg veja setjit ou setjitauto.
Exemplo:
BlobRunner.exe shellcode.bin --jit
Uma vez que o depurador esteja carregado, conceda acesso de execução à região. Usando x64Dbg você pode executar o comando setpagerights usando o endereço retornado pelo BlobRunner.
setpagerights <região>, ExecuteReadWrite
Assembly inline não é suportado pelo compilador x64, então, para suportar a depuração de shellcode x64, o loader cria uma thread suspensa que permite colocar um ponto de interrupção na entrada da thread, antes que a thread seja retomada.
O processo é virtualmente idêntico à depuração local de shellcode - com a exceção de que você precisa copiar o arquivo de shellcode para o sistema remoto. Se o arquivo for copiado para o mesmo caminho de onde você está executando o win32_remote.exe, você precisa usar o nome do arquivo para o parâmetro. Caso contrário, você precisará especificar o caminho para o arquivo de shellcode no sistema remoto.
Você pode rapidamente gerar amostras de shellcode usando a ferramenta Metasploit msfvenom.
Gerando um payload simples de execução no Windows.
msfvenom -a x86 --platform windows -p windows/exec cmd=calc.exe -o test2.bin