
Plugin Zeek détectant l'exploitation de CallStranger (CVE-2020-12695) via l'analyse UPnP SUBSCRIBE/NOTIFY, identifiant l'amplification DDoS, l'exfiltration de données et les rappels externes.
Ce paquet tente de détecter les tentatives d'exploitation de CallStranger (CVE-2020-12695) et l'exfiltration de données. Pour ce faire, il recherche trois éléments clés :
SUBSCRIBE avec une URL de notification contenant une adresse IP qui n'est pas une adresse RFC1918 ou local_nets. Cela pourrait être le précurseur d'une amplification DDoS ou d'une exfiltration de données.NOTIFY destinées à une adresse non RFC1918 ou local_nets. Cela pourrait indiquer une amplification DDoS active ou une exfiltration de données.SUBSCRIBE avec une URL de notification dont la longueur dépasse CallStrangerDetector::exfiltration_threshold octets. Cela pourrait indiquer une exfiltration de données via UPnP.Le module suppose que votre site n'a normalement pas de commandes UPnP SUBSCRIBE ou NOTIFY destinées à Internet et que vous n'avez pas de périphériques UPnP exposés à Internet. Si l'une ou l'autre de ces affirmations est vraie, vous verrez des faux positifs. Vous pouvez ajouter des IP particulières qui génèrent des faux positifs à l'ensemble CallStrangerDetector::ignore_subnets pour les ignorer.
Pour utiliser ce script sur un PCAP, clonez le dépôt Git et exécutez Zeek avec zeek -Cr votre.pcap scripts/__load__.zeek
Pour installer le paquet, clonez le dépôt Git et exécutez zkg install . depuis le répertoire du paquet.
Le module ajoutera des notifications dans notice.log s'il détecte une activité ressemblant à CallStranger. Les notifications sont les suivantes :
CallStranger_Data_Exfiltration_Attempt : Tentative observée de faire exfiltrer du trafic par un périphérique UPnP.CallStranger_Data_Exfiltration_Success : Périphérique UPnP ayant probablement exfiltré des données.CallStranger_UPnP_Request_Callback_To_External_Host : Tentative observée de faire rappeler un hôte externe par un périphérique UPnP.CallStranger_UPnP_To_External_Host : Périphérique UPnP rappelant un hôte externe.Trois options de configuration sont disponibles :
CallStrangerDetector::exfiltration_threshold : Le nombre d'octets à observer dans une URL de rappel UPnP pour être classifiée comme exfiltration de données.CallStrangerDetector::ignore_subnets : Un ensemble de sous-réseaux à ignorer pour les détections UPnP. Utilisez cela si vous avez des faux positifs avec UPnP traversant légitimement Internet.CallStrangerDetector::strict_upnp_protocol_detection : Ce booléen contrôle si le script sera plus strict pour identifier les commandes UPnP SUBSCRIBE. Pour ce faire, il exige que l'en-tête « NT » (Notification Type) soit observé. La valeur par défaut est false car l'en-tête NT n'a en réalité aucun effet, il est simplement requis par la spécification UPnP. Si vous avez du trafic SUBSCRIBE non-UPnP, vous devrez peut-être passer cette option à true.J'ai testé ce module sur du trafic UPnP local et en utilisant le code de preuve de concept fourni par l'auteur de CallStranger (https://github.com/yunuscadirci/CallStranger). Si vous rencontrez un problème, veuillez ouvrir un issue GitHub ou nous contacter. Merci !