CallStranger
Этот скрипт создан Юнусом Чадырджи (https://twitter.com/yunuscadirci) для проверки уязвимости CallStranger (CVE-2020-12695). Злоумышленник может использовать эту уязвимость для:
Уязвимость CallStranger
Уязвимость CallStranger, обнаруженная в миллиардах UPnP-устройств, может использоваться для эксфильтрации данных (даже при наличии надлежащих средств DLP/периметральной безопасности), сканирования вашей сети или даже для вовлечения вашей сети в DDoS-атаку.
Уязвимость CallStranger вызвана тем, что значение заголовка Callback в функции UPnP SUBSCRIBE может контролироваться злоумышленником, что приводит к уязвимости типа SSRF, затрагивающей миллионы устройств, доступных из Интернета, и миллиарды LAN-устройств. Эту уязвимость можно использовать для:
- Обхода DLP и сетевых средств безопасности для эксфильтрации данных
- Использования миллионов Internet-facing UPnP устройств как источника усиленного отражённого TCP DDoS (не то же самое, что https://www.cloudflare.com/learning/ddos/ssdp-ddos-attack/ )
- Сканирования внутренних портов с Internet-facing UPnP устройств
Возможные меры устранения:
- Отключите ненужные UPnP-сервисы, особенно на устройствах/интерфейсах, доступных из Интернета.
- Проверьте интрасеть и серверные сети, чтобы убедиться, что UPnP-устройства (роутеры, IP-камеры, принтеры, медиашлюзы и т.д.) не допускают эксфильтрацию данных.
- Проведите оценку журналов сетевой безопасности на предмет того, не использовал ли эту уязвимость какой-либо злоумышленник.
- Свяжитесь с вашим провайдером/вендором DDoS-защиты, могут ли их решения блокировать трафик, генерируемый UPnP SUBSCRIBE (HTTP NOTIFY)
Поскольку это уязвимость протокола, производителям может потребоваться много времени для выпуска исправлений. Посетите https://callstranger.com и https://kb.cert.org/vuls/id/339275 для получения подробной информации, затронутых устройств, программного обеспечения и отслеживания обновлений. Уязвимости CallStranger присвоен CVE-2020-12695 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-12695.
OCF обновила спецификацию UPnP 17.04.2020 для устранения этой уязвимости. Ознакомьтесь с новой спецификацией по адресу https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf
Установка
sudo python3 setup.py install
if needed
sudo pip3 install -r requirements.txt
cryptography
requests
termcolor
Использование
просто перейдите в каталог CallStranger и запустите с Python3 (протестировано на Python 3.7.5 в Windows 10, Python 3.8.2 в Kali 2020.2)
Для сканирования и тестирования текущей подсети:
python3 CallStranger.py
Для тестирования одного устройства:
python3 CallDirect.py http://DeviceDocumentPath
пример: python3 CallDirect.py http://192.168.1.1:37215/upnpdev.xml
Как работает скрипт?
- Находит все UPnP-устройства в локальной сети
- Находит все UPnP-сервисы
- Находит все конечные точки подписки
- Отправляет эти конечные точки в зашифрованном виде на сервер проверки через UPnP Callback.
- Сервер не видит эти конечные точки, поскольку всё шифрование выполняется на стороне клиента
- Получает зашифрованный список сервисов от сервера проверки и расшифровывает на стороне клиента
- Сравнивает найденные UPnP-сервисы с проверенными
Пример вывода