CallStranger
Este script criado por Yunus Çadırcı (https://twitter.com/yunuscadirci) para verificar a vulnerabilidade CallStranger (CVE-2020-12695). Um atacante pode usar esta vulnerabilidade para:
Vulnerabilidade CallStranger
A vulnerabilidade CallStranger, encontrada em bilhões de dispositivos UPNP, pode ser usada para exfiltrar dados (mesmo com medidas adequadas de DLP/segurança de perímetro) ou escanear sua rede ou até mesmo fazer sua rede participar de um ataque DDoS.
A vulnerabilidade – CallStranger – é causada pelo valor do cabeçalho Callback na função SUBSCRIBE do UPnP, que pode ser controlado por um atacante e possibilita uma vulnerabilidade do tipo SSRF que afeta milhões de dispositivos expostos à Internet e bilhões de dispositivos LAN. Esta vulnerabilidade pode ser usada para:
- Contornar DLP e dispositivos de segurança de rede para exfiltrar dados
- Usar milhões de dispositivos UPnP expostos à Internet como fonte de DDoS TCP reflexivo amplificado (não igual a https://www.cloudflare.com/learning/ddos/ssdp-ddos-attack/ )
- Escanear portas internas a partir de dispositivos UPnP expostos à Internet
Possíveis correções:
- Desabilitar serviços UPnP desnecessários, especialmente para dispositivos/interfaces expostos à Internet.
- Verificar redes internas e de servidores para garantir que dispositivos UPnP (Roteadores, câmeras IP, impressoras, gateways de mídia, etc.) não estejam permitindo exfiltração de dados.
- Fazer uma avaliação nos logs de segurança de rede para saber se esta vulnerabilidade foi usada por algum agente de ameaça.
- Entrar em contato com o provedor de ISP/proteção DDoS se suas soluções conseguem bloquear tráfego gerado por UPnP SUBSCRIBE (HTTP NOTIFY)
Por ser uma vulnerabilidade de protocolo, pode levar muito tempo para os fornecedores lançarem patches. Visite https://callstranger.com e https://kb.cert.org/vuls/id/339275 para informações detalhadas, dispositivos afetados, software e para acompanhar atualizações. CVE-2020-12695 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-12695 foi atribuído ao CallStranger.
A OCF atualizou a especificação UPnP em 17.04.2020 para corrigir esta vulnerabilidade. Verifique a nova especificação em https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf
Instalação
sudo python3 setup.py install
se necessário
sudo pip3 install -r requirements.txt
cryptography
requests
termcolor
Uso
basta navegar até CallStranger e executar com Python3 (Testado com Python 3.7.5 no Windows 10, Python 3.8.2 no Kali 2020.2)
Para escaneamento e teste da sub-rede atual:
python3 CallStranger.py
Para teste de dispositivo único:
python3 CallDirect.py http://DeviceDocumentPath
exemplo: python3 CallDirect.py http://192.168.1.1:37215/upnpdev.xml
Como o script funciona?
- Encontra todos os dispositivos UPnP na LAN
- Encontra todos os serviços UPnP
- Encontra todos os endpoints de subscrição
- Envia esses endpoints criptografados para o servidor de verificação via Callback UPnP.
- O servidor não pode ver esses endpoints porque toda a criptografia é feita no lado do cliente
- Obtém a lista de serviços criptografados do servidor de verificação e descriptografa no lado do cliente
- Compara os serviços UPnP encontrados com os verificados
Exemplo de saída