CallStranger
Este script fue creado por Yunus Çadırcı (https://twitter.com/yunuscadirci) para comprobar la vulnerabilidad CallStranger (CVE-2020-12695). Un atacante puede usar esta vulnerabilidad para:
Vulnerabilidad CallStranger
La vulnerabilidad CallStranger, presente en miles de millones de dispositivos UPNP, se puede utilizar para exfiltrar datos (incluso si dispone de medidas adecuadas de DLP/seguridad perimetral), escanear su red o incluso hacer que su red participe en un ataque DDoS.
La vulnerabilidad, denominada CallStranger, es causada por el valor del encabezado Callback en la función SUBSCRIBE de UPnP, que puede ser controlado por un atacante y permite una vulnerabilidad tipo SSRF que afecta a millones de dispositivos expuestos a Internet y a miles de millones de dispositivos LAN. Esta vulnerabilidad se puede utilizar para:
- Omitir DLP y dispositivos de seguridad de red para exfiltrar datos
- Usar millones de dispositivos UPnP expuestos a Internet como fuente de DDoS TCP reflectado amplificado (no es lo mismo que https://www.cloudflare.com/learning/ddos/ssdp-ddos-attack/ )
- Escanear puertos internos desde dispositivos UPnP expuestos a Internet
Posibles remediaciones:
- Deshabilitar servicios UPnP innecesarios, especialmente para dispositivos/interfaces expuestos a Internet.
- Revisar la intranet y las redes de servidores para asegurarse de que los dispositivos UPnP (routers, cámaras IP, impresoras, pasarelas multimedia, etc.) no permitan la exfiltración de datos.
- Realizar una evaluación de los registros de seguridad de la red para determinar si esta vulnerabilidad ha sido utilizada por algún actor de amenazas.
- Contactar al proveedor de ISP/protección DDoS para saber si sus soluciones pueden bloquear el tráfico generado por UPnP SUBSCRIBE (HTTP NOTIFY)
Debido a que es una vulnerabilidad de protocolo, los proveedores pueden tardar mucho tiempo en proporcionar parches. Visite https://callstranger.com y https://kb.cert.org/vuls/id/339275 para obtener información detallada, dispositivos afectados, software y para seguir las actualizaciones. La CVE-2020-12695 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-12695 está asignada a CallStranger.
OCF actualizó la especificación UPnP el 17.04.2020 para remediar esta vulnerabilidad. Consulte la nueva especificación en https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf
Instalación
sudo python3 setup.py install
si es necesario
sudo pip3 install -r requirements.txt
cryptography
requests
termcolor
Uso
simplemente navegue a CallStranger y ejecute con Python3 (probado con Python 3.7.5 en Windows 10, Python 3.8.2 en Kali 2020.2)
Para escanear y probar la subred actual:
python3 CallStranger.py
Para probar un solo dispositivo:
python3 CallDirect.py http://DeviceDocumentPath
ejemplo: python3 CallDirect.py http://192.168.1.1:37215/upnpdev.xml
¿Cómo funciona el script?
- Encuentra todos los dispositivos UPnP en la LAN
- Encuentra todos los servicios UPnP
- Encuentra todos los endpoints de suscripción
- Envía estos endpoints cifrados al servidor de verificación mediante UPnP Callback.
- El servidor no puede ver estos endpoints porque todo el cifrado se realiza en el lado del cliente
- Obtiene la lista de servicios cifrada del servidor de verificación y la descifra en el lado del cliente
- Compara los servicios UPnP encontrados con los verificados
Ejemplo de salida