martes, abril 14, 2020

Hidden Networks: Nueva versión con "TimeLine"

La C0r0n4CON surgió como un evento de un día en el que se buscaba donaciones para la Cruz Roja. El evento fue creciendo y acabó siendo un evento de 4 días con 4 salas en paralelo. Cuando Carlos Rodríguez me invitó a participar, por supuesto no lo dudé. Vi como el evento creció y todo el mundo quiso poner su granito de arena. El enfoque del evento creció para que todo el mundo pudiera aprovechar, aprender, conocerse y disfrutar del conocimiento de todos durante 4 días.

Figura 1: Hidden Networks: Nueva versión con "TimeLine"

Tanto mi compañero Fran Ramírez y yo pensamos en una charla que pudiera ser de interés por su ámbito forense, pero que a la vez fuera algo que pudiera ser de interés para todos. Los dispositivos USB y el rastro que éstos dejan son de interés para todo el mundo, hablando de nuestro proyecto de Hidden Networks. Como comentamos en la charla, este fue un proyecto que empezamos a trabajar hace un par de años en el departamento de Ideas Locas, pero que venía de una idea de Chema Alonso del año 2014.


Figura 2: Codetalk for Developers: Hidden Networks

En el año 2018 hablamos de ellas en Rooted Valencia, y dimos una CodeTalk For Developers hablando de las Hidden Networks en ElevenPaths, ya que fue el año que se presentó el proyecto y la herramienta, en su primera versión. Desde entonces, es cierto que hemos ido añadiendo alguna funcionalidad, pero por cuestión de tiempo y optimización de código no hemos publicado aún lo nuevo.

Prometemos actualización

Durante la charla comentamos que tenemos una actualización de la herramienta, ya que desde 2018 no se actualizaba. Así que durante estas dos próximas semanas prometemos tenerla publicada. Estamos “puliendo” ese código.

Figura 3: Hidden Network Python

Eso sí, os dejamos el enlace al Github de la herramienta, tanto de la herramienta con nuestro querido Python que tanto adoramos los pentesters, como podéis ver en la Figura 3, como sus inicios con los scripts en Powershell que también es una de nuestras herramientas favoritas para hacer pentesting.

Figura 4: Hidden Network PowerShell

Los dispositivos USB y los incidentes de seguridad

En la charla comenzamos hablando sobre la historia del USB, el empujón histórico que Steve Jobs le da quitando los Legacy del iMac G3 por dos puertos USB, hasta cómo el USB ha estado involucrado en una gran cantidad de incidentes de seguridad. Seguramente los incidentes de seguridad más conocidos serían Stuxnet o Brutal Kangaroo entre otros.

Figura 5: Algunos incidentes con USB

Comentando un poco estos, llegamos a hablar de Rubber Ducky - o nuestro querido Arducky - como vector de ataque a través de un USB con un enfoque muy distinto, ya que se hace uso de USB para disponer de un teclado virtual. Otra de las amenazas mostradas fue USB Killer, como un ataque físico para una denegación de servicio completa del equipo.



Pero el volumen de ellas es cada vez más alto y no para de crecer, como por ejemplo el USB Ninja que utiliza Kevin Mitnick en sus presentaciones.

¿Qué es una Hidden Network? 

Una "Red Oculta" por definición para nuestro proyecto es una red abstracta generada por el camino que ha seguido un dispositivo USB. Esto es importante de entender, ya que no tiene que ver con arquitectura TCP/IP. Esto puede llevar a error. Debemos entender que una red oculta es el número de nodos (equipos) por el que una tecnología ha pasado. No solo tiene por qué ser un USB. Este mismo ejercicio se podía hacer con tecnología Bluetooth

Figura 7: Equipo "desconecado" de la red cable y WiFi

Entonces, si tenemos una red inventariada en nuestra organización, pero no controlamos por qué equipos van pasando diferentes dispositivos USB, podemos estar creando un bypass de reglas de red o, directamente, estar conectando una red aislada con Internet

Figura 8: Creación de una Hidden Network

Otra forma de visualizar esto podría ser el siguiente esquema. Lo importante es que la idea quede clara. Debemos controlar la trazabilidad de estos dispositivos. Si existe un incidente de seguridad y tenemos indicios de que el vector de acceso ha sido el USB, se podrá trazar los equipos o nodos por los que éste ha ido pasando gracias a la herramienta Hidden Networks

Primera idea: Conceptos y Powershell 

Cuando surge la idea empezamos a trabajar con Powershell para poder conectarnos con las máquinas Windows de manera sencilla, pensando en una organización. Empezamos a trabajar en ver qué parámetros o información deja un dispositivo USB.

Figura 10: Pentesting con PowerShell 2ª Edición

