元々はC#のAzure Functions(後にJSに移植)で、HTTPトリガーにより、現在のプロセスのAMSIを破壊または無効化する難読化されたPowerShellスニペットを生成します。 スニペットは、難読化される前に少数のテクニック/バリエーションのプールからランダムに選択されます。すべてのスニペットは実行時/リクエスト時に難読化されるため、生成された出力が同じシグネチャを持つことはありません。
ライブで動作するデモは https://amsi.fail/ をご覧ください!
f-secureが彼らの優れたブログ記事:で説明しているように、
AMSIは、アプリケーションやサービス(サードパーティ製も含む)がスクリプトの内容を悪意のある使用がないかスキャンできるようにするインターフェースです。スクリプト内のシグネチャがAMSIのアンチマルウェアサービスプロバイダ(デフォルトではWindows Defender)によって登録されている場合、そのスクリプトはブロックされます。 これを理解するために、PowerShellがAMSIと統合する手順を考えてみましょう:
AMSIは実際のスクリプトを実行するプロセス内にロードされることに依存しているため、amsi.dll内の特定の関数を破壊したりパッチするテクニックはよく知られています。