Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Invoke-Obfuscation — PowerShell-Verschleierer | Kitploit
Tools/GitHubGitHub/danielbohannon/invoke-obfuscation
DefensivwerkzeugePayload-GenerierungLernen & BildungRed Teaming
GitHubdanielbohannon/invoke-obfuscation

Invoke-Obfuscation

PowerShell-Verschleierer

Repository anzeigen
4.3k815vor 7 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Invoke-Obfuscation v1.8

Invoke-Obfuscation Bildschirmfoto

Einführung

Invoke-Obfuscation ist ein PowerShell v2.0+ kompatibler PowerShell-Befehls- und Skript-Obfuskator.

Hintergrund

Im Herbst 2015 begann ich damit, die Flexibilität der PowerShell-Sprache zu erforschen, und katalogisierte die verschiedenen Möglichkeiten, eine Handvoll gängiger Techniken umzusetzen, die die meisten Angreifer regelmäßig anwenden.

Anfangs konzentrierte ich mich auf codierte Befehle und Syntaxen für Remote-Download-Cradles. 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. Dies veranlasste mich, systematisch nach Möglichkeiten zu suchen, jede Art von „Token“ in einem PowerShell-Befehl oder -Skript zu verschleiern.

Anschließend untersuchte ich ausgefallenere Methoden zur Zeichenfolgen-Verschleierung, 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 an den übergeordneten und sogar den Großelternprozess zurückzugeben.

Zweck

Angreifer und Schadsoftware setzen zunehmend extrem einfache Verschleierungstechniken ein, um den Großteil des Befehls vor den Befehlszeilenargumenten von powershell.exe zu verbergen. Ich habe dieses Tool entwickelt, um dem Blue Team bei der Simulation verschleierter Befehle zu helfen – basierend auf dem, was ich derzeit als syntaktisch in PowerShell 2.0–5.0 möglich kenne –, damit sie ihre Erkennungsfähigkeiten für diese Techniken testen können.

Der alleinige Zweck des Tools ist es, jegliche Annahmen zu widerlegen, die wir als Verteidiger darüber haben, 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 (Modul-, ScriptBlock- und Transkriptionsprotokollierung) auf Indikatoren für Verschleierung in der Befehlszeile zu achten, da diese Quellen die meisten Aspekte der von diesem Tool generierten Verschleierungstechniken vereinfachen.

Verwendung

Obwohl alle Verschleierungsebenen in separate Skripte ausgearbeitet wurden, werden die meisten Benutzer die Funktion Invoke-Obfuscation als den einfachsten Weg empfinden, die von diesem Framework derzeit unterstützten Verschleierungstechniken zu erkunden und zu visualisieren.

Installation

