lunes, noviembre 02, 2020

HoneyBadger: Cómo proteger tu red de atacantes con dispositivos fantasmas

Cada vez que enciendes un dispositivo y lo conectas a la red, este comienza a trabajar como un servidor que ofrece un servicio. Este servicio tiene dos propósitos, darse a conocer en la red local como dispositivo que puede hacer algo y atender a las peticiones de otros elementos de la red sobre el servicio ofrecido. Lamentablemente no todos los dispositivos que se conectan a la red realizan estas acciones de forma segura, sin cifrado, sin control sobre quién envía qué o qué envía. 

Figura 1: HoneyBadger: Cómo proteger tu red de atacantes con dispositivos fantasmas

Estos dispositivos no solo pueden ser un riesgo de seguridad para la red al no traer medidas de seguridad frente a los ataques de red, sino que pueden convertirse en el C&C de adversarios que se quieran instalar en nuestros sistemas. Ya hemos visto muchas veces vulnerabilidades en sistemas de backup, proyectores, webcams o impresoras de red para atacar la DMZ o con vulnerabilidades muy seriasHay que comprobar muy bien su resistencia frente a un posible adversario que quiera conseguir un acceso permanente dentro de nuestra red, y descubrir si esos adversarios los están buscando.

Debido a todos estos posibles riesgos de seguridad, hoy os voy a hablar de HoneyBadger una nueva aplicación desarrollada en Ideas Locas que hemos estado desarrollando y que permite la creación de dispositivos “fake” para engañar a posibles atacantes usando "Deception Techniques" y proteger la red detectando su llegada. 

Figura 3: Libro de Ataques en redes de datos IPv4 & IPv6 3ª Edición
de Chema Alonso, Pablo González y Juan Luis Rambla

Pero también  se puede utilizar para complementar los ataques de phishing en un ejercicio de Red Team, tal y como lo explica nuestro compañero Pablo González en el artículo dedicado a EvilSSDP.

HoneyBadger

La herramienta utiliza Python 3 para funcionar y usa el protocolo mDNS (Multicast Domain Name Service) y SSDP (Simple Service Delivery Protocol) los cuales nutren las distintas funciones que permiten, desde la creación de un servidor de servicio hasta la clonación de un dispositivo que ya se encuentre disponible en la red. Vamos a ver cómo funcionan los diferentes protocolos soportados:

1) SSDP:

El protocolo SSDP o “Simple Service Discovery Protocol” sirve para la búsqueda y el ofrecimiento de servicios en la red, para dispositivos UPnP. Para ello se utiliza la dirección Multicast “239.255.255.250:1900”, los dispositivos compatibles y que estén ofreciendo servicio responderán con un mensaje HTTP (200 OK) el cual contiene la información necesaria para que el dispositivo que ha mandado el mensaje Multicast sepa que servicio ofrece y como acceder a él.

2) mDNS:

El protocolo mDNS o “Multicast Domain Name Service” Es un servicio de traducción de nombres de dominio el cual se ejecuta en la red local y permite que un servidor sea accesible de forma local mediante un nombre de dominio “.local”. Este protocolo ha sido implementado por Apple con Bonjour (permitiendo su uso en MacOS y dispositivos iOS) y de forma Open Source mediante la librería Avahi (Permitiendo su uso en dispositivos que ejecuten GNU/Linux), por su parte Windows tiene su propia implementación siendo también compatible.

La herramienta ha sido creada pensando en su utilización en dispositivos que ejecuten GNU/Linux, aunque también funciona en sistemas operativos Windows y MacOS (este último solo permite la generación del archivo de configuración del servidor). Estas son las funciones que ofrece.

1) Clonación:

Permite al usuario la búsqueda de los dispositivos en red mediante la función de descubrimiento del protocolo SSDP, esto permite listar todos los dispositivos encontrados, descartando aquellos que no nos interesen (principalmente por estar duplicados), dando la opción al usuario de seleccionar uno de los servicios listado y copiar sus propiedades en un archivo de configuración para, posteriormente, utilizarlo para suplantar ese mismo servicio.

2) Generación de XML

Permite la generación de un archivo de configuración XML ya sea de forma automática o con los datos introducidos por el usuario, en este último caso se le permite elegir el tipo de servicio, su nombre, su fabricante, su modelo, su UUID (Número de identificación único), el dominio donde se ejecutará y la localización la web de este.

3) Servidor

