XLM + AMSI: Excel 4.0 マクロ マルウェアに対する新しいランタイム防御

Microsoft は最近、Antimalware Scan Interface ( AMSI ) と Office 365 の統合を拡張し、Excel 4.0 ( XLM ) マクロのランタイム スキャンを含めて、ウイルス対策ソリューションが悪意のある XLM マクロを使用する攻撃の増加に対処できるようにしました。 Microsoft 365 アプリ向けに定期的にリリースされる多くのセキュリティ機能の一例であるこの統合は、最新の脅威に対する Microsoft 365 のお客様の保護を継続的に強化するというマイクロソフトの取り組みを反映しています。

Microsoft Defender ウイルス対策は、この統合を使用して XLM ベースのマルウェアを検出してブロックしています。他のウイルス対策製品がこのオープン インターフェイスを使用して、可視性を高め、これらの脅威に対する保護を強化することをお勧めします。

XLM マクロは、1993 年に Visual Basic for Applications ( VBA ) が導入される前に、1992 年に Microsoft Excel で使用できるようになったレガシー マクロ言語です。そして、多くの組織やユーザーが、その機能を正当な目的で使用し続けています。サイバー犯罪者はこれを知っており、Win32 API を呼び出してシェル コマンドを実行するために、XLM マクロをますます頻繁に悪用しています。

VBA 用の AMSI インストルメンテーションは、VBA マクロの実行時の動作を詳細に可視化します。 2018 年のリリースでは、マクロ難読化によってマルウェアに装備されていた防御策が効果的に取り除かれ、悪意のあるコードが精査のレベルが向上しました。当然のことながら、Trickbot、Zloader、および Ursnif の背後にいる脅威アクターは、セキュリティ ソリューションのレーダーの下で悪用および動作する機能を他の場所で探し、XLM で適切な代替手段を見つけました。

マルウェアによって悪用される VBA や他の多くのスクリプト言語と同様に、XLM コードは比較的簡単に難読化され、マクロの真の意図を隠すことができます。たとえば、攻撃者は単純な文字列操作によって、実行可能ファイルの URL やファイル名を静的検査から隠すことができます。攻撃者は、マクロ コードが Excel ドキュメント内に保持される方法も利用します。VBA マクロは専用の OLE ストリームに保存されるため (そのため、簡単に見つけて抽出できます)、XLM マクロは明確に定義された別個のエンティティとして存在しません。むしろ、各 XLM マクロ ステートメントはセル内の数式です。 XLM マクロ全体を抽出するのは面倒な作業になる可能性があり、ドキュメント全体をセルごとに検査する必要があります。

悪意のある XLM マクロを含む Microsoft Excel ファイルのスクリーンショット

図 1.悪意のある XLM マクロの例

さらに、式は通常、上から下に向かって実行されますが、XLM では、実行フローをある列から別の列に切り替えることができるRUNCALL 、またはGOTOなどの制御フロー ステートメントのおかげで、マクロの内容をかなり分散させることができます。 .この機能は、難読化とともに、静的分析を回避できるドキュメントを作成するために攻撃者によって悪用されてきました。

Excel 4.0 (XLM) マクロ用の AMSI 計測

AMSI は、任意のアプリケーションがいつでも任意のデータのスキャンを要求できるようにするオープン インターフェイスです。簡単に言うと、このテクノロジは、潜在的に危険なデータ (たとえば、リモート ロケーションからダウンロードされたファイル、またはアプリケーションによって動的に生成されたデータ) を検査およびスキャンするために、インストールされたウイルス対策ソリューションと連携する機能をアプリケーションに提供します。 Microsoft は、悪意のあるマクロ、スクリプトベースのマルウェア、およびその他の脅威を検出するために、さまざまなアプリケーションでこのテクノロジを既に利用しています。

  • Office VBA マクロ
  • JScript
  • VBScript
  • パワーシェル
  • WMI
  • 動的に読み込まれた .NET アセンブリ
  • MSHTA/Jscript9

AMSI によって提供されるデータは、 Microsoft Defender for Endpointによって広く活用されます。悪意のある動作を特定してブロックするために、毎日数十億の信号を処理する機械学習モデルに重要なデータを提供します。 XLM インスツルメンテーションは、AMSI と統合する VBA およびその他のスクリプト エンジンでの実装に似ています。

