ADMIN

2025

05

2025-04-29T12:00:00

Künstliche Intelligenz

PRAXIS

040

Security-Tipp

Sicherheit

Endlessh

Angreifer ausbremsen mit Endlessh

Frisch geteert

von Dr. Matthias Wübbeling

Veröffentlicht in Ausgabe 05/2025 - PRAXIS

Während das Konzept von Honeypots heute auch außerhalb der Sicherheits-Community bekannt ist und diese zur professionellen Verteidigung von Unternehmensnetzwerken eingesetzt werden, fristen die konzeptuell ähnlich aufgebauten Teergruben häufig ein Schattendasein. Was mit den Tarpits technisch möglich ist und wie Sie diese nutzen, um Schaden durch Angreifer in Ihrem Netzwerk zu minimieren, zeigt Ihnen der Security-Tipp.

Honeypots kennen Sie als gezielt verwundbare Systeme, die übliche Services emulieren und Angreifer im Netzwerk damit anlocken, ihr Verhalten analysieren und so Informationen zu den Methoden und Werkzeugen liefern können. Honeypots lassen sich als Frühwarnsystem einsetzen und erlauben es auch, neue Methoden der Angreifer zu verstehen.
Bestenfalls bieten Honeypots so eine halb automatische Möglichkeit, die Produktivsysteme in Ihrem Netzwerk zu schützen. In der Literatur finden Sie unterschiedliche Varianten, ausgehend von Low-Interaction-Honeypots, die etwa in einem Netzwerk neue Verbindungen annehmen, dahinter aber keinen Service bereitstellen, bis hin zu High-Interaction-Honeypots, die ganze Systeme und Produktionsumgebungen simulieren.
Abhängig von den Interaktionsmöglichkeiten eines eingesetzten Honeypots erkennt ein Angreifer diesen früher oder später. Ist ein Honeypot enttarnt, zieht der Angreifer weiter zum nächsten Ziel. So lassen sich mit Honeypots zwar Angriffe besser verstehen, doch hindern diese einen Angreifer nicht daran, sich aktiv weiter durch das Netzwerk zu bewegen.
Honeypots kennen Sie als gezielt verwundbare Systeme, die übliche Services emulieren und Angreifer im Netzwerk damit anlocken, ihr Verhalten analysieren und so Informationen zu den Methoden und Werkzeugen liefern können. Honeypots lassen sich als Frühwarnsystem einsetzen und erlauben es auch, neue Methoden der Angreifer zu verstehen.
Bestenfalls bieten Honeypots so eine halb automatische Möglichkeit, die Produktivsysteme in Ihrem Netzwerk zu schützen. In der Literatur finden Sie unterschiedliche Varianten, ausgehend von Low-Interaction-Honeypots, die etwa in einem Netzwerk neue Verbindungen annehmen, dahinter aber keinen Service bereitstellen, bis hin zu High-Interaction-Honeypots, die ganze Systeme und Produktionsumgebungen simulieren.
Abhängig von den Interaktionsmöglichkeiten eines eingesetzten Honeypots erkennt ein Angreifer diesen früher oder später. Ist ein Honeypot enttarnt, zieht der Angreifer weiter zum nächsten Ziel. So lassen sich mit Honeypots zwar Angriffe besser verstehen, doch hindern diese einen Angreifer nicht daran, sich aktiv weiter durch das Netzwerk zu bewegen.
An dieser Stelle setzen Teergruben (Englisch: Tarpits) an. Eine Teergrube ist einem Honeypot grundsätzlich nicht unähnlich, geht aber über das reine Sammeln von Informationen zum Angriff hinaus. Das Ziel ist, Angreifer nicht nur in eine überwachte Umgebung zu locken, sondern sie dort anschließend gezielt auszubremsen und bestenfalls in eine Sackgasse zu führen. Statt einem Angreifer in Echtzeit Hinweise darauf zu geben, dass er sich in einer kontrollierten Umgebung befindet – wie es bei klassischen Honeypots oft der Fall ist – sorgt eine Teergrube dafür, dass er kostbare Zeit mit sinnlosen Operationen verschwendet. Zeit, die Sie aufseiten der Verteidigung benötigen, um zunächst überhaupt zu erkennen, dass ein Angreifer in Ihrem Netzwerk aktiv ist und anschließend Ihre vorbereiteten Gegenmaßnahmen durchzuführen.
Funktionsweise einer Teergrube
Das Hauptziel der Teergrube ist also die gezielte Verzögerung. Statt einen Angreifer sofort zu blockieren oder ihm eine klare Fehlermeldung zu liefern, reagiert der Dienst oder die Software so, dass sie für ihn wie ein reales, aber extrem ineffizientes Ziel aussieht. Jede Aktion wird scheinbar bearbeitet, doch sie dauert unverhältnismäßig lange oder führt in eine Sackgasse.
Ein klassisches Beispiel sind Netzwerk-Teergruben auf TCP-Ebene, die etwa Scanner oder Brute-Force-Angriffe aufhalten, indem sie Netzwerkverbindungen künstlich verlangsamen. Normalerweise wartet ein angreifendes System auf ein Bestätigungspaket (ACK) von einem Server, bevor es weiter kommunizieren kann. Eine Teergrube nimmt die Verbindungen eines Angreifers an und gibt dann aber nur sehr langsam oder gar keine Antworten zurück. Aus Sicht des Angreifers bleibt die Verbindung zwar offen, doch der Scanner kommt effektiv nicht wirklich voran. Selbst besonders aggressive Angriffe, die auf viele gleichzeitige Verbindungen setzen, geraten ins Stocken, da die Ressourcen des Angreifers für eine ganze Weile blockiert werden.
Natürlich kann ein Angreifer durch entsprechend kurze Timeouts den Effekt von Teergruben etwas verkleinern, zu kleine Timeouts sind aber auch für den Angreifer nicht sinnvoll. Um Angriffe noch etwas länger zu blockieren, gibt es Teergruben, die auf der Anwendungsebene einen vermeintlichen Erfolg simulieren und den Angreifer in einem endlosen Labyrinth aus Verzögerungen und falschen Spuren gefangen halten. Als Beispiel kann ein manipulierter Server dienen, der einen Login-Vorgang vorspielt, aber niemals zu einem echten Dienst führt. Jeder eingegebene Befehl wird scheinbar akzeptiert, doch das System reagiert nur träge oder liefert irrelevante Antworten.
Auch Webanwendungen lassen sich gezielt in eine Teergrube verwandeln. Angreifer, die nach versteckten Admin-Panels oder sensiblen Dateien suchen, landen in einer endlosen Struktur aus künstlich generierten URLs. Jede vermeintlich entdeckte Datei führt zu einer weiteren Ablenkung. So entsteht ein digitales Labyrinth, das Angreifer beschäftigt hält, ohne wertvolle Informationen zu liefern.
Endlessh im Einsatz
Eine einfache Teergrube können Sie ohne großen Aufwand direkt in Ihrem Netzwerk ausbringen. Das Projekt Endlessh [1] bildet hier einen guten Startpunkt. Die Idee ist, dass nach dem Aufbau einer SSH-Verbindung und noch vor dem Austausch der Verschlüsselungsparameter das SSH-Banner nur tröpfchenweise an den verbundenen Client fließt. Ein Angreifer wartet also zu diesem Zeitpunkt noch darauf, seine Login-Informationen auszuprobieren und hat nur wenig Interesse daran, die Verbindung vorzeitig zu beenden. Die Voraussetzung dafür wäre, dass der auf Angreiferseite verwendete SSH-Client das unterstützt. Zwar könnten Sie über entsprechende Timeouts einen automatischen Verbindungsabbruch konfigurieren; läuft der Client aber mit den Standardgrößen, kann Endlessh immer rechtzeitig neue Daten senden, sodass die Verbindung eben gerade nicht abbricht.
Selbst wenn das Projekt nicht mehr aktiv gepflegt wird, lässt es sich ohne große Hürde kompilieren und starten. Um das zu probieren, gehen wir davon aus, dass Sie eine aktuelle Entwicklungsumgebung auf Ihrem System haben. Klonen Sie nun das Repository und kompilieren Sie die Software mit den folgenden Kommandos:
git clone https://github.com/ skeeto/endlessh.git
cd endlessh
make
Um das Projekt auf aktuellen Systemen bereits beim Systemstart als systemd-Daemon laufen zu lassen, können Sie sich bei den Aktualisierungen eines Forks des Projekts bedienen. Dort erhalten Sie eine funktionierende Servicebeschreibung für Systemd. Es ist auch möglich, mit dem im Repository vorhandenen Docker-File einfach einen Container zu erstellen – zum Ausprobieren lohnt sich das nur, wenn Sie keine Entwicklungsumgebung installieren möchten. Andernfalls ist es deutlich schneller, die eine Quelldatei des Projekts zu kompilieren.
Nachdem Sie die Binärdatei erstellt haben, starten Sie das Programm mittels ./endlessh. Ohne Parameter lauscht der SSH-Service auf Port 2222 auf allen verfügbaren IP-Adressen. Das Kommandozeilenprogramm ist nicht besonders auskunftsfreudig. Wenn Sie aus Testgründen zumindest sehen möchten, ob eine Verbindung aufgebaut wurde, sorgen Sie mit dem Argument "-v" für etwas Gesprächigkeit. Das Bild zeigt Ihnen die Ausgabe zweier Verbindungsversuche von localhost; in einer Produktivumgebung dokumentiert Endlessh in der Ausgabe auch die anfragenden IP-Adressen. Natürlich werden Sie auch nach der üblichen TCP/IP-Timeout-Wartezeit feststellen, dass die Verbindung noch immer geöffnet ist und der Client einfach weiterhin sehr langsam, aber kontinuierlich Daten anzunehmen scheint.
Auch wenn mit Endlessh die Demonstration von Teergruben im SSH-Bereich leichtfällt, gibt es natürlich weitere Anwendungsszenarien. Für Windows-Systeme mit PowerShell etwa gibt es ein Skript, das beim Zugriff auf beobachtete lokale Verzeichnisse, zum Beispiel durch Ransomware, innerhalb dieser Verzeichnisse immer weitere Dateien anlegt, sodass diese damit als Erstes ausgeleitet und verschlüsselt werden.
Ausgabe von Endlessh bei Verbindungsversuchen von localhost.
Grenzen des Ansatzes
Natürlich sind Teergruben kein Allheilmittel gegen erfolgreiche Angreifer. Sie eignen sich auch nicht für jede Umgebung. Sie müssen die Software also gezielt einsetzen, um keine negativen Nebeneffekte zu verursachen. Ein Risiko besteht darin, dass zu große Verzögerungen und offene Verbindungen unter Umständen auch legitimen Traffic auf dem Server beeinträchtigen. Eine fehlerhafte Konfiguration der Software kann beispielsweise dazu führen, dass reguläre Benutzer versehentlich in Ihre Teergrube geraten. Sie sollten diese also gezielt für verdächtige oder eindeutig illegitime Anfragen einsetzen.
Auch lassen sich nicht alle Eindringlinge so einfach ausbremsen. Erfahrene Angreifer mit fortschrittlichen Tools können Methoden verwenden, um Teergruben zu erkennen und zu umgehen. Manche Angriffstools sind mittlerweile darauf optimiert, künstliche Verzögerungen zu erkennen und sich anschließend automatisch aus der Infrastruktur zurückzuziehen – immerhin etwas.
Fazit
Auch Angreifer haben nur begrenzt Ressourcen und Zeit. Um ihnen das Leben möglichst schwer zu machen, bieten sich Teergruben als Spezialform von Honeypots an. Damit bremsen Sie Angreifer in Ihrem Netzwerk gezielt aus. Doch gibt es freilich auf Angreiferseite Gegenmaßnahmen, die Tarpits erkennen – ein ewiger Wettlauf.
(dr)
Link-Codes
[1] Endlessh auf GitHub: https://github.com/skeeto/endlessh