
Amsi Bypass payload that works on Windwos 11
技術的な詳細は記事: https://medium.com/@gustavshen/bypass-amsi-on-windows-11-75d231b2cac6 にあります。
HRESULT AmsiOpenSession(
[in] HAMSICONTEXT amsiContext,
[out] HAMSISESSION *amsiSession
);
このPowerShellスクリプトは、AmsiOpenSessionをパッチすることでAMSIをバイパスするために使用できます。アセンブリコードによると、次の条件のいずれかが満たされた場合、関数はE_INVALIDARGエラーで終了します。

このスクリプトは、RCXを0に設定することでAmsiOpenSessionをパッチします。

AmsiOpenSessionへのパッチでは、Assembly.Load()に対するAMSIをバイパスできません
HRESULT AmsiScanBuffer(
[in] HAMSICONTEXT amsiContext,
[in] PVOID buffer,
[in] ULONG length,
[in] LPCWSTR contentName,
[in, optional] HAMSISESSION amsiSession,
[out] AMSI_RESULT *result
);
このPowerShellスクリプトは、AmsiScanBufferをパッチすることでAMSIをバイパスするために使用できます。このスクリプトは、RAXをエラーE_INVALIDARGの値に設定し、即座に戻ることでAmsiScanBufferをパッチします。

AmsiScanBufferへのパッチは、Assembly.Load()に対するAMSIをバイパスできます

このファイルには、現在のPowerShellセッションで使用してすぐにAMSIをバイパスできるワンライナーペイロードが含まれています。ただし、Assembly.Load()に対するAMSIはバイパスできません。
詳細はこのファイルに記載されています。