ADMIN

2024

07

2024-06-27T12:00:00

Industrievernetzung

PRAXIS

046

Sicherheit

E-Mail

Bösartigen Datenverkehr mit Maltrail identifizieren

Angreifern auf der Spur

von Dr. Holger Reibold

Veröffentlicht in Ausgabe 07/2024 - PRAXIS

Mit der voranschreitenden Digitalisierung von Unternehmensprozessen steigt die Anfälligkeit von IT-Infrastrukturen. Bereits eine unerkannte Schwachstelle öffnet potenziellen Angreifern Tür und Tor. Auch wenn ein 100-prozentiger Schutz eine Illusion bleibt, müssen Unternehmen angesichts einer verschärften Sicherheitslage proaktiv agieren. Das freie Maltrail kann dabei den Werkzeugkasten sinnvoll ergänzen und bei der Suche nach Angreifern im Netzwerk helfen.

Während die Administration von klassischen Intrusion-Detection- und Intrusion-Prevention-Systemen mit einem hohen Aufwand verbunden ist, auch weil hybride Ansätze aus IDS (Intrusion Detection System), HIDS (Host-based Intrusion Detection System) und NIDS (Network-based Intrusion Detec-tion System) gefragt sind, gestaltet sich die Nutzung von Maltrail einfach.
Um bösartigen Datenverkehr in Ihrem Netzwerk zu identifizieren, greift Maltrail auf öffentlich zugängliche Listen zurück, die auf kritische oder verdächtige Spuren hinweisen. Die Entwickler verraten auf der GitHub-Projektsite [1], um welche Listen und um welche bösartigen Entitäten es sich dabei handelt. Maltrail berücksichtigt insbesondere Statistiken, AV-Berichte, Domainnamen und IP-Adressen. Auch HTTP-User-Agent-Header-Werte wie sie beispielsweise sqlmap [2] generiert, das der automatischen SQL-Injection- und Datenbankübernahme dient, kommen zum Einsatz. Optional ist die Nutzung heuristischer Mechanismen, die bei der Entdeckung unbekannter Bedrohungen hilfreich sein können. Unter dem Oberbegriff "Trail" werden übrigens die verschiedenen verdächtigen Quellen subsumiert.
Grundlegender Aufbau
Die Stärken von Maltrail liegen im Erkennen verdächtiger Webzugriffe und Namensauflösungen. Dabei ist die Funktionalität weitgehend auf die Analyse und Berichtausgabe beschränkt. Die Umgebung basiert auf einer Sensor- und einer Serverkomponente. Während der Server der Speicherung der Ereignisse und dem webbasierten Zugriff dient, nimmt der Sensor den Datenverkehr unter die Lupe. Der Server der Python-basierten Umgebung ist in der Datei "server.py" und der Sensor entsprechend in der Datei "sensor.py" implementiert.
Während die Administration von klassischen Intrusion-Detection- und Intrusion-Prevention-Systemen mit einem hohen Aufwand verbunden ist, auch weil hybride Ansätze aus IDS (Intrusion Detection System), HIDS (Host-based Intrusion Detection System) und NIDS (Network-based Intrusion Detec-tion System) gefragt sind, gestaltet sich die Nutzung von Maltrail einfach.
Um bösartigen Datenverkehr in Ihrem Netzwerk zu identifizieren, greift Maltrail auf öffentlich zugängliche Listen zurück, die auf kritische oder verdächtige Spuren hinweisen. Die Entwickler verraten auf der GitHub-Projektsite [1], um welche Listen und um welche bösartigen Entitäten es sich dabei handelt. Maltrail berücksichtigt insbesondere Statistiken, AV-Berichte, Domainnamen und IP-Adressen. Auch HTTP-User-Agent-Header-Werte wie sie beispielsweise sqlmap [2] generiert, das der automatischen SQL-Injection- und Datenbankübernahme dient, kommen zum Einsatz. Optional ist die Nutzung heuristischer Mechanismen, die bei der Entdeckung unbekannter Bedrohungen hilfreich sein können. Unter dem Oberbegriff "Trail" werden übrigens die verschiedenen verdächtigen Quellen subsumiert.
Grundlegender Aufbau
Die Stärken von Maltrail liegen im Erkennen verdächtiger Webzugriffe und Namensauflösungen. Dabei ist die Funktionalität weitgehend auf die Analyse und Berichtausgabe beschränkt. Die Umgebung basiert auf einer Sensor- und einer Serverkomponente. Während der Server der Speicherung der Ereignisse und dem webbasierten Zugriff dient, nimmt der Sensor den Datenverkehr unter die Lupe. Der Server der Python-basierten Umgebung ist in der Datei "server.py" und der Sensor entsprechend in der Datei "sensor.py" implementiert.
In der Standardkonfiguration laufen Server und Sensor auf dem gleichen System. Dank des Einsatzes von Komprimierungstechniken lassen sich laut Angaben der Entwickler nahezu beliebig viele Ereignisse analysieren und aufbereiten. Grundsätzlich können Sie den Sensor auch als Standalone-Umgebung einsetzen. In diesem Fall landen alle Ereignisse im lokalen Logging-Verzeichnis. Das Auswerten der Protokolleinträge ist manuell oder mithilfe einer Drittanwendung möglich, die über eine CSV-Importfunktion verfügt.
Registriert der Sensor eine positive Übereinstimmung, sendet er die Detailinformationen an den Maltrail-Server. Dort werden diese im Protokollverzeichnis gespeichert. Bei einer Standardkonfiguration, bei der beide Maltrail-Komponenten auf demselben Rechner laufen, schreibt das Tool die Protokolle wie erwähnt in das lokalen Protokollverzeichnis. Bevorzugen Sie die getrennte Ausführung beider Komponenten, müssen Sie die Konfiguration "LOG_SERVER" anpassen. In diesem Fall übermittelt der Sensor UDP-Nachrichten an den Remote-Server. Um einen ersten Eindruck von Maltrail zu erhalten, stellen die Entwickler eine Onlinedemo [3] bereit.
Maltrail ist bezüglich der Ressourcenanforderungen nicht sonderlich anspruchsvoll. Neben einem Python-Interpreter ab Version 2.6 wird die Installation des "pcapy-ng"-Pakets vorausgesetzt. Wenn Sie Python 3.x verwenden, sollte es "pcapy" sein. Der Sensorkomponente sollten Sie im Single-Process-Modus mindestens 1 GByte RAM gönnen; im Multiprozess-Modus entsprechend mehr. Außerdem benötigt der Sensor Root-Rechte. Für die Serverkomponente gelten keine spezifischen Anforderungen. Die Installation gestaltet sich einfach. Wenn Sie mit Ubuntu oder Debian arbeiten, führen Sie folgende Kommandos aus:
sudo apt-get install git python3 python3-dev python3-pip python-is-python3 libpcap-dev build-essential procps schedtool
sudo pip3 install pcapy-ng
git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
sudo python3 sensor.py
Alternativ steht auch ein Docker-Container zur Verfügung. Um den Server auf dem gleichen System zu starten, öffnen Sie ein neues Terminalfenster und führen folgende Befehle aus:
[[ -d maltrail ]] || git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
python server.py
Beim ersten Start des Sensors lädt diese Komponente die verfügbaren Block- und Reputationslisten auf das lokale System herunter. Dieser Vorgang lässt sich im Terminal sehr schön verfolgen. Nach der Ausführung des Servers können Sie über das Webinterface auf Maltrail zugreifen. Bei einer lokalen Installation verwenden Sie die URL "http://127.0.0.1:8338". Die Standardzugangsdaten lauten "admin: changeme!"
Erste Konfigurationsschritte
Die Konfiguration der Maltrail-Umgebung erfolgt über die Datei "maltrail.conf". Sie umfasst die Abschnitte "[Server]" und "[Sensor]", die der Konfiguration beider Komponenten dienen. Mit den beiden Optionen "HTTP_ADDRESS" und "HTTP_ PORT" bestimmen Sie die Serveradresse und den Serverport. Wenn Sie den Zugriff per SSL beziehungsweise TLS absichern möchten, setzen Sie die Option "USE_SSL" auf "true". Damit der abgesicherte Zugriff funktioniert, muss die Option "SSL_PEM" auf den Zertifikatscontainer verweisen.
Nachdem Sie sich einen ersten Überblick verschafft haben, sollten Sie den administrativen User ändern. Gegebenenfalls sind weitere User anzulegen. Die zugehörigen Einstellungen finden Sie im Unterabschnitt "USERS". Jeder Benutzereintrag besteht aus folgenden Daten:
Benutzername:sha256(Passwort):UID:filter_netmask
Mit dem UID-Wert weisen Sie dem Benutzer eine eindeutige Benutzerkennung zu. Dabei empfiehlt es sich, administrativen Konten Werte unter 1000 zuzuweisen. Hier ein Beispiel:
admin:g6j0pelqmhg2n72zx947lf72rxf4iqzzml9zzrcnfzgreguqx69nopme6ctq8r8s:1000:192.168.0.0/16
Mit den Optionen "UDP_ADDRESS" und "UDP_PORT" bestimmen Sie den Server, der die Meldungen entgegennimmt. Bei einer Standardkonfiguration sind keine Anpassungen erforderlich.
Bei der ersten Serverausführung ("python server.py") sorgt die aktivierte Option "USE_SERVER_UPDATE_TRAILS" dafür, dass die Trails aus den Trail-Definitionen aktualisiert werden. Diese Funktion stellt sicher, dass die Protokolleinträge im Logging-Verzeichnis landen und die Reporting-Schnittstelle zur Verfügung steht.
Auch der Sensor bietet verschiedene Konfigurationsmöglichkeiten. Wenn Sie größere Umgebungen überwachen, sollten Sie Maltrail weitere Ressourcen zur Verfügung stellen. Am einfachsten geht das, indem Sie die Option "USE_MULTIPROCESSING" auf "true" setzen. In diesem Fall verwendet Maltrail alle CPU-Kerne.
Dabei gestaltet sich die Aufteilung wie folgt: Einen Kern nutzt die Umgebung für die Paketerfassung, alle anderen dienen der Paketverarbeitung. Wenn Sie diese Option nicht nutzen, werden alle Aufgaben von einem Kern bewältigt.
Die Aussagekraft von Maltrail hängt wesentlich von den Trails ab, die die Umgebung aus unterschiedlichen Quellen bezieht. Die Option "UPDATE_PERIOD" bestimmt das Aktualisierungsintervall in Sekunden. Der Standartwert 86.400 sorgt für einen täglichen Abgleich. Neben der Trail-basierten Analyse verfügt Maltrail über einen heuristischen Mechanismus zur Risikobewertung. Dieser ist standardmäßig mit "USE_HEURISTICS" aktiviert. Die Prüfung untersucht den Traffic insbesondere auf verdächtig lange Domain-Namen oder auf Download-Versuche von EXE-Dateien. Nachteil: Die Heuristik kann zu einem spürbaren Anstieg von False Positives führen.
Wenn Sie die Ereignisse an eine Drittumgebung übermitteln wollen, verwenden Sie die Option "SYSLOG_SERVER". Die Ereignisdaten werden im CEF-Format (Common Event Format) an den betreffenden UDP-Dienst übermittelt. Dabei kann es sich beispielsweise um Syslog handeln. Ist das JSON-Format auf der Empfängerseite das präferierte Format, verwenden Sie die Option "LOGSTASH_SERVER". Auch hier kommt UDP als Kommunikationsprotokoll zum Einsatz.
Schließlich verfügt Maltrail über komponentenübergreifende Einstellungen. Diese finden Sie im Abschnitt "[All]". Hier bestimmen Sie, ob umgebungsweit Debug-Meldungen ausgegeben werden oder ob Sie einen Proxy-Server verwenden wollen. Auch den Standardspeicherort für die Trails können Sie ändern.
Die Web-GUI von Maltrail kommt schnörkellos daher. Mit Hilfe der Filterfunktion begrenzen Sie die Darstellung auf die relevanten Events.
Informatives Reporting
Nach dem Einloggen in das Webinterface präsentiert Ihnen Maltrail eine Zusammenfassung und eine tabellarische Aufbereitung der registrierten Events. Die Zusammenfassung führt die Anzahl der Threats, der Ereignisse, der Quellen und der verwendeten Trails auf. Außerdem gibt die Umgebung eine Bewertung hinsichtlich des Schweregrads der Bedrohungen ab. Mit einem Klick auf den "Events"-Button öffnen Sie die Ereignisse, die im ausgewählten Zeitraum erfasst wurden. Die Umgebung generiert ein Diagramm der Event-Entwicklung der letzten Stunden. Dabei zeigen die blaue Linie DNS-basierte und der gelbe Verlauf URL-basierte Ereignisse an. Der roten Kurvenverlauf steht für IP-basierte Ereignisse.
Wenn Sie wissen möchten, welche Quellen primär für die Events verantwortlich sind, folgen Sie dem "Sources"-Link. Hier visualisiert ein gestapeltes Säulendiagramm die bedeutenden Verursacher. Indem Sie den Mauszeiger über eine Säule führen, erfahren Sie, wie sich die Events protokollspezifisch aufteilen. Die "Trails"-Übersicht visualisiert den Anteil der kritischen Spuren in Form eines Kuchendiagramms. Auch hier können Sie Details abrufen, indem Sie den Mauszeiger über die Darstellungen führen.
Die tabellarische Ereignisübersicht bietet Ihnen eine Fülle von Detailinformationen zu den verschiedenen Vorkommnissen. Die Verwendung von Farben in der Spalte "Severity" erweist sich als hilfreich, um kritische von weniger kritischen Vorfällen zu unterscheiden. Zu jedem Eintrag können Sie die IP-Adresse der Quelle, den Port, den Protokolltyp, den zugehörigen Trail und den Ereignistyp abrufen. Die Sortierfunktion erweist sich dabei als hilfreich, um beispielsweise zunächst die tendenziell kritischen Einträge zu prüfen.
Auch die Tabellenansicht ist wieder interaktiv gestaltet: Wenn Sie den Mauszeiger über die Spalte "scr_ip" führen, blendet Maltrail Event-Details ein. Zur gezielten Eingrenzung der Event-Liste verwenden Sie die Suche. Die Eingabe von "High" begrenzt die Darstellung auf alle Ereignisse, denen dieser Schweregrad zugewiesen wird.
In der Praxis stellt sich die Frage, wie Sie spezifische Vorgänge identifizieren. Ein beliebtes Tool bei Hackern ist der Tor-Browser. Erkennt Maltrail einen entsprechenden Vorfall, vermerkt das Programm dies in der Spalte "info" mit dem Hinweis "tor". Mit der entsprechenden Eingabe begrenzen Sie die Tabellenansicht auf relevante Events. Auch Malware lässt sich so schnell identifizieren.
Einschränkungen
Der Fokus von Maltrail liegt auf der Identifikation von bösartigem Datenverkehr und dessen Bewertung. Wie unsere Tests zeigen, bewältigt das Programm diese Aufgabe mit Bravour. Dennoch unterliegt Maltrail verschiedenen Einschränkungen. Um einen vollständigen Überblick über relevante Ereignisse zu erlangen, wäre die Integration in eine Umgebung wie der Malware Information Sharing Platform (MISP) [4] wünschenswert, doch bislang existiert hierfür keine smarte Lösung.
Auch die Integration von verschiedenen Sensoren in die Web-GUI gestaltet sich bislang schwierig. Für den Umgang mit False Positives bietet Maltrail leider auch keine nennenswerte Unterstützung. Hier ist die Erfahrung des Administrators gefragt. In Foren wird zudem kritisiert, dass Maltrail abhängig von der Netzwerkgröße schnell GByte-weise Daten sammelt.
Vereinzelt wird auch Kritik an der Reduktion auf die passive Rolle formuliert. Doch das tut Maltrail Unrecht, denn ein Zusammenspiel mit entsprechenden Werkzeugen ist durchaus einfach realisierbar. In der Maltrail-Serverkonfiguration findet sich die Option "FAIL2BAN_REGEX", die es erlaubt, Sensordaten an "ipset" bzw. "iptables" zu übermitteln. Konkret ermöglicht dies die Verwendung von IP-basierten Sperrmechanismen durch regelmäßiges Abrufen entsprechender Daten. Mithilfe eines kleinen Skripts, das beispielsweise als Root-Cronjob im Minutentakt ausgeführt wird, integrieren Sie Maltrail in Ihre Sicherheitsarchitektur:
#!/bin/bash
ipset -q flush maltrail
ipset -q create maltrail hash:net
for ip in $(curl http://127.0.0.1:8338/fail2ban 2>/dev/null | grep -P '^[0-9.]+$'); do ipset add maltrail $ip; done
iptables -I INPUT -m set --match-set maltrail src -j DROP
Aktuell besitzt Maltrail die Versionsnummer "v0.68". Leider existiert keine Roadmap. Auch unsere Anfrage, mit welchen Features in Zukunft zu rechnen ist, blieb leider unbeantwortet.
Fazit
"Klein, aber fein" ist eine treffende Beschreibung von Maltrail. Die Analysesoftware verspricht durch die Traffic-Analyse auf Grundlage von etablierten Quellen einen sicherheitsspezifischen Mehrwert.
(dr)
Link-Codes
[1] Maltrail auf GitHub: https://github.com/stamparm/maltrail/
[3] Maltrail-Onlinedemo: https://maltraildemo.github.io
[4] Malware Information Sharing Platform: https://www.misp-project.org