Der Quellcode für Invoke-Obfuscation wird auf Github gehostet. Sie können ihn von diesem Repository herunterladen, forken und überprüfen (https://github.com/danielbohannon/Invoke-Obfuscation). Bitte melden Sie Probleme oder feature requests über den mit diesem Projekt verbundenen Github-Bugtracker.

So installieren Sie:

root@kitploit:~
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation

Lizenz

Invoke-Obfuscation wird unter der Apache 2.0-Lizenz veröffentlicht.

Versionshinweise

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-Neuordnungsfunktionalität für alle zutreffenden TOKEN-Verschleierungsfunktionen. Außerdem zusätzliche Syntaxoptionen zum Festlegen von Variablenwerten hinzugefügt.

v1.2 – 2016-10-20 CODE BLUE (Tokio, Japan): Typ-TOKEN-Verschleierung hinzugefügt (direkter Typecast mit Zeichenfolgen-Verschleierungsoptionen für den Typnamen).

v1.3 – 2016-10-22 Hacktivity (Budapest, Ungarn): Zwei neue LAUNCHER hinzugefügt: CLIP+ und CLIP++. Außerdem eine zusätzliche (und einfachere) Array-Zeichenkonvertierungssyntax für alle ENCODING-Funktionen, die kein For-EachObject/% benötigt.

v1.4 – 2016-10-28 BruCON (Gent, Belgien): Neue BXOR-ENCODING-Funktion hinzugefügt. Außerdem verbesserte zufällige Groß-/Kleinschreibung für alle Komponenten aller ENCODING-Funktionen sowie für PowerShell-Ausführungsflags aller LAUNCHER. Schließlich die Kurzform -EP für -ExecutionPolicy zu allen LAUNCHERs hinzugefügt sowie die optionale Integer-Darstellung des PowerShell-Ausführungsflags -WindowStyle: Normal (0), Hidden (1), Minimized (2), Maximized (3).

v1.5 – 2016-11-04 Blue Hat (Redmond, Washington USA): WMIC-LAUNCHER mit etwas Zufallsauswahl der WMIC-Befehlszeilenargumente hinzugefügt.

v1.6 – 2017-01-24 Blue Hat IL (Tel Aviv, Israel):

  • CLI-Funktionalität hinzugefügt: Z. B.: Invoke-Obfuscation -ScriptBlock {Write-Host 'CLI FTW!'} -Command 'Token\All\1,Encoding\1,Launcher\Stdin++\234,Clip' -Quiet -NoExit
  • UNDO-Funktionalität hinzugefügt, um jeweils eine Verschleierungsschicht zu entfernen.
  • Leerraum-Verschleierung aus Token\All\1 entfernt, um die Verschleierung großer Skripte zu beschleunigen.
  • Process Argument Tree-Ausgabe für alle Launcher hinzugefügt, um Verteidigern zu helfen.
  • Automatische Erkennung des Basismenüs hinzugefügt, um die Notwendigkeit von BACK oder HOME zu vermeiden: Z. B.: Wenn Sie TOKEN, dann ALL, dann 1 ausgeführt haben, gelangen Sie durch einfaches Eintippen von LAUNCHER zum LAUNCHER-Menü, ohne HOME oder BACK eingeben zu müssen, um zum Startmenü zurückzukehren.
  • Mehrfachbefehlssyntax hinzugefügt, die von CLI und interaktivem Modus verwendet wird: Z. B.: Token\All\1,String\3,Encoding\5,Launcher\Ps\234,Clip
  • Regex-Fähigkeit für alle Menü- und Verschleierungsbefehle hinzugefügt: Z. B.: Token**,String[13],Encoding(1|6),Launcher.*[+]{2}\234,Clip
  • OUT FILEPATH-Einzelbefehlsfunktionalität hinzugefügt.
  • Dekodierung hinzugefügt, wenn die powershell -enc-Syntax als SCRIPTBLOCK-Wert eingegeben wird.
  • Alias ForEach zu ForEach-Object/%-Zufallssyntaxoptionen in allen ENCODING-Funktionen hinzugefügt.
  • Syntaxoptionen -Key -Ke -K KEY-Substring zu Out-SecureStringCommand.ps1 hinzugefügt.
  • Gründlichere zufällige Groß-/Kleinschreibung zu allen \Home\String-Verschleierungsfunktionen hinzugefügt.
  • Flags -ST/-STA (Single-Threaded Apartment) zu den Launcher-Funktionen CLIP+ und CLIP++ hinzugefügt, da sie erforderlich sind, wenn PowerShell 2.0 ausgeführt wird.
  • Get-Item/GI/Item-Syntax überall dort hinzugefügt, wo Get-ChildItem zum Abrufen von Variablenwerten verwendet wird.
  • Set-Item-Variablen-Instantiierungssyntax zur TYPE-Verschleierungsfunktion hinzugefügt.
  • Zusätzliche Invoke-Expression/IEX-Syntax unter Verwendung von PowerShell-Automatikvariablen und Umgebungsvariablenwertverketten in Out-ObfuscatedStringCommand.ps1s Out-EncapsulatedInvokeExpression-Funktion hinzugefügt und auf alle Launcher, STRING- und ENCODING-Funktionen kopiert, um zahlreiche IEX-Befehlszeilensyntaxen hinzuzufügen.
  • Zwei neue JOIN-Syntaxen für String\Reverse und alle ENCODING-Verschleierungsoptionen hinzugefügt:
    1. [String]::Join('',$string)-JOIN-Syntax hinzugefügt
    2. OFS-Variablen-JOIN-Syntax hinzugefügt (Output Field Separator-Automatikvariable)
  • Zwei weitere SecureString-Syntaxen zu Encoding\5 hinzugefügt:
    1. PtrToStringAnsi / SecureStringToGlobalAllocAnsi
    2. PtrToStringBSTR / SecureStringToBSTR
  • Sechs GetMember-Alternativsyntaxen für mehrere SecureString-Member hinzugefügt:

v1.7 – 2017-03-03 nullcon (Goa, Indien):

  • 3 neue LAUNCHER hinzugefügt: RUNDLL, RUNDLL++ und MSHTA++
  • Zusätzliche ExecutionContext-Platzhaltervariablenzeichenfolgen hinzugefügt

v1.8 – 2017-07-27 Black Hat (Las Vegas, Nevada USA):

  • 2 neue ENCODING-Optionen hinzugefügt: Sonderzeichen und Leerraum

v1.8.1 – 2017-12-19:

  • COMPRESS-Funktion hinzugefügt für einfachere Konvertierung mehrzeiliger Skripte in einen Einzeiler, wobei die Befehlszeilenlänge für die cmd.exe-Befehlszeilenlängenbeschränkung drastisch reduziert wird.

v1.8.2 – 2018-01-04:

  • AST-Verschleierungsfunktionen hinzugefügt, die durch Manipulation der Struktur des AbstractSyntaxTree verschleiern, ohne viele Sonderzeichen zu verwenden.
Tool herunterladen
  1. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[3].Name).Invoke
  2. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[5].Name).Invoke
  3. PtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[2].Name).Invoke
  4. PtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[4].Name).Invoke
  5. PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[0].Name).Invoke
  6. PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[1].Name).Invoke
  • Out-ObfuscatedTokenCommand.ps1 aktualisiert, sodass die VARIABLE-Verschleierung Variablen nicht in ${} kapselt, wenn sie bereits gekapselt sind (damit ${${var}} nicht vorkommt, was Fehler verursacht).
  • Invoke-Obfuscation.psm1 durch Invoke-Obfuscation.psd1 ersetzt (Dank an @Carlos_Perez).
  • Mehrere TOKEN-Ebene-Verschleierungsfehler behoben, die von @cobbr_io und @IISResetMe gemeldet wurden.