Saltar al contenido
Portada » Blog – Laprovittera Carlos » TryHackMe –  Metasploit: Meterpreter

TryHackMe –  Metasploit: Meterpreter

Hola hacketones! Bienvenidos a un nuevo CTF para la Certificación SEC1 de la ruta Cyber Security 101 de TryHackMe –  Metasploit: Meterpreter

Tarea 1 Introducción a Meterpreter

Meterpreter es un Payload de Metasploit que respalda el proceso de pruebas de penetración con muchos componentes valiosos.Meterpreterse ejecutará en el sistema de destino y actuará como un agente dentro de una arquitectura de comando y control. Interactuará con el sistema operativo y los archivos de destino y utilizaráMeterpretercomandos especializados.

Tiene muchas versiones que ofrecen diferentes funcionalidades según el sistema de destino.

¿Cómo lo hace?

Meterpreter  se ejecuta en el sistema de destino, pero no se instala en él. Se ejecuta en memoria y no se escribe en el disco del sistema de destino. Esta función tiene como objetivo evitar ser detectada durante los análisis antivirus. Por defecto, la mayoría de los programas antivirus analizan los archivos nuevos en el disco (por ejemplo, cuando se descarga un archivo de internet).Meterpreterse ejecuta en memoria (RAM- Memoria de acceso aleatorio) para evitar tener un archivo que deba escribirse en el disco del sistema de destino (por ejemplomedidor.exe). De esta manera,MeterpreterSe considerará un proceso y no tendrá un archivo en el sistema de destino.

También tiene como objetivo evitar ser detectado por sistemas basados ​​en la red.IPS(Sistema de prevención de intrusiones) yIDSSoluciones de (Sistema de detección de intrusiones) mediante el uso de comunicación cifrada con el servidor dondeMetasploitse ejecuta (normalmente su máquina atacante). Si la organización objetivo no descifra e inspecciona el tráfico cifrado (por ejemplo, HTTPS) que entra y sale de la red local,IPSyIDSLas soluciones no podrán detectar sus actividades.

Mientras esta función, al ser reconocida por los principales programas antivirus, proporciona cierto grado de sigilo.

El siguiente ejemplo muestra una máquina Windows objetivo explotada utilizando la vulnerabilidad MS17-010. Verá:Meterpreterse está ejecutando con un ID de proceso (PID) de 1304; estePIDEn tu caso será diferente. Hemos utilizado el getpid comando que devuelve el ID del proceso con el que se está ejecutando Meterpreter. El ID del proceso (o identificador de proceso) es utilizado por los sistemas operativos para identificar los procesos en ejecución. Todos los procesos que se ejecutan en Linux o Windows tienen un número de identificación único; este número se utiliza para interactuar con el proceso cuando sea necesario (por ejemplo, si hay que detenerlo).

Getpid

meterpreter > getpid
Current pid: 1304

Si listamos los procesos que se ejecutan en el sistema de destino usando el  ps comando, vemos que el PID 1304 es spoolsv.exe y no Meterpreter.exe, como cabría esperar.

Incluso si fuéramos un paso más allá y analizáramos las DLL (bibliotecas de vínculos dinámicos) utilizadas por elMeterpreterproceso (PID1304 en este caso), todavía no encontraríamos nada que nos llame la atención (por ejemplo, nomedidor.dll)

Técnicas y herramientas que se pueden utilizar para detectarMeterpreterestán fuera del alcance de esta sala. Esta sección tenía como objetivo mostrarle cómo sigilosamenteMeterpreterEstá en funcionamiento; recuerda que la mayoría de los programas antivirus lo detectarán.

También cabe destacar queMeterpreterestablecerá una encriptación (TLS) canal de comunicación con el sistema del atacante.

Tarea 2 Sabores de Meterpreter

Como se discutió en el artículo anteriorMetasploithabitaciones, enlace abajo,MetasploitLas cargas útiles se pueden dividir inicialmente en dos categorías: en línea (también llamadas únicas) y por etapas.

Introducción aMetasploit:   https://www.tryhackme.com/jr/metasploitintro

Escaneo y explotación conMetasploit:   https://www.tryhackme.com/jr/metasploitexploitation

Como recordará, las cargas útiles escalonadas se envían al objetivo en dos pasos. Se instala una parte inicial (el escalonador) y solicita ladescansarde la carga útil. Esto permite un tamaño de carga útil inicial más pequeño. Las cargas útiles en línea se envían en un solo paso.MeterpreterLas cargas útiles también se dividen en versiones escalonadas y en línea. Sin embargo,MeterpreterDispone de una amplia gama de versiones diferentes entre las que puede elegir en función de su sistema de destino. 

