
Kit de herramientas de post-explotación de Runspace de PowerShell
PowerShell Runspace Post Exploitation Toolkit
Versión: 2.6 Licencia: BSD 3-Clause
p0wnedShell es una aplicación host ofensiva de PowerShell escrita en C# que no depende de powershell.exe sino que ejecuta comandos y funciones de PowerShell dentro de un entorno runspace de PowerShell (.NET). Incluye muchos módulos y binarios ofensivos de PowerShell para facilitar el proceso de Post-Explotación. Lo que intentamos fue construir una herramienta de Post-Explotación 'todo en uno' que pudiéramos utilizar para evadir todas las soluciones de mitigación (o al menos algunas), y que incluyera todas las herramientas relevantes. Puedes usarla para realizar ataques modernos en entornos de Active Directory y crear conciencia en tu equipo Azul para que puedan construir las estrategias de defensa adecuadas.
Para compilar p0wnedShell necesitas abrir este proyecto en Microsoft Visual Studio y compilarlo para la plataforma x64/x86. Puedes cambiar las siguientes opciones de AutoMasq antes de compilar:
public static bool AutoMasq = true;
public static string masqBinary = @"C:\Windows\Notepad.exe";
Con AutoMasq configurado en false, simplemente ejecutas el ejecutable para que se ejecute normalmente. Con AutoMasq habilitado, puedes renombrar el ejecutable de p0wnedShell como el proceso que vas a enmascarar (masqBinary), para que tenga la apariencia de ese proceso (por ejemplo, notepad.exe).
Usando el argumento opcional "-parent" en la línea de comandos, puedes iniciar p0wnedShell usando otro ID de Proceso Padre. Al combinar la opción PEB Masq y un ID de proceso padre diferente (por ejemplo, svchost), puedes darle a p0wnedShell la apariencia de un servicio legítimo ;)
Nota: Ejecutar p0wnedShell usando otro ID de Proceso Padre no funciona desde una sesión/shell de Meterpreter.... ¡todavía!
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
Para ejecutar como binario x86 y evitar Applocker (Créditos por este gran bypass a 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
Para ejecutar como binario x64 y evitar Applocker:
cd \Windows\Microsoft.NET\Framework64\v4.0.30319 (or newer .NET version folder)
InstallUtil.exe /logfile= /LogToConsole=false /U C:\p0wnedShell\p0wnedShellx64.exe
Las funciones de PowerShell dentro del Runspace se cargan en memoria desde cadenas comprimidas y codificadas en Base64.
Los binarios se cargan en memoria usando ReflectivePEInjection (los arrays de bytes se comprimen usando Gzip y se guardan dentro de p0wnedShell como cadenas codificadas en Base64).
p0wnedShell se basa en gran medida en herramientas y conocimientos de personas como harmj0y, los chicos de Powersploit, Sean Metcalf, SubTee, Nikhil Mittal, Besimorhino, Benjamin Delpy, Breenmachine, FoxGlove Security, Kevin Robertson, FuzzySecurity, James Forshaw y cualquier otro que haya olvidado. Así que los agradecimientos van para ellos y, por supuesto, a nuestros amigos en Redmond por darnos acceso a un lenguaje de hacking muy poderoso.
Para reportar un problema o solicitar una función, no dudes en contactarme en:
Cornelis at dePlaa.com o @Cn33lis