
Empire ist ein Post-Exploitation-Agent für PowerShell und Python.

Invoke-Obfuscation ist ein PowerShell v2.0+ kompatibler PowerShell-Befehls- und Skript-Obfuskator.
Im Herbst 2015 begann ich, die Flexibilität der PowerShell-Sprache zu erforschen und katalogisierte die verschiedenen Möglichkeiten, eine Handvoll gängiger Techniken umzusetzen, die Angreifer regelmäßig verwenden.
Zunächst konzentrierte ich mich auf codierte Befehle und Remote-Download-Cradle-Syntaxen. Dabei entdeckte ich, dass verschiedene Escape-Zeichen, die die Ausführung des Befehls nicht behinderten, in den Befehlszeilenargumenten erhalten blieben – sowohl im laufenden Prozess als auch in den Protokollen der Security EID 4688 und Sysmon EID 1-Ereignisprotokolle. Dies führte mich dazu, systematisch Wege zur Verschleierung jeder Art von „Token“ zu untersuchen, der in einem PowerShell-Befehl oder -Skript vorkommt.
Anschließend erforschte ich obskurere Methoden der Zeichenkettenverschleierung, verschiedene Kodierungs-/Verschlüsselungstechniken (wie ASCII/Hex/Oktal/Binär und sogar SecureString) und schließlich PowerShell-Starttechniken, um die Befehlszeilenargumente von powershell.exe zu abstrahieren und zurück zum Eltern- und sogar Großelternprozess zu verschieben.
Angreifer und Schadsoftware verwenden mittlerweile extrem einfache Verschleierungstechniken, um den Großteil des Befehls vor den Befehlszeilenargumenten von powershell.exe zu verbergen. Ich habe dieses Tool entwickelt, um dem Blue Team dabei zu helfen, verschleierte Befehle zu simulieren – basierend auf dem, was mir derzeit syntaktisch in PowerShell 2.0-5.0 möglich erscheint –, damit sie ihre Erkennungsfähigkeiten für diese Techniken testen können.
Der alleinige Zweck des Tools ist es, alle Annahmen zu widerlegen, die wir als Verteidiger darüber haben könnten, wie PowerShell-Befehle in der Befehlszeile erscheinen können. Ich hoffe, dass es das Blue Team dazu ermutigt, zusätzlich zur Aktualisierung der PowerShell-Protokollierung auf Module, ScriptBlock und Transkriptionsprotokollierung auch nach Verschleierungsindikatoren in der Befehlszeile zu suchen, da diese Quellen die meisten Aspekte der von diesem Tool generierten Verschleierungstechniken vereinfachen.
Obwohl alle Verschleierungsebenen in separate Skripte ausgelagert wurden, werden die meisten Benutzer die Funktion Invoke-Obfuscation als einfachste Möglichkeit empfinden, die Verschleierungstechniken zu erkunden und zu visualisieren, die dieses Framework derzeit unterstützt.
Der Quellcode für Invoke-Obfuscation wird auf Github gehostet. Sie können ihn aus diesem Repository (https://github.com/danielbohannon/Invoke-Obfuscation) herunterladen, forken und überprüfen. Bitte melden Sie Probleme oder Feature-Wünsche über den mit diesem Projekt verbundenen Bug-Tracker von Github.
Zur Installation:
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation
Invoke-Obfuscation wird unter der Apache 2.0-Lizenz veröffentlicht.
v1.0 – 2016-09-25 DerbyCon 6.0 (Louisville, Kentucky USA): Öffentliche Veröffentlichung von Invoke-Obfuscation.
v1.1 – 2016-10-09 SANS DFIR Summit (Prag, Tschechische Republik): Hinzugefügt: -f Formatoperator-Umordnungsfunktionalität für alle zutreffenden TOKEN-Verschleierungsfunktionen. Außerdem zusätzliche Syntaxoptionen zum Setzen von Variablenwerten.
v1.2 – 2016-10-20 CODE BLUE (Tokio, Japan): Hinzugefügt: Typ-TOKEN-Verschleierung (direkte Typumwandlung mit Zeichenkettenverschleierungsoptionen für den Typnamen).
v1.3 – 2016-10-22 Hacktivity (Budapest, Ungarn): Hinzugefügt: Zwei neue LAUNCHERs: CLIP+ und CLIP++. Außerdem zusätzliche (und einfachere) Array-Zeichenkonvertierungssyntax für alle ENCODING-Funktionen, die For-EachObject/% nicht benötigt.
v1.4 – 2016-10-28 BruCON (Gent, Belgien): Hinzugefügt: Neue BXOR-ENCODING-Funktion. Außerdem verbesserte zufällige Groß-/Kleinschreibung für alle Komponenten aller ENCODING-Funktionen sowie für PowerShell-Ausführungsflags aller LAUNCHERs. Schließlich wurde die Kurzform -EP für -ExecutionPolicy zu allen LAUNCHERs hinzugefügt sowie die optionale ganzzahlige Darstellung des PowerShell-Ausführungsflags -WindowStyle: Normal (0), Hidden (1), Minimized (2), Maximized (3).
v1.5 – 2016-11-04 Blue Hat (Redmond, Washington USA): Hinzugefügt: WMIC-LAUNCHER mit etwas Randomisierung der WMIC-Befehlszeilenargumente.
v1.6 – 2017-01-24 Blue Hat IL (Tel Aviv, Israel):
powershell -enc-Syntax als SCRIPTBLOCK-Wert eingegeben wird.-Key -Ke -K KEY-Substring-Syntaxoptionen zu Out-SecureStringCommand.ps1 hinzugefügt.-ST/-STA (Single-Threaded Apartment)-Flags zu CLIP+- und CLIP++-Launcher-Funktionen hinzugefügt, da diese bei Ausführung unter PowerShell 2.0 erforderlich sind.[String]::Join('',$string)-JOIN-Syntax hinzugefügt${} einschließt, wenn sie bereits eingeschlossen sind (damit ${${var}} nicht passiert, da dies Fehler verursacht).v1.7 – 2017-03-03 nullcon (Goa, Indien):
v1.8 – 2017-07-27 Black Hat (Las Vegas, Nevada USA):