El documento describe la fase de explotación de vulnerabilidades mediante Metasploit. Explica que en esta fase el auditor lanza exploits para obtener acceso no autorizado a sistemas remotos y su información. Detalla los tipos de payloads como singles, stagers y staged, y la importancia de elegir el payload correcto. También cubre conceptos como intrusión sin interacción del usuario y provee un ejemplo práctico de intrusión usando la vulnerabilidad MS08-067.
3. El arte de la intrusión
Ámbito
• Fase de explotación de vulnerabilidades mediante el uso de
Metasploit.
• En este fase el auditor, tras analizar la información obtenida y las
posibles vulnerabilidades encontradas, lanzara uno o varios
exploits con el objetivo de lograr acceso a un sistema informático
remoto o información a la que no tiene acceso autorizado.
4. El arte de la intrusión
Ámbito
• 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
numero de exploits recientes se tenga mas posibilidades existen de disponer de
la llave que proporcione el éxito de la intrusión.
• Además, de estar informado sobre las vulnerabilidades que aparezcan
diariamente sobre los sistemas. Ya que esto puede ayudar a encontrar pequeños
agujeros en los mismos, aunque se encuentren actualizados casi diariamente.
5. El arte de la intrusión
Ámbito
• La elección del payload es algo fundamental y critico a la hora de realizar
la explotación del sistema. El auditor debe de elegir el contexto en el que
se moverá, es decir, si utilizara un payload para la fase de post-
exploración, o por el contrario, le basta con conseguir una Shell sobre un
sistema concreto y demostrar la vulnerabilidad del sistema. Existe una
gran variedad de funcionalidades base para los payloads, las cuales
podrán estudiarse mas adelante.
6. El arte de la intrusión
Ámbito
• 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 victima con el atacante. Por ejemplo un
usuario no dispone de un servicio actualizado o correctamente
configurado.
7. El arte de la intrusión
Ámbito
• Es bastante lógico, y así se entiende que un atacante sin interacción de la
victima provoca menor mayor temor por parte de los usuarios, pero hoy
en día es igual de factible y temible un atacante 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 puede llevarle a cualquier lugar del
Internet inesperado, por ejemplo un servidor web que lance exploits
sobre el equipo de la victima.
8. El arte de la intrusión
Ámbito
• Por último destacar, que en muchas ocasiones la explotación de
vulnerabilidades puede llegar a ser frustrante, ya que puede
aparecer 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.
9. El arte de la intrusión
Ámbito
• Se recomienda a los estudiantes y entusiastas que tengan paciencia,
realicen un estudio y análisis de los sistemas exhaustivo y que en
muchas ocasiones el camino mas corto hacia el objetivo no es el
mejor, y estudiando un camino alternativo se puede lograr mayor
éxito en el test de intrusión.
10. El arte de la intrusión
Ámbito
• Como ejemplo practico 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.
11. El arte de la intrusión
Ámbito
• 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 de Windows 7? Ya se dispondrá
de acceso al equipo objetivo. No se ha utilizado el camino mas corto,
pero un camino alternativo se ha obtenido el éxito en la prueba de
intrusión.
12. Payloads
• Los payloads son uno de los protagonistas de este taller y de los test
de intrusión. Ellos aportan el éxito o 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 maquina remota
y proporcionará al atacante o auditor el poder de controlar el sistema
remoto.
13. Payloads
• Existen distintos tipos de payload como son los singles, stagers y staged.
Estos diferentes tipos permiten gran versatilidad y pueden ser de gran
utilidad en numerosos escenarios posibles.
• Los payload de tipo single, también conocidos como inline, son
autónomos y realizan una tarea concreta y especifica. Por ejemplo, bind
a un Shell, creación de un usuario en el sistema, ejecución de un
comando, etcétera.
14. Payloads
• Los payload de tipo stagers, se encargan de crear la conexión entre el
cliente y la victima y generalmente, son utilizados para descargar
payloads de tipo staged.
• Los payloads de tipo staged se descargan y son ejecutados por los del
tipo stagers y normalmente son utilizados para realizar tareas complejas
o con gran variedad de funcionalidades como puede ser un meterpreter.
15. Payloads
• Estos palabras los de tipo staged utilizan pequeños stagers para
ajustarse en pequeños espacios de memoria donde realizan la
explotación. La cantidad de memoria que se dispone a realizar la
explotación, en la mayoría de los casos, esta 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.
16. Payloads
• Todos los exploits en Metasploit utilizan exploit/multi/handler. Este
modulo es capaz de gestionar y manejar cada uno de los exploits
que se encuentran en el framework, sin importar la conexión o tipo
de arquitectura. Este modulo esta diseñado de tal forma que sabe
como tratar cada tipo de payload porque en su configuración se le
dice que debe esperar.
17. Payloads
• Cuando el auditor se le dice que debe esperar. Cuando el auditor se
encuentra con un modulo 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/multi/handler de manera
transparente al auditor.
18. Payloads
• En otras ocasiones, puede ser que se deba utilizar explícitamente a
exploit/multi/handler para manejar las posibles sesiones remotas.
• Para visualizar todos los payloads disponibles en el framewoks se dispone del
comando show payloads ejecutando desde la raíz de msfconsole.
• Si se ejecuta este comando una vez que se encuentra cargado un modulo
concreto, solo se mostraran los payloads validos para dicho modulo, siempre y
cuando el desarrollador del modulo así lo haya especificado.
19. Payloads
• En otras ocasiones, puede ser que se deba utilizar explícitamente a
exploit/multi/handler para manejar las posibles sesiones remotas.
• Para visualizar todos los payloads disponibles en el framewoks se dispone del
comando show payloads ejecutando desde la raíz de msfconsole.
• Si se ejecuta este comando una vez que se encuentra cargado un modulo
concreto, solo se mostraran los payloads validos para dicho modulo, siempre y
cuando el desarrollador del modulo así lo haya especificado.
20. Payloads
• La ruta donde se encuentran físicamente estos payloads es
/usr/share/Metasploit-framework/modules/payloads donde se
organizan los 3 tipos de carpetas con los nombres de estos.
22. Payloads
• Otras cosas que hay que tener en cuenta cuando se listan los
distintos tipos de payloads es la propiedad NoNX y NX. El NX bit es
un 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.
23. Payloads
• Los payloads que indican IPv6 en la lista indican que están
preparados para funcionar en redes IPv6
26. Payloads
• La elección del payload es fundamental, y puede llevar a la prueba
al éxito o al fracaso. En condiciones normales, para poder realizar la
prueba de explotación valdría con un exploit de tipo single, el cual
deje una evidencia de que se ha ejecutado código arbitrario en el
sistema.
27. Payloads
• También hay que tener claro que, generalmente, los test de
intrusión no es solo ejecutar código arbitrario en una maquina
remota, ya que se pueden utilizar estas maquinas vulneradas para
acceder a recursos mas 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.
28. Intrusión sin interacción
• El lanzamiento de exploits sobre maquinas objetivo sin interacción
por parte del usuario es uno de los puntos que mas puede asustar a
los usuarios y propietarios de maquinas o empresas. Esta situación
es critica ya que si una maquina es vulnerable a un exploit el cual no
requiera interacción por parte del usuario, cualquier atacante
podría tomar el control remoto de dicho equipo sin que le usuario
notase, a priori, nada extraño.
29. PoC: La primera intrusión
• En esta prueba de concepto se hará uso de la vulnerabilidad MS08-
067, de la que se puede obtener más información y detalles en el
siguiente sitio web:
33. PoC: La primera intrusión
• Primero recuerde instalar en una maquina virtual Parrot en mi caso
de 64 bits que lo podrás encontrar en la siguiente dirección:
• https://www.parrotsec.org/
• Ó
36. PoC: La primera intrusión
• Segundo recuerde instalar en una maquina virtual Windows XP
Professional es Español SP3 en mi caso de 64 bits que lo podras
encontrar en la siguiente dirección:
39. PoC: La primera intrusión
• 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.
41. PoC: La primera intrusión
• En este punto ya se dispone de la ruta donde se aloja el
modulo que se requiere, en este ejemplo sería
exploit/Windows/smb/m08_067_netapi. Para cargar el modulo
se utiliza el comando use, y una vez cargado se puede
configurar sus variables para lanzar el exploit sobre el
objetivo.
42. PoC: La primera intrusión
• En el cual en esta prueba de concepto es una maquina
Window XP SP3 spanish. Este exploit se puede utilizar sobre
una gran cantidad de objetivos, cubriendo Windows 2000,
2003 y XP con SP2 y SP3.
44. PoC: La primera intrusión
• Hay que recordar que los comandos info o help ayudan a obtener
información sobre el modulo 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 modulo con show payloads, o incluso los
targets compatibles con le modulo con shows targets.
45. PoC: La primera intrusión
• Una vez cargado el modulo, si se ejecuta show options se muestran las
variables para configurar el exploit. En este ejemplo, se configura la
variable RHOST para indicar cual es la maquina 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.
50. PoC: La primera intrusión
• Es muy interesante entender distintos conceptos en el
comportamiento de los payloads en función si son inversos,
reverse, o directos bind. En la prueba de concepto se ha utilizado
un payload meterpreter de conexión inversa, por lo que debe
configurar al código del payload donde se debe 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.
51. PoC: La primera intrusión
• Hay que recordar que en un payload de conexión directa, es
el auditor quien se conecta a la victima. Tras el lanzamiento
del exploit, se deja en un puerto a la escucha, por ejemplo,
una Shell, y es entonces el auditor quien se conecta a ese
puerto donde se espera la Shell remota.
53. PoC: La primera intrusión
• El comando check permite verificar si el equipo remoto es
vulnerable al modulo 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.