XLM の AMSI インスツルメンテーションのダイアグラム表現

図 2. XLM の AMSI 計測

XLM 言語を使用すると、ネイティブ ランタイム関数や外部 Win32 API を呼び出すプログラムを作成できます。どちらの場合も、これらの関数への呼び出しをディスパッチするインターフェイスはインターセプトされ、内部ロガーに送られます。ロガー コンポーネントは、傍受された関数をテキスト形式で循環バッファー内に格納します。ランタイム関数EXECや Win32 API ShellExecuteなど、特定の危険な関数が呼び出されると、XLM はマクロの実行を停止し、AMSI を呼び出して、その時点までに記録された関数を含む循環バッファーの同期スキャンを要求します。このような危険な機能を「トリガー機能」と呼びます。アンチウイルスがマクロをマルウェアとして識別した場合、マクロの実行は中止され、Excel は安全に終了され、攻撃がブロックされ、悪意のあるマクロによる損害が防止されます。それ以外の場合、ユーザー エクスペリエンスはシームレスに継続します。

XLM 関数呼び出しのインターセプトが実行時に発生することを確認することが重要です。つまり、ロガー コンポーネントは、マルウェアが使用する難読化に関係なく、URL、ファイル名、およびその他の重要な IOC を含む可能性のあるすべての関数と関連パラメーターの真の動作を常に登録します。

以下は、悪意のあるドキュメントで見つかった XLM マクロの例です。

XLM マクロのスクリーンショット

図 3. サンプル XLM マクロ

この悪意のあるマクロは、一連のコマンド (たとえば、 RUNREGISTERIFなど) と、他のセルへの参照によって指定された関連パラメータで構成されています。たとえば、最初の関数RUNに渡されたトークン$CA$1889は、この関数のパラメーターとして指定された文字列が列 CA の行 1889 のセルにあることを示します。

これは、XLM ベースのマルウェアがコードを難読化する多くの方法の 1 つにすぎません。このマクロは、疑わしい文字列や動作を公開しないため、検出が困難です。ここで AMSI の力が発揮されます。インストルメンテーションにより、XLM は呼び出されたときに関数を検査できるため、すべてのパラメーターの難読化が既に解除されています。その結果、上記のマクロは次のようなログを生成します。

XLM マクロの実行時に生成されるサンプル ログ

図 4. サンプル ログ

XLM エンジンは、危険な関数ShellExecuteAが呼び出されていると判断し、その後、マクロの実行を保留にし、スキャンのためにマクロの動作ログを AMSI に渡します。アンチウイルスは、API 名、URL、ファイル名を含むすべてのデータを完全に公開する行動ログを可視化できるようになりました。ログを見ると、このマクロがツールRundll32を介して DLL ペイロードをダウンロードして実行しようとしていることが簡単にわかります。

ケーススタディ: ZLoader キャンペーン

ZLoader は、数年前から金銭的な窃盗を積極的に行ってきたマルウェア ファミリです。同業他社の多くと同様に、ZLoader は、ソーシャル エンジニアリングに依存する積極的なキャンペーンと、電子メールを介して広がる Office ドキュメントの悪用によって活動しています。

私たちはこの脅威の活動を監視しており、昨年、攻撃者が選択した感染経路として XLM に移行したことを観察しました。 Excel ドキュメントには、マクロ コードの実行を許可するためにユーザーをだまして [コンテンツを有効にする] をクリックさせる典型的なおとりメッセージがあります。

Zloader キャンペーンで使用された悪意のある Excel ファイルのスクリーンショット

図 5. Zloader キャンペーンで使用された悪意のある Excel ファイル

ドキュメントをよく見ると、あいまいな名前の Excel シートが表示されます。そのシートには XLM マクロ式が埋め込まれており、シートが空に見えるように数行下に格納されています。さらに、マクロ式は分散して難読化されているため、静的分析が妨げられ、意図を特定することがさらに困難になります。

Zloader キャンペーンで使用された XLM マクロのスクリーンショット

図 6. ZLoader キャンペーンで使用された悪意のある XLM マクロ

Excel でマクロを実行してデバッグするのも簡単ではありません。マクロには、さらに難読化されたマクロ式をデコードして実行するために使用される長いループがあり、Excel のデバッガーには、ループをスキップして特定の式で中断するために実行を細かく制御する機能がありません。

