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
Revoke-Obfuscation — Erkennungsframework für PowerShell-Obfuskation | Kitploit
Tools/GitHubGitHub/danielbohannon/revoke-obfuscation
DefensivwerkzeugeStatische AnalyseCode-AnalyseMalware-AnalyseBedrohungsanalysePapers & ForschungLernen & Bildung
GitHubdanielbohannon/revoke-obfuscation

Revoke-Obfuscation

Erkennungsframework für PowerShell-Obfuskation

Repository anzeigen
752122vor 6 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

Revoke-Obfuscation v1.0

Revoke-Obfuscation Demo

Revoke-Obfuscation Screenshot

Einführung

Revoke-Obfuscation ist ein mit PowerShell v3.0+ kompatibles PowerShell-Erkennungsframework für Obfuskierung.

Autoren

Daniel Bohannon (@danielhbohannon) Lee Holmes (@Lee_Homes)

Forschung

Blog-Beitrag: https://www.fireeye.com/blog/threat-research/2017/07/revoke-obfuscation-powershell.html

Whitepaper: https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/revoke-obfuscation-report.pdf

Hintergrund

Im Herbst 2016 und Frühjahr 2017 veröffentlichte Daniel Bohannon (@danielhbohannon) Invoke-Obfuscation und Invoke-CradleCrafter, zwei Open-Source-PowerShell-Obfuskierungsframeworks. Ziel dieser Forschung und dieser Frameworks war es, die Grenzen eines rein signaturbasierten Ansatzes zur Erkennung der Nutzung von PowerShell durch Angreifer aufzuzeigen. Die Kernbotschaft an Verteidiger war, sich neben bekannten verdächtigen Syntaxmustern auf die Erkennung von Indikatoren für Obfuskierung zu konzentrieren.

Die extremen Randomisierungsgrade in Invoke-Obfuscation und Invoke-CradleCrafter, gepaart mit den Obfuskierungsoptionen auf Token-Ebene, die in der PowerShell-Skriptblockprotokollierung nicht deobfuskiert werden, haben Verteidiger jedoch dazu veranlasst, nach einer neuen, skalierbaren Methode zu suchen, um sowohl bekannte als auch unbekannte Obfuskierungstechniken generisch zu erkennen.

Einige Wochen nach der Veröffentlichung von Invoke-Obfuscation veröffentlichte Lee Holmes (@Lee_Homes) einen Blogbeitrag mit dem Titel More Detecting Obfuscated PowerShell, in dem er statistische Analysetechniken zur Erkennung anomaler Merkmale in stark obfuskierten Skripten hervorhob, insbesondere solcher, die von Invoke-Obfuscation erzeugt wurden.

Seit diesem Austausch sind Daniel und Lee gute Freunde geworden und teilen viele gemeinsame Interessen/Leidenschaften – namentlich eine Liebe zu gutem Kaffee und das Streben nach neuen Wegen zur gründlichen Erkennung obfuskierten PowerShells.

Die Zeit, die beide Blue Teamer mit dem Studium von Forschungsergebnissen und Proof-of-Concept-Code verbracht haben, würde mehreren tausend Tassen Chemex-gebrühtem Kaffee entsprechen, wenn man die richtige Brühzeit von 4 Minuten annimmt (vorausgesetzt, mindestens ein anderer Kaffeeliebhaber hat diesen „Pour Over“-Wortwitz verstanden).

Revoke-Obfuscation ist das endgültige handgefertigte Produkt dieser Bemühungen.

Zweck