La forma más fácil de tener una idea de lo disponibleMeterpreterLas versiones podrían listarse usando msfvenom, como se muestra a continuación. 

Hemos usado el msfvenom –list payloads comando y filtrado las cargas útiles de «meterpreter» (añadiéndolas | grep meterpretera la línea de comandos), por lo que la salida solo muestra estas. Puedes probar este comando en AttackBox. 

La lista mostraráMeterpreterVersiones disponibles para las siguientes plataformas;

  • Android
  • iOS
  • Java
  • Linux
  • OSX
  • PHP
  • Python
  • Windows

Su decisión sobre qué versión deMeterpreterSu uso se basará principalmente en tres factores;

  • El sistema operativo de destino (¿Es el sistema operativo de destino?)Linux¿O Windows? ¿Es un dispositivo Mac? ¿Es un teléfono Android? etc.)
  • Componentes disponibles en el sistema de destino (¿Está instalado Python? ¿Es un sitio web PHP? etc.)
  • Tipos de conexión de red que puede tener con el sistema de destino (¿Permiten conexiones TCP sin procesar? ¿Solo se puede tener una conexión inversa HTTPS? ¿Las direcciones IPv6 no se supervisan tan de cerca como las direcciones IPv4? etc.) 

Si no estás usandoMeterpreterComo una carga útil independiente generada por Msfvenom, su elección también puede estar limitada por el exploit. Notará que algunos exploits tendrán una configuración predeterminada.Meterpretercarga útil, como puede verse en el ejemplo siguiente con el ms17_010_eternalblueexploit. 

Tarea 3 Comandos de Meterpreter

Al escribir help en cualquier sesión de Meterpreter (que se muestra en meterpreter>el indicador), se mostrarán todos los comandos disponibles.

Cada versión deMeterpreterTendrá diferentes opciones de comando, por lo que ejecutar el  help comando siempre es una buena idea. Los comandos son herramientas integradas disponibles en Meterpreter. Se ejecutarán en el sistema de destino sin cargar ningún script o archivo ejecutable adicional.

Meterpreter le proporcionará tres categorías principales de herramientas;

  • Comandos integrados
  • Herramientas Meterpreter
  • Programación de Meterpreter

Si ejecutas el help comando, verásMeterpreterLos comandos se clasifican en diferentes categorías.

  • Comandos básicos
  • Comandos del sistema de archivos
  • comandos de red
  • Comandos del sistema
  • comandos de la interfaz de usuario
  • Comandos de la cámara web
  • comandos de salida de audio
  • comandos de elevación
  • Comandos de la base de datos de contraseñas
  • Comandos de Timestomp

Tenga en cuenta que la lista anterior se obtuvo del resultado del help comando en la versión de Meterpreter para Windows (windows/x64/meterpreter/reverse_tcp). Esta lista será diferente para otras versiones de Meterpreter.

Comandos de Meterpreter

Los comandos básicos serán útiles para navegar e interactuar con el sistema objetivo. A continuación, se muestran algunos de los más utilizados. Recuerde comprobar todos los comandos disponibles ejecutando el comando `help` una vez iniciada la sesión de Meterpreter.

Comandos básicos

  • backgroundAntecedentes de la sesión actual
  • exitFinalizar la sesión de Meterpreter
  • guid: Obtener el GUID de la sesión (Identificador Único Global)
  • help: Muestra el menú de ayuda
  • info: Muestra información sobre un módulo de publicación
  • irb: Abre una consola interactiva de Ruby en la sesión actual.
  • load: Carga una o más extensiones de Meterpreter
  • migrate: Te permite migrarMeterpretera otro proceso
  • run: Ejecuta un script de Meterpreter o un módulo posterior.
  • sessions: Cambia rápidamente a otra sesión

Comandos del sistema de archivos

  • cd: Cambiará de directorio
  • ls: Mostrará los archivos en el directorio actual (también funcionará con `dir`).
  • pwd: Imprime el directorio de trabajo actual
  • edit: te permitirá editar un archivo
  • cat: Mostrará el contenido de un archivo en la pantalla.
  • rm: Eliminará el archivo especificado
  • search: Buscará archivos
  • upload: Subirá un archivo o directorio
  • download: Descargará un archivo o directorio

comandos de red

  • arp: Muestra el hostARPcaché (Protocolo de resolución de direcciones)
  • ifconfigMuestra las interfaces de red disponibles en el sistema de destino.
  • netstatMuestra las conexiones de red.
  • portfwd: Reenvía un puerto local a un servicio remoto
  • route: Permite ver y modificar la tabla de enrutamiento

