DLL Hijacking: Definition, Tutorial und Präventionsmöglichkeiten

Erfahren Sie mehr darüber, wie adaptive Multi-Faktor-Authentifizierung (MFA) gefährlichen Sicherheitslücken, unsicheren Passwörtern und Phishing-Attacken einen Riegel vorschiebt.

Beim DLL Hijacking schleusen Cyber-Angreifer schädlichen Code in Anwendungen ein, um die Ladeprozesse von Dynamic Link Libraries (DLLs) zu manipulieren. Einer der schwerwiegendsten Cyberangriffe in der Geschichte der Vereinigten Staaten, von dem zahlreiche US-Regierungseinrichtungen betroffen waren, konnte auf DLL Hijacking zurückgeführt werden – höchstwahrscheinlich von Russland initiiert. Beim DLL Hijacking werden Systeme kompromittiert, indem über Windows-Plattformen eine schadhafte Datei eingeschleust wird. Die Gefahr von DLL Hijacking lässt sich reduzieren, wenn die Entwickler die gängigen Secure-Coding-Practices befolgen. Um sich zuverlässig schützen zu können, müssen Sie aber zunächst lernen, wie Sie DLL Hijacking erkennen. Ein starkes Security-Netzwerk und eine optimal geschulte Workforce können dazu beitragen, Cyber-Hacker von Ihren Systemen fernzuhalten.

Was versteht man unter DLL Hijacking?

Bei diesem Angriff infizieren Hacker Ihr System mit einer speziellen Schadsoftware, die ausgeführt wird, sobald Sie eine für das DLL Hijacking anfällige Anwendung starten. DLL Hijacking ist ein Cyberangriff, bei dem eine infizierte Datei in die Suchparameter einer Anwendung injiziert wird. Sobald ein User versucht, ein File aus diesem Verzeichnis zu laden, wird stattdessen die schädliche DLL-Datei geladen. Beim Start der Anwendung wird die infiltrierte Datei dann ausgeführt. DLL-Dateien sind häufig bereits auf dem Gerät vorinstalliert. Viele Anwendungen, die eine DLL-Datei enthalten, laden beim Start automatisch. Sobald die Datei mit dem Schadcode geladen wird, wird das System kompromittiert und Hacker erhalten vollen Zugriff darauf.

Was sind DLL-Files?

DLL-Dateien findet man ausschließlich in Microsoft-Betriebssystemen. Sie sorgen dafür, dass Anwendungen korrekt ausgeführt werden können. Laut Microsoft hängt die Funktionalität der Windows-Betriebssysteme in weiten Teilen von Dynamic Link Libraries ab. DLL-Dateien werden für gewöhnlich beim Start einer Anwendung ausgeführt. Sie sorgen dafür, dass Programme korrekt ausgeführt werden und Festplattenspeicher effizient genutzt wird. DLL-Dateien führen häufig mehrere Programme aus. Daher kann im Rahmen einer DLL Hijacking-Attacke eine einzige infiltrierte Datei dazu führen, dass mehrere Programme beeinträchtigt werden.

Was passiert beim DLL Hijacking?