Con esta función se genera un servidor el cual mediante los datos existentes en el archivo de configuración XML previamente creado, genera un servidor ofreciendo los servicios y respondiendo a las peticiones de la red, de esta forma los demás dispositivos de la red creen que es un servidor legitimo.

En el siguiente vídeo tienes un recorrido sobre las principales funciones de la herramienta que hemos creado, y que desde ahora puedes descargar desde su repositorio de código en GitHub. Después, vamos a ver un ejemplo paso a paso de cómo se puede crear un dispositivo, publicadlo en la red, y capturar mediante un portal web las credenciales que introduzcan los visitantes de nuestro "fake Device".

Figura 4: HoneyBadger: Cómo proteger tu red de atacantes con dispositivos fantasmas

Supongamos que queremos proteger las impresoras de nuestra red, para ello vamos a crear un archivo de configuración de impresora y lo vamos a publicar en la red local. Primero deberemos iniciar el programa con la opción -g para iniciar la función de generar un nuevo XML.

Figura 5: Generación de un nuevo XML 

Nos aparecerá un menú donde podremos seleccionar como queremos generar en XML si de forma automática o con los parámetros que nosotros queramos.

Figura 6: Menú de generación de fichero XML

En esta ocasión seleccionaremos la segunda opción para crear un XML a nuestro gusto, nos aparecerá un nuevo menú en el cual podremos escoger que tipo de dispositivo queremos utilizar, en este caso una impresora. 

Figura 7: Elección de dispositivo a crear

Acto seguido se nos pedirá el nombre, el fabricante y el modelo del dispositivo, que debe ser lo más creíble y atractivo posible si queremos atraer a los posibles atacantes a él. Así que elegir una impresora con vulnerabilidades conocidas, o un sistema de copias de seguridad de archivos en red es siempre una buena opción.

Figura 8: Nombre, Marca y Modelo

Ahora se nos pedirá algo muy importante, el dominio donde se podrá acceder a la web del dispositivo, podemos utilizar subdominios pero siempre tiene que terminar en .local o en caso contrario nos llevaría a una web externa a la red. 

Figura 9: Dominio y subdominio para dispositivo

En el penúltimo paso de la creación es la selección de la carpeta donde estará el archivo gancho de la web, en este caso “login/login.html”. Para esta prueba no hemos hecho una web muy especial, pero si eliges un dispositivo concreto, lo suyo es que hagas una copia  de las webs que utilizan ellos.

Figura 10: Configuración de una web para capturar credenciales

Por último, nos preguntara si queremos usar un UUID automático o uno que tengamos de antemano, en general la mejor opción es automático a no ser que queramos realizar algo muy especifico. 

Figura 11: Generación de UUID para el dispositivo

Ya hemos terminado de crear el XML de configuración, el programa nos preguntara si queremos ejecutar el servidor en este momento o si queremos salir y hacerlo mas adelante, si escogemos el primer caso se nos mostrara la información del servidor que se ha creado. 

Figura 12: Información del dispositivo servidor creado

Si ahora vamos por ejemplo al sistema operativo Windows, podremos comprobar como la impresora aparece como un dispositivo en red. 

Figura 13: Impresora creada con HoneyBadger

Y, como estaba previsto, si ahora accedemos al servicio desde el dispositivo nos aparecerá la web que hemos especificado antes para solicitarnos las credenciales de acceso. ¿Cuáles? Las que nos quiera dar la víctima o el atacante que está dentro de nuestra red.


Figura 14: Servidor web para capturar credenciales

Si mientras el servidor este activo alguien introduce sus credenciales en la web, esta quedara registrada en el log del servidor, y ya podremos descubrir qué sabe la víctima o el atacante.

Figura 15: Registro de credenciales en el fichero .log

Por supuesto, esta técnica de crear dispositivos por los diferentes segmentos de red sirve tanto como para un ejercicio de Red Team en el que se busca fortalecer las políticas de acceso de los usuarios de la red, como para detectar a adversarios en la red con estas técnicas de decepción. 

Figura 16: Hacking Windows: "Ataques a sistemas y redes Microsoft"

Desde luego, este tipo de técnicas son perfectas si estás haciendo un Ethical Hacking y tienes que atacar equipos y sistemas Microsoft Windows. La herramienta se encuentra disponible para probar, ya que es una prueba de concepto, en su Github

Saludos,

Autor:  Guillermo Peñarando Sánchez, Developer en Ideas Locas CDCO de Telefónica.

No hay comentarios:

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares