本記事は、Microsoft Malware Protection Center のブログ “Uncovering cross-process injection with Windows Defender ATP” (2017 年 3 月 8 日 米国時間公開) を翻訳したものです。
Windows Defender Advanced Threat Protection (Windows Defender ATP) は、企業のセキュリティ運用 (SecOps) 部門の要員に悪意のあるアクティビティについて知らせる、侵入した脅威に対するソリューションです。SecOps 要員による攻撃の発見と対応を引き続き支援できるよう、攻撃の本質の変化と合わせて Windows Defender ATP も進化する必要があります。
マイクロソフトや他のベンダーによるセキュリティへの投資の増加により、エクスプロイトを成功させるためのコストと複雑性は膨れ上がりました (Windows 10 があらゆる攻撃に対する防御の水準を高め続けている方法については、こちらの記事 (英語情報) を参照してください)。たとえば、仮想化ベースのセキュリティ技術の採用傾向の高まりにより、攻撃者はその手法に少なくとも 2 つのエクスプロイトを組み込むことを余儀なくされています。1 つはサンドボックス化されたアプリケーションを侵害すること、そしてもう 1 つはそのサンドボックスを破り抜け出すことです。リモートでのコード実行やカーネルの悪用に対して、最高で何十万ドルも請求するエクスプロイト開発者が出現し、その高額な値段に市場から追い出される攻撃者もいるほどです。
残念ながら、高度な、あるいは最先端の攻撃者 (図 1 を参照) は、今でもゼロデイ攻撃を開発したり購入したりすることができます。その投資効果を守るために、これらの攻撃者は検出を回避することに注力しています。メモリ内の攻撃およびカーネルの特権昇格に大きく依存し、ディスクにアクセスしないことで攻撃に気づかれないようにしているのです。
このブログ記事は、メモリ内の攻撃技術のインストルメンテーションと検出を強化するためのマイクロソフトによる投資を紹介する 3 回シリーズの 1 回目です。この連載では、クロスプロセス コード インジェクション、カーネル昇格および改ざん、メモリ内エクスプロイトの検出改善を取り上げます。初回はクロスプロセス インジェクションに注目し、Creators Update for Windows Defender ATP での強化が、よく見える場所から自身の存在を隠そうとする商品化されたマルウェアから、標的型攻撃に従事する複雑な活動グループまで、いかに広範囲な攻撃活動を検出するかについて説明します。
ステルス性と持続性ためのクロスプロセス インジェクション
攻撃者は、クロスプロセス インジェクションを使うことで通常のプロセスの視認性を高めることができます。例えば、挿入されたコードを使って影響を受けているプロセスに送られたキーボード操作を記録することが可能です。同時にこの手法は悪意のあるコードを隠し、プロセス マイグレーションを可能にするため、組織的な攻撃の持続のために利用することもできます。
クロスプロセス インジェクションは悪意のあるコードを無害なプロセスの中に隠蔽するため、本質的にステルス性が高くなります。プロセスに悪意のあるコードが挿入された場合でも、図 2 に示されるように、読み込まれたイメージ (プロセスに関連する実行可能ファイルおよびライブラリ ファイル) は引き続きディスク上の正当なファイルをポイントします。これは、悪意のあるコードを自身のプロセス領域で実行することと比べ、明らかに優位であることを示しています。なぜなら自身のプロセス領域で実行する場合、コードがディスク上にイメージ ファイルとして存在することを余儀なくされるため、マルウェア対策ソフトウェアによる検査の対象となり、フォレンジックの証拠として容易に回復可能であるからです。
図 2 : マルウェアのコードが挿入された場合でも、rundll32.exe が読み込んだイメージは正常に見える
プロセス マイグレーションを実行することで、クロスプロセス インジェクションによる攻撃活動の継続が可能になります。例えばドライブバイダウンロード攻撃では、攻撃者はブラウザー プロセスを制御しサンドボックスを無効化することができます。いつ終了するかわからないブラウザーのライフサイクルに依存せず悪意のあるコードを実行できるように、攻撃者はクロスプロセス インジェクションを使ってそのコードを winlogon.exe のような長期間有効なプロセスに移行します。ユーザーがマシンをシャットダウンし、マルウェアが削除されるリスクは残りますが、最先端の攻撃者はエンタープライズ ネットワークの複数のデバイス上で活動を継続することによりこれを克服します。もし 1 つのデバイスが実際に再起動され、悪意のあるコードが削除された場合でも、攻撃者は容易に横移動してそのデバイスに戻ることができます。
クロスプロセス インジェクションをさらに深堀りする
クロスプロセス インジェクションは基本的に 2 つの要素を持つプロセスです。
まず、悪意のあるコードがリモート プロセスの新規または既存の実行可能なページに保存されます。攻撃者は一般的に、Win32 API の VirtualAllocEx および CreateFileMapping/MapViewOfSection を使用して新規の実行可能なページを割り当てます。その後、VirtualProtectEx を使って既存ページを実行可能な、あるいは書き込み可能なページに変換します。
次に、スレッドと実行コンテキストの制御のもと、挿入された悪意のあるコードが実行されます。多くの有名なケースでは、攻撃者は CreateRemoteThread という API を使ってリモート プロセスに新しいスレッドを作成しています。その後、既存のスレッドを任意のアドレスにリダイレクトするために SetThreadContext および QueueUserAPC という API を使用します。
前述の API はデバッグや診断、管理、およびセキュリティなど正当な使用法がありますが、特定のプロセス名と実行時の動作の組み合わがしばしば悪意のあるアクティビティを示すことがあります。これは技術に詳しい人向けですが、プロセス ハロウイング (Tan Chew Keong の論文 “Dynamic Forking of Win32 EXE” で説明されています) や AtomBombing などの手法がこのような悪意のある組み合わせを示す好例です。
Windows Defender ATP におけるインストルメンテーションと検出
Creators Update for Windows Defender ATP では、世の中で使用されている幅広い種類の悪意のあるインジェクション技術を検出するために、関連する関数呼び出しを装備し統計モデルを構築しました。これらの機能強化がクロスプロセス インジェクションを用いた敵対的な活動をいかに効果的に発見するかを判定するために、これらの機能強化を、標的型攻撃、リモート アクセス ツール (RAT)、および暗号通貨マイニング マルウェアなど現実世界における事例に対して検証しました。
GOLD による標的型攻撃
GOLD は主に知的財産やその他の価値のあるデジタル資産を探し求める活動グループです。この活動グループは、興味深い方法で企業のネットワークに足がかりを作ります。スピアフィッシングを通じてしつこく標的につきまとう代わりに、GOLD は確立されたライセンスキー ジェネレーター (keygens) の配布サイトを使い、幅広い層の被害者を感染させます。つまり、配布サイトから keygen をダウンロードし実行したすべてのユーザーが標的となるのです。その後、このグループは各犠牲者を評価し、特定の業界に所属する犠牲者を積極的に追及します。
ユーザーが GOLD が稼働させている Web サイトからダウンロードした keygen パッケージを起動すると、keygen そのものと Gaktak マルウェア インプラントの 2 つの実行可能ファイルが保存されます。Gatak は、CreateRemoteThread という API を使って数ある正当なシステム プロセスのうちの 1 つに自身を挿入します。検証に使用したサンプルは rundll32.exe プロセスを起動し、プロセスにメモリを割り当ててそこに悪意のあるコードを書きこみ、CreateRemoteThread 呼び出しを使ってそのコードを実行するものでした。挿入が成功すると、Gatak は自身をディスクから削除し、_ファイルレス_となります。その一方で、rundll32.exe プロセスに挿入されたコードはコマンド アンド コントロール (C&C) サーバーと通信し、GOLD の攻撃者は感染したデバイスを制御できるようになります。
Creators Update では、Windows Defender ATP がさまざまな検出手法の中でも特にクロスプロセス インジェクション技術を検出することで、Gatak を含む侵害を発見します。図 3 では Windows Defender ATP Creators Update ポータルに表示されるアラートを示します。
図 3: rundll32.exe に挿入された Gatak マルウェア インプラントの検出
Fynloski RAT
クロスプロセス インジェクションの新しい検出を検証するために使用した 2 つ目の悪意のあるアクティビティは、Fynloski リモート アクセス ツール (RAT) の亜種です。この RAT は 2012 年までは無料で提供されており、今日でも複数の攻撃キャンペーンで使用されています。Fynloski はスクリーンショットの保存、ファイルの抽出、およびキーボード操作の記録など幅広い機能を提供します。スピアフィッシング、ダウンローダー、エクスプロイト キットなどさまざまな経路から配布されています。
Fynloski は、前セクションで紹介した CreateRemoteThread などの一般的なクロスプロセス インジェクション技術ではなく、QueueUserAPC という API を使って自身の存在を隠します。_QueueUserAPC_とは、プロシージャの非同期的な実行を要求する関数です。攻撃者は、悪意のコードを標的のプロセスにプロビジョニングし、QueueUserAPC がこのコードを実行するようポイントすることにより、QueueUserAPC を使って任意のコードをクロスプロセスで挿入することができます。
Creators Update では、Windows Defender ATP はこれらの API 呼び出しを検出し、図 4 のようにこの動作の概要を表す対応するタイムラインが含まれたアラートを表示します。
図 4: notepad.exe に挿入された Fynloski RAT
暗号通貨マイニング用に商品化されたマルウェア
商品化されたマルウェアでは、攻撃者が標的型攻撃で使う場合と同じ理由でクロスプロセス インジェクション技術が使われています。つまり、目的を達成するまでの間、自身の存在を隠しておきたいという理由です。
本記事では、ビットコインのような暗号通貨をマイニングするためにコンピューティング リソースを盗む CoinMiner というマルウェアを詳細に分析します。CoinMiner は SetThreadContext という API を使用してクロスプロセス インジェクションを実行し、割り当てられた実行可能なメモリに悪意のあるコードをコピーします。これは、CreateRemoteThread の技術に類似しています。悪意のあるコードを実行するために、まず CreateToolhelp32Snapshot API を使って標的のプロセスから既存スレッドの一覧を入手します。その後、SetThreadContext API を使用して、挿入された悪意のあるコードのメモリ アドレスにポイントするようスレッドの制御レジスタを変更します。
この例では、CoinMiner は _notepad.exe_を起動し、そのプロセスにマイニング コードを挿入します。続いて、影響を受けた _notepad.exe_プロセスは Monero マイニング プール (xmr[.]crypto-pool[.]fr) に接続し、マイニングされた暗号通貨を送信します。図 5 で示すように、Windows Defender ATP はインジェクション技術を検出し、SecOps 要員による感染の理解と対応を支援するためにマイニング プールへの接続などの重要なコンテキストを提供します。
図 5: CoinMiner に感染した場合のイベント タイムライン
結論: Creators Update は複数のクロスプロセス インジェクション手法の組み合わせに対応できる
他のメモリ内テクニックと同じように、クロスプロセス インジェクションはディスク上のファイルを検査することに注力するマルウェア対策やその他のセキュリティ ソリューションを回避することができます。Creators Update の Windows Defender ATP では、クロスプロセス インジェクションを利用する悪意のあるアクティビティを発見するための追加の機能が SecOps 部員に提供されます。統計モデルを活用しクラウド上の大きなデータ セットを分析することで、これらの強化された機能は商品化されたマルウェアによる感染や複雑な侵害などを含む、さまざまな攻撃で使われているインジェクション技術に対応します。
Windows Defender ATP はまた、SecOps 要員が攻撃の本質を素早く把握し、対応策を取ることができるよう、詳細なイベント タイムラインやその他のコンテキスト情報を提供します。
Windows Defender ATP の詳細については、その特長や機能を知り、侵害後の検出アプローチがどの企業においてもセキュリティ スタックの重要な要素となる理由を確認してください。Creators Update でリリースされるいくつかの機能は、現在、パブリック プレビューの一部としてすべてのユーザーが利用できます。
Windows Defender ATP は Windows 10 Enterprise のコアに組み込まれ、無料で評価することができます。
脅威の指標
ハッシュ
- Gatak – 137d6fdc9ca730304a2154174058144f4e909824
- Fynloski – efb9a13ad450bb0381ee1cc3b90ac0266687928a
- CoinMiner – d36fa8de43956190d827c042614555c8b20c5402
インフラストラクチャ
- 207[.]36[.]232[.]49
- 212[.]129[.]44[.]157
- Xmr[.]crypto-pool[.]fr
Christian Seifert、Genghis Karimov、Mathieu Letourneau
Windows Defender ATP Research Team