Skip to main content
MSRC

Windows Defender ATP でステルス性の高いクロスプロセス インジェクション手法を検出する: プロセス ハロウイングと AtomBombing

本記事は、Microsoft Malware Protection Center のブログ “Detecting stealthier cross-process injection techniques with Windows Defender ATP: Process hollowing and atom bombing” (2017 年 7 月 12 日 米国時間公開) を翻訳したものです。


高度なサイバー攻撃では、ステルス性と持続性が重視されます。攻撃が気づかれずにいる期間が長いほど、より横断的に侵害し、より多くのデータを抜き取り、より大きなダメージを与えることができます。検出を防ぐために、クロスプロセス インジェクションを利用する攻撃者が増えています。

クロスプロセス インジェクションを使うことで、攻撃者は正当なプログラムになりすまして悪意のあるコードを実行することができるようになります。コード インジェクションでは、攻撃者は簡単に検出されてしまうカスタム プロセスを使う必要がありません。そうではなく、攻撃者は共通プロセス (例えば、explorer.exe、regsvr32.exe、svchost.exe など) に悪意のあるコードを挿入するため、攻撃のステルス性と持続性はより高くなります。

Windows Defender Advanced Threat Protection (Windows Defender ATP) は、新しい種類のインジェクションを利用する攻撃も含め、ステルス性の高い攻撃を発見します。Windows 10 Creators Update では、プロセス ハロウイングや AtomBombing などのようなメモリ内インジェクションの手法に対する Windows Defender ATP のインストルメンテーションと検出の機能を強化しました。

Windows Defender ATP は、侵入した脅威に対するソリューションで、企業のセキュリティ運用 (SecOps) 部門の要員に悪意のあるアクティビティを知らせます。攻撃の本質の進化に合わせて、Windows Defender ATP は進化を続け、SecOps 要員による攻撃の発見と効果的な対応を引き続き支援します。

このブログ記事は、Windows Defender ATP がコード インジェクション手法を検出する方法を紹介する 3 回シリーズの 2 回目です。今回はプロセス ハロウイングと AtomBombing に注目し、Windows Defender ATP が、よく見える場所から自身の存在を隠そうとする商品化されたマルウェアから、標的型攻撃に従事する複雑な活動グループまで、いかに広範囲に不正なアクティビティを検出するかについて説明します。

プロセス ハロウイング: 正当なプロセスの中にコードを隠す

プロセス ハロウイングとは、正当なプロセスの新しいインスタンスを起動し “空洞化させる (hollowing it out)"、つまり正当なコードをマルウェアで置き換えるコード インジェクションの手法です。正常に実行されている別なプロセスに悪意のある機能を追加する多くのインジェクション手法とは異なり、ハロウイングされたプロセスは外からは正当に見えますが、その中身には悪意があります。

プロセス ハロウイングを実現する既知の手法はあまりありませんが、最もよく見られるバリアントは悪意のあるコードを秘密裡に実行するために、一般的に次の 4 つのステップに従います。

  1. マルウェアが正当なプロセス (例えば、explorer.exe、lsass.exe など) の新しいインスタンスを起動し、それを一時停止状態にします。
  2. 次に、マルウェアは正当なコードのベース アドレスを保持している新しい (かつ一時停止状態の) プロセスのメモリ セクションをハロウイングします。これを行うために、マルウェアは NtUnmapViewOfSection ルーチンを使用します。
  3. 悪意のあるコードと置き換えるために、一時停止中のプロセスに RWX (読み取り、書き込み、実行) メモリを割り当てます。
  4. その後、マルウェアは割り当てられたメモリに悪意のあるコードをコピーします。最初のスレッドのターゲット アドレスを、悪意のあるプログラムのエントリ ポイントに変更します。

スレッドが再開されると、正当なプロセスになりすました悪意のあるコードが実行されます。マルウェアはこれにより、検出から逃れるためにディスクから自身の痕跡を削除することができるようになります。

AtomBombing: 偽装のための新しい隠れ蓑

