EvilSSDP: Cómo poner dispositivos maliciosos en la red en un ejercicio de Red Team
El año pasado presentamos en BlackHat Europe 2019 una herramienta llamada HomePwn. A finales de 2018 estuve estudiando un poco el funcionamiento del protocolo SSDP. Un protocolo que sirve para que las máquinas puedan descubrir de manera sencilla otros dispositivos en una red. Es fácil, cuando cualquier usuario se compra, una tele, bombillas inteligentes, un NAS, una tostadora conectada a Internet, etcétera, tiene que existir un procedimiento sencillo para que los dispositivos se encuentren y conozcan los servicios que otros ofrecen.
Empecé a estudiar el SSDP gracias al ChromeCast, otro dispositivo de “conéctame a una red” y disfruta. Aquí surgió HomePwn, aunque algunos no lo sepan, y fue así como se hizo una prueba de concepto en Ruby. Más tarde, llevé el proyecto a mis compañeros de Ideas Locas donde se hizo un gran trabajo. El objetivo de HomePwn principal era aprovechar este tipo de protocolos y otros para enumerar dispositivos en una red, sobretodo, dispositivos que no fueran ordenadores al uso. El objetivo era integrar módulos de Ethical Hacking para dichos dispositivos.
Más tarde, fueron surgiendo nuevas ideas y llegó la idea del pentesting a todos esos dispositivos que puedes tener en una empresa, que utilizan tecnologías que están en un nuestro día a día, pero que van más allá de un simple pentesting a una máquina al uso. Aparecieron módulos para tratar BLE, para jugar con NFC. HomePwn creció y llegó a BlackHat con un gran número de módulos y pruebas que mostraban el potencial de la herramienta. En el siguiente video se puede ver la demo de BlackHat con HomePwn.
Figura 3: Demo de HomePWN en BlackHat
En el artículo de hoy quería reflexionar sobre una de las opciones que se barajó con HomePwn y, que después de ver esta herramienta, se puede incorporar de manera sencilla. La herramienta EvilSSDP .
EvilSSDP
Esta herramienta implementa una prueba de concepto, mezclando el spoofing con el phishing con un objetivo: capturar credenciales mediante el spoofing de dispositivos en una red empresarial. La idea es muy interesante, ya que se abusa del protocolo SSDP para anunciar que hay un dispositivo en la red, cuando realmente éste no es tal.
Es la herramienta EvilSSDP la que está “comportándose” como un dispositivo de red que no es. Cuando el usuario accede a dicho dispositivo se encontrará con un panel de login, digamos que “el que toque” en función de la plantilla o “spoofing” hecho.
Como se puede ver la idea es sencilla, pero bastante potente de cara a un Ethical Hacking o un ejercicio de Red Team. Como se indica en la descripción del proyecto EvilSSDP permite hacer spoof sobre SSDP y crear dispositivos UPnP “fake”. El objetivo es “robar” credenciales e incluso jugar con el protocolo SMB para credenciales de red, en ese caso.
Probando EvilSSDP
La instalación es trivial, simplemente hacer un git clone sobre la URL y tendremos descargado EvilSSDP. Es importante que tengamos Python3 en el equipo, ya que es un requisito. Viendo la ayuda de la herramienta, tal y como se puede ver en la imagen donde lo hemos instalado en nuestro Kali Linux, queda claro la sencillez de la herramienta.
La herramienta trae una carpeta denomina templates. Esta carpeta muestra las diferentes plantillas que pueden ser utilizadas para spoofear dispositivos. Este es el mecanismo por el que la herramienta puede crecer. Crear plantillas es algo sencillo y que, simplemente, con incluir en dicha carpeta estaría preparado. Al final, cada template consta de:
Lanzando EvilSSDP
Ahora vamos a probar a lanzarlo. Lo primero va a ser crear un dispositivo “fake” de escáner. El típico recurso como una impresora o escáner que podemos tener conectado a la red local en cualquier sitio. La sintaxis de ejecución es muy sencilla:
En este instante, ya tenemos EvilSSDP en activo. En la siguiente imagen, se puede ver el anuncio y vemos una petición que viene de la dirección IP 10.0.0.2. Esa máquina es un Windows 7 que tenemos preparado. Se puede ver fácilmente, por el User-Agent que utiliza. Solicita la descripción a través del GET.
Cuando el usuario haga clic sobre el dispositivo, se abrirá un navegador y se redirige a la URL de la directiva “PresentationURL” del fichero device.xml. En ese momento, se le presenta una web falsa que, en caso de que el usuario introduzca datos, estos son recogidos. Este tipo de técnica puede ser muy útil en un Ethical Hacking o en un ejercicio de Red Team, como comenté anteriormente. En la imagen siguiente se pueden ver las credenciales introducidas en el navegador del equipo cliente con Windows 7 en el apartado de “[CREDS GIVEN]".
Ahora vamos a hacer un ejemplo con Office365. La plantilla que viene en EvilSSDP es para spoofear un Backup Online de Office 365. El procedimiento es igual que el anterior, solo que cambiando la plantilla. Como se puede ver en la imagen, veremos un dispositivo llamado “Office365 Backups”.
Si hacemos doble clic en ese dispositivo se nos abrirá un navegador con la siguiente web. Se puede ver fácilmente el ataque de phishing (o no) por la dirección URL. Pero... ¿tienes a todos tus usuarios entrenados para descubrir el ataque?
Al introducir credenciales obtendremos algo parecido a lo que hicimos antes. En la siguiente imagen se puede ver todo el intercambio de mensajes que nos da la aplicación con este caso. De nuevo, vemos el CREDS GIVEN.
Lo más interesante de todo es proceso es el potencial que tiene esto en un Ethical Hacking o ejercicio de Red Team, ya que puede ser utilizado para encontrar caminos en el test de intrusión que antes no teníamos. Los vectores “no comunes” pueden aportar una gran cantidad de casos de éxito, ya que la concienciación y el conocimiento de las empresas pueden ir en su contra ante el pentester.
Sin duda, curiosa técnica de Hacking Windows que debemos controlar y, además, la herramienta permite fácilmente reutilizarla para el caso de trabajo que tengamos entre manos. Es decir, si estás en un pentesting y tienes que hacer uso de ella, pero la plantilla o el caso de uso que necesitas no está, puedes fácilmente incorporarlo. Metemos la herramienta EvilSSDP en la mochila del pentester.
Saludos,
Figura 1: EvilSSDP: Cómo poner dispositivos maliciosos en la red en un ejercicio de Red Team |
Empecé a estudiar el SSDP gracias al ChromeCast, otro dispositivo de “conéctame a una red” y disfruta. Aquí surgió HomePwn, aunque algunos no lo sepan, y fue así como se hizo una prueba de concepto en Ruby. Más tarde, llevé el proyecto a mis compañeros de Ideas Locas donde se hizo un gran trabajo. El objetivo de HomePwn principal era aprovechar este tipo de protocolos y otros para enumerar dispositivos en una red, sobretodo, dispositivos que no fueran ordenadores al uso. El objetivo era integrar módulos de Ethical Hacking para dichos dispositivos.
Figura 2: HomePwn Paper
Más tarde, fueron surgiendo nuevas ideas y llegó la idea del pentesting a todos esos dispositivos que puedes tener en una empresa, que utilizan tecnologías que están en un nuestro día a día, pero que van más allá de un simple pentesting a una máquina al uso. Aparecieron módulos para tratar BLE, para jugar con NFC. HomePwn creció y llegó a BlackHat con un gran número de módulos y pruebas que mostraban el potencial de la herramienta. En el siguiente video se puede ver la demo de BlackHat con HomePwn.
Figura 3: Demo de HomePWN en BlackHat
En el artículo de hoy quería reflexionar sobre una de las opciones que se barajó con HomePwn y, que después de ver esta herramienta, se puede incorporar de manera sencilla. La herramienta EvilSSDP .
EvilSSDP
Esta herramienta implementa una prueba de concepto, mezclando el spoofing con el phishing con un objetivo: capturar credenciales mediante el spoofing de dispositivos en una red empresarial. La idea es muy interesante, ya que se abusa del protocolo SSDP para anunciar que hay un dispositivo en la red, cuando realmente éste no es tal.
Figura 4: EvilSSDP en GitHub |
Es la herramienta EvilSSDP la que está “comportándose” como un dispositivo de red que no es. Cuando el usuario accede a dicho dispositivo se encontrará con un panel de login, digamos que “el que toque” en función de la plantilla o “spoofing” hecho.
Figura 5: Libro de "Empire: Hacking Avanzado en el Read Team" de 0xWord |
Como se puede ver la idea es sencilla, pero bastante potente de cara a un Ethical Hacking o un ejercicio de Red Team. Como se indica en la descripción del proyecto EvilSSDP permite hacer spoof sobre SSDP y crear dispositivos UPnP “fake”. El objetivo es “robar” credenciales e incluso jugar con el protocolo SMB para credenciales de red, en ese caso.
Probando EvilSSDP
La instalación es trivial, simplemente hacer un git clone sobre la URL y tendremos descargado EvilSSDP. Es importante que tengamos Python3 en el equipo, ya que es un requisito. Viendo la ayuda de la herramienta, tal y como se puede ver en la imagen donde lo hemos instalado en nuestro Kali Linux, queda claro la sencillez de la herramienta.
Figura 6: EvilSSDP en nuestro Kali Linux |
La herramienta trae una carpeta denomina templates. Esta carpeta muestra las diferentes plantillas que pueden ser utilizadas para spoofear dispositivos. Este es el mecanismo por el que la herramienta puede crecer. Crear plantillas es algo sencillo y que, simplemente, con incluir en dicha carpeta estaría preparado. Al final, cada template consta de:
- El fichero XML device. Aquí viene la descripción de la lista de servicios y la URL de presentación. Apunta también al fichero present, en el tag “presentationURL”.
- El fichero XML service.
- El fichero HTML present. Es la web que se presentará y que será el phishing.Visto. Como se puede ver es fácil crear un dispositivo “fake”. Lo que hay que hacer es generar el spoof en la red, pero esto no es complejo, hay que generar el tráfico SSDP dando a conocer dicho dispositivo. Los replies se generan cuando hay peticiones de descubrimiento del SSDP, por lo que cuando el usuario acceda a “Network” en un sistema Windows, éste hará el descubrimiento automático y nuestro EvilSSDP responderá.
Lanzando EvilSSDP
Ahora vamos a probar a lanzarlo. Lo primero va a ser crear un dispositivo “fake” de escáner. El típico recurso como una impresora o escáner que podemos tener conectado a la red local en cualquier sitio. La sintaxis de ejecución es muy sencilla:
evil_ssdp.py [interfaz de red] –template [template a utilizar]
Figura 7: Usando la template scanner |
En este instante, ya tenemos EvilSSDP en activo. En la siguiente imagen, se puede ver el anuncio y vemos una petición que viene de la dirección IP 10.0.0.2. Esa máquina es un Windows 7 que tenemos preparado. Se puede ver fácilmente, por el User-Agent que utiliza. Solicita la descripción a través del GET.
Figura 8: El usuario hace clic |
Cuando el usuario haga clic sobre el dispositivo, se abrirá un navegador y se redirige a la URL de la directiva “PresentationURL” del fichero device.xml. En ese momento, se le presenta una web falsa que, en caso de que el usuario introduzca datos, estos son recogidos. Este tipo de técnica puede ser muy útil en un Ethical Hacking o en un ejercicio de Red Team, como comenté anteriormente. En la imagen siguiente se pueden ver las credenciales introducidas en el navegador del equipo cliente con Windows 7 en el apartado de “[CREDS GIVEN]".
Figura 9: Redirección a la URL controlada y Credenciales obtenidas |
Ahora vamos a hacer un ejemplo con Office365. La plantilla que viene en EvilSSDP es para spoofear un Backup Online de Office 365. El procedimiento es igual que el anterior, solo que cambiando la plantilla. Como se puede ver en la imagen, veremos un dispositivo llamado “Office365 Backups”.
Figura 10: Falso dispositivo de Office365 backups |
Si hacemos doble clic en ese dispositivo se nos abrirá un navegador con la siguiente web. Se puede ver fácilmente el ataque de phishing (o no) por la dirección URL. Pero... ¿tienes a todos tus usuarios entrenados para descubrir el ataque?
Figura 11: Phishing de Office365 en la red local |
Al introducir credenciales obtendremos algo parecido a lo que hicimos antes. En la siguiente imagen se puede ver todo el intercambio de mensajes que nos da la aplicación con este caso. De nuevo, vemos el CREDS GIVEN.
Figura 12: Captura de credenciales en el ataque de Phishing |
Lo más interesante de todo es proceso es el potencial que tiene esto en un Ethical Hacking o ejercicio de Red Team, ya que puede ser utilizado para encontrar caminos en el test de intrusión que antes no teníamos. Los vectores “no comunes” pueden aportar una gran cantidad de casos de éxito, ya que la concienciación y el conocimiento de las empresas pueden ir en su contra ante el pentester.
Figura 13: Hacking Windows |
Sin duda, curiosa técnica de Hacking Windows que debemos controlar y, además, la herramienta permite fácilmente reutilizarla para el caso de trabajo que tengamos entre manos. Es decir, si estás en un pentesting y tienes que hacer uso de ella, pero la plantilla o el caso de uso que necesitas no está, puedes fácilmente incorporarlo. Metemos la herramienta EvilSSDP en la mochila del pentester.
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 14: Contactar con Pablo González |
No hay comentarios:
Publicar un comentario