
Toolkit per Post-Exploitation di PowerShell Runspace
PowerShell Runspace Post Exploitation Toolkit
Versione: 2.6 Licenza: BSD 3-Clause
p0wnedShell è un'applicazione host offensiva PowerShell scritta in C# che non si basa su powershell.exe ma esegue comandi e funzioni PowerShell all'interno di un ambiente runspace PowerShell (.NET). Include numerosi moduli e binari PowerShell offensivi per facilitare il processo di Post-Exploitation. Abbiamo cercato di costruire uno strumento di Post-Exploitation "tutto in uno" che possa bypassare tutte le soluzioni di mitigazione (o almeno alcune) e che includa tutti gli strumenti rilevanti. Puoi usarlo per eseguire attacchi moderni in ambienti Active Directory e creare consapevolezza nel tuo team Blue in modo che possano costruire le giuste strategie di difesa.
Per compilare p0wnedShell devi aprire questo progetto in Microsoft Visual Studio e compilarlo per la piattaforma x64/x86. Puoi modificare le seguenti opzioni AutoMasq prima della compilazione:
public static bool AutoMasq = true;
public static string masqBinary = @"C:\Windows\Notepad.exe";
Con AutoMasq impostato su false, basta eseguire l'eseguibile per farlo funzionare normalmente. Con AutoMasq abilitato, puoi rinominare l'eseguibile p0wnedShell con il nome del processo che intendi mascherare (masqBinary), in modo che abbia l'aspetto di quel processo (ad esempio notepad.exe).
Usando l'argomento facoltativo "-parent" da riga di comando, puoi avviare p0wnedShell utilizzando un altro Parent Process ID. Combinando l'opzione PEB Masq e un ID processo padre diverso (ad esempio svchost), puoi dare a p0wnedShell l'aspetto di un servizio legittimo ;)
Nota: Eseguire p0wnedShell con un Parent Process ID diverso non funziona da una sessione/shell Meterpreter... ancora!
La modifica del Parent Process ID può essere utilizzata anche per generare un processo p0wnedShell con privilegi di sistema,
ad esempio utilizzando lsass come processo padre.
Per questo è necessario avere privilegi amministrativi con UAC elevato.
C:\p0wnedShell>p0wnedShellx64.exe -parent
[+] Inserisci un nome valido per il processo padre.
[+] Ad esempio: C:\p0wnedShell\p0wnedShellx64.exe -parent svchost
C:\p0wnedShell>p0wnedShellx64.exe -parent lsass
Per eseguire come binario x86 e bypassare Applocker (il merito di questo grande bypass va a Casey Smith aka subTee):
cd \Windows\Microsoft.NET\Framework\v4.0.30319 (O cartella versione .NET più recente)
InstallUtil.exe /logfile= /LogToConsole=false /U C:\p0wnedShell\p0wnedShellx86.exe
Per eseguire come binario x64 e bypassare Applocker:
cd \Windows\Microsoft.NET\Framework64\v4.0.30319 (O cartella versione .NET più recente)
InstallUtil.exe /logfile= /LogToConsole=false /U C:\p0wnedShell\p0wnedShellx64.exe
Le funzioni PowerShell all'interno del Runspace vengono caricate in memoria da stringhe compresse e codificate in Base64.
I binari vengono caricati in memoria utilizzando ReflectivePEInjection (gli array di byte vengono compressi usando Gzip e salvati all'interno di p0wnedShell come stringhe codificate in Base64).
p0wnedShell si basa pesantemente su strumenti e conoscenze di persone come harmj0y, i ragazzi di Powersploit, Sean Metcalf, SubTee, Nikhil Mittal, Besimorhino, Benjamin Delpy, Breenmachine, FoxGlove Security, Kevin Robertson, FuzzySecurity, James Forshaw e chiunque altro abbia dimenticato. Quindi ringraziamenti a loro e, naturalmente, ai nostri amici di Redmond per averci fornito un linguaggio di hacking molto potente.
Per segnalare un problema o richiedere una funzione, sentiti libero di contattarmi a:
Cornelis at dePlaa.com o @Cn33lis