This post is also available in: English (英語)
概要
「Tick」 は、主に日本と韓国を標的にしているサイバースパイ攻撃グループで、Minzen、Datper、Nioupale (別名 Daserf)、HomamDownloaderなどのカスタムマルウェアを使って攻撃キャンペーンをしかけることで知られています。パロアルトネットワークスの脅威インテリジェンス調査チーム Unit 42 はこれ以前に、2017年7月にも同グループについて報告したことがあります。
Unit 42は、Tick攻撃グループがある韓国の防衛関連企業が製造している特定の種類のセキュアUSBドライブを標的としていることを発見しました。このUSBドライブとその管理用システムは、韓国のセキュリティガイドラインに準拠した様々な機能を提供しています。
兵器化したセキュアUSBドライブを利用する手法はあまり例がなく、インターネットに接続されていないエアギャップされたシステムへの展開を狙ったものと見られます。またUnit 42の調査結果からは、同マルウェア作成時点ですでにより新しいバージョンのWindowsソフトウェアが利用可能だったにもかかわらず、これらの攻撃で利用されたマルウェアがWindows XPないしWindows Server 2003を稼働するシステムにのみ感染を広げようとするものであったことがわかっています。このことから、インターネットに接続されていないサポートの終了した古いバージョンのWindowsをインストールしたシステムを故意に標的とした様子がうかがえます。多数の国の政府、軍部、ないし防衛産業その他の産業で、システムのエアギャップは広く行われている方法です。
Unit 42が調査した限りでは、これまでこれら攻撃キャンペーンについての報告は公開されていません。また、本稿で説明するマルウェアは、Tick攻撃グループにより何年も前に利用されたことが疑われます。収集されたデータから、本マルウェアは現在活動中の脅威キャンペーンには利用されていないと考えられます。
過去に行われた攻撃の実態は、本調査の時点で全容を解明しているわけではありませんが、これまでの調査結果からは、次のような攻撃シナリオを大まかな仮説として描くことができます。
- Tick攻撃グループは、なんらかの方法でセキュアなUSBドライブを侵害し、悪意のあるファイルをロードしました。感染台数は不明で、これらのUSBドライブは韓国ITSCC (英語)による認証を受けており、安全であるものとされています。
- Tick攻撃グループは、私たちが「SymonLoader」と名付けた特定のマルウェアを作成しました。このマルウェアが、なんらかの方法で古いWindowsに到達し、継続的にこれら特定のUSBドライブの挿入を待ち受けていました。
- SymonLoaderは、Windows XPとWindows Server 2003のみを標的としています。
- SymonLoaderは、特定の種類のセキュアUSBドライブの存在を検出すると、直接ファイルシステムにアクセスするAPIを利用し、未知の悪意のあるファイルをロードしようとします。
以下の調査では、SymonLoaderについて判明した内容の概略を説明します。現時点で私たちは、侵害されたUSBドライブそのものも、同ドライブに仕掛けられたと見られる未知の悪意のあるファイルも入手していません。このため、攻撃のメカニズムを完全に説明することはできません。
また同じ理由から、USBドライブがどのような方法で侵害されたかについても判断できません。とくに、USBドライブを製造するサプライチェーンを首尾よく侵害したのか、あるいはソーシャルエンジニアリングなど他のなんらかの手段で製造後に侵害したものを配布したのかについては判明していません。
TICK攻撃グループとトロイの木馬化された正規ソフトウェア
最初にどのような方法で配信されたのかは特定していませんが、感染プロセスの概略は図 1 に示すとおりです。
図 1 感染プロセス
まず攻撃者は、トロイの木馬化したバージョンの正規ソフトウェアを使ってユーザーを騙し、ローダープログラムをインストールさせます。このローダープログラムが、弊社で「SymonLoader」と名付けたTick攻撃グループの新しいツールです。
このローダープログラムは、侵害されたシステム上で実行されると、ストレージ機器の変更があるかどうかの監視を開始します。SymonLoaderは、標的となる種類のセキュアUSBドライブを検出すると、 当該セキュアUSBデバイスに対応するデバイスドライバ経由でストレージにアクセスし、ドライブの情報フィールド内に、ある特定種類のセキュアUSBに特有の文字列があるかどうかをチェックします。その後、ローダーはUSBストレージ上のあらかじめ決められた場所にアクセスし、未知のPE(Windows実行ファイル)を展開します。
以前2017年7月のブログでも説明したとおり、Tick攻撃グループは正規のプログラムをトロイの木馬化し、HomamDownloaderと呼ばれるマルウェアを埋め込んでいました。その後、攻撃者は、トロイの木馬化した正規プログラムを添付ファイルとしてスピアフィッシングメールの標的に送信していました。これが実行されると、トロイの木馬化された正規プログラムはHomamDownloaderをドロップし、正規プログラムそのものもインストールします。正規プログラムは意図した通りに動作するため、受信者はマルウェアに気づかない可能性があります。
2017年7月のブログを公開後、これらの攻撃についての調査を継続するなかで、私たちはこの他にもトロイの木馬化された韓国語の正規プログラムがあることを発見しました(表1)。2017年7月のブログで調査したものと同様に、これらトロイの木馬化された正規プログラムもHomamDownloaderをドロップします。さらに同ブログでも見てきたとおり、HomamDownloaderはほかの悪意のあるファイルをリモートのC2サーバーからインストールすることができます。ここではpre.englandprevail.]comがC2として利用されていました。
トロイの木馬化された正規プログラム | SHA256 値 |
Movie Player インストーラー | b1bb1d5f178b064eb1d7c9cc7cadcf8b3959a940c14cee457ce3aba5795660aa |
工業用バッテリー監視ソフトウェア | 3227d1e39fc3bc842245ccdb16eeaadad3bcd298e811573b2e68ef2a7077f6f6 |
ストレージ暗号化ソフトウェア | 92e0d0346774127024c672cc7239dd269824a79e85b84c532128fd9663a0ce78 |
ファイル暗号化ソフトウェア | 33665d93ab2a0262551c61ec9a3adca2c2b8dfea34e6f3f723274d88890f6ceb |
表1 トロイの木馬化された韓国語のプログラム
調査中、興味深いサンプルが2018年1月21日に見つかりました(表2)。表1に記載したサンプル同様、本サンプルもトロイの木馬化された正規プログラムで、マルウェアをドロップします。ただしこの例では、トロイの木馬化された正規プログラムが日本語の碁のゲームでした。また2017年7月の観測ではトロイの木馬化されたプログラムはHomamDownloaderをインストールしましたが、ここでは私たちがSymonLoaderと名付けた新たなローダーをインストールします。
SymonLoaderは、特定USBドライブから隠された実行ファイルを展開して侵害されたシステム上で実行します。残念ながら、Unit 42ではその実行ファイルは入手していません。
トロイの木馬化された正規プログラム | SHA256 値 |
碁のゲーム | 8549dcbdfc6885e0e7a1521da61352ef4f084d969dd30719166b47fdb204828a |
表2 トロイの木馬化された日本語のプログラム
前回のサンプルとの差異はあるものの、私たちは本サンプルがTick攻撃グループと関連しているとみています。というのも、トロイの木馬化された日本語ゲームのシェルコードは、先に説明したトロイの木馬化された韓国語のプログラム完全に同一であったからです。さらに、SymonLoaderの一部のコードは、HomamDownloaderと同じです(図2)。Tick攻撃グループはカスタムツールを開発して継続的に更新することで知られています。つまり、こうしたコード再利用は彼らの開発方法と合致しています。
図2 SymonLoaderとHomamDownloaderでのコード再利用
セキュアUSBドライブ
SymonLoaderは最初に標的となるホストのOSバージョンをチェックします。バージョンがWindows XPかWindows Server 2003より新しければ、動作を停止します。PE ヘッダのタイムスタンプによれば、マルウェアが作成されたのは2012年9月26日です。タイムスタンプが変更されていなければ、この時点ですでにWindows 7、Windows Server 2008の両方がリリースされています。
OSバージョンの確認後、SymonLoaderは、侵害されたシステム上でストレージデバイスの変更を監視する「device monitor」という名前の隠しウィンドウを作成します。リムーバブルドライブが接続されると、マルウェアはそのドライブレターとドライブの種類をチェックします。ドライブレターがA、Bのいずれでもないこと、ドライブの種類がCDROMではないことを確認してから、マルウェアはCreateFile() API関数を呼び出して、ストレージデバイスへのハンドルを取得します。AドライブとBドライブ(通常はフロッピードライブに利用)と、ドライブの種類としてCDROMを除外していることから、本マルウェアはリムーバブルUSBドライブを標的にしているようです。
次にマルウェアはDeviceIoControl()関数に文書化されていないカスタムコントロールコード0xE2000010を引数として渡して呼び出します(図3)。このコントロールコードは、DeviceType、Function、Access、Methodという異なる4種類の値で構成されます。この例では、DeviceTypeの値0xE200は(0x0E2000010 & 0xffff0000)>>0x10によって算出されていました。Microsoftによればこの特定のDeviceType値はサードパーティベンダ用の範囲内であるようです。これが正常に動作するには、マルウェアがカスタムコントロールコードの0xE2000010を引数に指定してDeviceIoControl()関数を呼び出す前に、すでに侵害されたシステム上にそのサードパーティのドライバが存在していなければなりません。ではどのサードパーティドライバが存在していなければならないのでしょうか。そのヒントが次の関数内にありました。
図 3 DeviceIoControl()関数とカスタムIoControlCode
SymonLoaderはSCSI INQUIRY コマンドにIOCTL_SCSI_PASS_THROUGHパラメータを指定してデバイス情報を取得し、INQUIRYデータのVendorかProduct IDにある特定の文字列を検索することにより、それが標的のドライブかどうかを判断します。その文字列について調査したところ、韓国のある防衛関連企業名がその文字列に合致することがわかりました。当該企業は、軍部、警察、政府機関、公的機関などで使用される情報コミュニケーション関連セキュリティ機器を開発しています。プレス発表によれば、当該企業は韓国の IT Security Certification Center (ITSCC(英語))の策定したセキュリティ要件への準拠が認定されたセキュアなUSBストレージデバイスを製造しているとあります。韓国の特定の組織は「USBストレージメディアガイドライン」に従う必要があり、政府機関の監査に合格したデバイスのみを利用しなければなりません。たとえば、韓国統一部のガイドラインはUSBメモリとその管理用システム導入手順を第4節第1号に規定しています(図4)。
図4 USBメモリ導入手順
Google 翻訳でこの韓国語を翻訳すると次のようになります。
「本部のセキュリティ責任者は、USBメモリの導入にあたっては、『USBメモリなどの外部ストレージメディア用のセキュリティ管理ガイドライン』に従い、国家情報院にセキュリティへの適合性を検証するよう要求するものとする」
ここで取り上げたサードパーティ製のデバイスドライバは、公開されているサンプルリポジトリ上のセキュアUSBドライブインストーラ内で見つかりました。そこで確認してみたところ、たしかにカスタムコントロールコード0xE2000010がサポートされていました。このドライバはアプリケーションに特定の機能を提供していて、その中に、対応するセキュアUSBボリュームへのアクセスが含まれていました。私たちはこれを、この特定企業により製造された特定セキュアUSB製品のみで本マルウェアを機能させようとした証拠とみています。
隠しモジュールのロード
SymonLoaderは、自身がWindows XPかWindows Server 2003を稼働するシステム上にあると判断し、かつこの特定企業が製造したUSBドライブが挿入されたことを検知すると、当該USBドライブから未知の実行ファイルを展開します。この実行ファイル自体は入手できていませんが、SymonLoaderとサードパーティドライバを解析することで、そのファイルに関する情報を収集することはできます。攻撃者は、この未知の実行ファイルを暗号化し、あらかじめセキュアUSBストレージの末尾に隠しています。この隠しデータは、ReadFile()のような論理ファイル操作API関数経由ではアクセスできません。そのかわりにSymonLoaderは、ロジカルブロックアドレッシング(LBA)とSCSIコマンドを使い、リムーバブルドライブ上のデータを特定の予期された場所から物理的に読み出します。
LBAは、単純なリニアアドレッシングの仕組みです。ストレージは固定サイズのブロックに分割され、各ブロックはボリュームのサイズに応じて 0 から N-1 までの番号を持ちます。アプリケーションはSCSIコマンドによってブロック番号を指定してデータにアクセスできます。
最終的にSymonLoaderは展開したファイルをローカルディスクの一時ディレクトリ内に保存し、実行します。この手順は次のとおりです。
- ストレージの最後の論理ブロックアドレス(LBA)「N-1」をREAD CAPACITY (10)コマンドを使って取得します。
- 最後から数えて3番目の「N-3」のブロックをREAD (10) コマンドで読み出して復号します。
- 復号したデータからメインモジュールが存在する LBA の場所「X」を割り出します。
- LBAで「X」から「N-4」までのデータをREAD (10)コマンドでロードして復号します。
- 復号したファイルを %Temp%\[ランダムな文字列].tmpとして保存して実行します。
- 侵害されたシステムのホスト名とローカルタイムをLBAの「N-2」にSAVE (10) コマンドで書き込みます。
図5 はLBAの観点でみた、悪意のあるストレージのデータレイアウトを示しています。
図5 悪意のあるストレージのデータレイアウト
結論
Tick攻撃グループはトロイの木馬化した正規プログラムを使い、被害者が第一段階のマルウェア、ほとんどの場合HomamDownloaderをインストールするよう仕向けます。今回の調査では、HomamDownloaderのかわりにそれまでは知られていなかったローダーマルウェアがドロップされることをつきとめました。またこの未知のマルウェアは、おそらくは何年も前の攻撃で利用されたものと思われます。C2サーバーから追加のペイロードをダウンロードするためにインターネットへの接続が必要となるHomamLoaderと異なり、SymonLoaderは、特定の種類のセキュアなUSBドライブが侵害されたシステムに挿入されると、そこから未知の隠しペイロードを展開し、インストールしようとします。こうしたテクニックは珍しく、現在も見られるほかの攻撃での報告例はほとんどありません。
セキュアUSBドライブ上の隠しファイル自体は入手していないものの、そのファイルは高い確率で悪意があったと判断できるだけの十分な情報が得られました。侵害したセキュアUSBドライブを利用する手法はあまり例がなく、パブリックなインターネットに接続されていないエアギャップされたシステムを侵害する狙いがあるものと見られます。ある種の産業や組織では、セキュリティ上の理由からシステムのエアギャップ導入が広く行われています。くわえてそうした環境では、インターネット接続がないために更新が簡単にはできず、サポート終了のOSが利用されることになりがちです。また外部サーバーに接続できないと、ユーザーも物理ストレージデバイス、とくにUSBドライブをデータ交換に利用しがちになります。SymonLoaderと本稿で説明したセキュアUSBドライブはこのような環境に向けたものかもしれません。
パロアルトネットワークスのお客様はこれらの脅威から次の方法で保護されています。
- WildFireのサンドボックスプラットフォームは本稿に説明したサンプルをすべて悪意があるものと分類します。
- 同定されたドメインはすべて悪意のあるドメインと分類されます。
- AutoFocusをお使いのお客様は、本稿で説明したマルウェアを「Tick」のキャンペーンタグと SymonLoader、HomamDownloaderのマルウェアタグで追跡できます。
- Trapsをお使いのお客様は、同脅威から保護されています。
IoC
SYMONLOADER
トロイの木馬化された正規プログラムのSHA256値
- 8549dcbdfc6885e0e7a1521da61352ef4f084d969dd30719166b47fdb204828a
SysmonLoaderのSHA256値
- 31aea8630d5d2fcbb37a8e72fe4e096d0f2d8f05e03234645c69d7e8b59bb0e8
Mutex
SysMonitor_3A2DCB47
ファイルパス
- %ProgramFiles%\Windows NT\Accessories\Microsoft\msxml.exe
- %UserProfile%\Applications\Microsoft\msxml.exe
レジストリのエントリ
- HKLM\Software\Microsof\Windows\CurrentVersion\run\”xml” = %ProgramFiles%\Windows NT\Accessories\Microsoft\msxml.exe
- HKCU\Software\Microsof\Windows\CurrentVersion\run\”xml” = %UserProfile%\Applications\Microsoft\msxml.exe
HOMAMDOWNLOADER
トロイの木馬化された正規プログラムのSHA256値
- b1bb1d5f178b064eb1d7c9cc7cadcf8b3959a940c14cee457ce3aba5795660aa
- 3227d1e39fc3bc842245ccdb16eeaadad3bcd298e811573b2e68ef2a7077f6f6
- 92e0d0346774127024c672cc7239dd269824a79e85b84c532128fd9663a0ce78
- 33665d93ab2a0262551c61ec9a3adca2c2b8dfea34e6f3f723274d88890f6ceb
HomamDownloaderのSHA256値
- 019874898284935719dc74a6699fb822e20cdb8e3a96a7dc8ec4f625e3f1116e
- ee8d025c6fea5d9177e161dbcedb98e871baceae33b7a4a12e9f73ab62bb0e38
- f817c9826089b49d251b8a09a0e9bf9b4b468c6e2586af60e50afe48602f0bec
HomamDownloaderのC2サーバー
- pre.englandprevail[.]com