Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Revoke-Obfuscation — Framework di rilevamento dell'offuscamento di PowerShell | Kitploit
Strumenti/GitHubGitHub/danielbohannon/revoke-obfuscation
Strumenti DifensiviAnalisi StaticaAnalisi del CodiceAnalisi MalwareThreat IntelligencePaper e RicercaApprendimento e Formazione
GitHubdanielbohannon/revoke-obfuscation

Revoke-Obfuscation

Framework di rilevamento dell'offuscamento di PowerShell

Vedi Repository
7521226 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Revoke-Obfuscation v1.0

Demo di Revoke-Obfuscation

Schermata di Revoke-Obfuscation

Introduzione

Revoke-Obfuscation è un framework di rilevamento dell'offuscamento di PowerShell compatibile con PowerShell v3.0+.

Autori

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

Ricerca

Post sul blog: 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

Contesto

Nell'autunno 2016 e nella primavera 2017, Daniel Bohannon (@danielhbohannon) ha rilasciato Invoke-Obfuscation e Invoke-CradleCrafter, due framework open-source per l'offuscamento di PowerShell. L'obiettivo di questa ricerca e di questi framework era evidenziare i limiti di un approccio puramente basato su firme per rilevare l'uso di PowerShell da parte degli aggressori. Il messaggio principale per i difensori è stato quello di concentrarsi sul rilevamento degli Indicatori di Offuscamento oltre alla sintassi sospetta conosciuta.

Tuttavia, gli estremi livelli di randomizzazione in Invoke-Obfuscation e Invoke-CradleCrafter, abbinati alle opzioni di offuscamento a livello di token che non vengono deoffuscate nella registrazione dei blocchi di script di PowerShell, hanno portato i difensori a cercare un nuovo e scalabile metodo per rilevare genericamente tecniche di offuscamento sia note che sconosciute.

Poche settimane dopo il rilascio di Invoke-Obfuscation, Lee Holmes (@Lee_Homes) ha scritto un post sul blog intitolato More Detecting Obfuscated PowerShell in cui ha evidenziato tecniche di analisi statistica per rilevare caratteristiche anomale presenti in script pesantemente offuscati, in particolare quelli prodotti da Invoke-Obfuscation.

Da questo scambio, Daniel e Lee sono diventati buoni amici e condividevano molti interessi/ossessioni comuni — segnatamente, l'amore per il buon caffè e la ricerca per creare nuovi modi per rilevare a fondo PowerShell offuscato.

Il tempo che entrambi i Blue Teamer hanno speso a studiare ricerche e codice POC equivarrebbe a diverse migliaia di tazze di caffè preparato con Chemex, ipotizzando il corretto tempo di infusione di 4 minuti (supponendo che almeno un altro appassionato di caffè abbia colto questo gioco di parole "pour over").

Revoke-Obfuscation è il prodotto finale artigianale di questi sforzi.

Scopo

Revoke-Obfuscation è un framework open-source PowerShell v3.0+ per rilevare comandi e script PowerShell offuscati su larga scala. Si basa sull'AST (Abstract Syntax Tree) di PowerShell per estrarre rapidamente migliaia di caratteristiche da qualsiasi script PowerShell in input e confrontare questo vettore di caratteristiche con uno dei diversi vettori di caratteristiche pesati predefiniti, calcolati attraverso un processo di apprendimento automatico condotto su un corpus di oltre 408.000 script PowerShell. Questo corpus completo può essere scaricato da (https://aka.ms/PowerShellCorpus). Puoi trovare i dettagli sugli aspetti di data science di questo lavoro nella sottodirectory 'DataScience' del repository.

Poiché Revoke-Obfuscation si basa sull'estrazione e il confronto di caratteristiche anziché su puri IOC o corrispondenza RegEx, è più robusto nella sua capacità di identificare tecniche di offuscamento sconosciute, anche quando gli aggressori tentano di attenuare il loro offuscamento riempiendolo con contenuti di script non offuscati per sovvertire controlli di base come l'analisi della frequenza dei caratteri.

Revoke-Obfuscation può misurare facilmente la maggior parte degli script PowerShell in input entro 100-300 millisecondi. Questo livello di prestazioni consente a un'organizzazione di misurare l'offuscamento di (al peggio) oltre 12.000 script PowerShell all'ora, senza la necessità di indicizzare i log verbosi dei blocchi di script PowerShell in un SIEM.

Infine, Revoke-Obfuscation supporta una facile funzionalità di whitelist, insieme alla capacità di ingerire i record del log eventi operativi di PowerShell e riassemblare i blocchi di script registrati in numerosi record di blocchi di script EID 4104. Può facilmente diventare uno sportello unico per ingerire i log eventi operativi PowerShell di un ambiente, riassemblare e rendere unici tutti gli script all'interno di quei log, e poi identificare gli script PowerShell offuscati che meritano un'ispezione manuale.