AtomBombing は、攻撃での使用が観察される最も新しいコード インジェクション手法の 1 つです。これは、攻撃者が既にコンピューターを侵害しており、あまり知られていない API を使用してほかのプロセスにステルス性の高いコード インジェクションを実施するためのコードを実行できる場合に使用可能な手法です。

この手法では、マルウェアがすべてのアプリケーションがアクセス可能なグローバル アトム テーブルに悪意のあるコードを書き込みます。次にマルウェアは、ネイティブな NtQueueApcThread API を使って、標的のプロセス スレッドの非同期プロシージャ コール (APC) キューに APC をディスパッチします。この APC が実行されると、標的のプロセスに GlobalGetAtomName 関数の呼び出しを強制します。この関数呼び出しはグローバル アトム テーブルから悪意のあるコードを取得し、そのコードを標的のプロセスのメモリに挿入します。

WriteProcessMemory を使わずに別なプロセスのメモリ領域に悪意のあるコードを書き込むのは巧妙な方法ですが、アトム テーブルを介して転送された悪意のあるコードはまだ実行することができません。最終目的を達成するためには、もう 1 つステップが必要です。Return-Oriented-Programming (ROP) を起動しコードのメモリ領域を RWX に変換するために、APC 呼び出しをもう 1 つ使用します。これで悪意のあるコードが実行可能になります。

拡張された Windows Defender ATP 機能によるプロセス ハロウイングと AtomBombing の検出

Windows Defender ATP Creators Update では、攻撃に使われている悪意のあるインジェクション手法を幅広く検出するために、関数呼び出しをインストルメント化し、統計モデルを構築しました。

これらの機能を、プロセス ハロウイング、AtomBombing、およびその他のインジェクション手法を使う現実世界のマルウェアの事例に対して検証しました。以下のセクションでは、標的のネットワークでステルス性と持続性を保つためにコード インジェクションを利用する攻撃を、Windows Defender ATP が発見する方法を説明します。

Kovter: いまだ現役の古典的なプロセス ハロウイング

2013 年頃から出現した Kovter はクリック詐欺により感染するトロイの木馬のファミリですが、近年、Locky などのランサムウェア ファミリと関連を持っている事実が観察されています。2016 年には、ほぼファイルレスで維持されている Kovter の亜種を発見しました。

このマルウェアは、主にフィッシング メールの添付ファイルとして配布されます。Kovter が実行されると、悪意のある JavaScript、PowerShell、およびシェルコード コンポーネント (通常、すべて難読化されている) の大部分を、いくつかのレジストリ キーの中に隠します。次に、ネイティブなアプリケーションを利用して、レジストリに保存したコードを結合、復号、および実行し、インジェクションのルーチンを実施します。

Kovter はスタートアップ フォルダーにショートカット (.lnk ファイル) を追加するか、レジストリ キー HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Runエントリを追加することで持続性を保ちます。どちらの手法でも、ランダムなファイル名拡張子を持つコンポーネント ファイルが開かれます。

Kovter は、正当なプログラムである mshta.exe によってコンポーネント ファイルが開かれるよう、HKEY_USERS ハイブに 2 つのレジストリ エントリを追加します。mshta.exe は、別のレジストリ キーから難読化されたペイロードを復号化します。ペイロードが復号化されると、PowerShell のスクリプトが展開され、新しい環境変数として追加されます。次に、PowerShell は環境変数で参照しているスクリプトを実行します。このスクリプトが、標的のプロセスにシェルコードを挿入します。

Kovter は、シェルコードを使ってプロセス ハロウイング手法を使用し、悪意のあるコードを正当なプロセスに挿入します。このほぼファイルレスなマルウェアは、プロセス ハロウイングを使ってステルス性を達成し維持するため、従来型のウイルス対策ソリューションにとってチャレンジとなります。

Windows Defender ATP は、拡張されたインストルメンテーションと検出機能を使って、この手法で使用されている関数呼び出しを顕在化させます。さらに、Windows Defender ATP は統計モデルを使って、プロセス ハロウイングを実行するために必要な悪意のある関数に照準を合わせます。