ただし、AMSI インストルメンテーションを有効にしてこのマクロを実行すると、AMSI に渡される最大 3 つの異なるログが生成されます。最初の 2 つは次のようになります。

Zloader キャンペーンで使用される XLM マクロが実行されたときに生成されるログのスクリーンショット

図 7. ZLoader の XLM マクロが実行されたときに生成されるログ

この画像は、興味深いアクティビティが表示されるログの最後の部分のみを示しています。マクロが新しいEXECステートメントを発行して、 explorer.exeを介して .vbs ファイルを実行していることがわかります。このEXECステートメントにより、 EW2H.vbsという名前の VBScript が実行されます。これは、 EXEC行の前にマクロによってデコードされ、ディスクに保存されています。次に、VBScript はバイナリ ペイロードのダウンロードと実行を試みます。マクロはこれを 2 回試行するため、このログ (わずかな違いがあります) は AMSI に 2 回渡されます。

上記の手順が失敗した場合、マクロはペイロードを直接ダウンロードし、AMSI の次のログを生成します。

Zloader キャンペーンで使用される XLM マクロが実行されたときに生成されるログのスクリーンショット

図 8. ZLoader の XLM マクロが実行されたときに生成されるログ

このマクロは 2 つの URL を定義し、API URLDownloadToFileAを使用してそれらのコンテンツをダウンロードし、最後に API ShellExecuteAを呼び出して、ダウンロードしたペイロード (ファイルjxi09.txt ) をrundll32.exe経由で起動します。この行から、ペイロードが DLL であることが推測できます。

3 つのログはすべて、悪意のある動作を検出する多くの機会を提供し、URL、ファイル名などの関連する IOC を簡単に抽出することもできます。Excel ドキュメントの最初の XLM コードは完全に難読化されており、使用可能な情報が含まれていないため、発行が困難です。効果的で耐久性のある静的検出。 AMSI の動的な性質により、難読化されていても、実行時の動作を平文で観察できます。 AMSI に渡されたログに基づく検出には、本質的により堅牢で汎用的であるという利点もあります。

可用性

XLM マクロのランタイム検査が Microsoft Excel で利用できるようになり、デバイスで AMSI プロバイダーとして登録されている Microsoft Defender ウイルス対策などのウイルス対策ソリューションで使用できるようになりました。この機能は、Office との既存の AMSI 統合への追加として含まれています。これは、Microsoft 365 サブスクリプション ユーザーの 2 月の現在のチャネルと月次エンタープライズ チャネルで既定で有効になっています。

デフォルトの構成では、XLM マクロは実行時に AMSI 経由でスキャンされますが、次のシナリオは例外です。

管理者は、既存の Microsoft 365 アプリケーション ポリシー コントロールを使用して、実行時に AMSI 経由で XLM マクロと VBA マクロの両方をいつスキャンするかを構成できるようになりました。最新のグループ ポリシー テンプレート ファイルを入手します。

 

グループ ポリシー設定名 マクロ ランタイム スキャン範囲
ユーザーの構成 > 管理用テンプレート > Microsoft Office 2016 > セキュリティ設定
このポリシー設定は、VBA と Excel 4.0 (XLM) の両方のランタイム スキャン機能の動作を指定します。複数の Office アプリが VBA マクロをサポートしていますが、XLM マクロは Excel でのみサポートされています。マクロは、ウイルス対策ソフトウェアがデバイスで Antimalware Scan Interface (AMSI) プロバイダーとして登録されている場合にのみスキャンできます。

このポリシー設定を有効にすると、次のオプションから選択して、マクロ ランタイムのスキャン動作を決定できます。

すべてのファイルを無効にする (非推奨):このオプションを選択すると、有効なマクロのランタイム スキャンは実行されません。

低信頼ファイルを有効にする:このオプションを選択すると、次のファイルを除く、マクロが有効になっているすべてのファイルに対してランタイム スキャンが有効になります。

  • マクロのセキュリティ設定が「すべてのマクロを有効にする」に設定されているときに開いたファイル
  • 信頼できる場所から開かれたファイル
  • 信頼できるドキュメントであるファイル
  • 信頼できる発行元によってデジタル署名された VBA を含むファイル