Windows-Anwendungen nutzen DLL-Suchprotokolle, um einwandfrei zu arbeiten. Hacker platzieren eine Payload-Datei im Verzeichnis der anvisierten Anwendung. Dadurch kann die App ausgetrickst werden, dass sie die schadhafte Datei lädt und nicht etwa die korrekte. Die Dynamic Link Library Search Order von Microsoft ist für jedermann offen zugänglich. Daher ist es einfach, potenzielle Schwachstellen auszumachen. Anwendungen führen die erste DLL-Datei aus, auf die sie beim Starten stoßen. Damit eine DLL Hijacking-Attacke erfolgreich ist, muss der Hacker die Zielanwendung also so manipulieren, dass zunächst die infiltrierte Datei ausgeführt wird – und nicht die korrekte. Hacker greifen hierfür auf folgende Methoden zurück:

  • Sie platzieren einen Trojaner in eine DLL-Datei und schleusen diese in ein Verzeichnis ein, das noch vor der korrekten Library durchsucht wird.
  • Beim DLL-Preloading wird eine schädliche DLL mit demselben Namen, den eine mehrdeutig benannte DLL trägt, im Verzeichnis platziert. Das führt dazu, das zunächst nach der schädlichen DLL gesucht wird.
  • Bei der DLL-Redirection wird die DLL Search Order dahingehend manipuliert, dass das Programm die schadhafte DLL ausführt anstelle der korrekten.
  • Schadhafte DLL-Files können mithilfe von Supply-Chain-Angriffen, Phishing oder Social-Engineering-Attacken in ein System geschleust werden. In welchem Maß der Angreifer Zugriff auf das System erhält, ist abhängig davon, wie weit oben die Datei in der Berechtigungsrangfolge platziert wurde.

Sollte der vollständige Pfad der verknüpften DLL-Dateien nicht spezifiziert sein, greifen Windows-Anwendungen auf spezielle DLL-Suchprotokolle zurück. Das Verzeichnis, aus welchem die Anwendung geladen wird, wird direkt zu Beginn durchsucht. Genau an dieser Stelle setzt das DLL Hijacking an: Eine schadhafte Datei wird dort abgelegt, sodass sie zuerst gesucht und geladen wird – vor dem Systemverzeichnis. Man bezeichnet dies als DLL Search Order-Hijacking. Schadhafte DLL-Files werden oftmals mit einer digitalen Signatur versehen, die die Zielanwendung kopiert. So stellen Angreifer sicher, dass die Datei authentisch erscheint und nicht entdeckt wird. So erhalten DLL-Dateien die Berechtigung für eine Übertragung und bahnen sich ihren Weg durch die Supply Chains.

So erkennen Sie einen DLL Hijacking-Angriff

Mithilfe eines Windows-Programms, dem Process Explorer, können Sie einen versuchten DLL Hijacking-Angriff erkennen. Dabei werden alle File-Systeme, die aktuell geladen werden, in Echtzeit angezeigt. User erkennen DLL-Dateien, die nicht ins System passen, mithilfe geeigneter Filter. Führen Sie die folgenden Schritte aus:

  1. Installieren und laden Sie den Process Explorer.
  2. Suchen Sie nun nach der Anwendung, die mutmaßlich das Ziel des Angriffs ist.
  3. Drücken Sie hierfür Strg + L und wenden Sie einen Filter an, der dafür sorgt, dass nur aktive Daten, deren Pfad auf .dll endet, angezeigt werden, indem Sie zunächst auf Hinzufügen und anschließend auf Übernehmen klicken.
  4. Drücken Sie Strg + L und wenden einen Filter für Verzeichnis: name not found an, indem Sie die Einstellungen zu den Suchergebnissen (Suchergebnis: NAME NOT FOUND) anpassen. Klicken Sie auf Hinzufügen und dann auf Übernehmen. Nun werden Ihnen ausschließlich Files angezeigt, die außerhalb des System-Verzeichnisses laden.
  5. Drücken Sie Strg + L, um einen zusätzlichen Filter anzuwenden, der nur DLL-Files innerhalb des Anwendungsverzeichnisses anzeigt. Hierfür wählen Sie folgende Einstellungen: Pfad = [Pfadadresse] – klicken Sie anschließend zunächst auf Hinzufügen und dann auf Übernehmen.

Wie können Sie einem DLL Hijacking-Angriff vorbeugen?

