Skip to main content
MSRC

Windows Defender ATP の機械学習と Antimalware Scan Interface: スクリプトを悪用した「環境寄生型」攻撃の検出

本記事は、Microsoft Secure のブログ “Windows Defender ATP machine learning and AMSI: Unearthing script-based attacks that ‘live off the land’” (2017 年 12 月 4 日 米国時間公開) を翻訳したものです。


高度な標的型攻撃を実行するアクティビティ グループや、無差別型の脅威を展開するマルウェア作成者によるスクリプトの悪用が進んでいます。

JavaScript、VBScript、PowerShell などのスクリプト エンジンは、攻撃者にとって大きなメリットがあります。これらは正規のプロセスを通じて実行されるため、「環境寄生型」攻撃 (ディスクを操作するのではなく、一般的なツールを使用してインメモリでコードを直接実行する攻撃 (英語)) のためのツールとして最適です。スクリプト エンジンの多くには、オペレーティング システムの一部として、インターネット上のコンテンツをオンザフライで評価して実行する機能が備わっています。さらに、広く使用されているアプリと統合すれば、ソーシャル エンジニアリングを通じて悪意のあるコンテンツを配信するうえで効果的な手段にもなります。この点は、スパム攻撃におけるスクリプトの使用 (英語) が増加していることからも明らかです。

悪意のあるスクリプトは、配信メカニズムとしてだけでなく、キル チェーンのさまざまな段階で使用されます。たとえば、感染後の被害拡大や持続性の確保などです。これらの段階では、使用するスクリプト エンジンとして PowerShell が選ばれることが圧倒的に多くなります。PowerShell は Windows で管理タスクを実行するためのスクリプト エンジンのデファクト スタンダードであり、システム API を呼び出すことができるほか、幅広いシステム クラスやオブジェクトにアクセスできるためです。

スクリプトは、強力なスクリプト エンジンを利用することで便利なツールにもなりますが、その動的な性質から、マルウェア対策製品や同様のエンドポイント保護製品による分析や検出を回避しやすくするための手段として、攻撃者に悪用される場合もあります。難読化が容易なうえに、リモート サイトやレジストリ キーからオンデマンドで読み込むことが可能なスクリプトは、検出がきわめて困難です。

Windows 10 では、Antimalware Scan Interface (AMSI、英語) を通じてスクリプトの動作に関するインサイトが提供されます。AMSI は、Windows Defender ウイルス対策がスクリプト インタープリターと同様に、暗号化と難読化の両方を解除した状態でスクリプトの内容を検査できるようにする汎用オープン インターフェイスです。Windows 10 Fall Creators Update (英語) では、長年にわたるスクリプト ベースのマルウェアの分析から得られた知識に基づいて、Windows のスクリプト インタープリター自体に高度な動作インストルメンテーションを追加したことで、スクリプトによるシステム操作を取得できるようになりました。こうした操作に関する詳細情報を、Windows Defender ウイルス対策などの登録済みの AMSI プロバイダーで利用し、ランタイム スクリプト実行コンテンツのさらなる検査と検証を実行できます。

スクリプトの動作の可視化という他に類を見ない機能は、Windows 10 Fall Creators Update における他の機能強化 (Windows Defender ウイルス対策および Windows Defender Advanced Threat Protection (Windows Defender ATP)) でも活用されています。いずれのソリューションも、強化されたインサイトを処理する強力な機械学習アルゴリズムを活用しており、Windows Defender ウイルス対策では悪意のあるスクリプトを侵入前にブロックする機能が強化され、Windows Defender ATP では悪意のあるスクリプトの侵入後の行動に基づいて効果的にアラートを生成する機能が追加されました。

今回のブログでは、特に Windows Defender ATP において、AMSI の検査データを利用して、回避行動を取る複雑なスクリプト ベースの攻撃を検出するしくみについて説明します。高度なスキルを持つアクティビティ グループの KRYPTON が実行した高度な攻撃を取り上げるほか、Kovter などの無差別型のマルウェアが PowerShell を悪用し、ディスク上に悪意のあるアクティビティの痕跡をほとんど残さずに活動する方法について説明します。さらに、Windows Defender ATP の機械学習システムでスクリプトの特性や動作に関する強化されたインサイトを利用することで、検出機能を大幅に強化する方法についても説明します。

