
PowerShell Obfuscator

Invoke-Obfuscation è un comando PowerShell compatibile con PowerShell v2.0+ e un offuscatore di script.
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.
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.
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.
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:
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation
Invoke-Obfuscation è rilasciato sotto licenza Apache 2.0.
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):
v1.7 - 2017-03-03 nullcon (Goa, India):
v1.8 - 2017-07-27 Black Hat (Las Vegas, Nevada, USA):
v1.8.1 - 2017-12-19:
v1.8.2 - 2018-01-04: