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
Strumenti/GitHubGitHub/danielbohannon/invoke-obfuscation
Strumenti DifensiviGenerazione di PayloadApprendimento e FormazioneRed Teaming
GitHubdanielbohannon/invoke-obfuscation

Invoke-Obfuscation

PowerShell Obfuscator

Vedi Repository
4.3k8157 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

Invoke-Obfuscation v1.8

Invoke-Obfuscation Screenshot

Introduzione

Invoke-Obfuscation è un comando PowerShell compatibile con PowerShell v2.0+ e un offuscatore di script.

Contesto

Nell'autunno del 2015 ho deciso di iniziare a ricercare la flessibilità del linguaggio PowerShell e ho catalogato i vari modi per realizzare una manciata di tecniche comuni che la maggior parte degli aggressori utilizza regolarmente.

Inizialmente concentrandomi sul comando codificato e sulle sintassi del download remoto (cradle), ho scoperto che vari caratteri di escape che non impedivano l'esecuzione del comando persistevano negli argomenti della riga di comando, sia nel processo in esecuzione che in ciò che viene registrato nei log degli eventi Security EID 4688 e Sysmon EID 1. Questo mi ha portato a esplorare sistematicamente i modi per offuscare ogni tipo di 'token' presente in qualsiasi comando o script PowerShell.

Ho poi esplorato modi più oscuri per eseguire offuscazione a livello di stringa, varie tecniche di codifica/cifratura (come ASCII/hex/ottale/binario e persino SecureString), e infine tecniche di lancio di PowerShell per astrarre gli argomenti della riga di comando da powershell.exe e spingerli al processo padre e persino al nonno.

Scopo

Gli aggressori e i malware comuni hanno iniziato a utilizzare tecniche di offuscazione estremamente basilari per nascondere la maggior parte del comando dagli argomenti della riga di comando di powershell.exe. Ho sviluppato questo strumento per aiutare il Blue Team a simulare comandi offuscati basati su ciò che attualmente so essere sintatticamente possibile in PowerShell 2.0-5.0, in modo che possano testare le loro capacità di rilevamento di queste tecniche.

L'unico scopo dello strumento è infrangere qualsiasi presupposto che noi difensori possiamo avere su come i comandi PowerShell possono apparire sulla riga di comando. La mia speranza è che incoraggerà il Blue Team a spostarsi verso la ricerca di Indicatori di Offuscazione sulla riga di comando, oltre ad aggiornare la registrazione di PowerShell per includere la registrazione di Moduli, ScriptBlock e Trascrizione, poiché queste fonti semplificano la maggior parte degli aspetti delle tecniche di offuscazione generate da questo strumento.

Utilizzo

Sebbene tutti i livelli di offuscazione siano stati sviluppati in script separati, la maggior parte degli utenti troverà la funzione Invoke-Obfuscation il modo più semplice per esplorare e visualizzare le tecniche di offuscazione attualmente supportate da questo framework.

Installazione

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

Per installare:

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

Licenza

Invoke-Obfuscation è rilasciato sotto licenza Apache 2.0.

Note di Rilascio

v1.0 - 2016-09-25 DerbyCon 6.0 (Louisville, Kentucky, USA): Rilascio PUBBLICO di Invoke-Obfuscation.

v1.1 - 2016-10-09 SANS DFIR Summit (Prague, Repubblica Ceca): Aggiunta funzionalità di riordinamento dell'operatore di formato -f a tutte le funzioni di offuscazione TOKEN applicabili. Aggiunte anche ulteriori opzioni di sintassi per impostare i valori delle variabili.

v1.2 - 2016-10-20 CODE BLUE (Tokyo, Giappone): Aggiunta offuscazione del TOKEN Tipo (cast diretto con opzioni di offuscazione delle stringhe per il nome del tipo).

v1.3 - 2016-10-22 Hacktivity (Budapest, Ungheria): Aggiunti due nuovi LAUNCHER: CLIP+ e CLIP++. Aggiunta anche una sintassi aggiuntiva (e più semplice) di conversione di caratteri di array per tutte le funzioni di ENCODING che non richiede For-EachObject/%.

v1.4 - 2016-10-28 BruCON (Ghent, Belgio): Aggiunta nuova funzione BXOR ENCODING. Migliorata anche la casualità del maiuscolo/minuscolo per tutti i componenti di tutte le funzioni ENCODING e per i flag di esecuzione di PowerShell per tutti i LAUNCHER. Infine, aggiunta l'opzione abbreviata -EP per -ExecutionPolicy a tutti i LAUNCHER, oltre alla rappresentazione intera opzionale del flag di esecuzione PowerShell -WindowStyle: Normal (0), Hidden (1), Minimized (2), Maximized (3).