Den Grundstein für einen robusten Schutz vor DLL Hijacking legen bereits die Softwareentwickler. Diese können für alle DLL-Files den genauen Speicherort angeben, sodass Windows nicht auf das standardisierte DLL-Suchprotokoll zurückgreift. Halten Sie zudem Ihre Antiviren-Software immer auf dem neuesten Stand. Ja, oftmals bleiben versuchte DLL-Injections unerkannt. Ein zuverlässiger Virenschutz bietet allerdings immer noch eine gute Basis, um zumindest einige versuchte DLL Hijacking-Angriffe zu unterbinden. Behalten Sie immer die eigene Cybersicherheit im Blick. Prüfen Sie Ihr Netzwerk und Software-Ökosystem in regelmäßigen Abständen auf Schwachstellen. Windows-DLL Hijacking kann nur dann erfolgreich sein, wenn die schadhafte Datei in Ihr Software-Ökosystem gelangt. Dies geht oft auf menschliche Fehler zurück, beispielsweise, weil ein unaufmerksamer Mitarbeiter die Malware anklickt. Schulen Sie ihre Workforce demnach auf Warnsignale von Phishing-Attacken und Social-Engineering-Angriffen. Das nimmt Angreifern, die DLL Hijacking planen, den Wind aus den Segeln. Hier einige bewährte Best Practices aus der Security:

  • Führen Sie eine Information Security Policy ein und aktualisieren Sie diese regelmäßig.
  • Leiten Sie suspekte Mails unverzüglich an den Security-Verantwortlichen weiter – am besten, bevor Sie sie öffnen oder auf enthaltene Links klicken.
  • Führen Sie eine Multi-Faktor-Authentifizierung für Ihre Log-In-Prozesse ein.
  • Implementieren Sie eine Lösung für das Risikomanagement in der Supply Chain.

Exemplarischer Ablauf:

Um einen DLL Hijacking-Angriff durchzuführen, suchen Angreifer gezielt nach DLL-Schwachstellen, beispielsweise fehlenden DLLs in Anwendungen. Die herkömmliche DLL Search Order lautet wie folgt:

  1. Suche im Verzeichnis, aus welchem die Zielanwendung geladen wird.
  2. Suche im aktuellen Verzeichnis.
  3. Suche im Systemverzeichnis.
  4. Suche im Windows-Verzeichnis.
  5. Suche in Verzeichnissen, die sich in der PATH-Umgebung befinden.

Beim DLL Hijacking wird eine schadhafte Datei in einem der Verzeichnisse abgelegt, das vor dem Verzeichnis durchsucht wird, in welchem sich die korrekte DLL-Datei befindet. Eine andere Option ist es, über die AppInit DLLs benutzerdefinierte DLLs zu generieren, die überall geladen werden können. Das funktioniert wie folgt:

  1. Erstellen Sie eine schädliche DLL.
  2. Setzen Sie die Einstellungen der LoadAppInit_DLLs auf „TRUE“.
  3. Setzen Sie über AppInit einen Verweis auf die schädliche DLL.
  4. Führen Sie die DLL-Injection aus.

Eine DLL, die einen Trojaner enthält, kann auch mithilfe einer DLL-Redirection eingeschleust werden. Hierbei fungiert die schadhafte DLL als Mittelsmann. Das funktioniert wie folgt:

  1. Analysieren Sie die DLL und ihre Funktionen.
  2. Entscheiden Sie, welche Funktionen blockiert oder manipuliert werden sollen.
  3. Integrieren Sie diese Funktionen in eine schadhafte DLL.
  4. Leiten Sie die verbleibenden Funktionen an die ursprüngliche DLL weiter.
  5. Benennen Sie die ursprüngliche DLL um.
  6. Leiten Sie die Importe an die umbenannte DLL weiter.
  7. Ersetzen Sie die ursprüngliche DLL durch die schädliche.
  8. Nennen Sie die schadhafte DLL genauso wie die ursprüngliche DLL.
     

Beispiele für bekannte DLL Hijacking Threats