KRYPTON: スクリプト ベースの攻撃の耐久性

従来、潜在的なセキュリティ侵害を検出する方法の大半はファイルを調査するものでした。インシデント対応担当者は多くの場合、自動開始エントリをトリアージし、普及率やファイル名とフォルダーの不自然な組み合わせなどから不審なファイルを特定します。しかし、最新の攻撃は完全なファイルレスの手法へと進化しつつあり、適切なチョーク ポイントにセンサーを追加する必要に迫られています。

最新のスクリプト ベースの攻撃では、ディスク上のファイルを利用しないだけでなく、多くの場合、暗号化された悪意のあるコンテンツと復号化キーが別々に格納されます。さらに、最終的なキーを使用して実際のペイロードの暗号化を解除するまでには複数のプロセスが実行される場合が多く、実際にスクリプトの呼び出しを追跡せずに、1 つのファイルだけで判断することはできません。このタスクは、完全なスクリプト エミュレーターでも対応不可能です。

たとえば、アクティビティ グループの KRYPTON は、スケジュールされたタスクをハイジャックしたり作成したりしていることが確認されており、Autoruns for Windows (英語) などの一般的なフォレンジック ツールの実行リストに含まれるシステム タスクを標的とすることがよくあります。KRYPTON は、スケジュールされたタスクのパラメーター内に一意の復号化キーを格納し、実際のペイロードのコンテンツは暗号化された状態で保持されます。

KRYPTON の攻撃を説明するため、John LambertOffice 365 Advanced Threat Protection チームが特定した感染済みの Microsoft Word ドキュメントを紹介します。

KRYPTON は環境寄生型の攻撃を行うので、マルウェア対策のアラートをトリガーするような従来型の悪意のあるバイナリを投下したり送り込んだりすることはありません。その代わりに、誘導ドキュメントにマクロが含まれており、Windows Scripting Host (wscript.exe) を使用して JavaScript ペイロードを実行します。このスクリプト ペイロードを実行するには適切な RC4 復号化キーが必要で、このキーは案の定、スケジュールされたタスクの引数として格納されています。このスクリプト ペイロードは、適切なキーを適切な順序で生成しなければトリガーされないため、サンドボックス環境での自動デトネーションや手動での検査に対する耐久性があります。

wscript.exe を使用した KRYPTON のスクリプト実行チェーン

図 1. wscript.exe を使用した KRYPTON のスクリプト実行チェーン

AMSI による実際のスクリプトの動作の解明

AMSI は、KRYPTON の回避メカニズムを打破するために、復号化されてスクリプト インタープリターで実行する準備が整った後に JavaScript API の呼び出しを取得します。次のスクリーンショットは、AMSI によって取得された KRYPTON の攻撃から解明されたコンテンツの一部です。

Windows Defender ATP は、取得したスクリプトの動作をセキュリティ専門家や機械学習アルゴリズムによって蓄積された攻撃の痕跡 (IoA: Indicator of Attack) に照らし合わせて確認することで、KRYPTON のスクリプトに悪意があることを難なく判定します。同時に、悪意のある Word ドキュメントからスクリプトがトリガーされたしくみなど、有意義なコンテキスト情報も提供します。

Kovter などの無差別型マルウェアによる PowerShell の使用

KRYPTON などの高度なアクティビティ グループ以外でも、バイナリ実行可能ファイルから、回避行動を取るスクリプトへの移行が進んでいます。無差別型マルウェアの分野では、Kovter (英語) が複数のプロセスを使用して、最終的に悪意のあるペイロードを実行しています。このペイロードは、(wscript.exe によって実行される) JavaScript で暗号化が解除される PowerShell スクリプト内に寄生し、環境変数として powershell.exe に渡されます。

