4.2.3. Servicios y puertos Metasploit Framework
Servicios y complementos de Metasploit
Metasploit requiere el uso de diferentes servicios que funcionan como extensiones para poder llevar a cabo las tareas de pruebas de penetración en un sistema informático. Al usar estos servicios esto significa que la máquina en la que opera el framework va a necesitar abrir puertos. A continuación la descripción de algunos de estos servicios o como se implementan y finalmente cuestiones que hay que tener en cuenta al utilizar Metasploit en Internet.
4.2.3.1. Base de datos PostgreSQL
La base de datos de datos que utiliza Metasploit como soporte para almacenar datos de los hosts escaneados es soportada por PostgreSQL. Aunque no es obligatorio usar este servicio, se recomienda almacenar los resultados en la base de datos, sobre todo cuando las acciones del pentester están definidas por algún tipo de proyecto que van más allá de realizar pruebas.
La base de datos PostgreSQL para Metasploit se crea al iniciar por primera vez Metasploit Framework o bien usando el comando específico msfdb con la opción init (consultar en introducción bloque de Escaneo de redes y servicios) Este comando también permite gestionar la base de datos con las diferentes opciones que se muestran en la siguiente pantalla (reiniciar, eliminar base de datos, empezar, etc.):
msfdb
Al crear por primera vez la base de datos, se va a generar el siguiente fichero cuya dirección se indica en la siguiente línea con los datos del nombre de la base de datos, usuario, contraseña, etc. Estos datos pueden editarse. PostgreSQL va a iniciar por defecto su servicio de base de datos en el puerto 5432.
/usr/share/metasploit-framework/config/database.yml
Como ya se indicó también en el apartado introductorio de Inicio rápido Metasploit, si se opta por usar la base de datos esta se puede iniciar indistintamente con el comando service o msfdb. En el siguiente ejemplo se inicializa con el comando primero (service) y se comprueba con el segundo (msfdb) aunque se podría haber hecho al revés. En todo caso, para la gestión específica de la base de datos de Metasploit (reiniciar, eliminar, etc.) sí debe usarse el comando msfdb.
sudo service postgresql start
sudo msfdb status
4.2.3.2. Exploits y Listen Port Payload
La utilización de un Exploit en combinación con un payload también conlleva el inicio de servicios y uso de puertos. El framework proporciona la gestión de estos de forma automática en la mayoría de los casos. Los servicios y puertos necesarios para emplear el Exploit variarán en función del diseño del este y el tipo de servicio que debe explotar. Por otro lado, una de las funciones de los payload en forma de shell es establecer un canal de comunicación entre la máquina atacante y la máquina vulnerable. Esta comunicación se establece a través de un puerto que debe indicarse en la configuración del payload como se indica en la siguiente pantalla (Listen Port):
Una vez ejecutado el Exploit y haber activado la carga útil del payload (por ejemplo obtener la shell), se puede consultar con el comando netstat los puertos y nombre de los servicios y procesos empleados para hacerse una idea. En el siguiente ejemplo se puede ver el servicio de Postgresql activado (socket 127.0.0.1:5432 de la máquina local), la conexión establecida (Established) por la shell en el puerto local 4444 (IP máquina atacante 192.168.1.47). Finalmente, al tratarse del Exploit para el servicio Java RMI, se ha necesitado crear dos servicios adicionales momentáneos en los puertos 44889 y 8080 por el diseño del Exploit.
netstat –antp
4.2.3.3. Client-Side Attack Browser Exploit
Otro tipo de explotación de vulnerabilidades son las que se llevan a cabo por la acción del usuario a través del software cliente. Estás técnicas para comprometer la máquina del usuario a través del software cliente se agrupan bajo la denominación de Client-Side Attacks. A partir de estas técnicas se logra que el software cliente descargue y ejecute algún tipo de malware aprovechando alguna vulnerabilidad de este.
Algunos de los Exploits más habituales para este tipo de ataques son los Browser Exploits. Estos Exploits aprovechan alguna vulnerabilidad en los navegadores más conocidos como son Chrome, Firefox, etc. Para llevar a cabo la explotación de la vulnerabilidad del navegador web el framework habilita un servidor web malicioso para asegurar el mal funcionamiento de este. También se puede implementar un ataque de este tipo con el auxilio de un servidor DNS, etc.
Como en otras tantas ocasiones, el framework permite al pentester configurar el Exploit y el payload para iniciar los servicios (web) maliciosos, aunque será habitual configurar estos en los puertos habituales para este tipo de servicios: 53, 80, 443, 8080. En el siguiente ejemplo se ha empleado un Exploit de este tipo (multi/browser/firefox_webidl_injection), pudiendo ver después que puertos está empleando la máquina atacante:
Nota: En este bloque no se va a tratar este tipo de ataques del lado del cliente.
4.2.3.4. Servicio RPC-API Metasploit-Framework
Otra característica particular que tiene Metasploit es el de ofrecer sus recursos como un servicio, proporcionando funciones auxiliares a otras plataformas de explotación vinculadas al framework (p. ej.: XSS-Beef). Este servicio se realiza a través del protocolo RPC (Llamada a procedimiento remoto, de las siglas en inglés Remote Procedure Call). Este tipo de servicio RPC es el mismo que se usa al implementar una API. Resumiendo mucho, una API permite que dos softwares distintos en diferentes servidores puedan comunicarse entre sí en una red informática, y esto es lo que hace el servicio RPC de Metasploit, también denominado mgsrpc.
Algunas plataformas de explotación no pertenecientes al framework de Metasploit, requieren que este servicio este activo. El puerto empleado por defecto para este servicio es el 55552. Para iniciar este servicio se puede hacer desde la consola de línea de comandos msfconsole con el siguiente comando.
msf > load msgrpc
4.2.3.5. Metasploit en Internet
Aunque la mayoría de pruebas que van a realizarse en este bloque van a ser en un entorno de laboratorio con servidores cuyos servicios son deliberadamente vulnerables por un objetivo meramente pedagógico, Metasploit también permite realizar pruebas de penetración de vulnerabilidades en Internet (red WAN). Para ello es necesario:
- Disponer de una IP pública (target o remote host) cuando las pruebas de reconocimiento y penetración de vulnerabilidades estén destinadas a un servicio remoto de algún host no local. La mayoría de módulos requieren la configuración de un target (IP).
- Habilitar portforwarding para aquellos servicios necesarios durante el proceso de explotación, ya sea para establecer una canal de comunicación con la shell o para habilitar un servicio malicioso. Esta técnica es recomendable solo para los servicios estrictamente necesarios, pues puede exponer la IP pública de la persona que está realizando las pruebas de penetración de servicios vulnerables en Internet.
- Disponer de sistemas de ocultamiento de la IP pública en la que opera el framework Metasploit o usar una IP Pública que no pueda rastrearse. Para ello se puede habilitar proxys, torificación de la red, usar un sistema de sockets entre diferentes redes que permite comunicarse a los diferentes hosts y que actúen como pantalla o directamente contratar servidores privados en otros países que permitan instalar Metasploit. En próximos puntos se mostraran algunas de estas técnicas.