
Un arsenale PowerShell per ragazzi e ragazze della sicurezza
[!IMPORTANT]
Questo repository è ora archiviato. Sebbene sia stato un percorso divertente, penso che PSArmoury abbia esaurito la sua utilità.
PowerShell Armoury è pensato per penetration tester, "inserisci-colore-qui"-team e chiunque altro utilizzi una varietà di strumenti PowerShell durante i propri impegni. Ti permette di scaricare e memorizzare tutti i tuoi script PowerShell preferiti in un unico file offuscato.
Non devi più preoccuparti di aggiornare Rubeus, PowerView, ... manualmente. Basta creare un file di configurazione una volta o utilizzare quello predefinito incluso nello strumento. D'ora in poi, ti basterà eseguire "New-PSArmoury" prima di passare al prossimo impegno. Inoltre, PSArmoury offusca il tuo codice e include un AMSI bypass integrato. Il design modulare dovrebbe rendere facile per te modificare il codice di evasione o offuscamento in caso di rilevamento su di esso.
La versione attuale di PSArmoury predilige un design modulare.
New-PSArmoury.ps1
PSArmoury.json
utilities
ConvertTo-Powershell.ps1
Invoke-Shuffle.ps1
modules
evasion.ps1
obfuscation.ps1
Il codice è suddiviso in uno script generatore principale chiamato New-PSArmoury.ps1, che è quello da eseguire. Il codice per evasione, offuscamento e deoffuscamento è memorizzato in file .ps1 separati nella directory modules. Questi file separati vengono invocati dallo script principale e dovrebbero semplificare la modifica di funzioni specifiche (come un AMSI bypass).
Oltre alla directory modules, esiste anche la directory utilities. Qui troverai script autonomi che possono essere utili in scenari specifici.
Il percorso predefinito della directory modules è .\modules dove il punto si riferisce alla directory di lavoro corrente della shell. Puoi cambiare il percorso della directory modules usando l'argomento -ModulesDirectory di New-PSArmoury.
I nomi dei file script stessi sono comunque hard-coded nello script principale e sono sempre attesi come:
Diamo un'occhiata più da vicino a questi due.
Questo script dovrebbe contenere il codice inteso a bypassare ciò che intendi bypassare. Per impostazione predefinita, contiene un noto AMSI bypass (grazie amsi.fail). Tieni presente che:
Questo script dovrebbe contenere il codice utilizzato per l'offuscamento e il deoffuscamento. L'obfuscation.ps1 predefinito utilizza la crittografia RC2. Esempi pronti all'uso:
Nota che TEMPLATE_obfuscation_empty.ps1 non fa davvero nulla e funge da modello per creare la tua funzione.
Se vuoi utilizzare uno di questi, rinominalo semplicemente in "obfuscation.ps1" ed elimina il file predefinito.
Se desideri creare una versione personalizzata, tieni presente quanto segue riguardo all'offuscamento:
E assicurati di ricordare queste cose per il deoffuscamento:
La directory utilities contiene script autonomi utili.
Il file di configurazione deve essere un JSON valido composto da un singolo array con uno o più oggetti, dove ogni oggetto viene interpretato come una singola fonte di script. Ogni oggetto ha i seguenti attributi:
Name (Obbligatorio)
Un nome a tua scelta per identificare lo script incluso in questo oggetto. È solo un riferimento per te.
URL (Obbligatorio)
La posizione da cui ottenere il contenuto dello script. Può essere un URL a una risorsa web (https://) o un percorso locale (C:) o una risorsa di rete (\...). L'URL viene passato rispettivamente a Net.Webclient o a Get-Item di PowerShell. Quindi, in pratica, qualsiasi formato gestito da uno dei due dovrebbe funzionare.
Type (Obbligatorio)
Fornisce un suggerimento sulla posizione dello script al creatore dell'armoury. Esistono tre tipi validi:
FileInclusionFilter (Opzionale)
Verrà interpretato solo in un oggetto di tipo "GitHub". Verrà confrontato con l'operatore di confronto "like" di PowerShell rispetto all'intero nome del file, quindi tieni presente che devi includere i caratteri jolly da solo. Non dimenticare di includere un asterisco (*) se vuoi corrispondere a parte di un nome file. "*.ps1" significa tutti i file che terminano con ".ps1", ma ".ps1" significa solo ".ps1".
Non sei obbligato a includere un filtro, ma se lo fai, devi usarlo. Un InclusionFilter vuoto significa nessun file.
FileExclusionFilter (Opzionale)
Come InclusionFilter, ma ovviamente al contrario. L'esclusione ha la precedenza.
Consulta la guida inline di PowerShell (man -full New-PSArmoury) per maggiori dettagli.
-Path
Il percorso del tuo nuovo file armoury. Il valore predefinito è ".\MyArmoury.ps1"
-FromFile
Carica i tuoi script PowerShell direttamente da una cartella o file locale senza dover fornire un file di configurazione.
-Config
Il percorso del tuo file di configurazione JSON. Dai un'occhiata all'esempio incluso con questo script per idee.
-ModulesDirectory
Il percorso della directory modules. Il valore predefinito è ".\modules". Se viene utilizzato ModulesDirectory, i parametri EvasionPath e ObfuscationPath non possono essere utilizzati.