GoAround
Ein Tool, das die Erstellung von AMSI-Bypässen und die automatische Verschleierung von PowerShell-Skripten mit drei verschiedenen Verschleierungsmethoden ermöglicht. GoAround ist unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie in der LICENSE-Datei.
Haftungsausschluss
Dieses Tool wurde entwickelt, um Pentestern bei ihren täglichen Post-Exploitation-Aufgaben zu helfen und als Forschungsprojekt. Jegliche böswillige Nutzung dieses Tools oder seine Verwendung in Systemen Dritter ohne die entsprechende Berechtigung liegt in der alleinigen Verantwortung des Benutzers.
Installation
Sie müssen lediglich den Code von GitHub herunterladen und das Tool über die Windows-Eingabeaufforderung oder PowerShell-Konsole ausführen.
Benutzeranleitung
Mit GoAround können Sie zwei verschiedene Dinge tun:
- PowerShell-Skripte mit dem erforderlichen Code für einen AMSI-Bypass erstellen. Der generierte Code kann automatisch verschleiert werden.
- Automatische Verschleierung von PowerShell-Skripten unter Verwendung verschiedener Techniken.
Der Benutzer kann zwischen zwei verschiedenen AMSI-Bypässen und drei verschiedenen Verschleierungstechniken wählen.
Anwendung
Um dieses Tool verwenden zu können, muss Python auf dem Rechner installiert sein. Die folgenden Pfade sollten zur Umgebungsvariable PATH hinzugefügt werden:
- C:\Users{Usuario}\AppData\Local\Programs\Python\Python39
- C:\Users{Usuario}\AppData\Local\Programs\Python\Python39\Scripts
Danach können Sie das Tool auf eine der beiden folgenden Arten über die Befehlszeile ausführen:
- Aus dem Tool-Ordner: python goaround.py {options}
- Aus einem anderen Ordner: python {complete path to GoAround folder} {options}
Die Befehlsstruktur ist die folgende:
python goaround.py -m [mode] (-t [type]) (-f [type_obfuscation]) (-i [input_file]) (-o [output_file])
Dabei sind alle Optionen in eckigen Klammern optional. Die Werte für diese Optionen sind:
- -m oder --mode: die einzige Pflichtoption. Sie gibt den Betriebsmodus an, in dem das Tool ausgeführt werden soll. Weitere Informationen finden Sie im Abschnitt Operation modes.
- -t oder --type: gibt den Typ des Bypasses an, der im Modus bypass verwendet werden soll, oder die Art der Verschleierungsmethode im Modus obfuscate. Siehe Abschnitt Bypass types für die verschiedenen Bypass-Typen und Abschnitt Obfuscation methods für die verfügbaren Verschleierungsmethoden.
- -f oder --obfuscation: Wenn der Betriebsmodus bypass ist, wird diese Option verwendet, um den Verschleierungstyp für den Bypass zu wählen. Diese Option ist im Modus obfuscate nicht verfügbar; verwenden Sie stattdessen "-t" oder "--type". Um die verschiedenen Verschleierungsmethoden kennenzulernen, lesen Sie bitte den Abschnitt Obfuscation methods.
- -i oder --input: wird nur im Modus obfuscate verwendet. Es ermöglicht dem Benutzer, die zu verschleiernde Datei auszuwählen.
- -o oder --output: Mit dieser Option kann der Benutzer den Namen des generierten Skripts festlegen. Der Name muss auf ".ps1" enden. Standardmäßig lautet der Name der Ausgabedatei "output.ps1".
Darüber hinaus werden die folgenden Optionen ebenfalls unterstützt und müssen allein (ohne andere Optionen) ausgeführt werden:
- -h oder --help: zeigt dem Benutzer die Bedienungsanleitung des Tools.
- -v oder --version: zeigt die Versionsnummer des Tools.
Betriebsmodi
Es gibt zwei Betriebsmodi, bypass und obfuscate, die mit der Option "-m" oder "--mode" ausgewählt werden:
- bypass: um anzuzeigen, dass das Tool im Bypass-Modus ausgeführt werden soll. In diesem Fall wird eine PS1-Datei mit dem Code des AMSI-Bypasses generiert.
- obfuscate: um anzuzeigen, dass das Tool im Verschleierungsmodus ausgeführt werden soll. In diesem Fall wird das Tool die vom Benutzer mit der Option "-i" oder "--input" bereitgestellte Datei verschleiern (in diesem Betriebsmodus obligatorisch). Es wird eine PS1-Datei mit dem verschleierten Code generiert. Die Verschleierung ist nur für PowerShell-Skripte funktionsfähig.
Bypass-Typen
Im bypass-Modus (-m bypass) kann der Bypass-Typ mit der Option "-t" oder "--type" angegeben werden.
Derzeit werden folgende Bypass-Typen unterstützt:
- reflection: Matt Graeber's Reflection-Bypass.
- scan_buffer_laine: Paul Laîné's AmsiScanBuffer-Patch-Bypass.
Wenn kein Typ angegeben wird, wird standardmäßig der Reflection-Bypass verwendet.
Verschleierungsmethoden
Derzeit unterstützt das Tool drei verschiedene PowerShell-Verschleierungstechniken.
Um die Art der Verschleierung im bypass-Modus auszuwählen, wird die Option "-f" oder "--obfuscation" verwendet (wenn keine angegeben wird, wird der Bypass nicht verschleiert). Um die Art der Verschleierung im obfuscate-Modus auszuwählen, wird die Option "-t" oder "--type" verwendet (wenn keine angegeben wird, wird die Verkettungstechnik verwendet).
Die Namen der Verschleierungstypen sind die folgenden:
- mayus: Es wird den PowerShell-Code mit der Randomcase-Technik ändern. Dies hat keinen Einfluss auf die im Code enthaltenen Zeichenfolgen. Diese Methode ändert den Hash der Datei.
- concatenation: Standardmethode im obfuscate-Modus. Es wird die im Code enthaltenen Zeichenfolgen durch die Verkettung kleinerer Zeichenfolgen ersetzen. Die Zeichenfolgen werden zufällig aufgeteilt, sodass der Code für dieselbe Eingabedatei jedes Mal anders ist.
- insertion: Es wird die im Code enthaltenen Zeichenfolgen durch Kombinationen von Zeichenfolgen und Variablen ersetzen. Wenn der Code beispielsweise die Zeichenfolge “amsiutils” enthält, könnte diese durch “am$var_tfm0” ersetzt werden, wobei var_tfm0 = “siutils”. Die Zeichenfolgen werden zufällig aufgeteilt, sodass der Code für dieselbe Eingabedatei jedes Mal anders ist. Die Variablen haben einen Namen im Format “var_tfm{número}”; wenn der ursprüngliche Code also Variablen mit diesen Namen enthält, sollten diese vor der Verschleierungsphase geändert werden.
Beispiele
Hier sehen Sie einige Anwendungsbeispiele:
Hilfemenü anzeigen
python main.py -h
python main.py --help
Versionsnummer des Tools anzeigen
python main.py -v
python main.py --version
Reflection-Bypass mit Variablen-Insertion verschleiert generieren
python main.py -m bypass -t reflection -f insertion
Paul Laîné's Bypass mit geändertem Ausgabedateinamen generieren
python main.py -m bypass -t scan_buffer_laine -o "output_name.ps1"
Datei mit der Zeichenfolgen-Verkettungsmethode verschleiern
python main.py -m obfuscate -t concatenation -i "input_required.ps1"