執筆者:Edmund Brumaghin、Earl Carter、Warren Mercer、Matthew Molyett、Matthew Olney、Paul Rascagneres、Craig Williams
注:今回の記事では、Talos が調査中の新しい脅威に関して扱っています。そのため記事の情報には不確定な部分もありますが、調査が進むにつれて更新される予定です。
はじめに
Talos はこのほど、CCleaner バージョン 5.33 に含まれていたバックドアの技術分析を公開しました。調査中、C2 サーバで保管されていたファイルを含むアーカイブを入手できましたが、ファイルの正当性は当初、疑問視されていました。ただ、ファイルが本物である可能性が非常に高いことはすぐに確認されました。その根拠としたのは、Web サーバ設定ファイルと、アーカイブ ファイル内の MySQL データベースに Talso の調査内容が反映されていたという事実でした。
C2 サーバからの配信コードを分析する中、第 2 ステージのローダ配信を通じて狙われた組織のリストが発見され、シスコも含まれていることが判明しました。9 月 12 日 ~ 16 日の 4 日間だけに絞り C2 トラッキング データベースを調べたところ、特殊な 2 次ペイロードは少なくとも 20 台の被害マシンで使用されていたことが確認されました。攻撃者が狙おうと試みたドメインの一覧を下記に示します。
興味深いことに、ドメイン リストには、他のテクノロジー大手企業と並んでシスコのドメイン(cisco.com)も含まれています。このリストを見ると、攻撃者は貴重な知的財産を狙って標的をかなり絞り込んでいた可能性も考えられます。
これらの新しい発見から、私たちの懸念が深まりました。というのも、調査内容が示唆するのは、洗練された未知の攻撃者の存在だからです。(今回のサプライ チェーン攻撃の影響を受けた場合について)Talos では以前、当該バージョンの CCleaner の削除や最新バージョンへの更新にとどまらず、バックアップからの復元やシステムの再インストールも行うよう推奨していました。これはシステム上にマルウェアが潜む可能性を徹底的に排除するための措置ですが、今回の調査結果は、こうした推奨策の重要性を裏付けています。
技術詳細
Web サーバ
C2 サーバから取得された Web ディレクトリには、感染システムとの通信を制御する一連の PHP ファイルが含まれていました。ここではシンボリック リンクを使用することで、「index.php」への全リクエストを、悪意のある PHP スクリプトが含まれた「x.php」ファイルへリダイレクトしています。
PHP ファイルの内容を分析したところ、サーバが一連のチェックを実施して、標準動作を続行すべきか、あるいはそのまま正規の Piriform の Web サイトにリダイレクトすべきか判断していることが判明しました。その際は HTTP ホスト ヘッダーの内容、要求メソッドの種類、サーバ ポートがチェックされ、感染システムから送信されるビーコンの想定内容と一致するかが確認されます。
情報の格納に必要なテーブルへの参照が PHP で指定されています。「x.php」では、変数が次のように定義されています。
攻撃者のインフラストラクチャに必要なデータベースを挿入できるように、「Init.php」で $db_table が宣言されています。そして、下に示すように、「Server」が定義されています。
Web サーバには、使用される演算とコア変数を定義する 2 番目の PHP ファイル(init.php)も含まれています。興味深いことに、この設定ではタイム ゾーンに「PRC」が指定されています。これは中国(PRC)のタイム ゾーンの接頭語です。ただし、それが信用に足る属性とは限りません。またここでは、使用されるデータベース設定のほか、変数 $x86DllName に使用されるファイル名やディレクトリの場所も指定されています。
感染システムから、下記の情報が収集されています。この情報は、後でそれらのホストの処理方法を決定するために使用されます。この情報には、OS バージョン情報、アーキテクチャ情報、ユーザの管理者権限の有無、システムに関連付けられたホスト名とドメイン名なども含まれています。
システムのプロファイル情報はかなり詳細で、インストールされているソフトウェアのリストや、マシンで実行中の全プロセスなど、具体的な情報が含まれています。当然、被害マシンでは実行中のプロセスに「CCleaner.exe」が含まれています。システム プロファイル情報は、その後 MySQL のデータベースに格納されます。
また、事前定義された要件を満たすシステムにステージ 2 のペイロードを読み込んで実行する機能も存在します。これと同様の機能は、先行するステージ 1 の分析においても必要になると判断されていました。一部のシェルコードは x86 と x64 の両方の PE 処理に関連付けらていますが、C2 サーバが実際に利用しているのは x86 の PE ロード機能のみのようです。
x64 バージョンの PE ローダに関連付けられているシェルコードは下記のとおりです。
PHP スクリプトは後に、C2 にビーコンを送るシステムに対して、3 つの値($DomainList、$IPList、$HostList)に沿って照会を行います。これにより、感染システムにステージ 2 のペイロードを送るべきかどうかを判断します。この動作については、概要レベルで再現する PHP コードを以下に示します。
ドメイン ベースのフィルタリングの使用は、これが的を絞った性質の攻撃であることを強く示唆しています。バックドアの影響を受けたシステムの数は、MySQL データベースに格納されていたビーコン情報を中心に算出されていましたが、どの感染システムにステージ 2 ペイロードを実際に送信するかは攻撃者が操作していました。ステージ 2 のペイロードを実行したシステムはなかったという報告もありましたが、これは正確ではありません。ステージ 2 ペイロードが送信されたシステムの情報を含むデータベース テーブルを分析したところ、ペイロードの影響を受けた可能性のある個別ホストが 20 個も特定されました。なお、ステージ 2 の機能については、この記事の「ステージ 2 のペイロード」のセクションで説明します。
MySQL データベース
C2 MySQL データベースには 2 つのテーブルが含まれていました。サーバに連絡した全マシンに関するテーブルと、第 2 ステージのダウンロードを受信した全マシンに関するテーブルです。どちらのテーブルにも、9 月 12 日 ~ 16 日の間に作成されたエントリを含んでいました。この期間中に 700,000 台超のマシンが C2 サーバにデータを送信し、20 台以上のマシンが第 2 ステージのペイロードを受け取りました。ここで重要なのは、サーバが攻撃活動を行っていた間も標的リストは変更可能であったこと、そして実際に変更されたことです。
侵入の際、マルウェアは定期的に C2 サーバに連絡し、感染システム上で収集した情報を送信していました。この情報には、IP アドレス、オンライン時間、ホスト名、ドメイン名、プロセス リストなどが含まれています。これらの情報は、キャンペーンの最終段階で標的を絞り込むのに使用された可能性が極めて高いものと思われます。
主な接続データは「Server」テーブルに格納されています。一例として、そのデータベース テーブルに含まれていた Talos のホストのデータを以下に示します。
さらに、侵入されたマシン同士で、インストールされているプログラムのリストが共有されていました。
プロセス リストもキャプチャされていました。
これらを組み合わせると、後にペイロードを起動し、検出されずに安定して起動していることを確認するのに必要な情報がすべて揃うことになります。
「Server」データベース テーブルとは別の 2 番目のデータベース テーブルには、ステージ 2 のペイロードを実際に配信されたシステムに関する追加の情報セットが含まれていました。このテーブルには、「Server」データベース テーブルと同様の収集情報が含まれていました。その構造を以下に示します。
この 2 番目のデータベース テーブル「OK」を分析し、重複エントリを除くと、20 個のシステム宛てにステージ 2 のペイロードが送信されたことが確認できます。Talos は、ステージ 2 のペイロードの影響が確認された企業に連絡を取り、侵入の可能性について警告しました。
「Server」データベース テーブルを分析する限り、攻撃者がインフラ内で各ターゲットにアクセスできたことは明かです。C2 サーバではフィルタリングが有効になっていましたが、攻撃者は、標的に合わせて自由にドメインを追加・削除できたと考えられます。どのようなシステムがさらなる侵入被害に遭うかは、別の観点からも説明できます。下記のスクリーンショットでは、システム プロファイル情報が格納された、データベース テーブル内の総エントリ数が表示されています。
次のスクリーンショットが示すのは、各国における影響を受けた政府系システムの数です。
同様に、侵入されたシステムのうち、「bank」という単語を含むドメインに属するものについて見てみると、次のような結果となりました。
これを見ると、このインフラと関連マルウェアを介して攻撃者が得たアクセス レベルの高さが浮き彫りになります。また、攻撃の重大度と潜在的な影響についても物語っています。
ステージ 2 のペイロード
ステージ 2 のインストーラは GeeSetup_x86.dll です。このインストーラは、OS のバージョンをチェックしてから、トロイの木馬化された 32 ビットまたは 64 ビット バージョンのツールをドロップします。x86 バージョンの場合は、トロイの木馬化された TSMSISrv.dll が使用されます。これは、バックドア付き CCleaner ツールと同様の方法を使用して VirtCDRDrv(Corel の一部である正規の実行可能ファイルの名前と同じ)をドロップします。x64 バージョンの場合は、SymEFA という名前の、トロイの木馬化された EFACli64.dll ファイルをドロップします。SymEFA は、「Symantec Endpoint」の一部である正規の実行可能ファイルからとられた名前です。ドロップされたファイルはいずれも署名なしの非正規ファイルです。
巧妙なことに、それらのファイルは正規のバイナリにパッチを当てて、マルウェアをパッケージ化します。またセットアップ プロセスでは、以下のエンコードされた PE がレジストリに登録されます。
HKLM\Software\Microsoft\Windows NT\CurrentVersion\WbemPerf\001
HKLM\Software\Microsoft\Windows NT\CurrentVersion\WbemPerf\002
HKLM\Software\Microsoft\Windows NT\CurrentVersion\WbemPerf\003
HKLM\Software\Microsoft\Windows NT\CurrentVersion\WbemPerf\004
トロイの木馬化されたバイナリの目的は、これらの PE をレジストリ上でデコードして実行することです。そして、この PE が C2 サーバへの追加のクエリを実行して、メモリ内の PE ファイルを実行します。ファイル システム上では実行可能ファイルが直接保存されないため、PE ファイルが実行されると、一部のシステムでは検出が困難になります。
レジストリ内には、トロイの木馬化されたファイルによって実行される、軽量のバックドア モジュールが存在します。このバックドアにより、github.com または wordpress.com の検索クエリに埋め込まれたデータから IP アドレスが取得され、そこからさらに PE モジュールがダウンロードされ実行されます。
コードの再利用
Talos は、Kaspersky の研究者の見解について考察しました。その内容は、Group 72 に使用されたとされるマルウェアのサンプルと重複するコードがあるというものです。これはその出自を示す証拠にはなりませんが、重複があることは確認できました。考慮すべき重要な情報であることに疑問の余地はありません。
左側:2bc2dee73f9f854fe1e0e409e1257369d9c0a1081cf5fb503264aa1bfe8aa06f(CCBkdr.dll)
右側:0375b4216334c85a4b29441a3d37e61d7797c2e1cb94b14cf6292449fb25c7b2(Missl backdoor – APT17/Group 72)
まとめ
サプライ チェーン攻撃では、攻撃速度と複雑さがますます増加しています。セキュリティ企業としては、これらの攻撃に注視せざるを得ません。残念ながら、完全に解明されていないセキュリティ イベントは軽視されることが多く、被害者を増やす危険性もあります。攻撃の全容が究明され、ユーザの保護が確認されるまで、セキュリティ企業は慎重に動く必要があります。長期間の潜伏に成功していた脅威については、特に慎重さが求められます。また、高度な技術力を持つ攻撃者と対峙する場合も同様です。そのような攻撃者は優れた手口を保有しており、検出を免れるため攻撃に細工することで知られています。
今回の事例は、相当に洗練された攻撃者が、特定のテクノロジー企業を狙ったマルウェアを作成したものと思われます。サプライ チェーン攻撃により膨大な数のマシンに攻撃し続け、標的ネットワーク内でごく一部のコンピュータにペイロードを読み込ませる狙いがあったのです。
カバレッジ
お客様がこの脅威を検出してブロックできる別の方法を以下に記載します。
Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。
CWS や WSA の Web スキャンは、悪意のある Web サイトへのアクセスを阻止し、それらの攻撃に使用されるマルウェアを検出します。
AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を組み込みます。
シスコのセキュア インターネット ゲートウェイ(SIG)である Umbrella は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。
侵入の痕跡(IOC)
今回の攻撃に関連する侵入痕跡を以下に示します。
CC 上のインストーラ:dc9b5e8aa6ec86db8af0a7aa897ca61db3e5f3d2e0942e319074db1aaccfdc83(GeeSetup_x86.dll)
トロイの木馬化された 64 ビットバイナリ:128aca58be325174f0220bd7ca6030e4e206b4378796e82da460055733bb6f4f(EFACli64.dll)
トロイの木馬化された 32 ビット バイナリ:07fb252d2e853a9b1b32f30ede411f2efbb9f01e4a7782db5eacf3f55cf34902(TSMSISrv.dll)
レジストリ内の DLL:f0d1f88c59a005312faad902528d60acbf9cd5a7b36093db8ca811f763e1292a
レジストリ キー:
- HKLM\Software\Microsoft\Windows NT\CurrentVersion\WbemPerf\001
- HKLM\Software\Microsoft\Windows NT\CurrentVersion\WbemPerf\001
- HKLM\Software\Microsoft\Windows NT\CurrentVersion\WbemPerf\001
- HKLM\Software\Microsoft\Windows NT\CurrentVersion\WbemPerf\001
- HKLM\Software\Microsoft\Windows NT\CurrentVersion\WbemPerf\HBP
ステージ 2 のペイロード(SHA256):
dc9b5e8aa6ec86db8af0a7aa897ca61db3e5f3d2e0942e319074db1aaccfdc83
本稿は 2017年9月20日に Talos Group のブログに投稿された「CCleaner Command and Control Causes Concern」の抄訳です。