LainAmsiOpenSessionによるカスタムAMSIバイパス手法

Security

概要

「LainAmsiOpenSession」は、Windowsのアンチマルウェアスキャンインターフェース(AMSI)をバイパスするためのカスタムスクリプトをPowerShellで提供するリポジトリです。AMSIはマルウェアの検出やスクリプトの悪意ある動作の監視に用いられる重要なセキュリティ機構ですが、本リポジトリではamsi.dll内のAmsiOpenSession関数を直接パッチし、AMSIの起動を阻害する手法を実装しています。これにより、セキュリティ検証やレッドチーム演習などでAMSIによる検知を回避しやすくなります。実装はPowerShellで行われており、Windows環境におけるAMSIバイパス技術の学習や応用に有用なサンプルとして活用可能です。

GitHub

主な特徴

  • AMSIのAmsiOpenSession関数を直接パッチしてバイパスを実現
  • PowerShellスクリプトで簡潔に実装されているため、容易に利用可能
  • Windowsの標準的なAMSI検査を回避し、マルウェア検知を妨害
  • セキュリティ研究やペネトレーションテスト向けの教育的サンプルとして有用

技術的なポイント

AMSI(Antimalware Scan Interface)は、Windows 10以降のOSに搭載されている重要なセキュリティ機能であり、スクリプトやコードの実行時にアンチウイルスソフトウェアと連携して悪意あるコードの検出を行います。特にPowerShellやJavaScriptなどのスクリプト実行時にAMSIが介入し、マルウェアの実行を未然に防止する役割を果たしています。

本リポジトリ「LainAmsiOpenSession」では、AMSIの中核となるDLL「amsi.dll」に含まれる関数「AmsiOpenSession」をターゲットにしています。AmsiOpenSession関数はAMSIのセッション開始を担う重要な関数であり、ここをパッチすることでAMSIのスキャンプロセス自体を無効化または回避できます。手法としては、メモリ上のamsi.dllからAmsiOpenSession関数のアドレスを取得し、関数の先頭部分にNOP(No Operation)命令やRET命令を挿入することで、本来の処理をスキップさせます。これにより、AMSIがコードのスキャンを行わない状態を作り出します。

実装はPowerShell言語で行われており、Windows環境でネイティブに動作するため追加の依存関係は不要です。PowerShellスクリプトは、プロセスのメモリ操作やDLLの関数アドレス解決といった低レベルな操作をP/InvokeやWin32 API呼び出しを駆使して実現しており、これらの技術的知見が詰まっています。また、コードはシンプルかつコンパクトにまとまっているため、AMSIバイパス手法の理解や解析に適しています。

このようなAMSIバイパス技術は、攻撃者によるマルウェアの検知回避だけでなく、レッドチーム演習やセキュリティ研究者が攻撃技術の検証を行う際にも重要です。AMSIの動作原理や回避方法を学ぶことで、防御側もより高度な対策を検討可能になります。

ただし、AMSIのバイパスはセキュリティ上のリスクを伴うため、使用は必ず許可された環境や教育的目的に限定すべきです。また、MicrosoftはAMSIバイパスを検出・防御するための対策を継続的に更新しているため、こうした手法は常に効果が保証されるわけではありません。

総じて、「LainAmsiOpenSession」は、WindowsのAMSI機構の内部動作を理解しつつ、実際にバイパスを試みるための実践的なPowerShellサンプルを提供する貴重なリポジトリです。AMSIバイパスの仕組みを学びたいセキュリティエンジニアや研究者にとって役立つ教材といえるでしょう。

まとめ

AMSIのAmsiOpenSession関数をパッチするシンプルかつ実践的なPowerShellバイパス手法。