APT&標的型攻撃
攻撃キャンペーン「Operation Earth Kitsune」とサイバー犯罪集団「APT37」の関連性
トレンドマイクロが発見し「Operation Earth Kitsune」と名付けた標的型攻撃キャンペーンについてその「TTPs」に関する詳細解析の結果をホワイトペーパーにまとめて公開し、本ブログでも概要について以前に報告しました。本ブログ記事ではさまざまな相関関係について解説し、主に2つのカテゴリーに分けて詳説します。
マルウェアキャンペーンの背後に潜む犯罪組織の正体を見極めるのは難しい作業です。サイバー犯罪者は標的であるユーザや企業を混乱に陥れたり、システムやネットワーク環境に危害を加えたりするために設計したソフトウェアに自身の正体が露呈するような痕跡を残すことはめったにありません。しかし、識別のカギとなる情報を既知の情報源と比較することで、そのキャンペーンが特定のサイバー犯罪集団によって実行された可能性が高いと判断することができます。これは犯罪組織が長年にわたり活動を継続し比較対象となる痕跡を多く残している場合、さらに信憑性が高くなります。トレンドマイクロが発見し「Operation Earth Kitsune」と名付けた標的型攻撃キャンペーンについてその「TTPs(=Tactics, Techniques and Procedures:戦術、技術、手順)」に関する詳細解析の結果をホワイトペーパー(英語)にまとめて公開し、本ブログでも概要について報告しました。このキャンペーンに関与した2種の新たなスパイ活動を行うバックドア型マルウェアを拡散する水飲み場型攻撃の技術的な詳細解析を行う中で、韓国を主な標的とすることで知られるサイバー犯罪集団「APT37(別名:Reaper、Group 123、ScaCruftなど)」に起因した別のマルウェアとの顕著な類似性を発見しました。
2012年に活動を開始したとの情報もあるAPT37については、比較対象となる実例データが数多く残っています。ここで重要なのは、さまざまなセキュリティベンダから報告されたAPT37と推測される活動の解析データの多くは2016年のものであり、Operation Earth Kitsuneからキャプチャされたサンプルは近年開発されたものであることです。空白期間が長いため、双方のコードから類似性を見つけ出せるとは考えにくいものです。しかしトレンドマイクロは、スパイ活動を行うバックドアの機能の1つにおいていくつかのコードが再利用されている事実を見つけ出しました。このことから今回の調査ではTTPsの相関性に重点を置いています。つまり新たなサンプルが開発された場合でも攻撃者はキャンペーンに用いる攻撃手口の技術の多くを再利用している可能性があるということです。
キャンペーンの帰属を考えるうえでもう一つ重要な点は、「Operation Earth Kitsune」には歴史的背景があることです。トレンドマイクロは2019年にバックドア型マルウェア「SLUB」を用いた2つの異なるキャンペーンを発見し3月14日、7月17日に本ブログで報告しました。Operation Earth Kitsuneはこれらのキャンペーンの手口を引き継いだ攻撃手法です。このため帰属となる痕跡の一部は2019年に確認されたSLUBキャンペーンからOperation Earth Kitsuneにまたがり受け継がれています。
本ブログ記事ではさまざまな相関関係について解説し、主に2つのカテゴリーに分けて詳説します。
- マルウェア開発者の開発環境に関連する相関関係
- TTPsに関連する相関図
一部の相関関係は他のものよりも結びつきが強いことに留意する必要があります。しかしこれらの相関関係を組み合わせることで、過去にAPT37に起因したマルウェアの背後に潜んでいたサイバー犯罪者がOperation Earth Kitsuneを背後で操る犯罪組織である可能性が高いことが明らかとなりました。
■マルウェア開発者の開発環境
開発者情報を推定する上で最も注目すべき点は、マルウェア開発者の開発環境に関する情報との相関性を持つ痕跡を見つけ出すことです。時には開発者の環境内で使用されている言語を特定できることもあります。またマルウェア開発者は、帰属に関する情報から解析者の目を遠ざけるためにこれらの関連性を意図的に削除し誤解を招くような情報を組み込むこともあります。しかし自身の隠蔽手口に用いたコードを削除し忘れた結果別の痕跡が明らかになる場合もあります。
オペレーティングシステム(OS)の言語バージョン
2019年に確認されたSLUBキャンペーンからキャプチャされたサンプルの解析中、サンプルの1つであるWin32kの特権の昇格の脆弱性「CVE-2019-0803」を悪用したSLUBのローダには、解析者に対して意図的な誤解を招くためのデータが組み込まれたバージョンリソースセクションが含まれていました。これを図1に示します。
この種の誤解を招かせるバージョン情報は隠蔽手口としては一般的で、帰属に関連する情報を持っていません。しかしバージョンリソースがバイナリに追加された際にバージョン情報とは異なる箇所へ影響を及ぼしました。これにより、このバイナリは様々なコンパイラ識別ツールで示された通りVisual Studioのツールチェーンを用いてコンパイルされたものと弊社は推測しています。
バージョンリソースがバイナリへとコンパイルされると言語IDが生成されます。この言語IDはリソースのペイロード内ではなく、Windows Explorerでは見えないリソース情報の内部構造上に作成されます。興味深い点は、この言語IDがVisual Studioの現在の言語によって決定されずに、バージョンリソースのコンパイル時のOSの言語によって決定されることです。この言語IDを表示するには別のツールを使用する必要があります。図2にSLUBドロッパの言語IDを示します。
弊社はAPT37に起因した過去のサンプルから上記と同じような流れでOSの言語が流出しているのを発見しました。過去にAPT37に起因したマルウェアファミリの1つが「Freenki」です。Freenkiのサンプルの中には、同一の仕組みを通じてOSの言語IDが漏えいしたものもあります。Freenkiを解析した際に取得した画像(図3)を見ると、リソースがバイナリへとコンパイルされたときにも同じ処理手順が採用されていることがわかります。
弊社はAPT37のメンバーの中には複数の開発者が存在し開発者全員が同じ開発方針に従っているわけではないと推測しています。このためすべてのサンプルが言語IDを流出するリソース(図3)を持っているとは限りません。しかしこれらの共通する痕跡は、Freenkiに起因した犯罪組織とOperation Earth Kitsuneの背後に潜む犯罪組織が同一集団であると判断するための材料のうちの一つになります。
■流出したAssert.passメソッドおよび参照元外部ブログ
マルウェア開発者の多くは、シンボル情報を公開することは開発環境に関する情報を明らかにすることにつながるため、帰属の観点から危険であると認識しているはずです。このため帰属に関連する情報はしばしばバイナリから削除されます。しかしマルウェア開発者が開発環境に関するパス情報を流出させる経路はそれだけではありません。マルウェア開発の際に外部ライブラリを必要とする場合もあれば、開発者が予期せぬ状態をデバッグするのを助けるために「assert()」の仕組みを使用しているライブラリもあります。このような場合コンパイラは、これらの「assert()」関数を呼び出すコードのほかにソースコードファイルへのパスも含んでいます。これらのパスは、サードパーティのライブラリにインストールされたパス情報を流出させます。弊社が確認した事例では、Operation Earth Kitsuneから取得したサンプルはオープンソースのオンラインチャットサービス「Mattermost」を悪用して遠隔操作を行うための(C&C)サーバ通信を実装していたことから、ローカルパスが流出していました。流出したパスを図4に示します。
C++ Boostライブラリのパスをインターネット上で参照すると、韓国語で構成されたブログが表示されます。このブログでは同一のパスを使用して開発者環境の設定ファイルを設定する方法について説明しています。デフォルトパスをインストールする際に静的コンパイルがサポートされていないため、この設定ファイルは手動で作成されたと判断できます。以下は関連する説明文を翻訳したものです。
「最終的にプロジェクトの設定ファイルを以下のように修正しましたが、最善案とは思えません。きちんとした方法があるようですが、経験者にアドバイスを求めます。」
またすべてのSLUBサンプルから同一のパス情報が流出していたことも重要な共通点です。流出が確認されたSLUBには、2019年に確認されたSlackを悪用したSLUBキャンペーンのサンプルと、Mattermostを悪用した新バージョンのサンプルが含まれます。
これらの2つの痕跡から、マルウェア開発者が「assert()」パスを使用して外部ブログを参照していたことが明らかとなりました。これは弊社が過去に解析したマルウェアが用いた手口と同じです。
■TTPsとの相関関係
前回の「Operation Earth Kitsune」の詳細解析から、スパイ活動を行うバックドアを配信する際に用いられた拡散の流れの1つが図6のように設計されていることがわかりました。
この拡散フローは他のキャンペーンでも利用されており一般的な手法です。しかし興味深い点は、APT37に起因した以前のキャンペーンに共通する詳細部分です。2017年には、ネットワークセキュリティベンダ「Palo Alto Network社」のUnit 42がFreenkiに関連する解析結果を報告しています。この解析結果はOperation Earth Kitsuneが確認される3年前の情報であるにもかかわらず、攻撃者はマルウェアを拡散するために同じTTPsを再利用しているように見えます。図7は両キャンペーンで拡散手口に用いられたPowerShellスクリプトのセクションを示しています。
以下のTTPsは両キャンペーンで用いられたPowerShellスクリプトに共通する事項です。
以下のTTPsは両キャンペーンに関連するPowerShellスクリプト(図7)で確認された共通項です。
- どちらも侵害されたWebサイトを利用して水飲み場型攻撃を実行する。侵害されたWebサイトにはマルウェアのサンプルがホストされており、サイト訪問者が閲覧するとマルウェアが利用端末へ感染する
- どちらもPowerShellスクリプトを使用してサンプルをダウンロードして実行する
- どちらのPowerShellスクリプトも複数のマルウェアをサイト訪問者の利用端末にダウンロードする。攻撃者は利用端末の侵害に成功した後、感染を促す複数のメカニズムを実装しているように見える
- どちらもダウンロードされた複数のマルウェアに異なるサンプルを用いる
- どちらも拡散するファイルの拡張子としてJPGを用いる
- 複数のサンプルが同時に拡散される。どちらの事例も少なくとも1つのサンプルがコマンドライン引数を受け取っている
両キャンペーンに関連するTTPsのもう一つの特筆すべき類似点は、図7に示した「udel_ok.ipp」を示すファイルパスです。「udel_ok.ipp」の内容はwscript.exeを用いて実行されるJavaScriptファイルであり、図8はその部分的なソースコードを示しています。
興味を惹く点は、サンプルの名前がWindows Updateのファイルに用いられる命名規則に類似させる形で改称されていることです (例: "Windows-KB275122-x86.exe" )。過去にAPT37に起因したと推測されるサンプルの解析時、弊社は「Operation Earth Kitsune」の用いた持続化のメカニズムが同様の命名規則を利用していることに気が付きました。これは、WindowsのレジストリRunキーを通じて自身のコピーを自動起動するために利用されていました。さらに2019年7月に報告したSLUBキャンペーンのサンプルでも同様の命名規則が利用されていることがわかりました。図9は、SLUBが「Windows-RT-KB-2937636.dll」を使用していたのに対し、Freenkiは「Windows-KB275122-x86.exe」を使用していたことを示しています。
Freenki、2019年7月に確認されたSLUBキャンペーン、Operation Earth Kitsuneに用いられた拡散手口および持続化のメカニズムには、多くの共通したTTPsが採用されていることが明らかとなりましたが、共通する点はそれだけではありません。繰り返しになりますが、これらの確認された類似性には関連性がない可能性もあります。しかしトレンドマイクロの解析結果では相関関係を示唆するさらなる類似性が示されています。
■水飲み場型攻撃に利用されたWebサイト
前回のOperation Earth Kitsuneについて解説した記事では、韓国のPHPフレームワーク「GNUBoard」のコンテンツ管理システム(CMS)を使用していたWebサイトが侵害され水飲み場型攻撃に利用されていた事例について報告しました。APT37に起因したマルウェアキャンペーンでは、GNUBoardのCMSを利用してホストされたWebサイトが持つ脆弱性を広く利用していました。複数のサンプルを解析した結果、さまざまなキャンペーンにこの戦略の痕跡が見られました。
図10は、APT37とOperation Earth Kitsuneが用いたコードを比較したものです。SLUBキャンペーンでもインフラの一部としてGNUBoardのCMSを利用したWebサイトが侵害されています。
■窃取情報をC&Cサーバに転送するコマンド
前回のOperation Earth Kitsuneに関するブログ記事でも報告しましたが、agfSpyと名付けられたスパイ活動を行うバックドアの1種は実行するすべてのコマンドのリストを含む「JSON形式のポリシーファイル」を受信するよう設計されています。実行された各コマンドの出力はZIP形式で保存されたのち、暗号化されてagfSpyが通信活動を行うC&Cサーバへと転送されます。過去にAPT37に起因したマルウェアを解析したところ、パスや拡張子を含め実質的に同じコマンドシーケンスを実行していました。サイバー犯罪者が「JSON」形式を使用していない場合でさえさまざまなサンプルに埋め込まれたコマンドには驚くほどの類似性が見られました。図11は過去にAPT37に起因したマルウェアとOperation Earth Kitsuneが用いた、窃取した情報をC&Cサーバへと転送するためのコマンドの比較を示しています。これには以下の特徴があります。
- パス「C:Users」と「D:Users」の使い方が似ている
- 検索パターンが非常によく似ている
- 一覧表示されているファイル拡張子の内容が非常によく似ている
今回の調査では2016年のサンプルと2020年のサンプル「agfSpy」を比較していることに留意してください。同一のマルウェア開発者あるいは犯罪組織によって新たなキャンペーンが実行される場合、更新されたバージョンのOfficeドキュメントをサポートするために「.xlsx」のような新しい拡張子を追加することも想定されます。
また犯罪組織が実際に関心を寄せているのは拡張子「HWP」上の情報です。この拡張子は韓国で普及しているオフィスソフト「ハンコム」のOffice文書に利用されています。このことはC&Cサーバへと転送する際に実行されるコマンドに一覧表示されていることからも明らかです。
■共有が確認されたコード
帰属に関する解析時に、異なるサンプル間で共有されたコードが見つかることは最も価値のある発見の一つです。しかし今回の詳細解析では2016~2017年に確認されたサンプルと2020年に開発されたサンプルを比較しているため、共有されたであろうコードを見つけ出すのは困難でした。また2020年に確認されたSLUBのコードは実質的にすべて一から作成されていました。さらにdneSpyとagfSpyは、新たに開発されたカスタムコードがベースとなっています。そのためコードの類似性を一致させることが難しく、共有されているコードを示す痕跡の多くが異なるサンプル間で確認されないのはそのためです。
しかしAPT37に起因したマルウェアとOperation Earth Kitsuneで共通して確認された特徴の1つは、スクリーンショットをキャプチャすることです。トレンドマイクロは、この機能が2016年のサンプルと2020年に確認されたSLUBのサンプルをまたいでどのように高度化したか調査を行いました。解析の過程でスクリーンショット機能に関するコードが共有されている明確な兆候を発見しました。図12は、2つのサンプル間のコードを比較したものです。このコードは「インターネット上の投稿で共有されるコード」を起源とし一部に関連性を持っている可能性がありますが、双方のサンプルで類似性を持つコードが確認されました。また、「failed to take…,」(撮影に失敗しました…,)というエラーメッセージを削除するなど意味のある変更が加えられていますが、これはマルウェアの機能に不要と判断されたからでしょう。これはコードに対して事後に行われたリファクタリングである可能性が高いです。
■開発者の作業時間
異なるサンプル間のバイナリがコンパイルされた日時を解析することで、サンプル間の相関関係を知ることができます。マルウェア開発者はコンパイル日時を偽装することができますが、十分なサンプルがあれば有用な情報を得ることができます。弊社は2020年に多くのサンプルを収集した結果、コンパイル日時が不正活動に応じて一貫性を持つタイムラインに沿っていることを見出しました。弊社の解析結果に基づき、マルウェア開発者はバイナリのコンパイル日時を偽装していないと推定しています。別の侵害されたWebサイトでもAPT37に起因したサンプルがコンパイルされたときのバイナリ日時が使用されていました。Operation Earth Kitsuneで見られるコンパイル日時と比較すると、いくつかの類似点があります。
バイナリ上に一覧表示されているコンパイル時のタイムスタンプ(図13)は、サイバー犯罪者の作業時間の推定値を提供し、マルウェアが開発されたと推測される時間帯のおおよその目安となります。開発者はこの作業時間に毎日活動していたと考えるのが妥当でしょう。解析可能なサンプルを多く保有している場合は時間の経過とともにこの推定値を絞り込むことができます。図14は2つのタイムゾーンを利用するサンプルから取得した生データを比較したものです。これにより、過去にAPT37に起因したサンプルのタイムゾーンおよびOperation Earth Kitsuneに起因したサンプルのタイムゾーンがどのようにUTC+9のタイムゾーンと一致しているかがわかります。これらは両方とも、そのタイムゾーンの毎日の作業時間と一致しています。
Operation Earth Kitsuneのサンプルを取得する間、マルウェア本体が使用していた認証トークンをMattermost APIに用いることで、Mattermostサーバに関する情報をダンプすることに成功しました。その結果MattermostはマルウェアによってC&Cサーバと通信する目的に利用されていたことがわかりました。ダンプした情報の一部には、システム上で管理者権限を持つユーザの行動に関する情報が含まれていました。このユーザは大半の時間の作業を手動で行っていました。同時に、ギリシャ国内にホストされたMattermostサーバの位置情報を特定できたことからMattermostサーバの現在のタイムゾーンを知ることができました。これらの参照データから情報を取得できた全てのユーザの行動を点グラフにまとめました。管理者権限を持つユーザを除いて、他のすべてのユーザアカウントはマルウェアをデプロイするSLUBの不正活動の一部として利用されていたことに留意しておくことが重要です。
図14はアクションの数を「縦軸」とし点グラフにまとめたものです。例えば、SYSTEM_ADMINのアクションには、ユーザの作成、チャネルへのユーザの追加などが含まれます。「横軸」は1日の時間(24時間)を表しています。月単位の点グラフは作成されていないので、この図は1日の行動を表示するためだけに2020年に観測された全ての活動内容を1日分に圧縮したようなものです。これらの点グラフは協定世界時から9時間進んだ標準時(UTC+9)に設定されています。
図14では、User_3とUser_4の活動が不規則にカウントされているのが見て取れます。これは、これらのアカウントが、マルウェアが感染端末から収集したログ情報をMatterサーバへ転送するために利用されていたからです。しかしSYSTEM_ADMINアカウントは異なるパターンを示しています。これは管理者としての作業が手動で行われていたためと考えられます。図14のSYSTEM_ADMINで確認できる通り、UTC+9における作業時間は一般の勤務時間(おおよそ午前7時半から午後16時半)と完全に一致しています。
■結論
完全に一致した帰属に関する情報はありませんが、APT37に起因したマルウェアとOperation Earth Kitsuneには顕著な類似点が見られました。個々の断片的な情報からはほとんど何も得られませんでしたが、全体として見てOperation Earth Kitsuneの背後にいる犯罪組織はFreenkiやAPT37に起因したマルウェアキャンペーンを実行したサイバー犯罪集団と同一の組織である可能性が高いと推定しています。またOperation Earth Kitsuneに用いられたスパイ活動ツールは一から開発されたものと考えられ、これはやや驚くべき事実ではあります。
相関関係を持つ痕跡を一般的な形にまとめると以下のようになります。
- 開発者のシステム環境内で韓国語が使用されている点(図2)
- キャンペーンに用いる攻撃手口をデプロイする際に以下の複数のTTPsが再利用されている点
- GNUBoardのCMSが持つ脆弱性を利用して侵害されたWebサイト(図10)
- 同時にデプロイされる複数のマルウェアサンプル(図7)
- マルウェアをデプロイする際に用いられた拡散の流れの類似性(図6)
- 一般に公開されているWebサイトが持つ脆弱性を利用して水飲み場型攻撃を構築しサイト訪問者にマルウェアを感染される点
- サンプルが全く異なる場合でも、いくつかのコードが再利用されている点(図12)
- 両キャンペーンで一致したマルウェア開発者の作業時間(図14)
- C&Cサーバへと転送するためのコマンドの類似性および窃取を目的とする情報の内容が完全に一致していないにしても非常に似ている点(図11)
帰属に関する情報を読み解かれないようサイバー犯罪集団が別の犯罪組織の使用したTTPsを模範することは常に起こりうることですが、今回の解析調査ではその兆候は見られませんでした。代わりにSLUBとOperation Earth Kitsune間で確認されたのは時間の経過とともにサイバー犯罪集団の用いる技術が高度化していることです。これは過去に用いた攻撃手口を基盤として再利用し効率的に機能するようさらに手が加えられていることが確認されています。
参考記事:
• 「Who is the Threat Actor Behind Operation Earth Kitsune?」
By: William Gamazo Sanchez, Trend Micro
翻訳:益見 和宏(Core Technology Marketing, Trend Micro™ Research)
記事構成:岡本 勝之(セキュリティエバンジェリスト)
高橋 哲朗(スレットマーケティンググループ)