
Automatisiertes DLL-Sideloading-Tool mit EDR-Umgehungsfähigkeiten

Während DLL-Sideloading für legitime Zwecke genutzt werden kann, etwa um benötigte Bibliotheken für ein Programm zu laden, kann es auch für böswillige Zwecke verwendet werden. Angreifer können DLL-Sideloading nutzen, um beliebigen Code auf einem Zielsystem auszuführen, oft indem sie Schwachstellen in legitimen Anwendungen ausnutzen, die zum Laden von DLLs verwendet werden.
Um den DLL-Sideloading-Prozess zu automatisieren und effektiver zu gestalten, wurde Chimera entwickelt – ein Tool, das Evasionstechniken umfasst, um EDR-/AV-Produkte zu umgehen. Dieses Tool kann Shellcode automatisch per XOR mit einem zufälligen Schlüssel verschlüsseln und Vorlage-Images erstellen, die in Visual Studio importiert werden können, um eine bösartige DLL zu erstellen.
Außerdem werden dynamische Syscalls von SysWhispers3 und eine modifizierte Assembly-Version verwendet, um die Muster zu umgehen, nach denen EDR sucht. Es werden zufällige NOP-Slides hinzugefügt und Register verschoben. Darüber hinaus wird auch Early Bird Injection verwendet, um den Shellcode in einen anderen Prozess zu injizieren, den der Benutzer angeben kann, mit Sandbox-Evasion-Mechanismen wie der Überprüfung der Festplatte und ob der Prozess debuggt wird. Schließlich wird im Loader ein Timing-Angriff platziert, der wartbare Timer nutzt, um die Ausführung des Shellcodes zu verzögern.
Dieses Tool wurde getestet und hat sich als effektiv erwiesen, um EDR-/AV-Produkte zu umgehen und beliebigen Code auf einem Zielsystem auszuführen.
Die aktualisierte Version von Chimera Unleashed hat bedeutende Fortschritte bei der Umgehung sowohl der statischen als auch der dynamischen Analyse gezeigt, insbesondere im Zusammenhang mit Microsoft 365s Endpoint Detection and Response (EDR)-System. Die Sideloading-Techniken des Tools entgingen selbst bei bekannten Binärdateien wie OneDrive erfolgreich der Erkennung. Es ist jedoch bemerkenswert, dass der vom Tool verwendete Early Bird Injection-Prozess vom EDR-System erkannt wurde, während der Sideloading-Aspekt unentdeckt blieb. Dies zeigt einen Bereich für weitere Verfeinerungen zur Verbesserung der gesamten Tarnfähigkeiten des Tools.
Wichtige Aktualisierungen und Funktionen:
Chimera ist in Python 3 geschrieben und es müssen keine zusätzlichen Abhängigkeiten installiert werden.
Chimera unterstützt derzeit zwei DLL-Optionen: entweder Microsoft Teams oder Microsoft OneDrive.
Jemand kann eine userenv.dll erstellen, eine fehlende DLL von Microsoft Teams, und sie in den spezifischen Ordner einfügen:
%USERPROFILE%/Appdata/local/Microsoft/Teams/current
Für Microsoft OneDrive verwendet das Skript eine version.dll, die üblich ist, da sie in der Binärdatei (z. B. onedriveupdater.exe) fehlt.
Chimera Unleashed verwendet argparser zum Parsen der Befehlszeilenargumente. Die folgenden Argumente sind verfügbar:
--raw oder -r: Pfad zur Datei mit dem Shellcode. Erforderlich.--path oder -p: Ausgabepfad für die C-Vorlagendatei. Erforderlich.--pname oder -n: Name des Prozesses, in den der Shellcode injiziert werden soll. Erforderlich.--dexports oder -d: Gibt an, welche DLL-Exports verwendet werden sollen (entweder 'teams' oder 'onedrive'). Erforderlich.--enc oder -e: Bevorzugte Verschlüsselung angeben (XOR / AES). Erforderlich.--inj oder -i: Bevorzugte Injektionstechnik angeben (EB / MS). Erforderlich.--rshell oder -s: [Optional] Ersetzen Sie den Namen der Shellcode-Variablen durch einen eindeutigen Namen. Standard ist 'encoded_shell'.Beispielverwendung: python Chimera.py --raw <path_to_shellcode> --path <output_path> --pname <process_name> --dexports <exports_file> --enc AES --inj EB --rshell my_shellcode
Sobald der Kompilierungsprozess abgeschlossen ist, wird eine DLL generiert, die entweder "version.dll" für OneDrive oder "userenv.dll" für Microsoft Teams enthalten sollte. Als nächstes ist es notwendig, die ursprünglichen DLLs umzubenennen.
Zum Beispiel sollte die ursprüngliche "userenv.dll" in "tmpB0F7.dll" umbenannt werden, während die ursprüngliche "version.dll" in "tmp44BC.dll" umbenannt werden sollte. Zusätzlich haben Sie die Möglichkeit, den Namen der Proxy-DLL nach Wunsch zu ändern, indem Sie den Quellcode der DLL-Exports ändern, anstatt die Standard-Skriptnamen zu verwenden.
Die Datei code.h enthält den Shellcode.
Schritt 1: Erstellen eines neuen Visual Studio-Projekts mit DLL-Vorlage


Schritt 2: Importieren von Dateien in das Visual Studio-Projekt
Schritt 3: Build-Anpassung
Schritt 4: MASM aktivieren

Schritt 5:


Schritt 1: Optimierung ändern

Schritt 2: Debug-Informationen entfernen

Ursprünglicher Mitwirkender:
Mitwirkender:
Soweit gesetzlich zulässig, haften ich (George Sotiriadis) und/oder verbundene Unternehmen, die Inhalte zu meinem Repository beigetragen haben, nicht für indirekte, zufällige, besondere, Folge- oder Strafschäden oder für entgangene Gewinne oder Einnahmen, die direkt oder indirekt entstanden sind, oder für Datenverluste, Nutzungsausfälle, Verlust des Goodwills oder andere immaterielle Verluste, die sich ergeben aus (i) Ihrem Zugriff auf diese Ressource und/oder der Unfähigkeit, auf diese Ressource zuzugreifen; (ii) jeglichem Verhalten oder Inhalt Dritter, auf die diese Ressource verweist, einschließlich, aber nicht beschränkt auf beleidigendes, anstößiges oder rechtswidriges Verhalten anderer Benutzer oder Dritter; (iii) jeglichem Inhalt, der von dieser Ressource bezogen wurde.
https://evasions.checkpoint.com/
https://github.com/Flangvik/SharpDllProxy
--rxor oder -x: [Optional] Ersetzen Sie den Namen der XOR-Verschlüsselung durch einen eindeutigen Namen. Standard ist 'do_xor'.--rkey oder -k: [Optional] Ersetzen Sie den Namen der Schlüsselvariablen durch einen eindeutigen Namen. Standard ist 'key'.--rsleep oder -z: [Optional] Gesamte Schlafzeit während der Ausführung (Sekunden). Standard ist 4000.--size oder -f: [Optional] Dateigröße der Junk-Daten in KB. Null (0) deaktiviert, Eins (1) ist zufällige Dateigröße. Standard ist 0.