
PowerShell Runspace Post-Exploitation-Toolkit
Post-Exploitation-Toolkit für PowerShell-Runspace
Version: 2.6 Lizenz: BSD 3-Clause
p0wnedShell ist eine offensive PowerShell-Hostanwendung, geschrieben in C#, die nicht auf powershell.exe angewiesen ist, sondern PowerShell-Befehle und -Funktionen innerhalb einer PowerShell-Runspace-Umgebung (.NET) ausführt. Es enthält eine Vielzahl von offensiven PowerShell-Modulen und Binärdateien, um den Prozess der Post-Exploitation zu erleichtern. Unser Ziel war es, ein „All-in-One“-Post-Exploitation-Tool zu entwickeln, das wir verwenden können, um alle Mitigationslösungen zu umgehen (oder zumindest einige davon) und das alle relevanten Werkzeuge enthält. Sie können es verwenden, um moderne Angriffe in Active-Directory-Umgebungen durchzuführen und Ihr Blue Team zu sensibilisieren, damit sie die richtigen Verteidigungsstrategien entwickeln können.
Um p0wnedShell zu kompilieren, müssen Sie dieses Projekt in Microsoft Visual Studio öffnen und es für die x64/x86-Plattform erstellen. Sie können die folgenden AutoMasq-Optionen vor dem Kompilieren ändern:
public static bool AutoMasq = true;
public static string masqBinary = @"C:\Windows\Notepad.exe";
Wenn AutoMasq auf false gesetzt ist, führen Sie einfach die ausführbare Datei aus, sodass sie normal läuft. Wenn AutoMasq aktiviert ist, können Sie die ausführbare Datei von p0wnedShell in den Prozess umbenennen, den Sie maskieren möchten (masqBinary), sodass sie das Aussehen dieses Prozesses hat (z.B. notepad.exe).
Mit dem optionalen Befehlszeilenargument „-parent“ können Sie p0wnedShell mit einer anderen übergeordneten Prozess-ID starten. Wenn Sie die PEB-Masq-Option mit einer anderen übergeordneten Prozess-ID (z.B. svchost) kombinieren, können Sie p0wnedShell das Aussehen eines legitimen Dienstes verleihen ;)
Hinweis: Das Ausführen von p0wnedShell mit einer anderen übergeordneten Prozess-ID funktioniert von einer Meterpreter-Sitzung/Shell aus noch nicht.... noch nicht!
Changing the Parent Process ID can also be used to spawn a p0wnedShell process with system privileges,
for example using lsass as the the parent process.
For this you need to have UAC elevated administrator permissions.
C:\p0wnedShell>p0wnedShellx64.exe -parent
[+] Please enter a valid Parent Process name.
[+] For Example: C:\p0wnedShell\p0wnedShellx64.exe -parent svchost
C:\p0wnedShell>p0wnedShellx64.exe -parent lsass
So führen Sie die x86-Binärdatei aus und umgehen Applocker (Credits für diesen großartigen Bypass gehen an Casey Smith, aka subTee):
cd \Windows\Microsoft.NET\Framework\v4.0.30319 (Or newer .NET version folder)
InstallUtil.exe /logfile= /LogToConsole=false /U C:\p0wnedShell\p0wnedShellx86.exe
So führen Sie die x64-Binärdatei aus und umgehen Applocker:
cd \Windows\Microsoft.NET\Framework64\v4.0.30319 (Or newer .NET version folder)
InstallUtil.exe /logfile= /LogToConsole=false /U C:\p0wnedShell\p0wnedShellx64.exe
PowerShell-Funktionen innerhalb des Runspace werden aus Base64-kodierten und komprimierten Zeichenfolgen in den Speicher geladen.
Binärdateien werden mithilfe von ReflectivePEInjection in den Speicher geladen (Byte-Arrays werden mit Gzip komprimiert und als Base64-kodierte Zeichenfolgen in p0wnedShell gespeichert).
p0wnedShell basiert stark auf Werkzeugen und Wissen von Leuten wie harmj0y, den Jungs von PowerSploit, Sean Metcalf, SubTee, Nikhil Mittal, Besimorhino, Benjamin Delpy, Breenmachine, FoxGlove Security, Kevin Robertson, FuzzySecurity, James Forshaw und allen anderen, die ich vergessen habe. Danke also an sie und natürlich an unsere Freunde in Redmond, die uns Zugang zu einer sehr mächtigen Hacking-Sprache gegeben haben.
Um ein Problem zu melden oder eine Funktion anzufragen, kontaktieren Sie mich bitte unter:
Cornelis at dePlaa.com oder @Cn33lis