Shellcodeexec,sendo do conhecimento de todos os que trabalham com testes de invasão, ferramentas de segurança e realizam atividades afins, pode ser classificado como um pequeno script para executar na memória uma seqüência de opcodes. O que ele faz é gerar um novo segmento onde o shellcode seja executado em um Structure Exception Handler (SEH).
O Syringe, de quem vamos falar neste texto, é um utilitário de propósito geral para a plataforma Windows. Ele suporta injeção de DLLs, e shellcode em processos de execução remota, e através do mesmo método de shellcodeexec. Pode ser muito útil para executar Metasploit payloads enquanto ignora muitas implementações populares de anti-vírus, além de executar DLLs personalizadas.
A técnica implementada por Syringe ocorre da seguinte forma: é aberto um identificador para o processo remoto, há a uitilização do VirtualAllocEx para alocar a memória no processo de controle remoto com as permissões necessárias para ler, escrever e executar. Dessa forma, Então é utilizado o WriteProcessMemory para copiar o shellcode para o buffer remoto. A partir daí, é necessário utilizar novamente o VirtualAllocEx para a alocação de memória com o esboço de montagem.
Além disso, o esboço de montagem é iniciado através de CreateRemoteThread, com um ponteiro para este esboço, como a função de executar e um ponteiro para o shellcode remoto como o argumento.
A utilização de Syringe é muito fácil: Injeção de uma DLL
syringe.exe -1 [ dll ] [ pid ]
Injetando ShellCode:
syringe.exe -2 [ shellcode ] [ pid ]
Executando ShellCode:
syringe.exe -3 [shellcode]
Syringe, além de ser uma ferramenta muito boa, é de código aberto.
Saiba Mais:
[1] Secure Estate/Syringe: http://www.securestate.com/Documents/syringe.c
[2] PentestIT: http://www.pentestit.com/2011/07/03/...edll-injector/