Beliebte Suchanfragen

Ein Beitrag von

security brand
//

Relative Path DLL Hijacking in Windows-Programmen

24.3.2025 | 3 Minuten Lesezeit

Im Rahmen eines Red-Team-Assessments bestand die Herausforderung darin, eigenen Code über eine DLL auszuführen. Der Grund für dieses Szenario lag im Einsatz einer „Application Allow Listing“-Software, die die Ausführung unbekannter Executables blockiert. Dabei wurden die üblichen Möglichkeiten zum Laden von DLLs, wie z.B. rundll32, vom Blue Team des Kunden stark überwacht, sodass wir uns nach anderen Optionen umsehen mussten.

Nach einigem Ausprobieren in unseren Labs und der Analyse des Verhaltens bestimmter Windows-Programme zur Laufzeit, stellte sich heraus, dass in einem aktuellen Windows 11 (Stand März 2025) einige Microsoft-eigene Programme eine Schwachstelle aufwiesen – nämlich Relative Path DLL Hijacking.

Mithilfe eines kleinen Twists ermöglicht diese Schwachstelle es Angreifern, über vertrauenswürdige Anwendungen (Schad-)Code auszuführen und möglicherweise weitere Sicherheitsmechanismen wie Application Allow Listing oder gezieltes Monitoring zu umgehen.

Dieses Problem wurde am 21.02.2025 an Microsoft gemeldet und am 07.03.2025 als „keine Schwachstelle“ klassifiziert. Gerne zeigen wir euch dennoch in diesem Blogpost, wie ihr als Red Teamer Microsoft-Programme für das Nachladen von DLLs verwenden könnt.

Was ist eigentlich Relative Path DLL Hijacking?

Relative Path DLL Hijacking ist eine Schwachstelle, die auftritt, wenn eine Anwendung eine erforderliche DLL nicht über einen festen Pfad lädt, sondern die übliche Suchreihenfolge von Windows verwendet (siehe untenstehende Grafik). Bei dieser Reihenfolge kann ein Angreifer eine DLL mit dem gesuchten Namen in einem manipulierten, und für ihn beschreibbaren Verzeichnis platzieren. Wird die Anwendung gestartet, lädt sie die DLL und führt den darin enthaltenen Code mit den Rechten des betroffenen Programms aus. 

Die nachfolgende Grafik veranschaulicht die Suchreihenfolge für DLLs unter Windows. Dabei fällt auf, dass einige Suchpfade nicht nur von Administratoren, sondern auch von normalen Benutzern manipuliert werden können.

Betroffene Windows-Komponenten

Einige Komponenten aus dem System-Verzeichnis C:\Windows\System32 sind für den beschriebenen Angriff anfällig, sofern ein kleiner Trick angewendet wird. Der Schlüssel dazu liegt in der DLL-Suchreihenfolge, speziell im Punkt „Pfad der Applikation“.  Dafür wird eine betroffene Komponente (z. B. calc.exe) aus dem System32-Ordner in einen anderen, für den Angreifer beschreibbaren Ordner kopiert:

copy C:\Windows\System32\calc.exe C:\Users\Public\

Mit dem Tool Process Monitor kann nun der Start des Prozesses im Detail analysiert werden. Die Filterung der Ereignisse hilft dabei, nur die wichtigen Informationen ausgeben zu lassen:

  • Pfade, die mit .dll enden, sollen in der Anzeige inkludiert werden
  • Ergebnisse von Ereignissen, bei denen eine Datei nicht gefunden wird, soll in der Anzeige inkludiert werden
  • Alle Prozesse, die nicht calc.exe sind, sollen aus der Anzeige entfernt werden

Wie zu sehen ist, versucht die Anwendung calc.exe vergeblich, verschiedene DLLs aus dem Ordner zu laden, in dem sie ausgeführt
wurde.

Ein Angreifer könnte demnach eine DLL mit dem Namen Windows.Storage.dll erzeugen und im selben Verzeichnis ablegen, in dem calc.exe ausgeführt wird. Beim Start von calc.exe würde die manipulierte DLL geladen und der darin enthaltene Code ausgeführt. 

Der folgende Beispielcode öffnet beim Laden der DLL eine sog. Message Box mit dem Inhalt „Hijacked DLL …“:

Wird calc.exe nun gestartet und findet die DLL im selben Ordner, wird diese geladen und die Message Box geöffnet:

Warum ist das Verhalten trotzdem ein Problem?

In diesem speziellen Fall müssen die betroffenen Programme zusammen mit der jeweils manipulierten DLL-Datei in einen Ordner platziert und ausgeführt werden. Das bedeutet, dass der Angreifer eine initiale Kontrolle über das System erlangt haben muss, oder eines der legitimen Programme zusammen mit seiner DLL über andere Wege verteilt. Für den Angreifer ist es von Vorteil, dass die betroffenen Applikationen durch Microsoft digital signiert sind und somit als vertrauenswürdig eingestuft werden. Das kann dazu führen, dass weitere Sicherheitsmechanismen umgangen werden. Einige Lösungen, wie Antivirus-Programme, EDR- und Allow-Listing-Tools, analysieren unter Umständen zunächst nur den ladenden Prozess. 

Somit bietet diese Schwachstelle Angreifern eine Alternative zu den sogenannten LOLBAS (Living Off The Land Binaries and Scripts). Hierbei handelt es sich um systemeigene Windows-Programme und Skripte, die von Angreifern in der Regel für versteckte Aktionen missbraucht werden. Da LOLBAS in der Regel intensiv durch Sicherheitslösungen überwacht werden und ein höheres Entdeckungsrisiko aufweisen, eröffnet das Relative Path DLL Hijacking in Windows-Programmen zusätzliche Möglichkeiten für Angreifer.

Zeitleiste der Responsible Disclosure

Datum

Aktion

20.02.2025

Entdeckung der Schwachstelle in mehreren Programmen

21.02.2025

Meldung an Microsoft

25.02.2025

Erstellung einer Case-Nummer durch Microsoft und interne Analyse

07.03.2025

Klassifikation als keine Schwachstelle

12.03.2025

Blog-Freigabe durch Microsoft

Weiterführende Links


Beitrag teilen

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//