DLL Hijacking ist keine neue Gefahr, doch das Verfahren stellt nach wie vor eine echte Bedrohung für Windows-Betriebssysteme dar. Einige Beispiele für bekannte Bedrohungen:

  • APT41: nutzt Search Order-Hijacking
  • FinFisher: Versionen, die DLL Search Order-Hijacking nutzen
  • Chaes: schadhafte DLL-Payloads werden mittels Search Order-Hijacking geladen
  • Astaroth: wurde per Search Order-Hijacking auf den Weg gebracht
  • BOOSTWRITE: macht sich die Ladeprozesse korrekter .dll-Datei zu Nutze
  • BackdoorDiplomacy: nutzt Search Order-Hijacking
  • HinKit: Search Order-Hijacking von Verteidigungsmechanismen
  • Crutch: führt Search Order-Hijacking mithilfe von Suchmaschinen durch
  • Downdelph: beim Search Order-Hijacking von .exe-Dateien werden die Zugriffsberechtigungen eskaliert
  • InvisiMole: Search Order-Hijacking schleust bei Start der Anwendung schadhafte DLLs ein
  • HTTPBrowser: manipuliert die Reihenfolge, in der DLLs geladen werden
  • Ramsey: attackiert veraltete Windows-Anwendungen
  • menuPass: nutzt DLL Search Order-Hijacking
  • ThreatGroup-3390: nutzt DLL Search Order Hijacking, um eine Payload einzuschleusen
  • Whitefly: Schädliche DLLs werden über Search Order Hijacking eingeschleust
  • RTM: Search Order Hijacking zur Manipulation des TeamViewers
  • Tonto-Team: manipuliert die korrekte Ausführung von Microsoft dahingehend, dass schadhafte DLLs geladen werden
  • Melcoz: nutzt DLL Hijacking, um Sicherheitskontrollen unbehelligt passieren zu können

Behebung

Gegenmaßnahmen

  • Auditieren Sie: Audit-Lösungen wie PowerUp erkennen und verhindern das DLL Search Order-Hijacking.
  • Beschränken Sie das Laden von Libraries: Deaktivieren Sie das Laden von dezentralen DLLs und aktivieren Sie stattdessen den DLL Safe Search-Modus. So unterliegt das System stärkeren Restriktionen bei der Suche nach DLL-Files.
  • Unterbinden Sie das Ausführen von Software: Nutzen Sie App-Control-Lösungen, die potenziell schädliche Software, die mittels DLL Search Order-Hijacking eingeschleust wurde, entdecken und blockieren. 

Wie Sie überprüfen können, ob Ihr System von DLL Hijacking betroffen ist

Bei der Überprüfung Ihres Systems auf DLL Hijacking werden üblicherweise die gleichen Methoden angewandt, die auch bei Programmen wie dem Windows Process Explorer verwendet werden. Um betroffene DLL-Dateien zu finden, wenden Sie einen Filter an, der alle .exe- und .dll- Dateien ausgibt, die als als „NAME NOT FOUND.“ angezeigt werden. Das bedeutet in der Regel, dass ein DLL Hijacking-Angriff versucht wurde. Eine andere Lösung, DLLSpy, greift auf drei verschiedene Methoden zurück, um DLL Hijacking sicher zu erkennen: die statische, die dynamische und die rekursive. Bei der statischen Methode werden alle .dll-oder .dll-Pfad-Files innerhalb des Ausführungsprozesses einer Anwendung ermittelt. Bei der dynamischen Methode wird sichergestellt, dass alle DLL-Speicherorte Schreibrechte besitzen. So kann ausgeschlossen werden, dass sie überschrieben wurden. Die rekursive Methode durchsucht alle bereits ausgeführten DLL-Prozesse, um andere potenzielle DLLs, die geladen wurde, zu finden. Abschließend werden diese auf Schwachstellen untersucht.

Referenzen

Russian Hackers Broke Into Federal Agencies, U.S. Officials Suspect. (Mai 2021). The New York Times.

What Is a DLL? (September 2021). Microsoft.

Process Explorer v16.43. (August 2021). Microsoft.

AppInit DLLs and Secure Boot. (Januar 2021). Microsoft.

PowerUp: A Usage Guide. (Juni 2014). Harmj0y:

Cyberark/DLLSpy. (2021). GitHub, Inc.