Automating Payloads & Delivery with Metasploit
Metasploit es un marco de ataque automatizado desarrollado por Rapid7 que agiliza el proceso de explotación de vulnerabilidades a través del uso de módulos preconstruidos que contienen opciones fáciles de usar para explotar vulnerabilidades y entregar payloads con el fin de obtener una shell en un sistema vulnerable. Puede hacer que explotar un sistema vulnerable sea tan fácil que algunos proveedores de capacitación en ciberseguridad limitan la cantidad de veces que se puede utilizar en exámenes de laboratorio. Aquí en Hack The Box, fomentamos la experimentación con herramientas en nuestros entornos de laboratorio hasta que tengas una comprensión sólida y fundamental. La mayoría de las organizaciones no nos limitarán en qué herramientas podemos o no usar en un compromiso. Sin embargo, esperarán que sepamos lo que estamos haciendo. Por lo tanto, es nuestra responsabilidad buscar una comprensión a medida que aprendemos. No entender los efectos de las herramientas que utilizamos puede ser destructivo en una prueba de penetración o auditoría en vivo. Esta es una de las principales razones por las que debemos buscar constantemente una comprensión más profunda de las herramientas, técnicas, metodologías y prácticas que aprendemos.
Interactuaremos con la edición comunitaria de Metasploit en Pwnbox. Utilizaremos módulos preconstruidos y crearemos payloads con MSFVenom. Es importante notar que muchas empresas de ciberseguridad establecidas utilizan la edición de pago de Metasploit, llamada Metasploit Pro, para llevar a cabo pruebas de penetración, auditorías de seguridad e incluso campañas de ingeniería social. Si deseas explorar las diferencias entre la edición comunitaria y Metasploit Pro, puedes consultar esta tabla de comparación.
Practicando con Metasploit
Podríamos pasar el resto de este módulo cubriendo todo sobre Metasploit, pero solo vamos a ir tan lejos como trabajar con lo básico en el contexto de shells y payloads.
Comencemos a trabajar de manera práctica con Metasploit lanzando la consola del marco Metasploit como root (sudo msfconsole
).
Iniciando MSF
Podemos ver que se presenta un arte ASCII creativo como banner al inicio y algunos números de particular interés:
2131 exploits
592 payloads
Estos números pueden cambiar a medida que los mantenedores agregan y eliminan código o si importas un módulo para usar en Metasploit. Familiaricémonos con los payloads de Metasploit utilizando un módulo de explotación clásico que se puede usar para comprometer un sistema Windows. Recuerda que Metasploit se puede usar para más que solo explotación. También podemos utilizar diferentes módulos para escanear y enumerar objetivos.
En este caso, utilizaremos los resultados de enumeración de un escaneo de nmap para seleccionar un módulo de Metasploit para usar.
Escaneo NMAP
En la salida, vemos varios puertos estándar que suelen estar abiertos en un sistema Windows de forma predeterminada. Recuerda que escanear y enumerar es una excelente manera de conocer qué sistema operativo (Windows o Linux) está ejecutando nuestro objetivo para encontrar un módulo apropiado para ejecutar con Metasploit. Optaremos por SMB (escuchando en 445) como el vector de ataque potencial.
Una vez que tengamos esta información, podemos usar la funcionalidad de búsqueda de Metasploit para descubrir módulos que están asociados con SMB. En el msfconsole, podemos emitir el comando search smb
para obtener una lista de módulos asociados con las vulnerabilidades de SMB.
Buscando dentro de Metasploit
Veremos una larga lista de módulos coincidentes asociados con nuestra búsqueda. Nota el formato en que está cada módulo. Cada módulo tiene un número listado en el extremo izquierdo de la tabla para facilitar la selección del módulo, un Nombre, Fecha de divulgación, Rango, Comprobación y Descripción.
El número a la
izquierda
de cada módulo potencial es un número relativo basado en tu búsqueda que puede cambiar a medida que se añaden módulos a Metasploit. No esperes que este número coincida cada vez que realices la búsqueda o intentes usar el módulo.
Veamos un módulo en particular para entenderlo dentro del contexto de los payloads.
Módulo: 56 exploit/windows/smb/psexec
56 exploit/windows/smb/psexec
Una vez que seleccionemos el módulo, notaremos un cambio en el prompt que nos da la capacidad de configurar el módulo basado en parámetros específicos de nuestro entorno.
Selección de Opciones
Nota cómo "exploit" está fuera de los paréntesis. Esto puede interpretarse como que el tipo de módulo de MSF es un exploit, y el exploit específico y el payload están escritos para Windows. El vector de ataque es SMB, y el payload de Meterpreter se entregará usando psexec. Aprendamos más sobre cómo usar este exploit y entregar el payload usando el comando options
.
Examinando las Opciones de un Exploit
Opciones del módulo (exploit/windows/smb/psexec):
Opciones del payload (windows/meterpreter/reverse_tcp):
Objetivo del exploit:
Esta es una de las áreas donde Metasploit brilla en términos de facilidad de uso. En la salida de las opciones del módulo, vemos varias opciones y configuraciones con una descripción de lo que significa cada configuración. No utilizaremos SERVICE_DESCRIPTION
, SERVICE_DISPLAY_NAME
y SERVICE_NAME
en esta sección. Nota cómo este exploit en particular utilizará una conexión de shell TCP inversa que utiliza Meterpreter. Un shell de Meterpreter nos brinda muchas más funcionalidades que un shell TCP inverso sin procesar, como establecimos en las secciones anteriores de este módulo. Es el payload predeterminado que se utiliza en Metasploit.
Queremos utilizar el comando set
para configurar las siguientes opciones de la siguiente manera:
Configuración de Opciones
Automatización de Payloads y Entrega con Metasploit
Estas configuraciones asegurarán que nuestro payload se entregue al objetivo correcto (RHOSTS), se suba al recurso compartido administrativo predeterminado (ADMIN$) utilizando las credenciales (SMBPass y SMBUser), y luego inicie una conexión de shell inverso con nuestra máquina local (LHOST).
Estas configuraciones serán específicas para la dirección IP en tu máquina de ataque y en la máquina objetivo, así como con las credenciales que puedas recopilar en un compromiso. Podemos establecer la dirección IP del túnel VPN de LHOST (máquina local) o el ID de interfaz del túnel VPN.
Exploits en marcha
Automatización de Payloads y Entrega con Metasploit
Después de emitir el comando exploit
, se ejecuta el exploit y se intenta entregar el payload en el objetivo utilizando el payload de Meterpreter. Metasploit informa cada paso de este proceso, como se ve en la salida. Sabemos que esto fue exitoso porque se envió una etapa con éxito, lo que estableció una sesión de shell de Meterpreter (meterpreter >) y una sesión de shell a nivel de sistema. Ten en cuenta que Meterpreter es un payload que utiliza inyección DLL en memoria para establecer de manera sigilosa un canal de comunicación entre una máquina de ataque y un objetivo. Las credenciales adecuadas y el vector de ataque pueden darnos la capacidad de cargar y descargar archivos, ejecutar comandos del sistema, ejecutar un keylogger, crear/iniciar/detener servicios, gestionar procesos, y más.
En este caso, como se detalla en la documentación del módulo de Rapid 7: "Este módulo utiliza un nombre de usuario y contraseña de administrador válidos (o hash de contraseña) para ejecutar un payload arbitrario. Este módulo es similar a la utilidad "psexec" proporcionada por SysInternals. Este módulo ahora puede limpiarse después de sí mismo. El servicio creado por esta herramienta utiliza un nombre y descripción elegidos al azar."
Al igual que otros intérpretes de lenguaje de comandos (Bash, PowerShell, ksh, etc.), las sesiones de shell de Meterpreter nos permiten emitir un conjunto de comandos que podemos usar para interactuar con el sistema objetivo. Podemos usar ?
para ver una lista de comandos que podemos utilizar. Notaremos limitaciones con la shell de Meterpreter, por lo que es bueno intentar usar el comando shell
para acceder a una shell a nivel de sistema si necesitamos trabajar con el conjunto completo de comandos nativos de nuestro objetivo.
Shell Interactiva
Last updated