Proyectando un framework de seguridad para dispositivos de red
Hace un año y medio me reencontré con un antiguo amigo del barrio, Josué. Cuando lo vi me acordé de un chico delgado y tímido que estudiaba conmigo en el IES Juan Gris de Móstoles. Me interesé por él, por lo que había hecho con su vida y mi sorpresa fue que, tras contarme sus aventuras y su fase de emprendedor, había comenzado a estudiar en la Universidad Rey Juan Carlos. Cuando me comentó que había comenzado con un Grado en Informática me alegré. Josué me pidió alguna idea para realizar su TFG. Recuerdo darle algunas y la que más le gustó fue la de un framework modular para pruebas de seguridad en dispositivos de red que pudiera usarse en trabajos de ethical hacking, entendiendo dispositivos de red como switches o routers.
El TFG debía llevar una parte de seguridad, la cual ya era obvia con la idea, y una parte de ingeniería del software. Por ello, se debía escoger una metodología ágil y que se viera reflejado como se seguía esta. En concreto, se utilizó Scrum para llevar a cabo el proyecto. Según el diagrama UML del framework se tendría algo así:
Existen dos componentes diferenciados, el núcleo que se encargará de procesar comandos y datos que el usuario proporciona y una componente secundaria que son los módulos que implementan las diferentes pruebas. La interacción por parte del usuario con la herramienta se realiza a través de una terminal o consola escrita en Python. Josué se encargó de implementar una serie de comandos para poder interactuar con los módulos y poder lanzar las funcionalidades.
En la siguiente imagen donde se ejecuta el framework sobre un máquina Kali Linux se puede ver los comandos que admite la herramienta. Como se puede ver no hay un gran número de comandos, pero la flexibilidad que aporta es grande para en un futuro poder ir metiendo nuevos ataques a redes IPv4 & IPv6.
Recuerdo también alguna que otra tarde de bar dónde hablábamos de las funcionalidades y de las pruebas que debería tener la herramienta de cara a su Trabajo Fin de Grado y un posible uso posterior por otros usuarios. Tras debatir, entre cervezas, llegamos a la conclusión de que al menos la herramienta debería tener:
PoC: Probando el framework
En esta primera prueba de concepto del uso de esta herramienta se cargará un módulo llamado sshbruteforce. Con este módulo se puede realizar fuerza bruta mediante un diccionario a un servicio SSH. En el caso de que se consiguiera acceso al servicio de SSH a través del diccionario, se consigue una sesión la cual se puede utilizar para interactuar con el dispositivo que tiene el servicio. Para evitar estos ataques, ya os dejé un artículo que explicaba en detalle cómo fortificar en modo paranoico un servicio SSH con técnicas de port-knocking, Latch, TOTP y cerfificados digitales evitando ataques de enumeración de usuarios.
En el siguiente video se puede ver una demostración de la carga del módulo, la configuración de éste, la ejecución y el uso de las sesiones en la herramienta. Nos recuerda al más puro Metasploit, aunque, he de decir que el objetivo ha sido crear una herramienta ampliable por cualquiera que permita implementar de pruebas de auditoría a routers y switches.
Ahora, se va a mostrar un video de cómo se disponen de módulos que implementan exploits contra dispositivos de red con vulnerabilidades conocidas. Esto es algo interesante, y disponer de una gran base de datos sobre ellos sería importante. En este caso, la prueba se realiza contra un dispositivo de red de CISCO. La vulnerabilidad explotada es un CSRF y el módulo lo que hace es comprobar si la vulnerabilidad existe o no existe en dicho dispositivo.
Por último, y ya que no puede faltar, un módulo que nos permita escanear puertos abiertos de los dispositivos a través del flag SYN de TCP. En el video se puede visualizar como se carga el módulo, se configura un listado de puertos que se quieren comprobar y el módulo comienza la creación de peticiones TCP contra la máquina destino.
Desde aquí quiero felicitar a Josué por el trabajo bien hecho y por su propuesta para matrícula de honor por su Trabajo Fin de Grado en la Universidad Rey Juan Carlos. Espero que sigas con el proyecto y que sigas “hurgando” en la seguridad de los dispositivos de red y que tu ejemplo anime a otros chavales a hacer sus propios proyectos.
Figura 1: Proyectando un framework de seguridad para dispositivos de red |
El TFG debía llevar una parte de seguridad, la cual ya era obvia con la idea, y una parte de ingeniería del software. Por ello, se debía escoger una metodología ágil y que se viera reflejado como se seguía esta. En concreto, se utilizó Scrum para llevar a cabo el proyecto. Según el diagrama UML del framework se tendría algo así:
Figura 2: Esquema del framework de ataques de red |
Existen dos componentes diferenciados, el núcleo que se encargará de procesar comandos y datos que el usuario proporciona y una componente secundaria que son los módulos que implementan las diferentes pruebas. La interacción por parte del usuario con la herramienta se realiza a través de una terminal o consola escrita en Python. Josué se encargó de implementar una serie de comandos para poder interactuar con los módulos y poder lanzar las funcionalidades.
En la siguiente imagen donde se ejecuta el framework sobre un máquina Kali Linux se puede ver los comandos que admite la herramienta. Como se puede ver no hay un gran número de comandos, pero la flexibilidad que aporta es grande para en un futuro poder ir metiendo nuevos ataques a redes IPv4 & IPv6.
Figura 3: Comandos en el framework de ataques de redes |
Recuerdo también alguna que otra tarde de bar dónde hablábamos de las funcionalidades y de las pruebas que debería tener la herramienta de cara a su Trabajo Fin de Grado y un posible uso posterior por otros usuarios. Tras debatir, entre cervezas, llegamos a la conclusión de que al menos la herramienta debería tener:
• Capacidades de Spoofing.En la siguiente imagen, se pueden ver el número de módulos que Josué implementó para la versión de su TFG. Tengo que decir, que recuerdo a Josué “quejándose” porque yo no hacía más que decirle, este tiene que estar sí o sí, y este otro también...
• Capacidades de recopilar información con técnicas como el Banner Grabbing.
• Capacidad para realizar fuerza bruta.
• Capacidad para realizar escaneos de puertos y servicios por sí sola.
• Capacidad de lanzar un exploit conocido contra un dispositivo de red. Por ejemplo, aprovecharse de un CSRF en el panel de gestión de un router. • Capacidad de poder crear módulos propios y extender la herramienta.
Figura 4: Lista de módulos implementados en la versión actual |
PoC: Probando el framework
En esta primera prueba de concepto del uso de esta herramienta se cargará un módulo llamado sshbruteforce. Con este módulo se puede realizar fuerza bruta mediante un diccionario a un servicio SSH. En el caso de que se consiguiera acceso al servicio de SSH a través del diccionario, se consigue una sesión la cual se puede utilizar para interactuar con el dispositivo que tiene el servicio. Para evitar estos ataques, ya os dejé un artículo que explicaba en detalle cómo fortificar en modo paranoico un servicio SSH con técnicas de port-knocking, Latch, TOTP y cerfificados digitales evitando ataques de enumeración de usuarios.
En el siguiente video se puede ver una demostración de la carga del módulo, la configuración de éste, la ejecución y el uso de las sesiones en la herramienta. Nos recuerda al más puro Metasploit, aunque, he de decir que el objetivo ha sido crear una herramienta ampliable por cualquiera que permita implementar de pruebas de auditoría a routers y switches.
Figura 5: Ataque de diccionario a un servidor SSH
Ahora, se va a mostrar un video de cómo se disponen de módulos que implementan exploits contra dispositivos de red con vulnerabilidades conocidas. Esto es algo interesante, y disponer de una gran base de datos sobre ellos sería importante. En este caso, la prueba se realiza contra un dispositivo de red de CISCO. La vulnerabilidad explotada es un CSRF y el módulo lo que hace es comprobar si la vulnerabilidad existe o no existe en dicho dispositivo.
Figura 6: Explotación de una vulnerabilidad conocida en dispositivo CISCO
Por último, y ya que no puede faltar, un módulo que nos permita escanear puertos abiertos de los dispositivos a través del flag SYN de TCP. En el video se puede visualizar como se carga el módulo, se configura un listado de puertos que se quieren comprobar y el módulo comienza la creación de peticiones TCP contra la máquina destino.
Figura 7: Escaneo de puertos con el framework
Desde aquí quiero felicitar a Josué por el trabajo bien hecho y por su propuesta para matrícula de honor por su Trabajo Fin de Grado en la Universidad Rey Juan Carlos. Espero que sigas con el proyecto y que sigas “hurgando” en la seguridad de los dispositivos de red y que tu ejemplo anime a otros chavales a hacer sus propios proyectos.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths
2 comentarios:
El soft que esta desarrollando sera un proyecto libre para la comunidad o solo lo explica para que podamoz conocer la arquitectura, si es proyecto open source cuando ba estar libre y como poder acceder a el.
Saludos buen post.
La pregunta es, cuando lo liberaran para descargarlo? :(
Gran proyecto, mucho exito bros...
Publicar un comentario