APT&標的型攻撃
日本を含む東アジアを狙った「Earth Yako」による標的型攻撃キャンペーンの詳解
トレンドマイクロでは2021年以降、日本国内の学術機関・シンクタンクやその関係者個人を標的としたAPT・標的型攻撃を複数観測しています。トレンドマイクロではこの一連の攻撃を行っている攻撃グループを、「Earth Yako」と命名し追跡しています。
はじめに
トレンドマイクロでは2021年以降、日本国内の学術機関・シンクタンクやその関係者個人を標的としたAPT・標的型攻撃を複数観測しています。トレンドマイクロではこの一連の攻撃を行っている攻撃グループを、「Earth Yako」と命名し追跡しています。トレンドマイクロが観測している攻撃は、2022年に「Operation RestyLink」(参考:1、2)や「EneLink」(参考:3、4)として報告された日本国内における攻撃キャンペーンの一部であると考えられます。関連の攻撃では、初期侵入手法としてスピアフィッシングメールと本文に記載されているURLからダウンロードされるZIPファイルやISOファイル、またこれらの内部に含まれるLNKファイルを用いて、不正URLへ誘導する手法が確認されています。トレンドマイクロでは把握している複数のケースにおいて、攻撃の初期段階以降でEarth Yakoが用いる、これまで知られていなかったマルウェアや攻撃手法・インフラを確認しました。Earth Yakoは短いスパンで複数の新たなツールやマルウェアを投入し、また一連の攻撃のなかで攻撃対象・業種を頻繁に変更・拡大しています。以上の点から、Earth Yakoは、攻撃者のバックグラウンドや国際情勢に連動しながら活発に攻撃を行っているグループであると考えられます。また、トレンドマイクロでは、2023年1月現在においても関連の攻撃を確認しているため、引き続きの警戒が必要です。
キャンペーンの概要
「Earth Yako」の攻撃対象と、関連インシデントのタイムライン
トレンドマイクロではEarth Yakoによる攻撃について、特に2022年1月以降において日本国内の複数の学術機関やシンクタンク、また関係する学術関係者個人などを対象とした攻撃が行われた形跡を確認しています。また、少数の事例ではあるものの、一部の攻撃については同様に台湾の組織を対象としたとみられるケースを確認しています。
Earth Yakoによる攻撃では、攻撃対象が学術機関・シンクタンクやその関係者である点は一貫していますが、その関心分野については時期によって異なっていることが伺えます。また関心分野は、比較的短期間で移り変わっているとみられます。2022年前半の攻撃では主に経済安全保障分野がターゲットであったとみられますが、その後エネルギー・経済分野など、より広い業種の関係者を標的とした攻撃を実施していました。Earth Yakoは複数のケースにおいて、関連分野の関係者に対し公開もしくはクローズドな有識者会議のようなイベントの招待などを装ったスピアフィッシングメールを送付し、最終的にマルウェアを実行するよう誘導を行っていました。
事例紹介
Earth Yakoの初期侵入経路としては、主にスピアフィッシングメールを用いた手法が観測されています。メール本文内のURLからZIPもしくはISOファイルをダウンロードさせ、中に含まれるLNKファイルから不正なWordテンプレートのダウンロードを誘導します。さらにその後、DLL-SideloadingによりCobalt Strikeに感染させるなどの事例が報告されています12。以降では、2022年に観測した事例のうち、これまで報告されてこなかったマルウェアが使用されたケースを紹介します。
ケース1: 2022年3月ごろに観測した事例
まず初めの事例は2022年3月ごろに観測されたもので、日本の学術機関の研究者を対象としていました。本事例では、ファイルレスでDLLを実行するローダ「MIRRORKEY」と、Dropbox APIを悪用するマルウェア「TRANSBOX」の使用が観測されています。攻撃者は対象のシステムに侵入後、以下のようなフローでこれらのマルウェアを実行させていました。
MIRRORKEY (AES)
MIRRORKEYは、「OCLEAN.DLL」というファイル名で感染したシステムから発見されました。このDLLは、同階層のフォルダに存在するMicrosoft社の正規アプリケーション「OFFCLN.EXE」によってDLL Side-Loadingが悪用された結果、読み込まれます。MIRRORKEYが読み込まれると、同じく同階層のフォルダに存在する「DWINTL.DLL」を検索します。このDLLはMicrosoft社の署名が付与されておりコード領域にも不正なコードはないため、一見無害そうに見えますが、MS13-098/CVE-2013-3900が悪用されており、証明書に暗号化されたペイロードが埋め込まれていました。MS13-098/CVE-2013-3900は、「Authenticode署名の検証中にPEファイルダイジェストを適切に検証しない」という脆弱性で、攻撃者はこれを悪用することにより、正規の証明書の末尾に任意のデータを埋め込むことができるようになります。
今回のケースでは、AES128-ECBで暗号化されたペイロードと復号鍵の生成に必要な情報が埋め込まれていました。MIRRORKEYは、ファイル末尾に埋め込まれたデータを次の図のような特徴的な手順で処理し、ペイロードの復号鍵を生成します。生成に成功すると、その鍵を用いて埋め込まれたペイロードをAES128-ECBで復号します。
TRANSBOX
復号されたペイロードは、内部的に「FILETRANDLL.dll」と名付けられたDLLでした。このDLLは、MIRRORKEYによってメモリ上で動的に読み込まれ、「Start_」というエクスポート関数が呼び出されることで実行を開始します。
解析の結果、このDLLはDropbox APIをベースとしたバックドアで、主にファイルの窃取を目的に設計されていることがわかりました。過去に類似したマルウェアが確認されなかったことから、新たに「TRANSBOX」と名付けました。
1. チェックイン
TRANSBOXが実行されると、はじめに感染ユーザのユニークID(以下Victim ID)を生成します。Victim IDは、感染端末のドメイン名のCRC32、ユーザ名のCRC32、ホスト名のCRC32、Volume Serial Numberの先頭4バイト(DWORD)の積として計算されます。次に、ドライブの情報やホスト名、OSバージョン、IPアドレスなど感染端末の情報を収集し、zlibと1バイトXORで圧縮・エンコードして攻撃者が用意したDropboxアカウントにアップロードします。アップロードする際には、以下にPOSTし、リクエスト内の「path」には、「/<Victim IDの10進数>/<Victim IDの10進数>.jpg」 が指定されていました。
hxxp://content[.]dropboxapi[.]com/2/files/upload
2. ファイルアップロード機能
TRANSBOXは、特定のフォルダ配下に存在する特定の拡張子をもったファイルをDropboxにアップロードする機能を持ちます。対象となるフォルダ・拡張子は以下の通りです。
対象フォルダ
- 全ドライブ配下(Aドライブ、CD-ROMは除く)
- %USERPROFILE%\Desktop(明示的に探索)
- %USERPROFILE%\Documents(明示的に探索)
対象拡張子
- .doc
- .docx
- .xls
- .xlsx
- .ppt
- .pptx
- .rtf
- .odt
- .jsd
- .jtd
- .jst
- .7z
- .zip
- .rar
ただし、以下フォルダ配下は除外されます。
- C:\Program Files
- C:\Program Files (x86)
- C:\PerfLogs
- C:\Windows
- D:\Program Files
- D:\Program Files (x86)
- E:\Program Files
- E:\Program Files (x86)
- %APPDATA%
また、収集対象ファイルがアップデートされた場合に再度ファイルをアップロードできるように、ini形式で対象ファイルの更新日時を記録する機能も実装されていました。iniファイルは 以下に作成され、次のようなフォーマットで情報が記録されていきます。
%LOCALAPPDATA%\sxda<Victim ID % 0x2710>.xso
3. コマンドの受信
TRANSBOXは、Dropbox API経由でバックドアコマンドを受信することも可能です。コマンド受信時は、以下にGETし、リクエスト内の「path」には「/<Victim IDの10進数>/abox_.cxt」 が指定されます。レスポンスはカスタムBase64でエンコードされており、デコードすると以下のようなフォーマットのデータになります。
hxxp://content.dropboxapi[.]com/2/files/download
バックドアコマンドにより、以下のような動作が可能になります。
- ファイルアップロードサイズ上限やチャンクサイズの変更
- DLLのダウンロードとオンメモリ実行
- ChromeやFirefoxなどの認証情報に関わるファイルをすべてマージしてアップロード
- 収集対象の拡張子を追加
- 指定したファイルのアップロード、または指定したフォルダ配下の収集対象拡張子ファイルのアップロード
- 指定したフォルダ配下のファイル・フォルダ一覧表示
ケース2: 2022年6月ごろに観測した事例
次の事例は2022年6月ごろに観測したもので、同じく日本の学術機関の研究者を対象としていました。本事例では、先の事例で紹介した「MIRRORKEY」の亜種と、同じくDropbox APIを悪用するマルウェア「PLUGBOX」の使用が観測されています。先の事例と同様、攻撃者は対象のシステムに侵入し、これらのマルウェアを設置・実行していました。
MIRRORKEY (TEA)
本事例で観測したMIRRORKEYの亜種は、「GTN.dll」というファイル名で感染したシステムから発見されました。このDLLは、先の事例と同じくDLL Side-Loadingによって読み込まれます。今回は、同階層のフォルダに存在するGoogle社の正規アプリケーション「GoogleToolbarNotifier.exe」が悪用されていました。前回のMIRRORKEY同様、同階層のフォルダに存在する「espui.dll」を検索し、MS13-098/CVE-2013-3900を悪用して対象ファイルに埋め込まれた暗号化されたペイロードを取り出して復号・実行します。しかし、本事例で観測したMIRRORKEYは、ペイロードの復号にAESではなくTEA (Tiny Encryption Algorithm) を用いていました。さらに言えば、コード自体も3月に観測したMIRRORKEYとは全く異なっているため、別のローダと捉えることも可能ですが、共通するTTPsと一部コードの共有が見受けられることからMIRRORKEYの亜種と判断しています。
PLUGBOX
復号されたペイロードは、内部的に「LoadPlgFromRemote.dll」と名付けられたDLLでした。このDLLは、MIRRORKEYによってメモリ上で動的に読み込まれ、「Run」というエクスポート関数が呼び出されることで実行を開始します。
解析の結果、このDLLもTRANSBOXと同じくDropbox APIをベースとしたバックドアであることがわかり、「PLUGBOX」と名付けました。
1. インストール
PLUGBOXがメモリ上で実行されると、自身のインストール処理を開始します。そのために、まずは以下ファイルのコピーを実施します。
%windir%\SysWOW64\cttune.exe → %localappdata%\NVIDIA\cctune.exe
<CURRENT_FOLDER>\GTN.dll → %localappdata%\NVIDIA\DWrite.dll
<CURRENT_FOLDER>\espui.dll → %localappdata%\NVIDIA\espui.dll
加えて、以下の正規DLLを現在実行中のフォルダにコピーし、DLLのロードをおこないます。この処理は、不正活動には不要な処理のため、PLUGBOX自身を無害なように見せかけることが目的と思われます。
%windir%\SysWOW64\migration\TableTextServiceMig.dll
%windir%\SysWOW64\migration\msctfmig.dll
%windir%\SysWOW64\migration\WMIMigrationPlugin.dll
%windir%\SysWOW64\migration\imjpmig.dll
%windir%\SysWOW64\migration\imkmig.dll
%windir%\SysWOW64\migration\tssysprep.dll
%windir%\SysWOW64\migration\cosetup.dll
2. チェックイン
次に、攻撃者が用意したDropboxアカウントへチェックインをおこないます。TRANSBOXにはAPIキーがハードコードされていましたが、PLUGBOXにはAPIキーはハードコードされておらず、代わりにAuth TokenとRefresh Tokenがハードコードされていました。PLUGBOXはこれらの値を用いてAccess Tokenを得ることで、Dropbox APIへのアクセスが可能になります。
次に、ユーザのデータをDropbox上にアップロードした際に各ユーザを識別するため、感染ユーザのVictim IDを以下手順で作成します。
- %temp%フォルダのパスを取得し、「\」を「+」に置換
- 感染端末のProcessorIdを取得
- 感染端末のマザーボードのSerialNumberを取得
- ↑を「\r\n」で連結させ、SHA256ハッシュ値を求める
- SHA256ハッシュ値の先頭32バイト分の文字列をVictim IDとする
そして、以下にPOSTし、リクエスト内の「path」に「/<Victim ID>/Victim ID>_<UNIXTIME>{1,3}.dat」を指定します。
hxxp://content[.]dropboxapi[.]com/2/files/upload
その上で以下のユーザ情報を平文でアップロードします。
- %temp%フォルダのパス(「\」を「+」に置換したもの)
- 感染端末のProcessorId
- 感染端末のマザーボードのSerialNumber
3. コマンドの受信
以下にPOSTする際、リクエスト内の「path」に「/<Victim ID>/<Victim ID>.cfg」を指定し、バックドアコマンドを受信します。実行可能な処理は以下の通りです。
hxxp://content.dropboxapi[.]com/2/files/download
- コマンド受信間隔の変更
- 暗号化されたDLLをダウンロード・TEAで復号してメモリ上で実行
- 任意コマンドの実行
ケース3: 2022年6~7月に観測した事例
次の事例は2022年6~7月ごろに観測したもので、同じく日本の学術機関の研究者を対象としていました。本事例では、ドロッパ―の「PULINK」と、同じくDropbox APIを悪用するマルウェア「SHELLBOX」というマルウェアが新たに使用されていました。本事例では、対象ユーザ名を含むISOファイルが見つかっていることから、おそらく攻撃者はメール経由で対象ユーザにISOファイルをダウンロードさせて感染を試みたと考えられます。
ISOには、2重拡張子のEXEファイルと3つのDLL (MSVCR100.DLLは無害)、そしてデコイドキュメントが含まれていました。EXEファイルは、アイコンがWordであり、標的となっているユーザの名前が含まれていることから、このファイルを最初に開かせるように誘導されたと考えられます。このEXEファイルの実態は、Microsoft社の正規Wordアプリケーションであり無害ですが、同階層の「wwlib.dll」をDLL Side-Loadingによって読み込んでしまう仕様になっていたため、EXEファイルの実行により、次のようなフローでマルウェアの活動が開始される仕組みになっていました。
ローダ(DULLOAD)
まず始めに読み込まれるDLLファイル「wwlib.dll」は、C++/CLRで書かれたシンプルなローダで、同階層に存在する「Wordcnv.dll」を読み込み、エクスポートされている以下のメソッドを呼び出すように設計されていました。
MS_word.release_file
ローダ(PULINK)
呼び出された「Wordcnv.dll」内のメソッドには、後述するペイロードをドロップ・インストールする処理が記述されていました。この処理では、DLLに埋め込まれた2つのリソースデータをAES128-CBCで復号し、以下に「igfxxe.exe」と「igfx.dll」というファイル名でドロップします。
%APPDATA%\Microsoft\Intel
この時、AESの鍵およびIVは以下手順で生成されます。
- ハードコードされた文字列をMD5ハッシュ化
- 大文字のHEX文字列に変換
- ステップ2で生成した文字列をUTF-8でエンコード(→ AES鍵となる)
- ステップ2で生成した文字列の9文字目以降の16文字を切り出しUTF-8でエンコード(→ IVとなる)
その後、ドロップした2ファイルをコマンドラインに含む以下のようなショートカットファイルをスタートアップフォルダ配下に作成することで永続化を図ります。
%appdata%\Microsoft\Intel\igfxxe.exe run %appdata%\Microsoft\Intel\igfx.dll 0 C:\AppData\Local\Intel\Games\123;
このコマンドラインがどのように永続化につながるのか理解するためには、「igfxxe.exe」のコードを読む必要があります。「igfxxe.exe」は、Intel社が提供する正規アプリケーション「GfxDownloadWrapper.exe」がリネームされたものでした。このEXEファイルを解析すると、次のように引数で渡されたDLLの以下の特定のエクスポート関数を呼び出す仕組みになっていることがわかりました。なお、この手法は、2020年の時点でセキュリティコミュニティのリサーチャによってすでに報告されていました。
ApplyRecommendedSettings(今回の場合)
SHELLBOX
ドロップされた2つのファイルのうち最終的に呼び出される「igfx.dll」は、C#で記述されたDropbox APIを悪用したステージャでした。今までと同様に、類似のマルウェアが見つかっていないことから、新たに「SHELLBOX」と名付けました。SHELLBOXが他2種類のDropbox APIベースのバックドアと異なる点として、Dropboxのアクセスに必要なトークンを取得する工程を複雑化し、リサーチャによる追加調査を難しくした点が挙げられます。SHELLBOXには、Access TokenおよびRefresh Tokenはハードコードされておらず、まずはマルウェアにハードコードされているGitHubリポジトリのURLからAccess TokenがホストされているサーバのURLを取得しようと試みます。本事例で観測した検体には、以下のURLがハードコードされていました。
hxxps://github[.]com/lettermaker/topsuggestions/blob/main/README.md
指定されたURLをダウンロードした後、正規表現による文字列検索により暗号化された文字列を取得し、PULINKで使用されたAESの復号ロジックと同じロジックで復号します。調査時(2022年11月ごろ)には、指定されたGitHub上のファイルには次のような文字列が埋め込まれており、復号すると、以下のURLが復号されることを確認しました。
hxxp://45[.]32[.]13[.]214/readme_v1.1.txt
残念ながら、復号された2段目のURLは調査時にはすでにアクセス不能となっており、コンテンツを取得することができませんでした。しかしながら、SHELLBOXのコードを読むと、このURLには同様の方法でBase64とAESで暗号化されたDropboxのAccess Tokenがホストされていたと推測できます。
これらの処理が完了すると、Dropbox APIのリクエストの「path」に「/d1/ml」を指定して、AESで暗号化された.NETアセンブリをダウンロードし、今までと同じロジックで復号し、Assembly.Loadによってメモリ上で実行されます。
悪用されたGitHubアカウント
本事例で観測したGitHubアカウント(lettermaker)について調査したところ、2022年6月ごろから活動していたことがわかりました。
リポジトリは1つしか存在せず、このキャンペーン用に作成したものと考えられます。また、暗号化されたURLが埋め込まれていたリポジトリの過去のコミットを調査すると、6月時点ではURLのパスが異なっていたこともわかりました。
さらに当該リポジトリのコミットログを調査したところ、攻撃者はUTC+9の環境で作業していたことがわかりました。ただし、このアーティファクトは偽装も容易なため、偽旗の可能性も考えられる点は留意しておく必要があります。
帰属
Earth Yakoの帰属に関する整理と考察
2023年1月時点でトレンドマイクロが確認しているEarth Yakoの特徴を整理します。
1. 技術的観点からの考察
トレンドマイクロでは用いられたマルウェアのコード上の特徴や技術的手法の観点から、Earth Yakoが以下の既存攻撃グループと関連する可能性を推測しています。ただし、関連はいずれも一部の手法や技術的な特徴が一致、もしくは共通している範囲にとどまっています。そのため、Earth Yakoが以下の攻撃グループに関連すると断言できるものではないと考えます。
Darkhotel
「Darkhotel」(別名: DUBNIUM)は韓国に帰属するとされる攻撃グループで、過去にも度々日本の組織を対象とした攻撃が観測されています。Earth Yakoが初期侵入手法としてスピアフィッシングメールとそれに添付されたLNKファイルを用いる点は、過去に確認されたDarkhotelの手法と共通しています。
APT10
「APT10」(別名:menuPass、Stone Panda、POTASSIUM、Red Apollo、CVNX、ChessMaster)は中国が関与しているとされる攻撃グループです。APT10は特に2016年から2018年ごろにおいて日本国内の組織に対して活発に攻撃を行っていました。トレンドマイクロの解析の結果、Earth Yakoが用いるマルウェア「MIRROKEY」は、APT10が過去に用いていた一部のマルウェア(RedLeaves、ChChes)内の暗号化ルーチンと同一のコードが用いられていることを確認しています。ただし、当該ルーチンについてはAPT10などの攻撃グループ自身が開発したコードである可能性のほか、公開された既存のコードから流用された可能性なども考えられます。そのため、帰属を示す強い特徴とは必ずしも言えないと考えます。
APT29
「APT29」(別名: IRON RITUAL, IRON HEMLOCK, NobleBaron, Dark Halo, StellarParticle, NOBELIUM, UNC2452, YTTRIUM, The Dukes, Cozy Bear, CozyDuke)はロシアに関連するとされる攻撃グループで、主に欧米の政府関連組織を対象とした攻撃を行っていることが知られています。APT29は2022年において、Earth Yakoと同様に初期侵入手法としてISOファイルやLNKファイルを用いた不正URLへの誘導を行っていました。また、マルウェアのC&CサーバとしてDropboxやそのAPIを悪用することも報告されています(参考:5、6)。ただし、報告されているAPT29に関連するとされるマルウェアのコード上の特徴は、トレンドマイクロが確認しているEarth Yako関連のマルウェア(TRANSBOX、PLUGBOX、SHELLBOX)とは異なっています。
おわりに
Earth Yakoは2022年以降、これまで確認されていなかった複数のマルウェアを用いて、活発な攻撃を行っています。攻撃対象は時期により異なるものの、共通して日本国内の学術機関・シンクタンク、またこれらに関連する関係者個人を対象としていると考えられます。このような攻撃については2022年11月、警察庁・内閣サイバーセキュリティセンター(NISC)からも注意喚起が行われています。企業など組織におけるセキュリティ施策と比べて、比較的防御が緩いと考えられる個人が攻撃対象とされる点は、近年のAPT・標的型攻撃の特徴の一つであり、Earth Yakoも同様のアプローチを行っているものと考えます。Earth Yakoが経済安全保障やエネルギーといった、国際情勢下における重要トピックに連動して、機動的に関心領域や攻撃対象を変化させている点も重要です。APT・標的型攻撃では、特定地域・特定業種に対して継続的に攻撃を行うグループのほか、Earth Yakoと同様に情勢に応じて攻撃対象や手法を変化させながら活動する攻撃グループが複数確認されています。そのため、サイバー攻撃の被害を低減するには、特定の手法・マルウェアや攻撃グループのみに着目するのではなく、より広範な情報収集を行い、監視・対策、またアタックサーフェスの点検を行う必要があると考えます。Earth Yakoによるものと思われる攻撃は、2023年1月現在も継続していると考えられるため、引き続き警戒が必要と考えます。
調査/執筆:原 弘明(APT Infra)、東 結香(アプライドセキュリティラボ)、サイバーセキュリティ・イノベーション研究所 スレット・インテリジェンス・センター