AMSI によって取得された PowerShell ペイロードのコンテンツ (英語) を熟練のアナリストが確認すれば、一般公開されている侵入テスト用モジュール PowerSploit (英語) との類似性に容易に気付きます。このような攻撃手法にはファイル ベースのコンポーネントが使用されますが、悪意のあるアクティビティはインメモリのみで実行されるため、従来の手法で検出することは著しく困難です。しかし、Windows Defender ATP では機械学習を使用して、詳細な AMSI シグナルと一般的な PowerShell アクティビティによって生成されるシグナルを組み合わせることで、このような行動を容易に検出できます。

AMSI で提供される機械学習を活用した新しいインサイト

AMSI は、取得したスクリプトのコンテンツから豊富な情報を提供しますが、悪意のあるスクリプトには亜種が非常に多く、検出は簡単ではありません。悪意のあるスクリプトと無害なスクリプトを区別する新たな特徴を効率的に抽出して特定するために、Windows Defender ATP では高度な機械学習の手法を採用しています。

こちらのブログ記事で説明したように、侵入アクティビティの特定には教師あり機械学習の分類子を使用します。マイクロソフトは、実際に確認された悪意のある行動と一般的なマシンの正常なアクティビティに基づいてトレーニング セットを構築し、制御下における悪意のある成果物のデトネーションから取得したデータを補完しています。次の図は、悪意のある行動を取得する方法をプロセス ツリーの形で概念的に示したものです。

AMSI データのインストルメンテーションによって強化されたプロセス ツリー

図 2. AMSI データのインストルメンテーションによって強化されたプロセス ツリー

このプロセス ツリーにあるとおり、キル チェーンは悪意のあるドキュメントから始まり、Microsoft Word (winword.exe) によって PowerShell (powershell.exe) が起動されます。その後、高度に難読化されたスクリプトが PowerShell によって実行されます。このスクリプトは、fhjUQ72.tmp というマルウェアを投下および実行し、レジストリに Run キーを追加して持続性を確保します。マイクロソフトの機械学習システムは、このプロセス ツリーからさまざまな特徴を抽出し、レジストリ改変やファイル作成といった分野の「専用の分類子」を作成することができます。この分類子は数値のスコアに変換され、アラートを生成するかどうかの判断に使用されます。

Windows 10 Fall Creators Update (version 1709、英語) では AMSI シグナルのインストルメンテーションが追加されました。これにより、Windows Defender ATP の機械学習アルゴリズムは、難読化が解除されたスクリプトのコンテンツの分析に関するインサイトを利用すると共に、プロセスのアクティビティに関連したマシンの状態変化を継続的に参照できるようになりました。また、難読化層の数、エントロピ、難読化機能、n-grams、特定の API 呼び出しなど、実行されたスクリプトの性質を検査するさまざまなスクリプト ベースのモデルも構築されました。

AMSI で難読化層を順次解除することで、Windows Defender ATP には悪意のあるスクリプトの API 呼び出し、変数名、一般的な構造パターンに関するインサイトが蓄積され、可視性が高まります。さらに、AMSI のデータによってセキュリティ専門家の知識や機械学習システムのトレーニング能力が向上すると同時に、マイクロソフトのディープ ニューラル ネットワークでは人間のアナリストが発見できないような特徴を自動的に学習します。

こうした新しいスクリプト ベースの機械学習モデルによって専門の分類子が強化される一方で、新たな結果と他の動作に関する情報の関連付けも行っています。たとえば、Windows Defender ATP では、AMSI で検出された悪意のあるスクリプトのコンテンツと、ネットワーク接続などの他の直近の動作が関連付けられます。このコンテキスト情報はセキュリティ運用担当者に提供され、効果的なインシデント対応に活用できます。

AMSI をバイパスしようとする行動の検出

AMSI は悪意のあるスクリプトのアクティビティに関する強力なインサイトを提供するため、今後の攻撃には AMSI をバイパスするメカニズムが実装される可能性が高くなります。マイクロソフトは、これらのメカニズムを以下の 3 種類に分類しています。

  • スクリプトのコンテンツに組み込まれたバイパス (検査やアラートによって対応可能)
  • AMSI センサー インフラストラクチャの改ざん (システム ファイルの置換や関連 DLL ファイルの読み込み順序の操作など)
  • インメモリの AMSI インストルメンテーションへのパッチ適用

