マルウェア対策スキャン インターフェイス (AMSI) と Microsoft Defender ウイルス対策の統合
適用対象:
- Microsoft Defender XDR
- Microsoft Defender ウイルス対策
- Microsoft Defender for Endpoint P1 & P2
- Microsoft Defender for Business
- 個人向けMicrosoft Defender
プラットフォーム:
- Windows 10 以降
- Windows Server 2016 以降
Microsoft Defender for Endpointは、マルウェア対策スキャン インターフェイス (AMSI) を利用して、ファイルレスマルウェア、動的スクリプトベースの攻撃、およびその他の非伝統的なサイバー脅威に対する保護を強化します。 この記事では、AMSI 統合の利点、サポートされているスクリプト言語の種類、およびセキュリティを強化するために AMSI を有効にする方法について説明します。
ファイルレス マルウェアとは
ファイルレス マルウェアは、検出を回避するために、ステルス手法を使用して、最新のサイバー攻撃で重要な役割を果たします。 いくつかの主要なランサムウェアの流行は、キルチェーンの一部としてファイルレスメソッドを使用しました。
ファイルレスマルウェアは、PowerShell.exe や wmic.exe など、侵害されたデバイスに既に存在する既存のツールを使用します。 マルウェアはプロセスに侵入し、そのメモリ空間内でコードを実行し、これらの組み込みツールを呼び出す可能性があります。 攻撃者はフットプリントを大幅に削減し、従来の検出メカニズムを回避します。
メモリは揮発性であり、ファイルレスマルウェアではファイルがディスクに配置されないため、ファイルレスマルウェアを使用して永続化を確立するのは難しい場合があります。 ファイルレス マルウェアが永続化を実現した例の 1 つは、"one-liner" PowerShell コマンドレットを起動するレジストリ実行キーを作成することです。 このコマンドは、レジストリ BLOB に格納されている難読化された PowerShell スクリプトを起動しました。 難読化された PowerShell スクリプトには、Base64 でエンコードされた PE をレジストリから読み込む、反射型ポータブル実行可能ファイル (PE) ローダーが含まれていました。 レジストリに格納されているスクリプトにより、マルウェアが確実に永続化されました。
攻撃者は、マルウェアインプラントを隠密で回避できるいくつかのファイルレス手法を使用します。 これらの手法は次も含みます:
反射 DLL インジェクション: 反射 DLL インジェクションでは、悪意のある DLL をプロセス メモリに手動で読み込み、DLL をディスク上に配置する必要はありません。 悪意のある DLL は、リモートの攻撃者が制御するコンピューターでホストされ、ステージングされたネットワーク チャネル (トランスポート層セキュリティ (TLS) プロトコルなど) を介して配信されたり、マクロやスクリプトなどの感染ベクトル内の難読化された形式で埋め込まれたりすることができます。 この構成により、実行可能モジュールの読み込みを監視および追跡する OS メカニズムが回避されます。 反射 DLL インジェクションを使用するマルウェアの例として、
HackTool:Win32/Mikatz!dha
があります。メモリの悪用: 敵対者は、ファイルレス メモリの悪用を使用して、被害者のマシンで任意のコードをリモートで実行します。 たとえば、UIWIX の脅威は、Petya と WannaCry の両方で使用された EternalBlue の悪用を使用して DoublePulsar バックドアをインストールし、完全にカーネルのメモリ (SMB ディスパッチ テーブル) に存在します。 Petya や Wannacry とは異なり、UIWIX はディスク上のファイルをドロップしません。
スクリプト ベースの手法: スクリプト言語は、メモリのみの実行可能ペイロードを配信するための強力な手段を提供します。 スクリプト ファイルは、エンコードされたシェル コードまたはバイナリを埋め込むことができます。このバイナリは、実行時にその場で復号化し、.NET オブジェクトを介して実行したり、ディスクに書き込む必要なく API を使用して直接実行したりできます。 スクリプト自体をレジストリに隠したり、ネットワーク ストリームから読み取ったり、ディスクに触れることなく、攻撃者がコマンド ラインで手動で実行したりできます。
注:
ファイルレスマルウェアをブロックする手段として PowerShell を無効にしないでください。 PowerShell は強力で安全な管理ツールであり、多くのシステムおよび IT 機能にとって重要です。 攻撃者は、最初の侵害が既に発生した後にのみ実行できる悪用後の手法として悪意のある PowerShell スクリプトを使用します。 その誤用は、ソフトウェアの悪用、ソーシャル エンジニアリング、資格情報の盗難などの他の悪意のあるアクションから始まる攻撃の症状です。 重要なのは、攻撃者が PowerShell を悪用できる位置に侵入するのを防ぐことです。
ヒント
環境内の署名されていない PowerShell スクリプトの数を減らすことは、セキュリティ体制を高めるのに役立ちます。 お使いの環境で使用されている Powershell スクリプトに署名を追加する方法については、次の手順を参照してください。Hey、Scripting Guy!Enterprise Windows PKI を使用してWindows PowerShell スクリプトに署名するにはどうすればよいですか?(パート 2/2) |スクリプティング ブログ
WMI 永続化: 一部の攻撃者は、Windows Management Instrumentation (WMI) リポジトリを使用して、WMI バインドを使用して定期的に呼び出される悪意のあるスクリプトを格納します。 Microsoft Defenderウイルス対策は、汎用、ヒューリスティック、および動作ベースの検出と、ローカルおよびクラウドベースの機械学習モデルを使用して、ほとんどのマルウェアをブロックします。 Microsoft Defenderウイルス対策は、次の機能を使用してファイルレス マルウェアから保護します。
- AMSI を使用してスクリプト ベースの手法を検出する。これにより、複数の難読化レイヤーでも PowerShell やその他のスクリプトの種類を検査する機能が提供されます
- WMI リポジトリを定期的にスキャンし、異常な動作が観察されるたびに WMI 永続化手法を検出して修復する
- 強化されたメモリ スキャン手法と動作監視による反射 DLL インジェクションの検出
AMSI の理由
AMSI は、Windows の組み込みスクリプト ホストで難読化と回避の手法を採用する悪意のあるソフトウェアに対して、より深いレベルの検査を提供します。 AMSI を統合することで、Microsoft Defender for Endpointは高度な脅威に対する保護の追加レイヤーを提供します。
サポートされているスクリプト言語
- PowerShell
- Jscript
- VBScript
- Windows スクリプト ホスト (wscript.exe と cscript.exe)
- .NET Framework 4.8 以降 (すべてのアセンブリのスキャン)
- Windows Management Instrumentation (WMI)
Microsoft 365 Appsを使用する場合、AMSI では JavaScript、VBA、XLM もサポートされます。
AMSI は現在、Python または Perl をサポートしていません。
AMSI の有効化
AMSI を有効にするには、スクリプト スキャンを有効にする必要があります。 「Microsoft Defender ウイルス対策のスキャン オプションを構成する」を参照してください。
「Defender Policy CSP - Windows クライアント管理」も参照してください。
AMSI リソース
マルウェア対策スキャン インターフェイス (AMSI) API は 、開発者やウイルス対策ベンダーが実装するために使用できます。
Exchange や Sharepoint などの他の Microsoft 製品でも、AMSI 統合が使用されます。
ファイルレス攻撃から保護するためのその他のリソース
Windows Defender アプリケーションコントロールと AppLocker。 強力なコード整合性ポリシーを適用し、信頼されたアプリケーションのみを実行できるようにします。 ファイルレスマルウェアのコンテキストでは、WDAC は PowerShell を制約付き言語モードにロックします。これにより、直接 .NET スクリプト、Add-Type コマンドレットを使用した Win32 API の呼び出し、COM オブジェクトとの対話など、検証できないコード実行につながる可能性のある拡張言語機能が制限されます。 これは基本的に、PowerShell ベースの反射 DLL インジェクション攻撃を軽減します。
攻撃面の縮小は 、管理者が一般的な攻撃ベクトルから保護するのに役立ちます。
コード整合性の仮想化ベースの保護を有効にします。 ハイパーバイザー コード整合性 (HVCI) を使用してカーネル メモリの悪用を軽減します。これにより、カーネル モード ソフトウェアの脆弱性を使用して悪意のあるコードを挿入することが困難になります。