DLL-Sideloading ist eine bei Angreifern beliebte Technik, um Sicherheitslösungen zu umgehen und das Windows-Betriebssystem beim anvisierten Opfer dazu zu bringen, schädlichen Code auszuführen.
In diesem Artikel erklären wir, wie das DLL-Sideloading funktioniert und warum es eine so wirkungsvolle Angriffsmethode ist. Wir geben auch praktische Tipps, mit denen Sie Ihre Systeme vor dieser wachsenden Bedrohung schützen können. Außerdem gehen wir auf den Downloads-Ordner von Windows ein, der ein besonderes, aber leicht vermeidbares Risiko darstellt.
Was ist DLL-Sideloading?
DLLs, die Abkürzung für Dynamic Link Library (also dynamische Linkbibliothek), sind Microsofts Version der gemeinsam genutzten Bibliotheken und haben in der Regel die Dateiendung .dll. Sie enthalten Code und Daten, die von mehreren Programmen gleichzeitig verwendet werden können.
Im Gegensatz zu .exe-Dateien können .dll-Dateien nicht direkt ausgeführt werden. Stattdessen werden sie von einer Anwendung geladen, wenn sie zum Ausführung einer bestimmten Aufgabe benötigt werden, die jedoch nicht zwangsläufig eine Hauptfunktion des Programms sein muss. Auf diese Weise muss weniger Code geschrieben werden, was die Wartung erleichtert und Speicherplatz spart.
Leider lässt sich die Art und Weise, wie Windows DLLs sucht und lädt, von Angreifern ausnutzen. Wenn eine Anwendung eine DLL ausführen muss, versucht Windows, diese entweder über einen in der Anwendung vordefinierten Pfad oder eine Manifestdatei zu laden. Bei einem Manifest handelt es sich im Wesentlichen um eine Textdatei, die Informationen zu den Abhängigkeiten und Konfigurationsanforderungen einer Anwendung oder Komponente enthält. Sie legt unter anderem fest, welche DLLs während der Laufzeit von dem zugehörigen Programm geladen werden sollen.
Hier kann es jedoch zu Problemen kommen, wenn die Manifestdatei nicht spezifisch genug ist, welche DLLs genau von der Anwendung zu laden sind oder von welchen Dateipfaden die DLLs geladen werden sollen. Kriminelle können schlecht konfigurierte Manifestdateien ausnutzen, indem sie eine schädliche DLL-Datei mit dem gleichen Namen an einem Speicherort ablegen, von dem sie von der Anwendung vor der eigentlichen DLL geladen wird. Der Speicherort für die schädliche DLL lässt sich bestimmen, da Windows – sofern sie nicht explizit geändert wurde – eine festgelegte Suchreihenfolge für DLLs verfolgt:
- Das Verzeichnis aus dem die Anwendung geladen wurde
- Das Systemverzeichnis
- Das 16-Bit-Systemverzeichnis
- Das Windows-Verzeichnis
- Das aktuelle Arbeitsverzeichnis (CWD)
- Die Verzeichnisse, die in der PATH-Umgebungsvariable aufgeführt sind
Ein erfolgreicher Sideloading-Angriff ermöglicht es Kriminellen, auf dem System Code auszuführen, Berechtigungen zu erweitern oder vertrauliche Informationen zu stehlen.
Weshalb verwenden Angreifer DLL-Sideloading?
Für Angreifer liegt der Hauptvorteil des DLL-Sideloadings darin, eine Entdeckung zu vermeiden. Da der schädliche Code innerhalb einer ansonsten gewöhnlichen Anwendung ausgeführt wird, kann es verhindern, von Sicherheitsmechanismen aufgespürt zu werden, die nach verdächtigen Aktivitäten oder Prozessen suchen. Dadurch erhöhen sich für die Angreifer die Chancen, unerkannt bösartige Aktivitäten durchzuführen.
DLL-Sideloading als Instrument für Ransomware-Vorfälle
Über die Jahre haben zahlreiche Ransomware-Betreiber DLL-Sideloading eingesetzt, um erfolgreich Angriffe durchzuführen, wie:
- REvil: Kriminelle nutzten eine Sideloading-Sicherheitslücke in der MsMpEng.exe aus. Diese von Microsoft digital signierte Datei führt ironischerweise die Microsoft Malware Protection Engine aus. Die Angreifer nutzten sie, um die schädliche DLL mit der Bezeichnung mpsvc.dll auszuführen, in der Ransomware-Payload enthalten war.
- Rorschach: Rorschach wurde von den Angreifern mittels DLL-Sideloading über die Cortex XDR Dump Service Tool – cy.exe bereitgestellt – einem Produkt zur erweiterten Erkennung und Reaktion von Palo Alto Networks.
- Babuk: Die Babuk-Betreiber griffen erfolgreich ein großes Fertigungsunternehmen an, indem sie eine Sideloading-Sicherheitslücke in der NTSD.exe ausnutzten. Die ausführbare Datei gehört zu einem regulären Windows-Tool zur Fehlerbehebung.
Minimierung des Risikos durch DLL-Sideloading
Für die meisten DLL-Sideloading-Angriffe ist es erforderlich, dass die Angreifer Schreibzugriff auf das Verzeichnis haben, in dem die bösartige Binärdatei gesucht und geladen werden soll. Daher beginnt die Abwehr mit der Absicherung des Umkreises mit den standardmäßig empfohlenen Cybersicherheitsmaßnahmen, wie:
- Patchverwaltung: Indem Betriebssysteme, Anwendungen und Sicherheitssoftware immer auf dem neuesten Stand gehalten werden, lassen sich Sicherheitslücken und Schwachstellen schließen, die anderenfalls für DLL-Sideloading-Angriffe ausgenutzt werden könnten.
- Zugriffsbeschränkungen: Durch die Limitierung der Zugriffsberechtigungen für wichtige Ressourcen, wie Systemverzeichnisse, Registrierungsschlüssel und Administratorrechte, wird es Angreifern erschwert, schädliche DLLs abzulegen und auszuführen.
- Minimierung der Angriffsoberfläche: Deaktivieren Sie unnötige Funktionen wie Datei- und Druckfreigaben, Fernzugriffsdienste und nicht verwendete Netzwerkports, um die Angriffsoberfläche zu reduzieren und die möglichen Auswirkungen eines DLL-Sideloading-Angriffs zu minimieren.
- Sichere Downloads: Beziehen und installieren Sie Software nur von vertraulichen Quellen, wie offiziellen Webseiten der Händler oder vertrauenswürdigen Software-Drittanbietern.
- Cybersicherheitsschulungen: Unternehmen sollten regelmäßig Cybersicherheitsschulungen durchführen, wobei besonderes Augenmerk auf Social-Engineering-Taktiken gelegt werden sollte, mit denen sich Angreifer häufig Zugriff auf ein Zielsystem verschaffen.
Auch EDR-Tools (Endpunkterkennung und -reaktion) können bei der Abwehr von DLL-Sideloading-Angriffen eine wichtige Rolle spielen, insbesondere in großen Unternehmen mit vielen Endpunkten. Die Endpunkterkennung und -reaktion von Emsisoft bietet kontinuierliche Sichtbarkeit für alle Endpunkte eines Unternehmens sowie wertvolle Einsichten in mögliche Bedrohungen – einschließlich DLL-Sideloading.
Der Downloads-Ordner von Windows
Wie zuvor bereits erwähnt sucht Windows in einer festen Ordnerreihenfolge nach DLLs und der erste Ordner, in dem gesucht wird, ist der Ordner aus dem eine Anwendung geladen wurde. Das bedeutet, wurde eine neue Anwendung heruntergeladen und vom Downloads-Ordner aus gestartet, kann sie auch jede schädliche DLL laden, die sich in dem Ordner befindet. Es ist auch der Ordner, an dem Angreifer am leichtesten ihren Schädling ablegen können. Sie müssen den Benutzer nur dazu bringen, ihn herunterzuladen.
Dieses Risiko lässt sich zum Glück sehr leicht verhindern, indem Sie den Downloads-Ordner immer bis auf den aktuellen Download leeren. Sie können die Installationsdateien auch vor dem Ausführen auf den Desktop verschieben, um zu verhindern, dass schädliche DLLs im Downloads-Ordner geladen werden.
Was können Entwickler tun?
Software-Entwickler kämpfen bei der Abwehr von DLL-Sideloading-Angriffen an vorderster Front. Sie können der Gefahr mit folgenden Maßnahmen vorbeugen:
Den vollständigen Pfad zur DLL angeben: Beim Laden einer DLL können Entwickler, anstatt nur den DLL-Namen anzugeben, den vollständigen Pfad zu der Datei vorgeben. Auf diese Weise wird sichergestellt, dass die richtige DLL geladen wird und das System nicht erst danach sucht und möglicherweise eine schädliche DLL lädt.
Absolute Pfade verwenden: Beim Festlegen des Speicherorts einer DLL sollten Entwickler statt relativen besser absolute Pfade verwenden. Relative Pfade lassen sich von Angreifern manipulieren, um die Anwendung dazu zu bringen, eine schädliche DLL aus einem anderen Verzeichnis zu laden.
DLL-Signaturprüfung implementieren: Entwickler können ihre DLLs mit einer digitalen Signatur versehen und diese vor dem Laden der Datei verifizieren. Das ist zwar nicht unfehlbar, aber eine weitere Schutzschicht, um die Legitimität der DLL zu überprüfen und sicherzustellen, dass nicht daran herumgepfuscht wurde.
Weitere Informationen dazu finden Sie auch in Microsofts empfohlenen Vorgehensweisen zum sicheren Laden von Bibliotheken.
Übersetzung: Doreen Schäfer