• Syringe: Um Processo de ShellCode/DLL Injector

    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/