Llegamos al querido registro de Windows dónde hay mucha información.  Lo primero que hay que decir es que es un hive HKLM, por lo que para poder “tocar” o poder “eliminar” cierta información habría que tener privilegio en la máquina, pensando en un "anti-forensic".

Figura 11: Información de USB en el Registro de Windows. 

Como se puede ver en la Figura 11, accediendo al registro de Windows hay muchas cosas que se pueden saber sobre qué dispositivos se han conectado. Tal y como se observa la información que se puede sacar a priori es:
- USB Serial Number: Este identificador es único para los dispositivos USB y se repite si lo llevamos a otro equipo. Gracias a él podremos rastrear el paso de un equipo a otro. Además, da nombre a la clave.  
- El Container ID: Este es un identificador único en la máquina, pero si llevamos el dispositivo a otra máquina, se generará un nuevo Container ID.  
- FriendlyName: El nombre del dispositivo. Gracias a esta información se podrá obtener la imagen del dispositivo USB. 
Esto fue la primera aproximación, ya que hay que tener en cuenta que las fechas de inserción (de la primera conexión) en el equipo pueden obtenerse y será un dato fundamental para reconstruir la línea temporal que vamos a preparar.

Figura 12: Mapa de conexiones USB en línea temporal generada con Gephi

El script devolvía por pantalla los dispositivos de una máquina, pero lo interesante era generar un CSV con toda esa información de todas las máquinas. De esta manera, empezamos a trabajar con Gephi, una librería para generar grafos. Como se puede ver la idea de la línea temporal o "TimeLine" ya la teníamos en la cabeza, pero nos faltaba darle sentido a las direcciones de los arcos. 

Segunda idea: Python y herramienta final 

Nuestro compañero Fran Ramírez propuso hacer la herramienta en Python y darla mayor entidad. En la siguiente imagen se puede ver la GUI de Hidden Networks. Tienes una descripción completa del interfaz y cómo se utiliza en el artículo que escribimos en este blog: Hidden Network "Una herramienta de ElevenPaths para detectar las redes ocultas en tu empresa".

Figura 13: Interfaz de Hidden Networks

Pero cuando acabamos la herramienta, empezamos a pensar en el enfoque más dirigido al Análisis Forense, por lo que perseguimos el obtener los datos de conexión de los dispositivos, ya con el Timeline muy en la cabeza, exprimiendo al máximo la potencia de nuestra herramienta escrita en Python.

Figura 14: Técnicas de  Análisis Forense Informático para Peritos Judiciales
de Pilar Vila

Y si quieres verla en funcionamiento, en el siguiente vídeo tienes tal y cómo funcionaba nuestra Hidden Network Tool creada en 2018. Sin tener aún desarrollada la opción del TimeLine en las conexiones de los dispositivos USB.


Figura 15: Hidden Network Tool escrita en Python

Para hacer el TimeLine de conexiones, el archivo setupapi.dev.log de la ruta c:\windows\inf dispone de la información de la fecha de inserción del dispositivo USB. Esto nos da todo lo necesario para poder generar un timeline e incorporarlo a la herramienta en forma de grafo dirigido.  Pero estuvimos pensando en qué más cosas se puede sacar, y vimos que se puede sacar el usuario o usuarios que tenían habilitada la sesión en el equipo en el momento de inserción del dispositivo

Figura 16: Archivos setupapi.dev.log

A continuación, se muestra una captura de un grafo dirigido para un USB TransMemory insertado en todos estos equipos y con sus fechas de inserción. Además, una de las últimas características añadidas fue la posibilidad de poder consultar la imagen del pendrive o del dispositivo USB.

Figura 17: TimeLine de conexiones de un Pendrive

De esta forma, se puede obtener un dato gráfico que puede ayudarnos a buscar el foco de infección de forma física. Es más fácil conocer qué buscar, que ir comprobando el USB Serial Number de todos los dispositivos de la organización. Para acabar, os dejamos el enlace al paper de Hidden Networks para que podáis conocer y estudiar en mayor profundidad el detalle. 



Y ya para terminar, os dejamos el vídeo completo de la charla que dimos mi compañero Fran y yo sobre Hidden Networks en C0r0n4CON. Esperamos que os guste y que probéis la herramienta sobre vuestra red. 

Figura 19: Hidden Networks en C0R0N4CON


Esperamos que estos proyectos que llevamos desde el equipo de Ideas Locas os sean de utilidad, y os estimulen a crear cosas nuevas. Por supuesto, más que abiertos estamos a que colaboréis con nosotros en todos ellos.

Saludos,

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.  Para consultas puedes usar el Buzón Público para contactar con Pablo González

Figura 20: Contactar con Pablo González

No hay comentarios:

Entrada destacada

Seis recomendaciones personales de libros de @0xWord para disfrutar y aprender

Este verano pude disfrutar de la lectura de un libro que me encantó. El libro de Factfulness que me había regalado mi compañera Beatriz Ce...

Entradas populares