マルウェア
海賊版ソフト配布サイトから拡散するマルウェア「CopperStealer」の新型亜種
トレンドマイクロは、情報窃取型マルウェア「CopperStealer」の新型亜種を発見しました。
トレンドマイクロは、情報窃取型マルウェア「CopperStealer」の新型亜種を発見しました。検体を解析したところ、前回の攻撃キャンペーンとの関連性が見出されました。具体的に、前回のバージョンと比較すると、今回の新型亜種はコードの一部を流用している他、下記の点で類似した機能を備えていることが分かりました。
- 同じ難読化方式を使用
- 同じ鍵を使用してDES(Data Encryption Standard)によるデータ暗号化を行う
- 同じ名前のエクスポート関数をDLLに定義(CopperStealerの後期バージョンが該当)
- 窃取した情報をメッセンジャーアプリ「Telegram」のチャネルに流出させる(CopperStealerの後期バージョンが該当)
- アプリケーション「MiniThunderPlatform」を使用
第一段階:難読化
CopperStealerのバイナリは暗号化され、正規アプリケーションに追加する形で格納されていることが調査によって判明しました。正規アプリケーションのエントリ部分もシェルコードで置き換えられていました。このシェルコードは前回報告した検体と同様、ペイロードへのオフセット、およびXOR復号鍵をファイルヘッダーから読み込みます。
上図に示す0x001eb1c0の10進数値は2011584であり、この値がXORの復号鍵であると同時に、ペイロードへのオフセットとしても使用されます。この方式は、今回調査した全ての検体で使用されていました。下記のスクリーンショットは暗号化されたデータの先頭部を示します。復号にはXOR関数を使用し、その鍵として上述したオフセットと同じ10進数値が用いられます。
上述の暗号化された部分を復号した結果が後述する「第二段階」に相当します。その内容はUPX「Ultimate Packer for Executables」のDLLパッケージであり、エクスポート関数「Hello World」が定義されています。なお、CopperStealerの古いバージョンでの当該関数名は「Workln」でしたが、今回発見された検体も含め、後期バージョンでは「HelloWorld」に変更されています。
第二段階:ドロッパ
第二段階のコードには、内部的に「A」「B」の名前で定義された2つの実行可能ファイル(7-Zipで圧縮されている)を抱えるドロッパであることが分かりました。2つのリソースはそれぞれ「build」、「shrdp」の名前で標的環境にドロップされ、実行されます。「build」は主にブラウザ情報の窃取、「shrdp」はリモートデスクトップ機能を提供するコンポーネントと見なして、詳細な動作を調査しました。
第一コンポーネント:ブラウザ情報の窃取
このコンポーネントは、「第一段階」で解説した方式と同様のペイロード暗号化技術と関数名を使用します。本コンポーネントは、まずカレントユーザのCertificatesフォルダに、下記のサムプリントを持つ証明書をインストールします。
6c0ce2dd0584c47cac18839f14055f19fa270cdd
別の報告でも、これと同じ証明書が「侵入の痕跡(IoC:Indicators of Compromise)」の1つとして記載され、CopperStealerと関連付けられています。
続いて、本コンポーネントのブラウザ情報窃取ツールは、レジストリ「Software\\Microsoft\\Cryptography」の「MachineGuid」値を文字列として取得します。この文字列は、窃取した全ブラウザ情報を格納するディレクトリ名として使用されます。続いて、下記に示すブラウザのクッキー情報を検索、窃取します。
- Brave-Browser
- Chrome
- Chromium
- Edge
- Firefox
- Opera
- Yandex
Chromiumベースのブラウザは、クッキー情報を暗号化して保存します。そのため、本情報窃取ツールは、下記ファイルを参照し、os_cryptセクションのencrypted_key値を取得します。
%APPDATA%\Local\Google\Chrome\User Data\Local State
情報窃取ツールは、上記で取得した値を復号し、さらにそれを別の方式で暗号化して保存します。別の暗号化方式とは、平文に対してまずbase64エンコード、次に鍵「loadfa1d」、初期ベクトル「unsigned」によるDES暗号化を行い、最後にbase64エンコードを再度かけたものです。これによって得られた文字列は下記ファイルに保存されます。
%APPDATA%\Local\Google\Chrome\User Data\History
この後、情報窃取ツールは、先に取得したMachineGuid名のディレクトリ配下に「browsers」、「cookies」という名前のディレクトリを作成した上で、データの窃取を開始します。窃取したデータは、内容に応じて、作成した2つのディレクトリのいずれかに保存します。この際のファイル名は、下記の通り、窃取したデータ内容を説明する形で付与されています。
- passwords.txt
- passwords_urls.txt
- _cookie.txt
- cookies_urls.txt
- CC.txt
- chrome_autofill.txt
- _token.txt
- outlook.txt
- thunderbird.txt
- eventlog.txt
今回の情報窃取ツールが窃取するデータは、ブラウザ情報だけでなくメッセンジャー・プラットフォームのTelegram、Discord、Elements、ゲーム配布サービスのSteam、E-mailクライアントのOutlookやThunderbirdのユーザ情報も含まれます。重要なファイルは、設定情報も含めてコピーした上で、コマンド・コントロール(C&C)サーバに転送します。
- Telegram:情報窃取ツールは、セッション、メッセージ、画像の格納先フォルダ「tdata」を検索
- Discord:ファイル「userDataCache.json」を検索
- Elements:メッセンジャーアプリで用いるアクセストークンなどの格納先フォルダ「IndexDB」を検索
- Steam:フォーラムで挙がっている複数のディレクトリからファイル「config」を検索
ブラウザ「Firefox」は、ログイン情報をファイル「logins.json」に暗号化して保存します。情報窃取ツールのリソースの中には、このlogins.jsonを解析して結果をコマンドラインに出力するユーティリティが32ビット用(FFNSS332)と64ビット用(FFNSS364)の双方について格納されています。この他にも、窃取した全データを7-Zipで1つのアーカイブに圧縮保存するファイル「DLL7Z」と「EXE7Z」がリソース中に含まれていました。
情報窃取ツールは、Windowsイベント用コマンドライン・ユーティリティ(wevtutil)を使用して、イベント番号6005(イベントログサービス開始)と6006(イベントログサービス終了)が発生した日付の一覧をeventlog.txtに保存します。次に、窃取した情報を格納するディレクトリ全体をパスワード付きの7-Zipで圧縮(7z.dllと7z.exeはリソースに含まれている)します。この際のパスワードは、md5[コピー対象のディレクトリ名]です。最後に、圧縮ファイルを専用のTelegramチャネルにアップロードした上で、アップロードに成功した旨のメッセージを通知用チャネルに送信します。
第二コンポーネント:リモートデスクトップ
第一コンポーネント同様、第二コンポーネントも、「第一段階」で解説したペイロード暗号化技術とエクスポート関数名を使用します。
本コンポーネントは、まずテキスト保存ツール「Pastebin」から、暗号化された状態のC&Cサーバアドレスを取得して復号します。復号処理は、まずbase64デコードを行い、次に鍵「taskhost」、初期ベクトル「winlogon」によるDES復号を行います。この手順は、前回行ったCopperStealerの分析結果と全く同様です。さらに、第二コンポーネントは、端末識別子(第一コンポーネントで使用した「MachineGuid」値)を取得した上で、リモートデスクトップ関連タスクの実施に必要なクエリ情報を、C&Cサーバアドレスに対して定期的に送信します。
以上の分析結果を踏まえ、Pastebin上でC&Cサーバアドレスを保存しているアカウントについて調査したところ、当該アカウント名は「Javalinkcrash」であり、保存しているテキストはC&Cアドレス1件のみでした。統計によると、C&Cアドレスが保存されたのは3月のことであり、本記事執筆時点で、その参照回数は23,000を上回っていました。この回数は、今回のCopperStealerに感染した被害者数の推定値と見なせる可能性があります。
本コンポーネントが行うリモートデスクトップ関連のタスクは、「install」と「killme」の2種です。まず、「install」では、下記の手続きを実行します。
- パスワードとユーザ名が同一の新規アカウントを端末に追加する。
- 当該ユーザを、管理者グループ、およびリモートデスクトップユーザグループに追加する。
- 当該ユーザがログイン画面に表示されなくなるように、レジストリ「\\Winlogon\\SpecialAccounts\\UserList」を修正する。
- ファイアウォールを無効化する。
- リモートデスクトップ通信を有効化する。
- ネットワークレベル認証を無効化する。
- リモートデスクトップのラッパー(リソース上の名前は「SHRDP」)を抽出してインストールする。本ラッパーは、rdpwrapプロジェクトで配布されるものであり、インストール後に、対象端末でリモートデスクトップ機能が有効になる。
- OpenVPN(ドライバと証明書、リソースに格納されたOEMVISTAxxx、TAPxxxおよびOP)を抽出してインストールする。
- MiniThunderPlatform(リソース上の名前は「THUNDERFW」)を抽出してインストールする。本ユーティリティは、前回のCopperStealerに関する分析でも取り上げた。
- n2n(リソース上の名前は「EDGE」)を抽出してインストールする。本ツールは仮想ネットワークを作成する。(起動パラメータとして、-k:暗号用秘密鍵、-a:プライベートIPアドレス、-l:スーパーノードのIPおよびポート番号があり、これらの値をC&Cサーバから受け取って起動時に指定する)
タスク「killme」は、起動しているプロセスの停止、ファイルの削除、またはユーザの削除を行います。その対象は、先の「install」で始動、ドロップ、または追加されたものが該当します。リモートデスクトップ関連のファイルは、全てリソース内に予め準備され、第二コンポーネントは単にそれを抽出してインストールします。
第二コンポーネントは、ドロップしたファイルがWindows Defenderによって検知されるのを防ぐため、スキャン対象外リストにフォルダの追加を行います。
感染経路
前回のCopperStealerに関する分析結果と同様、新型亜種の感染経路は、偽海賊版ソフトの配布サイトから始まります。これらのWebサイトでは、通常、ユーザが期待する海賊版ソフトのダウンロード用ボタンとセットアップ用ボタンの2つが表示されます。ユーザがそのどちらをクリックしても、リダイレクトの連鎖が始まり、さらに別のダウンロードボタンを押す画面に誘導されます。このボタンを押下すると、ダウンロードの開始を示唆する画面が表示され、ファイルを端末に保存するダイアログが表示されます。
ダウンロード直後にセキュリティソリューションに検知されるのを防ぐ目的から、通常、ダウンロードしたアーカイブには、パスワードが記載されたテキストファイルと、そのパスワードで暗号化した別のアーカイブが含まれます。別のアーカイブの中身は実行ファイルであり、今回の事例では、CopperStealerとVidar Stealerの2種が含まれていました。
その他の発見事項
今回の調査では、マルウェア本体だけでなく、CopperStealerのC&Cサーバを取りまくインフラ構成にも変更が入っていることが判明しました。前回のCopperStealerでは、通信関連技術として、ドメイン生成アルゴリズム(DGA:Domain Generation Algorithm)を駆使してC&Cドメインをランダム化したり、コンテンツデリバリーネットワーク(CDN:Contents Delivery Network)プロキシを不正使用して、C&CのIPアドレスを隠蔽するなどの手口が使用されていました。情報窃取を目論む攻撃者にとって、DGAとCDNプロキシは、通信を安定化させ、C&CドメインやIPアドレスをネットワーク保護ソリューションから隠蔽する上で役立ちます。しかし、攻撃調査チームやサービス・プロバイダが連携して、シンクホールによる対抗措置を実施した結果、以前CopperStealerが使用していたインフラ構成は寸断されました。
現在のCopperStealerは、恐らく上述の対抗措置を受けたためか、以前と異なるインフラ構成を備えています。C&Cドメインの生成にDGAは使用せず、代わりに、サードパーティ製Webページ(今回の事例ではPastebin)に、暗号化したドメインを保存します。また、CDNプロキシの代わりに、アンダーグラウンドのフォーラム上で提供されるDNS高速フラックス・サービスを採用したことが判明しました。DNS高速フラックスを用いれば、CopperStealerのC&Cドメインに割り当てられるIPアドレスは2、3時間毎に切り替わり、さらに、サーバを保護する新たなプロキシ層が追加される可能性も考えられます。これは新しい技術ではありませんが、実際にIPアドレスの切り替わりが日ごとに2回発生していることが確認されました。
検索サイト「Censys」を用いることで、DNS高速フラックス・サービスの背後に隠れているC&CサーバのIPアドレスが判明しました。まず、当該サーバでは、感染した端末(クライアントとして)とC&C通信を行うため、ポート8443が開かれていました。他にも、オープンソースのサーバ運用ツール「Vesta Control Panel(VestaCP)」によって開かれているポートが見つかりました。当該サーバの証明書を確認したところ、組織名は「Vesta Control Panel」でしたが、サブジェクト・コモンネームは本事例のC&Cドメインと異なっていました。また、当該証明書には、固有のメールアドレス「a@ya.ru」が登録されていました。このメールアドレスを検索したところ、複数のプロバイダによってホストされている、似たようなVestaCPサーバが見つかりました。こうしたサーバの一部は、フィッシングWebサイトや、本事例とは別のC&C機能に利用されていることが分かりました。以上を踏まえると、これらのサーバは、不正な目的を達成するために、防弾ホスティングサービスによって運用されている可能性が考えられます。
結論
企業や組織、ユーザが情報窃取を防ぐ上で重要なこととして、まず第一に、サードパーティWebサイトから海賊版ソフトをダウンロードしないよう注意を徹底することが挙げられます。非公式サイトで配布されているソフトウェアの中には、サイト上で公示している機能だけでなく、それとは無関係で不正なコンポーネントが混入されている場合があります。こうした偽装ソフトウェアは、さまざまな攻撃や感染に利用される可能性があります。特に、CopperStealerなどの情報窃取ツールをインストールすると、攻撃者によって機密情報が窃取され、さらに不正な活動に利用される可能性が危惧されます。
CopperStealerは情報窃取ツールとして比較的古い技術を使用し、その機能レベルもそれほど高度なものではありません。しかし、Telegramをはじめとする新しいプラットフォームを活用したり、暗号の冗長化を図るなど、攻撃者側も、通信や検知回避の手段を変化させていることがうかがえます。こうした機能や規模の大きさを踏まえると、感染によってもたらされる経済的な影響は、さらに増大すると考えられます。
ユーザは、システムに対して常に修正パッチを適用し、セキュリティソリューションを最新の状態に保つことを推奨します。また、CopperStealerなどの攻撃からシステムを守るためには、ファイアウォールやアンチウイルスを始めとする基本的なセキュリティ検知機能や保護システムを有効化しておくように、注意を徹底することが重要です。
侵入の痕跡(Indicators of Compromise、IoC)
侵入の痕跡(IoC)はこちらで確認してください。
参考記事:
• 「Websites Hosting Fake Cracks Spread Updated CopperStealer Malware」
By: Joseph C Chen, Jaromir Horejsi
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)