
Zeek Plugin that detects CallStranger (CVE-2020-12695) attempts (http://callstranger.com/)
Данный пакет пытается обнаружить попытки эксплуатации CallStranger (CVE-2020-12695) и утечки данных. Он делает это, проверяя три ключевых аспекта:
SUBSCRIBE с URL уведомления, содержащим IP-адрес, который не является адресом из RFC1918 или local_nets. Это может быть прелюдией к усилению DDoS-атак или утечке данных.NOTIFY, предназначенные для адресов, не входящих в RFC1918 или local_nets. Это может указывать на активное усиление DDoS-атаки или утечку данных.SUBSCRIBE с URL уведомления длиннее, чем CallStrangerDetector::exfiltration_threshold байт. Это может указывать на утечку данных через UPnP.Модуль предполагает, что на вашем сайте обычно нет команд UPnP SUBSCRIBE или NOTIFY, направленных в Интернет, и у вас нет UPnP-устройств, открытых для Интернета. Если что-то из этого верно, вы увидите ложные срабатывания. Вы можете добавить конкретные IP-адреса, вызывающие ложные срабатывания, в набор CallStrangerDetector::ignore_subnets, чтобы игнорировать их.
Чтобы использовать этот скрипт с PCAP-файлом, просто клонируйте Git-репозиторий и запустите Zeek командой zeek -Cr your.pcap scripts/__load__.zeek
Чтобы установить пакет, клонируйте Git-репозиторий и выполните zkg install . из каталога пакета
Модуль будет добавлять уведомления в notice.log, если обнаружит активность, похожую на CallStranger. Уведомления следующие:
CallStranger_Data_Exfiltration_Attempt: Обнаружена попытка заставить UPnP-устройство осуществлять утечку трафикаCallStranger_Data_Exfiltration_Success: Обнаружено UPnP-устройство, вероятно, осуществляющее утечку данныхCallStranger_UPnP_Request_Callback_To_External_Host: Обнаружена попытка заставить UPnP-устройство выполнить обратный вызов к внешнему хостуCallStranger_UPnP_To_External_Host: Обнаружено UPnP-устройство, выполняющее обратный вызов к внешнему хостуДоступны три параметра конфигурации:
CallStrangerDetector::exfiltration_threshold: Количество байт, которое должно быть обнаружено в URL обратного вызова UPnP, чтобы классифицировать это как утечку данных.CallStrangerDetector::ignore_subnets: Набор подсетей, которые следует игнорировать при обнаружении UPnP. Используйте это, если у вас есть ложные срабатывания, когда UPnP легитимно пересекает Интернет.CallStrangerDetector::strict_upnp_protocol_detection: Этот логический параметр управляет тем, будет ли скрипт более строгим при попытке идентифицировать команды UPnP SUBSCRIBE. Для этого требуется наличие заголовка "NT" (Notification Type). По умолчанию установлено значение false, поскольку заголовок NT на самом деле ничего не делает, он просто требуется по спецификации UPnP. Если у вас есть трафик SUBSCRIBE, не являющийся UPnP, вам, возможно, придется установить это значение в trueЯ тестировал это на локальном UPnP-трафике, а также с использованием proof-of-concept кода, предоставленного автором CallStranger (https://github.com/yunuscadirci/CallStranger). Если у вас возникнут какие-либо проблемы, пожалуйста, откройте issue на GitHub или свяжитесь с нами. Спасибо!