Revoke-Obfuscation ist ein Open-Source-PowerShell-v3.0+-Framework zur Erkennung obfuskierten PowerShell-Befehle und -Skripte in großem Maßstab. Es nutzt den AST (Abstract Syntax Tree) von PowerShell, um Tausende von Merkmalen aus jedem eingegebenen PowerShell-Skript schnell zu extrahieren und diesen Merkmalsvektor mit einem von mehreren vordefinierten gewichteten Merkmalsvektoren zu vergleichen, die durch einen automatisierten Lernprozess anhand eines Korpus von über 408.000 PowerShell-Skripten berechnet wurden. Der vollständige Korpus kann unter (https://aka.ms/PowerShellCorpus) heruntergeladen werden. Details zu den datenwissenschaftlichen Aspekten dieser Arbeit finden Sie im Unterverzeichnis 'DataScience' des Repositorys.

Da Revoke-Obfuscation auf Merkmalsextraktion und -vergleich basiert und nicht auf reinen IOCs oder Regex-Abgleichen, ist es robuster bei der Identifizierung unbekannter Obfuskierungstechniken, selbst wenn Angreifer versuchen, ihre Obfuskierung zu verschleiern, indem sie sie mit unobfuskierten Skriptinhalten auffüllen, um einfache Prüfungen wie die Zeichenfrequenzanalyse zu umgehen.

Revoke-Obfuscation kann die meisten eingegebenen PowerShell-Skripte problemlos innerhalb von 100-300 Millisekunden messen. Diese Leistungsfähigkeit ermöglicht es einer Organisation, die Obfuskierung von (im schlimmsten Fall) über 12.000 PowerShell-Skripten pro Stunde zu messen, ohne ausführliche PowerShell-Skriptblockprotokolle in einem SIEM indizieren zu müssen.

Schließlich unterstützt Revoke-Obfuscation eine einfache Whitelisting-Funktionalität sowie die Möglichkeit, PowerShell Operational-Ereignisprotokolleinträge zu erfassen und Skriptblöcke wieder zusammenzusetzen, die über zahlreiche Skriptblock-EID-4104-Einträge aufgezeichnet wurden. Es kann leicht zu einer zentralen Anlaufstelle werden, um die PowerShell Operational-Ereignisprotokolle einer Umgebung zu erfassen, alle Skripte in diesen Protokollen neu zusammenzusetzen und zu deduplizieren und dann obfuskierte PowerShell-Skripte zu identifizieren, die eine manuelle Überprüfung verdienen.

Installation

Der Quellcode von Revoke-Obfuscation wird auf Github gehostet. Sie können ihn aus diesem Repository herunterladen, forken und überprüfen (https://github.com/danielbohannon/Revoke-Obfuscation). Bitte melden Sie Probleme oder Feature-Wünsche über den mit diesem Projekt verbundenen Github-Bug-Tracker.

Zur Installation (von Github):

root@kitploit:~
Import-Module .\Revoke-Obfuscation.psd1

Der Quellcode kann auch direkt aus dem PowerShell-Katalog über die folgenden Befehle installiert werden:

Zur Installation (aus dem PowerShell-Katalog):

root@kitploit:~
Install-Module Revoke-Obfuscation
Import-Module Revoke-Obfuscation

Verwendung

Revoke-Obfuscation bietet eine detaillierte Anleitung sowie einige andere lustige Überraschungen. Wenn Sie jedoch nicht auf den Spaß aus sind, können Sie einfach Get-Help Measure-RvoObfuscation ausführen, um die Verwendungssyntax zu sehen, oder einfach weiterlesen.

Es gibt zwei primäre Funktionen in diesem Framework:

  • Get-RvoScriptBlock – Setzt Skripte aus EID 4104-Skriptblockprotokollen wieder zusammen.
  • Measure-RvoObfuscation – Misst eingegebene Skripte und gibt einen Obfuskierungs-Score zurück.

Wenn Sie Skriptblockprotokolle aus PowerShell Operational-Protokollen wieder zusammensetzen und extrahieren müssen, ist Get-RvoScriptBlock Ihre Funktion der Wahl. Es gibt automatisch nur eindeutige Skriptblöcke zurück und schließt bestimmte Standardskriptblockwerte aus, die als nicht bösartig eingestuft werden. Dies kann mit dem Schalter -Deep überschrieben werden.

  • Get-RvoScriptBlock -Path 'C:\Windows\System32\Winevt\Logs\Microsoft-Windows-PowerShell%4Operational.evtx' -Verbose
  • Get-ChildItem .\Demo\demo.evtx | Get-RvoScriptBlock -Verbose
  • Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock -Verbose

Get-RvoScriptBlock unterstützt auch MIR/HX-Auditergebnisse sowie PowerShell-Operational-Protokolle, die über Matt Graebers (@mattifestation) CimSweep-Projekt abgerufen wurden (https://github.com/PowerShellMafia/CimSweep). Für CimSweep ist eine kleine Registry-Anpassung erforderlich, um WMI dazu zu bringen, ein nicht-klassisches Ereignisprotokoll abzufragen. Details finden Sie im ABSCHNITT NOTES von Get-RvoScriptBlock.

  • Get-ChildItem C:\MirOrHxAuditFiles\*_w32eventlogs.xml | Get-RvoScriptBlock -Verbose
  • Get-CSEventLogEntry -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock

Ein vollständiges Beispiel mit Testdaten, die in demo.evtx aufgezeichnet wurden, finden Sie unten:

root@kitploit:~
$obfResults = Get-WinEvent -Path .\Demo\demo.evtx | Get-RvoScriptBlock | Measure-RvoObfuscation -OutputToDisk -Verbose

Ein vollständiges Beispiel mit lokal und remote gehosteten Testskripten finden Sie unten:

  • Measure-RvoObfuscation -Url 'http://bit.ly/DBOdemo1' -Verbose -OutputToDisk
  • Get-Content .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk
  • Get-ChildItem .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk

Der Schalter -OutputToDisk gibt automatisch alle obfuskierten Skripte in .\Results\Obfuscated\ aus. Unabhängig davon werden alle Ergebnisse als PSCustomObjects zurückgegeben, die den Skriptinhalt zusammen mit Metadaten wie einem Obfuskierungs-Score, Messzeit, Whitelisting-Ergebnis, allen extrahierten Skriptmerkmalen usw. enthalten.

Es gibt drei Whitelisting-Optionen an zwei Stellen in Revoke-Obfuscation:

  1. Auf der Festplatte (automatisch angewendet, falls vorhanden):
    1. .\Whitelist\Scripts_To_Whitelist\ – Alle in dieses Verzeichnis gelegten Skripte werden gehasht und alle identischen Skripte werden auf die Whitelist gesetzt. Diese Whitelisting-Methode wird den beiden folgenden Optionen vorgezogen.
    2. .\Whitelist\Strings_To_Whitelist.txt – Ein Skript, das EINE der Zeichenfolgen in dieser Datei enthält, wird auf die Whitelist gesetzt. Syntax: Regelname,zu_whitelistende_Zeichenfolge
    3. .\Whitelist\Regex_To_Whitelist.txt – Ein Skript, das EINE der regulären Ausdrücke in dieser Datei enthält, wird auf die Whitelist gesetzt. Syntax: Regelname,zu_whitelistender_regex
  2. Argumente für Measure-RvoObfuscation (zusätzlich zu den obigen Whitelisting-Optionen angewendet):
    1. -WhitelistFile – -WhitelistFile .\files\*.ps1,.\more_files\*.ps1,.\one_more_file.ps1
    2. -WhitelistContent – -WhitelistContent 'zu whitelistende Zeichenfolge 1','zu whitelistende Zeichenfolge 2'
    3. -WhitelistRegex – -WhitelistRegex 'zu whitelistender regex 1','zu whitelistender regex 2'

Wenn Sie daran interessiert sind, Ihren eigenen Trainingsdatensatz zu erstellen und einen gewichteten Vektor für die Measure-Vector-Funktion zu generieren, kann ModelTrainer.cs/ModelTrainer.exe gegen einen gekennzeichneten Datensatz ausgeführt werden. Der folgende Befehl extrahiert Merkmalsvektoren aus allen eingegebenen Skripten und aggregiert sie in einer einzigen CSV-Datei, die in dieser Trainingsphase verwendet wird:

root@kitploit:~
Get-ChildItem .\*.ps1 | ForEach-Object { [PSCustomObject](Get-RvoFeatureVector -Path $_.FullName) | Export-Csv .\all_features.csv -Append }

Wenn Sie schließlich nach einer Plattform zur Erstellung von Indikatoren (IOCs) suchen, die die Leistungsfähigkeit des PowerShell-AST (Abstract Syntax Tree) nutzt – was wir für die Identifizierung bösartiger PowerShell-Aktivitäten, die NICHT obfuskiert sind, wärmstens empfehlen – dann ist PS Script Analyzer ein hervorragendes Framework, das für solche Aufgaben entwickelt wurde.

Lizenz

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

Versionshinweise

v1.0 – 2017-07-27 Black Hat USA & 2017-07-30 DEF CON: Öffentliche Veröffentlichung von Revoke-Obfuscation.

Tool herunterladen