以下のスクリーンショットでは、Windows Defender ATP で表示されるプロセス インジェクション ルーチンのアラートを示します。悪意のある PowerShell スクリプトを起動し実行するために悪用されている mshta.exe (1、2)、およびハロウイングされ悪意のあるコードを含むプロセス regsvr32.exe (3、4) が表示されています。

図 1: mshta.exe を利用して regsvr32.exe にプロセス ハロウイングを実行する Kovter を Windows Defender ATP が検出

Dridex: AtomBombing を早期に導入

2014 年に公開されて以来、Dridex は多作でたちの悪いバンキング型トロイの木馬です。主にフィッシングメールによって配布される Dridex は、金融機関の資格情報や機密情報を盗み、セキュリティ製品を無効にし、攻撃者から被害者のコンピューターへのリモート アクセスを可能にします。

Dridex のコードは、この何年かにわたって数回改訂されています。最も新しいバージョンでは、Dridex は AtomBombing のインジェクションの手法を最も早く導入した 1 つとなりました。コード インジェクションの手法と関連する共通 API の呼び出しを回避することによって、ステルス性と持続性を保持しています。

Dridex が実行されると、標的のプロセスの警告スレッドを探します。次に、user32.dll が標的のプロセスに確実に読み込まれるようにします。これは、必須となるアトム テーブルの関数へアクセスするために user32.dll が必要なためです。この条件が満たされると、Dridex はグローバル アトム テーブルにシェルコードを書き込みます。

その後、GlobalGetAtomNameW のための一連の NtQueueApcThread 呼び出しを標的プロセスのスレッドの APC キューに追加することで、標的のプロセスが悪意のあるコードをメモリにコピーするよう強制します。

図 2: 標的のプロセスの APC キューに追加された GlobalGetAtomNameW に対する NtQueueApcThread 呼び出し

最後に、Dridex は NtProtectVirtualMemory を呼び出して、(悪意のあるコードが存在している) メモリ ロケーションを実行可能なメモリに変換します。この時点で、Dridex は正当なプロセスのコンテキストで自由にコードを実行することができるようになります。

Windows Defender ATP は、AtomBombing 手法の使用を発見します。以下のスクリーンショットでは、AtomBombing を使用して正当なプロセスである svchost.exe に悪意のあるコードを挿入する Dridex に関する Windows Defender ATP のアラートを示します。

図 3: svchost.exe に AtomBombing を実行する Dridex を Windows Defender ATP が検出

結論: Windows Defender ATP Creators Update は隠れたサイバー攻撃を顕在化させる

Windows 10 は、あらゆる種類のモダンな脅威に対する防御機能を引き続き強化します。攻撃者は、より見つけにくく持続性を増した複雑な攻撃を仕掛けることで、これに対抗してきます。Kovter および Dridex は、コード インジェクション手法を使って検出を回避するよう進化したマルウェア ファミリの有名な例です。必然的に、プロセス ハロウイング、AtomBombing、およびその他の高度な手法は、今後も既存または新規のマルウェア ファミリによって利用されます。

Windows Defender ATP は、豊富なセキュリティ データ、高度な行動分析、および機械学習を活用して、攻撃に使用される不変の手法を検出します。Windows Defender ATP Creators Update では、隠れた攻撃を顕在化するためにインストルメンテーションと検出の機能を強化しています。

Windows Defender ATP は、セキュリティ運用 (SecOps) 部門が攻撃を把握し、素早く対応するために活用できる詳細なイベント タイムラインやその他のコンテキスト情報も提供します。Windows Defender ATP の改善された機能によって、被害を受けたコンピューターを隔離し、ネットワークを守ることが可能になります。

Windows Defender ATP の詳細については、その特長や機能を知り、侵害後の検出アプローチがどの企業においてもセキュリティ戦略の重要な要素となる理由を確認してください。Windows Defender ATP は Windows 10 Enterprise のコアに組み込まれ、無料で評価することができます。

John Lundgren

Windows Defender ATP Research Team


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.