Windows Defender ATP 研究チームは、すべてのセンサーの改ざん対策メカニズムをプロアクティブに開発しています。潜在的なインサイトの操作に対応するヒューリスティック アラートを考案し、バイパスされる前にクラウドでアラートをトリガーするように設計しました。

実際に CVE-2017-8759 の攻撃が発生した際、Windows Defender ATP はエクスプロイト後の悪意のあるスクリプトのアクティビティを検出しただけでなく、Matt Graeber が特定したものと類似のコードを使用して AMSI をバイパスしようとしていることも検出しました。

まとめ: Windows Defender ATP の機械学習と AMSI により、高度な回避行動を取るスクリプト ベースの攻撃に対する画期的な防御を実現

Windows 10 のオープン インターフェイスとして提供される Antimalware Scan Interface は、暗号化および難読化されたスクリプトに潜み、ディスクに書き込まれることのない悪意のあるアクティビティに関する強力なインサイトを提供します。このような回避行動を取るスクリプトは一般化しつつあり、高度なスキルを持つアクティビティ グループと無差別型マルウェアの作成者の両方が採用しています。

AMSI では、悪意のあるスクリプトの行動を取得するために、スクリプトのコンテンツの解釈と並行して検査を実行します。そのため、物理ファイルを確認する必要はなく、難読化、暗号化、ポリモーフィズムによって妨害されることもありません。エンドポイントでは、必要なインサイトを AMSI からローカル スキャナーに提供することで、難読化や暗号化が適用されているスクリプトでも悪意のあるコンテンツを検査することができます。特に Windows Defender ウイルス対策は、AMSI を利用して、ランサムウェアやバンキングを標的としたトロイの木馬など、あらゆる種類の悪意のあるペイロードを投下するスクリプトを動的に検査、ブロックします。

Windows 10 Fall Creators Update (1709、英語) では、新たに追加されたスクリプト ランタイム インストルメンテーションにより、難読化されているスクリプトの動作を可視化する他に類を見ない機能が提供されます。Windows Defender ウイルス対策では、この悪意のあるスクリプトの動作に関する豊富な情報を利用して、侵入前の保護をランタイムに提供します。さらに、侵入後の保護を提供するため、高度な機械学習システムを使用して、このデータから詳細なインサイトを引き出します。

Windows Defender ATP の新しい機械学習アルゴリズムでは、特定のアクティビティやアクティビティのパターンを確認するだけでなく、スクリプトの難読化層や API 呼び出しのパターンなど、さまざまな特徴を調査し、悪意のあるスクリプトをヒューリスティックな手法で効率的に特定するために使用しています。また、スクリプト ベースのインジケーターと他の直近のアクティビティを関連付けることで、侵入の疑いに関する豊富なコンテキスト情報を提供します。

新たに追加されたスクリプト ランタイム インストルメンテーションや Windows Defender Exploit Guard などの強力なセキュリティ機能をご利用になるために、Windows 10 Fall Creators Update (英語) をインストールすることをお勧めします。

Windows Defender ATP によって実現される大幅なコスト削減やビジネス上のメリットの詳細については、Forrester による Microsoft Windows Defender Advanced Threat Protection の Total Economic Impact レポート (英語) をご覧ください。Windows Defender ATP を使用して、お客様の企業で高度な攻撃の検出、調査、対処を実際にお試しになるには、無料試用版へのサインアップをお願いいたします。

Stefan Sellmer (Windows Defender ATP 研究チーム)

共同執筆:

Shay Kels (Windows Defender ATP 研究チーム)

Karthik Selvaraj (Windows Defender 研究チーム)

関連情報


Related Posts

How satisfied are you with the MSRC Blog?

Rating

Feedback * (required)

Your detailed feedback helps us improve your experience. Please enter between 10 and 2,000 characters.

Thank you for your feedback!

We'll review your input and work on improving the site.