Comandos del sistema

  • clearevBorra los registros de eventos.
  • execute: Ejecuta un comando
  • getpid: Muestra el identificador del proceso actual
  • getuid: Muestra al usuario que Meterpreter se está ejecutando como
  • kill: Finaliza un proceso
  • pkill: Finaliza procesos por nombre
  • ps: Enumera los procesos en ejecución
  • rebootReinicia el equipo remoto.
  • shell: Se abre una consola de comandos del sistema
  • shutdownApaga el ordenador remoto.
  • sysinfoObtiene información sobre el sistema remoto, como el sistema operativo.

Otros comandos (estos aparecerán listados en diferentes categorías del menú de ayuda).

  • idletimeDevuelve el número de segundos que el usuario remoto ha estado inactivo.
  • keyscan_dump: Vuelca el búfer de pulsaciones de teclas
  • keyscan_start: Comienza a capturar las pulsaciones de teclas
  • keyscan_stopDeja de capturar las pulsaciones de teclas.
  • screensharePermite ver el escritorio del usuario remoto en tiempo real.
  • screenshot: Captura una captura de pantalla del escritorio interactivo
  • record_mic: Graba audio desde el micrófono predeterminado durante X segundos
  • webcam_chat: Inicia una videollamada
  • webcam_listListado de cámaras web
  • webcam_snapToma una instantánea de la cámara web especificada.
  • webcam_streamReproduce una transmisión de video desde la cámara web especificada.
  • getsystem: Intenta elevar tu privilegio al nivel del sistema local.
  • hashdump: Vuelca el contenido de la base de datos SAM

Aunque todos estos comandos parezcan estar disponibles en el menú de ayuda, es posible que no todos funcionen. Por ejemplo, el sistema de destino podría no tener una cámara web o podría estar ejecutándose en un equipo de laboratorio sin un entorno de escritorio adecuado.

Tarea 4 Post-explotación con Meterpreter

Meterpreter te proporciona muchos comandos útiles que facilitan la fase posterior a la explotación. A continuación, te mostramos algunos ejemplos que usarás con frecuencia.

Ayuda

Este comando le dará una lista de todos los comandos disponibles enMeterpreterComo hemos visto anteriormente,Meterpretertiene muchas versiones, y cada versión puede tener diferentes opciones disponibles. Ayuda de escritura una vez que tenga unaMeterpreterLa sesión te ayudará a explorar rápidamente los comandos disponibles.

Comandos

El getuid comando mostrará el usuario con el que se está ejecutando Meterpreter. Esto le dará una idea de su posible nivel de privilegios en el sistema de destino (por ejemplo, ¿es un usuario con nivel de administrador como NT AUTHORITY\SYSTEM o un usuario normal?).

El comando getuid

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >

El  pscomando mostrará los procesos en ejecución. La columna PID también le proporcionará la información PID que necesitará para migrar Meterpreter a otro proceso.

Emigrar

Migrar a otro proceso ayudaráMeterpreterinteractuar con él. Por ejemplo, si ve un procesador de texto ejecutándose en el objetivo (por ejemplo, word.exe, notepad.exe, etc.), puede migrar a él y comenzar a capturar las pulsaciones de teclas enviadas por el usuario a este proceso. AlgunosMeterpreterLas versiones te ofrecerán las opciones de comando keyscan_start, keyscan_stop, y keyscan_dumppara que Meterpreter funcione como un registrador de pulsaciones de teclas. Migrar a otro proceso también puede ayudarte a tener una sesión de Meterpreter más estable.

Para migrar a cualquier proceso, debe escribir el comando migrate seguido del PID del proceso de destino deseado. El siguiente ejemplo muestra a Meterpreter migrando al proceso con ID 716. 

El comando migrate

meterpreter > migrate 716
[*] Migrating from 1304 to 716…
[*] Migration completed successfully.
meterpreter >

Tenga cuidado; podría perder sus privilegios de usuario si migra de un usuario con mayores privilegios (por ejemplo, SYSTEM) a un proceso iniciado por un usuario con menores privilegios (por ejemplo, webserver). Es posible que no pueda recuperarlos.

Volcado de hash

El hashdump comando mostrará el contenido de la base de datos SAM. La base de datos SAM (Security Account Manager) almacena las contraseñas de los usuarios en sistemas Windows. Estas contraseñas se almacenan en formato NTLM ( New Technology LAN Manager) .

El comando hashdump

meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Jon:1000:aad3b435b51404eeaad3b435b51404ee:ffb43f0de35be4d9917ac0cc8ad57f8d:::
meterpreter >

Aunque no es matemáticamente posible «descifrar» estos hashes, aún puedes descubrir la contraseña en texto plano utilizando herramientas en línea.NTLMbases de datos o un ataque de tabla arcoíris. Estos hashes también se pueden usar en ataques Pass-the-Hash para autenticar en otros sistemas que estos usuarios pueden acceder a la misma red.

