Metasploit básico - Reverse shell

Iniciado por ANTRAX, Mayo 24, 2017, 08:22:58 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.


A lo largo de esta entrada vamos a hablar de una herramienta fundamental para cualquier auditor a la hora de la realización de un pentesting: Metasploit. Con esta herramienta, vamos a proceder a generar un payload (o shellcode) que será ejecutado en una máquina víctima y que, tras la correspondiente configuración de metasploit, nos generaría una shell de la misma. Pero antes.... vamos a hablar un poco de qué es metasploit, para aquellos que no conozcan la herramienta.

Metasploit es un proyecto open source de seguridad informática que proporciona información acerca de vulnerabilidades de seguridad y resulta muy útil durante los tests de penetración o pentesting. El proyecto más conocido es el Metasploit Framework, una herramienta para desarrollar y ejecutar exploits (fragmento de software, fragmento de datos o secuencia de comandos y/o acciones utilizada con el fin de aprovechar una vulnerabilidad de seguridad de un sistema de información) contra una máquina remota. Otras de las funcionalidades de esta herramienta son: base de datos de payload, herramientas para recolectar información y escanear en busca de vulnerabilidades.

Los pasos básicos a seguir para explotar vulnerabilidades usando Metasploit son:

    Elegir y configurar el exploit (como hemos dicho, código que permite explotar la vulnerabilidad de un sistema).
    Confirmar si el objetivo es susceptible al exploit elegido (este paso es opcional).
    Elegir y configurar el payload (código que se ejecuta una vez explotemos la vulnerabilidad).
    Elegir la técnica de encode o codificación para que el payload no sea detectados por los elementos de seguridad del equipo (también es opcional aunque recomendable).
    Ejecutar el exploit.

Para la realización de éstas y otras acciones, metasploit incorpora las siguientes herramientas:

    msfconsole: línea de comandos de Metasploit.
    msfcli: interfaz que permite lanzar un módulo concreto mediante su configuración en la misma ejecución de la aplicación.
    msfgui: interfaz gráfica de Metasploit.
    msfd: servicio que queda a la escucha de recibir conexiones para ofrecer una línea de comandos en remoto.
    msfbinscan: permite realizar búsquedas en ejecutables de instrucciones de salto, instrucciones POP,...
    msfpescan: permite realizar un análisis sobre DLLs y obtener la dirección de retorno deseada para que la shellcode se ejecute.
    msfpayload: permite generar payloads en distintos lenguajes de programación, pudiendo embeberlos en ejecutables Windows o binarios de UNIX.
    msfencode: permite ofuscar el código del payload para evitar su detección.
    msfvenom: es la unión de msfpayload y msfencode.
    msfupdate: se utiliza para actualizar el framework.

Además de estas herramientas, metasploit se compone de distintos módulos. Estos módulos son:

    Módulo auxiliary: permite la interacción de herramientas externas, como pueden ser escaners de vulnerabilidades, sniffers,...
    Módulo encoders: nos proporciona los diferentes algoritmos para codificar y ofuscar los payloads.
    Módulo exploits: aquí se encuentran todos los exploits disponibles en el framework.
    Módulo payloads: multitud de códigos que se ejecutan una vez tenga éxito el exploit.
    Módulo post: funcionalidades para la fase de post explotación durante un pentesting.
    Módulo nops: permite realizar u obtener operaciones nop.

Una vez realizada una introducción sobre la herramienta, vamos a pasar a comentar la prueba de concepto que se va a realizar. La idea es, generar un payload que tras ser ejecutado en la máquina víctima, nos genere una shell meterpreter (explicaremos más adelante qué es) en la máquina atacante. Para ello, tenemos el siguientes escenario:

    Máquina Victima con sistema operativo Windows 7 y dirección IP 192.168.0.202 Para ahorrarnos tiempo, tendremos el antivirus desactivado, por lo que no realizaremos la fase de encode.
    Máquina Atacante con Kali Linux 2 y direccion IP, dentro de la misma red, 192.168.0.192.

En primer lugar, vamos a arrancar la consola de Metasploit para hacernos una idea de la dimensión de esta herramienta. En la consola de Kali, ejecutamos msfconsole:


