
Zeek-Plugin, das CallStranger (CVE-2020-12695) Ausnutzung über UPnP-SUBSCRIBE/NOTIFY-Analyse erkennt und DDoS-Amplifikation, Datenextfiltration und externe Callbacks identifiziert.
Dieses Paket versucht, CallStranger (CVE-2020-12695)-Ausnutzungsversuche und Datenerfassung zu erkennen. Dazu sucht es nach drei wesentlichen Dingen:
SUBSCRIBE-Befehle mit einer Notify-URL, die eine IP-Adresse enthält, die keine RFC1918- oder local_nets-Adresse ist. Dies könnte der Vorläufer für DDoS-Amplifikation oder Datenexfiltration sein.NOTIFY-Befehle, die für eine Nicht-RFC1918- oder local_nets-Adresse bestimmt sind. Dies könnte auf aktive DDoS-Amplifikation oder Datenexfiltration hinweisen.SUBSCRIBE-Befehle mit einer Notify-URL, die länger als CallStrangerDetector::exfiltration_threshold Bytes ist. Dies könnte auf Datenexfiltration über UPnP hinweisen.Das Modul geht davon aus, dass Ihre Site normalerweise keine UPnP SUBSCRIBE- oder NOTIFY-Befehle hat, die für das Internet bestimmt sind, und dass Sie keine UPnP-Geräte dem Internet aussetzen. Wenn eine dieser Bedingungen zutrifft, werden Sie Fehlalarme sehen. Sie können bestimmte IPs, die Fehlalarme verursachen, zum CallStrangerDetector::ignore_subnets-Set hinzufügen, um sie zu ignorieren.
Um dieses Skript gegen eine PCAP-Datei zu verwenden, klonen Sie einfach das Git-Repository und führen Sie Zeek mit zeek -Cr your.pcap scripts/__load__.zeek aus.
Um das Paket zu installieren, klonen Sie das Git-Repository und führen Sie zkg install . aus dem Paketverzeichnis aus.
Das Modul fügt dem notice.log Benachrichtigungen hinzu, wenn es CallStranger-ähnliche Aktivitäten erkennt. Die Benachrichtigungen sind wie folgt:
CallStranger_Data_Exfiltration_Attempt: Ein Versuch wurde beobachtet, ein UPnP-Gerät zum Exfiltrieren von Daten zu veranlassenCallStranger_Data_Exfiltration_Success: Es wurde beobachtet, dass ein UPnP-Gerät wahrscheinlich Daten exfiltriertCallStranger_UPnP_Request_Callback_To_External_Host: Ein Versuch wurde beobachtet, ein UPnP-Gerät dazu zu bringen, einen Rückruf an einen externen Host zu tätigenCallStranger_UPnP_To_External_Host: Es wurde beobachtet, dass ein UPnP-Gerät einen Rückruf an einen externen Host tätigtEs gibt drei Konfigurationsoptionen, die Sie einstellen können:
CallStrangerDetector::exfiltration_threshold: Die Anzahl der Bytes, die in einer UPnP-Callback-URL beobachtet werden müssen, um als Datenexfiltration eingestuft zu werden.CallStrangerDetector::ignore_subnets: Eine Menge von Subnetzen, die bei UPnP-Erkennungen ignoriert werden sollten. Verwenden Sie dies, wenn Sie Fehlalarme haben, bei denen UPnP legitim über das Internet läuft.CallStrangerDetector::strict_upnp_protocol_detection: Dieser Boolean steuert, ob das Skript strenger vorgeht, wenn es versucht, UPnP SUBSCRIBE-Befehle zu identifizieren. Dies geschieht, indem der „NT“-(Notification Type)-Header beobachtet werden muss. Der Standardwert ist false, da der NT-Header eigentlich nichts tut, sondern nur von der UPnP-Spezifikation verlangt wird. Wenn Sie Nicht-UPnP-SUBSCRIBE-Datenverkehr haben, müssen Sie dies möglicherweise auf true setzen.Ich habe dies gegen lokalen UPnP-Datenverkehr und unter Verwendung des Proof-of-Concept-Codes des CallStranger-Autors (https://github.com/yunuscadirci/CallStranger) getestet. Wenn Sie Probleme haben, eröffnen Sie bitte ein GitHub-Issue oder kontaktieren Sie uns. Vielen Dank!