CallStranger
Questo script è stato creato da Yunus Çadırcı (https://twitter.com/yunuscadirci) per verificare la vulnerabilità CallStranger (CVE-2020-12695). Un attaccante può utilizzare questa vulnerabilità per:
Vulnerabilità CallStranger
La vulnerabilità CallStranger, presente in miliardi di dispositivi UPnP, può essere utilizzata per esfiltrare dati (anche se si dispone di adeguati mezzi di sicurezza DLP/perimetrali) o per scansionare la propria rete o addirittura far partecipare la propria rete a un attacco DDoS.
La vulnerabilità – CallStranger – è causata dal valore dell'header Callback nella funzione SUBSCRIBE di UPnP, che può essere controllato da un attaccante e abilita una vulnerabilità simile a SSRF che colpisce milioni di dispositivi esposti su Internet e miliardi di dispositivi LAN. Questa vulnerabilità può essere utilizzata per:
- Bypassare DLP e dispositivi di sicurezza di rete per esfiltrare dati
- Utilizzare milioni di dispositivi UPnP esposti su Internet come fonte di DDoS TCP riflesso amplificato (non lo stesso di https://www.cloudflare.com/learning/ddos/ssdp-ddos-attack/ )
- Scansionare porte interne da dispositivi UPnP esposti su Internet
Possibili rimedi:
- Disabilitare i servizi UPnP non necessari, specialmente per dispositivi/interfacce esposti su Internet.
- Controllare le reti Intranet e server per assicurarsi che i dispositivi UPnP (router, telecamere IP, stampanti, gateway multimediali, ecc.) non consentano l'esfiltrazione di dati.
- Valutare i log di sicurezza di rete per verificare se questa vulnerabilità è stata utilizzata da qualche attore malevolo.
- Contattare il provider ISP/vendor di protezione DDoS per verificare se le loro soluzioni possono bloccare il traffico generato da UPnP SUBSCRIBE (HTTP NOTIFY)
Poiché si tratta di una vulnerabilità di protocollo, potrebbe volerci molto tempo prima che i vendor forniscano patch. Visita https://callstranger.com e https://kb.cert.org/vuls/id/339275 per informazioni dettagliate, dispositivi interessati, software e per seguire gli aggiornamenti. CVE-2020-12695 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-12695 è assegnata a CallStranger.
OCF ha aggiornato la specifica UPnP il 17.04.2020 per rimediare a questa vulnerabilità. Controlla la nuova specifica su https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf
Installazione
sudo python3 setup.py install
se necessario
sudo pip3 install -r requirements.txt
cryptography
requests
termcolor
Utilizzo
basta navigare in CallStranger ed eseguire con Python3 (testato con Python 3.7.5 su Windows 10, Python 3.8.2 su Kali 2020.2)
Per la scansione e test della sottorete corrente:
python3 CallStranger.py
Per test di un singolo dispositivo:
python3 CallDirect.py http://DeviceDocumentPath
esempio: python3 CallDirect.py http://192.168.1.1:37215/upnpdev.xml
Come funziona lo script?
- Trova tutti i dispositivi UPnP sulla LAN
- Trova tutti i servizi UPnP
- Trova tutti gli endpoint di sottoscrizione
- Invia questi endpoint crittografati al server di verifica tramite Callback UPnP.
- Il server non può vedere questi endpoint perché tutta la crittografia è eseguita lato client
- Recupera la lista dei servizi crittografati dal server di verifica e li decrittografa lato client
- Confronta i servizi UPnP trovati con quelli verificati
Esempio di Output