すべてのファイルに対して有効にする:このオプションを選択すると、信頼度の低いファイルはランタイム スキャンから除外されません。 VBA および XLM ランタイムは、マクロが実行しようとしているリスクの高い特定のコード動作をウイルス対策システムに報告します。これにより、ウイルス対策システムは、マクロの動作が悪意のあるものかどうかを示すことができます。動作に悪意があると判断された場合、Office アプリケーションはセッションを閉じ、ウイルス対策システムはファイルを検疫できます。動作に悪意がない場合、マクロの実行が続行されます。

注: マクロ ランタイム スキャンが有効になっている場合、影響を受ける VBA プロジェクトと XLM シートのランタイム パフォーマンスが低下する可能性があります。

このポリシー設定を無効にすると、有効なマクロのランタイム スキャンは実行されません。

このポリシー設定を構成しない場合、[信頼度の低いファイルを有効にする] が既定の設定になります。

注: このポリシー設定は、Microsoft 365 Apps for enterprise などの Office のサブスクリプション バージョンにのみ適用されます。

AMSI はすべてのセキュリティを向上させます

AMSI は、マクロやその他のスクリプトの実行時の動作を深く動的に可視化して、難読化、ジャンク制御フロー ステートメント、その他多くのトリックの背後に悪意を隠している脅威を明らかにします。 Windows 10 に組み込まれているウイルス対策ソリューションである Microsoft Defender ウイルス対策は、AMSI を活用して、一般的なマルウェアから高度な攻撃まで、幅広い脅威を発見しています。 XLM の最近の AMSI インスツルメンテーションは、この機能を悪用するマルウェア キャンペーンの増加に直接取り組んでいます。 AMSI はオープン インターフェイスであるため、他のウイルス対策ソリューションでも同じ可視性を利用して、脅威に対する保護を強化できます。セキュリティ ベンダーは、ウイルス対策製品で AMSI を活用する方法をこちらで学ぶことができます。

Microsoft では、AMSI からのシグナルを最大限に活用しています。 AMSI によって生成されたデータは、クライアントのマルウェア対策の即時検出に役立つだけでなく、Microsoft Defender for Endpoint に豊富なシグナルを提供します。 AMSI for VBAに関するブログ投稿では、これらのシグナルがクラウドベースの機械学習分類器の複数のレイヤーによってどのように取り込まれ、他のすべてのシグナルと組み合わされるかについて説明しました。その結果、新しい未知の脅威をリアルタイムで認識してブロックすることを学習する強化された保護レイヤーが実現します。

図 9. AMSI によって検査されたデータに基づく Microsoft Defender ウイルス対策からの検出の例

図 10: AMSI がマルウェア検出を報告した後の Microsoft Excel からの通知

図 11: XLM マルウェアの検出に関する Microsoft Defender for Endpoint アラートの例

AMSI によって提供される可視性は、難読化され変異した脅威の亜種の波を止めることができる汎用的で回復力のあるシグネチャの大幅な改善につながります。 AMSI 主導の保護は、 Microsoft Defender for Endpointの広範な多層保護スタックに追加されます。これには、攻撃面の削減、 ネットワーク保護、動作監視、およびマクロ マルウェアやその他の同様のスクリプトベースの脅威から保護するその他のテクノロジも含まれます。

Microsoft Defender for Endpoint によって提供される AMSI 強化の可視性は、 Microsoft 365 Defender全体でさらに増幅され、XLM マクロの脅威が検出され、さまざまなエントリ ベクトルでブロックされます。 Microsoft 365 でのシグナル共有と調整された防御のオーケストレーションにより、たとえば、 Microsoft Defender for Office 365は、これらの脅威の最も一般的な配信方法である電子メールを介して配布されたマクロ マルウェアを確実にブロックします。

Microsoft Defender 365 を使用して、自動化されたクロスドメイン セキュリティと組み込みの AI によって攻撃を阻止する方法について説明します

 

Giulia Biagini 、Office 365 脅威研究チーム

Auston Wallace 、Microsoft 365 セキュリティ チーム

Andrea Lelli 、Microsoft 365 Defender 研究チーム

参照: https://www.microsoft.com/en-us/security/blog/2021/03/03/xlm-amsi-new-runtime-defense-against-excel-4-0-macro-malware/

Comments

Copied title and URL