
Mangle is a tool that manipulates aspects of compiled executables (.exe or DLL) to avoid detection from EDRs
Um die neueste Version von Mangle anzusehen oder ein Problem zu melden, besuchen Sie https://github.com/Tylous/Mangle.
Erstellt von Tyl0us
Vorgestellt auf der Source Zero Con 2022
Mangle ist ein Werkzeug, das Aspekte von kompilierten ausführbaren Dateien (.exe oder DLL) manipuliert. Mangle kann bekannte auf IoCs basierende Zeichenfolgen entfernen und durch zufällige Zeichen ersetzen, die Datei durch Aufblähen der Größe vergrößern, um EDRs zu umgehen, und Code-Signatur-Zertifikate von legitimen Dateien klonen. Dadurch hilft Mangle Ladeprogrammen, Scannern auf der Festplatte und im Arbeitsspeicher zu entgehen.
Mangle wurde in Golang entwickelt.
Der erste Schritt ist wie immer das Klonen des Repos. Bevor Sie Mangle kompilieren, müssen Sie die Abhängigkeiten installieren. Führen Sie dazu die folgenden Befehle aus:
go get github.com/Binject/debug/pe
Dann bauen Sie es
go build Mangle.go
Obwohl Mangle in Golang geschrieben ist, sind viele der Funktionen dafür ausgelegt, mit ausführbaren Dateien aus anderen Sprachen zu arbeiten. Zum Zeitpunkt der Veröffentlichung ist die einzige Golang-spezifische Funktion der Teil zur Zeichenfolgenmanipulation.
./mangle -h
_____ .__
/ \ _____ ____ ____ | | ____
/ \ / \\__ \ / \ / ___\| | _/ __ \
/ Y \/ __ \| | \/ /_/ > |_\ ___/
\____|__ (____ /___| /\___ /|____/\___ >
\/ \/ \//_____/ \/
(@Tyl0us)
Usage of ./Mangle:
-C string
Path to the file containing the certificate you want to clone
-I string
Path to the orginal file
-M Edit the PE file to strip out Go indicators
-O string
The new file name
-S int
How many MBs to increase the file by
Mangle nimmt die eingegebene ausführbare Datei und sucht nach bekannten Zeichenfolgen, nach denen Sicherheitsprodukte suchen oder auf die sie alarmieren. Diese Zeichenfolgen allein sind nicht der einzige Erkennungspunkt. Oft stehen diese Zeichenfolgen in Verbindung mit anderen Datenpunkten und Telemetriedaten zur Erkennung und Prävention. Mangle findet diese bekannten Zeichenfolgen und ersetzt die Hex-Werte durch zufällige, um sie zu entfernen. WICHTIG: Mangle ersetzt die genaue Größe der Zeichenfolgen, die es manipuliert. Es fügt weder mehr noch weniger hinzu, da dies zu Fehlausrichtungen und Instabilitäten in der Datei führen würde. Mangle tut dies mit der Befehlszeilenoption -M.
Derzeit verarbeitet Mangle nur Golang-Dateien, aber mit der Zeit werden weitere Sprachen hinzugefügt. Wenn Sie welche für andere Sprachen kennen, eröffnen Sie bitte ein Issue-Ticket und reichen Sie diese ein.
Vorher
Nachher
So gut wie alle EDRs können weder Dateien auf der Festplatte noch im Arbeitsspeicher scannen, die eine bestimmte Größe überschreiten. Das liegt einfach daran, dass große Dateien länger brauchen, um überprüft, gescannt oder überwacht zu werden. EDRs möchten die Leistung nicht beeinträchtigen, indem sie die Produktivität des Benutzers verlangsamen. Mangle bläht Dateien auf, indem es am Ende der Datei ein Padding aus Nullbytes (Nullen) erstellt. Dadurch wird sichergestellt, dass nichts innerhalb der Datei beeinträchtigt wird. Um eine ausführbare Datei aufzublähen, verwenden Sie die Befehlszeilenoption -S zusammen mit der Anzahl der Bytes, die Sie zur Datei hinzufügen möchten. Große Payloads sind bei den heutigen Internetgeschwindigkeiten eigentlich kein Problem mehr, aber es wird trotzdem nicht empfohlen, eine 2-GB-Datei zu erstellen.
Basierend auf Testfällen mit zahlreichen Userland- und Kernel-EDRs wird empfohlen, die Größe um entweder 95-100 Megabyte zu erhöhen. Da Anbieter große Dateien nicht überprüfen, bleibt die Aktivität unbemerkt, was zur erfolgreichen Ausführung von Shellcode führt.
Mangle enthält auch die Fähigkeit, die gesamte Kette und alle Attribute eines legitimen Code-Signatur-Zertifikats aus einer Datei zu übernehmen und auf eine andere Datei zu kopieren. Dies umfasst das Signierungsdatum, Gegensignaturen und andere messbare Attribute.
Obwohl diese Funktion ähnlich klingen mag wie ein anderes von mir entwickeltes Tool, Limelighter, besteht der Hauptunterschied zwischen beiden darin, dass Limelighter ein gefälschtes Zertifikat basierend auf einer Domain erstellt und es mit dem aktuellen Datum und der aktuellen Uhrzeit signiert, während hier gültige Attribute verwendet werden, bei denen der Zeitstempel von der ursprünglichen Datei übernommen wird. Diese Option kann DLL- oder .exe-Dateien zum Kopieren verwenden, indem die Befehlszeilenoption -C zusammen mit dem Pfad zur Datei verwendet wird, von der Sie das Zertifikat kopieren möchten.