Como vemos, Metasploit consta de:

    1496 exploits.
    862 auxiliary.
    251 post.
    432 payloads.
    37 encoders.
    8 nops.

Para nuestra prueba de concepto, en un principio, nos interesan ver los payloads disponibles, ya que es lo primero que vamos a generar, y esto se consigue con el comando (dentro de msfconsole) show payloads.


Si observamos la lista (no completa en la imagen), existen payloads para windows, linux, java, php y un largo etcétera. Nosotros nos vamos a centrar en los payloads disponibles para Windows.
Nuestro objetivo, tras la ejecución del payload, es obtener una shell del equipo de la víctima. Como es obvio, esto lo podemos conseguir utilizando algún payload del windows/shell/... Con esto, obtendríamos una shell de Windows del equipo víctima. Además de esto, Metasploit nos permite la opción de generar una consola propia, más potente y con más funcionalidad, que nos permite subir y descargar ficheros, ejecutar binarios, descargar la SAM del equipo (si tenemos los privilegios necesarios)... y por supuesto, generar una shell de Windows. Esta consola se llama Meterpreter, y es la que vamos a utilizar para nuestro ejemplo.
Por otro lado, dentro de la opción de meterpreter, existen distintas formas de generar la conexión divididas, básicamente, en dos tipos:

    Bind (o directa): con esta opción, una vez ejecutado el payload en el equipo de la víctima, desde éste se emite una "señal" al atacante para realizar la conexión, siendo éste último quien la efectúa; es decir, es el atacante quien realiza la conexión contra el equipo de víctima. El problema de utilizar este tipo de paylaod es que, en la mayoría de los casos, las reglas definidas para los Firewalls entrantes pueden bloquear el tráfico (se tiene más miedo de lo que entra que de lo que sale), por lo que es posible que esta conexión no llegue a establecerse.
    Reverse (o inversa): en este caso, una vez ejecutado el payload en el equipo de la víctima, es éste quien realiza la conexión contra el equipo del atacante. Estos casos suelen tener más éxito debido a que la configuración de las reglas en los Firewalls de salida suelen ser más laxas.

Dicho esto, el payload elegido es windows/meterpreter/reverse_tcp.
La herramienta que se va a utilizar para generar este payload es msfvenom sin hacer uso de la opción de encoder. En la siguiente imagen, se puede observar el comando utilizado para generar dicho payload:


Las opciones utilizadas son:

    -p: para indicar qué payload se va a utilizar.
    -f: para indicar qué tipo de extensión de salida vamos a generar. En nuestro caso un .exe.
    LHOST: donde se indica la dirección contra la que se tiene que efectuar la conexión; es decir, el equipo atacante.
    LPORT: el puerto al que se tiene que tiene que ir dirigido la conexión realiza desde el equipo víctima.

Con este, obtenemos nuestro ejecutable para Windows. El cómo hacer llegar el mismo a la víctima queda para vuestra imaginación.
Una vez tenemos nuestro ejecutable, el siguiente paso es configurar la recepción de la consola en Metasploit. Para ello, una vez iniciada la consola de Metasploit, usamos el comando use /exploit/multi/handler donde configuraremos la recepción de nuestra consola meterpreter.


A continuación, debemos setear el payload del que vamos a hacer uso, que en nuestro caso es windows/meterpreter/reverse_tcp


Con el comando show options, podemos ver qué características podemos modificar. A nosotros nos interesa modificar el LHOST y el LPORT (por defecto está el 4444). Con el comando set LHOST Dirección_IP modificamos la dirección donde se conecta la máquina víctima.


Configurado Metasploit para recibir la conexión, ejecutamos el comando exploit (o exploit -j para ejecutar en segundo plano) y permanecemos a la espera.


Cuando la víctima ejecute el payload, en el equipo del atacante se recibe una sesión de meterpreter, con la que podemos realizar, como ya se ha comentado, diferentes acciones. Con el comando help, se pueden ver las distintas opciones de meterpreter.


Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Buen aporte!
Hubiera estado bien comentar que metasploit usa la base de datos Postgresql y el comando para iniciarlo "service postgresql start"

Muy bueno... Gracias por este post 8) ;D
<?php
$coder = 'me';

print ("$coder");
?>