v1.5 - 2016-11-04 Blue Hat (Redmond, Washington, USA): Aggiunto LAUNCHER WMIC con alcune casualità negli argomenti della riga di comando di WMIC.

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

  • Aggiunta funzionalità CLI: E.g., Invoke-Obfuscation -ScriptBlock {Write-Host 'CLI FTW!'} -Command 'Token\All\1, Encoding\1,Launcher\Stdin++\234,Clip' -Quiet -NoExit
  • Aggiunta funzionalità UNDO per rimuovere un livello di offuscazione alla volta.
  • Rimossa offuscazione degli spazi bianchi da Token\All\1 per velocizzare l'offuscazione di script grandi.
  • Aggiunta output dell'albero degli argomenti del processo per tutti i launcher per aiutare i difensori.
  • Aggiunta funzionalità di rilevamento automatico del menu base per evitare di dover usare BACK o HOME: E.g., se hai eseguito TOKEN poi ALL poi 1, basta digitare LAUNCHER e si arriverà al menu LAUNCHER senza dover digitare HOME o BACK per tornare al menu principale.
  • Aggiunta sintassi multi-comando utilizzata dalla CLI e dalla modalità interattiva: E.g., Token\All\1,String\3,Encoding\5,Launcher\Ps\234,Clip
  • Aggiunta capacità regex a tutti i menu e comandi di offuscazione: E.g., Token**,String[13],Encoding(1|6),Launcher.*[+]{2}\234,Clip
  • Aggiunta funzionalità singolo comando OUT FILEPATH.
  • Aggiunta decodifica se la sintassi powershell -enc viene inserita come valore SCRIPTBLOCK.
  • Aggiunto alias ForEach alle opzioni di sintassi randomizzata di ForEach-Object/% in tutte le funzioni ENCODING.
  • Aggiunte opzioni di sintassi di sottostringa -Key -Ke -K KEY a Out-SecureStringCommand.ps1.
  • Aggiunta casualità più approfondita del maiuscolo/minuscolo a tutte le funzioni di offuscazione \Home\String.
  • Aggiunti flag -ST/-STA (Single-Threaded Apartment) alle funzioni launcher CLIP+ e CLIP++ poiché sono richiesti se eseguiti su PowerShell 2.0.
  • Aggiunta sintassi Get-Item/GI/Item ovunque venga utilizzato Get-ChildItem per ottenere valori variabili.
  • Aggiunta sintassi di istanziazione variabile Set-Item alla funzione di offuscazione TYPE.
  • Aggiunta sintassi aggiuntiva di Invoke-Expression/IEX utilizzando variabili automatiche PowerShell e concatenazioni di valori di variabili d'ambiente nella funzione Out-EncapsulatedInvokeExpression di Out-ObfuscatedStringCommand.ps1 e copiata a tutti i launcher, funzioni STRING e ENCODING per aggiungere numerose sintassi di riga di comando per IEX.
  • Aggiunte due nuove sintassi JOIN per String\Reverse e tutte le opzioni di offuscazione ENCODING:
  1. Aggiunta sintassi JOIN [String]::Join('',$string)
  2. Aggiunta sintassi JOIN con variabile OFS (variabile automatica Output Field Separator)
  • Aggiunte altre due sintassi SecureString a Encoding\5:
  1. PtrToStringAnsi / SecureStringToGlobalAllocAnsi
  2. PtrToStringBSTR / SecureStringToBSTR
  • Aggiunte sei sintassi alternative GetMember per diversi membri SecureString:
  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
  • Aggiornato Out-ObfuscatedTokenCommand.ps1 in modo che l'offuscazione VARIABLE non incapsuli le variabili in ${} se sono già incapsulate (quindi ${${var}} non si verificherà poiché causerebbe errori).
  • Sostituito Invoke-Obfuscation.psm1 con Invoke-Obfuscation.psd1 (grazie @Carlos_Perez).
  • Risolti diversi bug di offuscazione a livello TOKEN segnalati da @cobbr_io e @IISResetMe.

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

  • Aggiunti 3 nuovi LAUNCHER: RUNDLL, RUNDLL++ e MSHTA++
  • Aggiunte ulteriori stringhe di variabili wildcard ExecutionContext

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

  • Aggiunte 2 nuove opzioni ENCODING: Caratteri Speciali e Spazi Bianchi

v1.8.1 - 2017-12-19:

  • Aggiunta funzione COMPRESS per una conversione più semplice di script multi-riga in un comando a una riga, riducendo drasticamente la lunghezza del comando per i limiti di lunghezza della riga di comando di cmd.exe.

v1.8.2 - 2018-01-04:

  • Aggiunte funzioni di offuscazione AST, che offuscan manipolando la struttura dell'AbstractSyntaxTree senza usare molti caratteri speciali.
Scarica lo strumento