Buscar

Este search comando es útil para localizar archivos con información potencialmente valiosa. En un contexto de CTF (Capture The Flag), se puede usar para encontrar rápidamente un archivo de prueba o una bandera, mientras que en pruebas de penetración reales, es posible que necesite buscar archivos generados por el usuario o archivos de configuración que puedan contener contraseñas o información de cuentas.

El comando de búsqueda

meterpreter > search -f flag2.txt
Found 1 result…
    c:\Windows\System32\config\flag2.txt (34 bytes)
meterpreter >

Shell

El comando shell iniciará un intérprete de comandos normal en el sistema de destino. Al presionar CTRL+Z podrá volver al intérprete de comandos.Meterpretercaparazón.

El comando de shell

meterpreter > shell
Process 2124 created.
Channel 1 created.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Windows\system32>

Task 5 Post-Exploitation Challenge

MeterpreterProporciona varias herramientas importantes posteriores a la explotación.

Para comenzar, pulse el botón » Iniciar máquina de laboratorio» que aparece a continuación.

Inicie AttackBox pulsando el botón «Iniciar AttackBox» situado en la parte superior de esta página. La máquina AttackBox se iniciará en vista de pantalla dividida. Si no la ve, utilice el botón azul « Mostrar vista dividida» situado en la parte superior de la página.

Los comandos mencionados anteriormente, como getsystemy , hashdumpproporcionarán información y ventajas importantes para la escalada de privilegios y el movimiento lateral. Meterpreter también es una buena base para ejecutar módulos de post-explotación disponibles en el framework Metasploit. Finalmente, también puedes usar el comando load para aprovechar herramientas adicionales como Kiwi o incluso el lenguaje Python completo.

Cargando Python

meterpreter > load python
Loading extension python…Success.
meterpreter > python_execute «print ‘TryHackMe Rocks!'»
[+] Content written to stdout:
TryHackMe Rocks!

meterpreter >

La fase posterior a la explotación tendrá varios objetivos;Meterpretertiene funciones que pueden ayudarlos a todos.

  • Recopilar más información sobre el sistema objetivo.
  • Se buscan archivos interesantes, credenciales de usuario, interfaces de red adicionales e información general de interés sobre el sistema objetivo.
  • Escalada de privilegios.
  • Movimiento lateral.

Una vez que se carga cualquier herramienta adicional mediante el load comando, verá nuevas opciones en el help menú. El siguiente ejemplo muestra los comandos agregados para el módulo Kiwi (mediante el load kiwicomando).

Cargando kiwi

meterpreter > load kiwi
Loading extension kiwi…
  .#####.   mimikatz 2.2.0 20191125 (x64/windows)
 .## ^ ##.  «A La Vie, A L’Amour» – (oe.eo)
 ## / \ ##  /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 ## \ / ##       > http://blog.gentilkiwi.com/mimikatz
 ‘## v ##’        Vincent LE TOUX            ( vincent.letoux@gmail.com )
  ‘#####’         > http://pingcastle.com / http://mysmartlogon.com  ***/

Success.

Estos valores cambiarán según el menú cargado, por lo que ejecutar el help comando después de cargar un módulo siempre es una buena idea.

Las siguientes preguntas te ayudarán a comprender mejor cómoMeterpreterPuede utilizarse en la fase posterior a la explotación.

Puedes usar las credenciales a continuación para simular una vulneración inicial.PYME(Bloque de mensajes del servidor) (usando exploit/windows/pymes/psexec)

Nombre de usuario: ballen

Contraseña: Password1

Responda las siguientes preguntas

¿Cuál es el nombre del ordenador?

ACME-TEST

¿Cuál es el dominio objetivo?

FLASH

¿Cuál es el nombre del recurso compartido que probablemente creó el usuario?

speedster

¿Cuál es el hash NTLM del usuario jchambers?

69596c7aa1e8daee17f8e78870e25a5c

¿Cuál es la contraseña en texto plano del usuario jchambers?

Trustno1

¿Dónde se encuentra el archivo «secrets.txt»? (Ruta completa del archivo)

c:\Program Files (x86)\Windows Multimedia Platform\secrets.txt

¿Cuál es la contraseña de Twitter que se revela en el archivo «secrets.txt»?

KDSvbsw3849!

¿Dónde se encuentra el archivo «realsecret.txt»?  (Ruta completa del archivo)

c:\inetpub\wwwroot\realsecret.txt

¿Cuál es el verdadero secreto?

The Flash is the fastest man alive

Deja una respuesta

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