Installazione

Il codice sorgente di Revoke-Obfuscation è ospitato su Github, e puoi scaricarlo, forkarlo e revisionarlo da questo repository (https://github.com/danielbohannon/Revoke-Obfuscation). Segnala problemi o richieste di funzionalità tramite il bug tracker di Github associato a questo progetto.

Per installare (da Github):

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

Il codice sorgente può anche essere installato direttamente dalla PowerShell Gallery tramite i seguenti comandi:

Per installare (da PowerShell Gallery):

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

Utilizzo

Revoke-Obfuscation fornirà un tutorial dettagliato così come alcune altre divertenti sorprese. Ma se non sei interessato allo svago, puoi semplicemente eseguire Get-Help Measure-RvoObfuscation per vedere la sintassi di utilizzo o semplicemente continuare a leggere.

Ci sono due funzioni principali utilizzate in questo framework:

  • Get-RvoScriptBlock -- riassembla script dai log dei blocchi di script EID 4104
  • Measure-RvoObfuscation -- misura lo script(i) in input e restituisce il punteggio di offuscamento

Se hai bisogno di riassemblare ed estrarre i log dei blocchi di script dai log operativi di PowerShell, allora Get-RvoScriptBlock è la funzione giusta. Restituisce automaticamente solo blocchi di script unici ed esclude alcuni valori predefiniti dei blocchi di script ritenuti non malevoli. Questo può essere sovrascritto con il flag -Deep.

  • 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 supporta anche i risultati di audit MIR/HX così come i log operativi PowerShell recuperati tramite il progetto CimSweep di Matt Graeber (@mattifestation) (https://github.com/PowerShellMafia/CimSweep). Per CimSweep è necessaria una piccola modifica al registro per ingannare WMI e fargli interrogare un log eventi non classico. I dettagli si trovano nella sezione NOTE di Get-RvoScriptBlock.

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

Un esempio completo sui dati di test registrati in demo.evtx può essere trovato qui sotto:

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

Un esempio completo su script di test locali e remoti può essere trovato qui sotto:

  • 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

Il flag -OutputToDisk produrrà automaticamente tutti gli script offuscati in .\Results\Obfuscated. Indipendentemente da ciò, tutti i risultati saranno restituiti come PSCustomObject contenenti il contenuto dello script insieme a metadati come punteggio di offuscamento, tempo di misurazione, risultato whitelist, tutte le caratteristiche dello script estratte, ecc.

Esistono tre opzioni di whitelist in due posizioni in Revoke-Obfuscation:

  1. Su disco (applicate automaticamente se presenti):
    1. .\Whitelist\Scripts_To_Whitelist\ -- Tutti gli script inseriti in questa directory saranno hashati e qualsiasi script identico sarà whitelistato. Questo metodo di whitelist è preferibile rispetto alle due opzioni successive.
    2. .\Whitelist\Strings_To_Whitelist.txt -- Uno script contenente UNA QUALSIASI delle stringhe in questo file sarà whitelistato. Sintassi: Rule_Name,string_to_whitelist
    3. .\Whitelist\Regex_To_Whitelist.txt -- Uno script contenente UNA QUALSIASI delle espressioni regolari in questo file sarà whitelistato. Sintassi: Rule_Name,regex_to_whitelist
  2. Argomenti per Measure-RvoObfuscation (applicati in aggiunta alle opzioni di whitelist sopra):
    1. -WhitelistFile -- -WhitelistFile .\files\*.ps1,.\more_files\*.ps1,.\one_more_file.ps1
    2. -WhitelistContent -- -WhitelistContent 'string 1 to whitelist','string 2 to whitelist'
    3. -WhitelistRegex -- -WhitelistRegex 'regex 1 to whitelist','regex 2 to whitelist'

Se sei interessato a creare il tuo set di dati di addestramento e generare un vettore pesato per la funzione Measure-Vector, allora ModelTrainer.cs/ModelTrainer.exe può essere eseguito su un set di dati etichettati. Il seguente comando estrarrà i vettori di caratteristiche da tutti gli script in input e li aggregherà in un singolo CSV utilizzato in questa fase di addestramento:

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

Infine, se stai cercando una piattaforma per creare indicatori (IOC) che sfruttano la potenza dell'AST (Abstract Syntax Tree) di PowerShell — che raccomandiamo vivamente per identificare attività PowerShell malevoli che NON sono offuscate — allora PS Script Analyzer è un eccellente framework progettato per gestire tali compiti.

Licenza

Revoke-Obfuscation è rilasciato sotto licenza Apache 2.0.

Note di rilascio

v1.0 - 2017-07-27 Black Hat USA & 2017-07-30 DEF CON: Rilascio pubblico di Revoke-Obfuscation.

Scarica lo strumento