This post is also available in: English (英語)

概要

Unit 42のリサーチャーは、人気のあるChatGPTアプリになりすまそうとするAndroidプラットフォーム向けマルウェアの急増を観測しました。これらのマルウェアはOpenAIによるGPT-3.5とそれに続くGPT-4のリリースにともなって出現したもので、ChatGPTツールの利用に興味がある被害者に感染しました。

本稿では現在アクティブな2種類のマルウェア クラスターの詳細分析を行います。最初のクラスターはトロイの木馬として機能するMeterpreterで、「SuperGPT」というアプリに偽装しています。2つめのクラスターはタイ国内の有料情報サービスの電話番号にSMSメッセージを送信する「ChatGPT」というアプリで、被害者には利用料が発生し、脅威アクターがそれを着服します。

AndroidユーザーはAndroidプラットフォーム用に書かれたアプリケーションをさまざまな場所からダウンロードできます。公式ストアはGoogle Playですが、Webサイトやメール内のリンクなどほかの提供元からも自由にアプリを入手できることから、ユーザーはGoogleの入念な審査を受けていないアプリを入手しうることになります。

本稿に記載したファイルはすでにGoogleに送信済みで、Google Playストアからはブロックされる予定です。またGoogle Playサービスを搭載しているAndroid端末の場合、ユーザーはGoogle Play Protectによりこのマルウェアを含むアプリから保護されています (対象のアプリがほかの提供元からのものであっても保護の対象となります)。モバイル端末ユーザーの皆さんにはぜひ、アプリを正規ストア以外から入手するさいに生じるこうしたリスクをご認識いただければと思います。インターネット上のべつの場所から悪意のあるアプリをダウンロードしてしまう可能性は残っているのです。

Cortex XDR次世代ファイアウォールのNGFWシリーズAdvanced URL Filteringをご利用のパロアルトネットワークスのお客様は、本稿で取り上げたChatGPTをテーマとする攻撃からの保護を受けています。また悪意のある指標(ドメイン、URL、ハッシュ)は、弊社DNS SecurityWildFireサービスが防止します。

関連するUnit 42のトピック ChatGPT, Meterpreter, Scams

はじめに

OpenAIは、Chat "Generative Pre-trained Transformer"、略してChatGPTと呼ばれるツールを作成しました。このツールを支えている技術はLLM (Large Language Model: 大規模言語モデル)で、現在のバージョンは4です。

ChatGPTは2022年11月30日に初めて一般公開され、回答が正確でないこともあるものの、めざましい質問回答能力を示したとしてまたたく間に話題をさらいました。

脅威アクターは有効な攻撃ベクトルを使ったツールの拡散をつねに探っています。その時々の世界的トレンドにならって広く普及したアプリケーションになりすますことは、そうした目的を達成する最も有効な手段の1つです。たとえば攻撃者は新型コロナウイルス感染症(COVID-19)の感染拡大を利用し、Androidプラットフォーム向けに「Health and Wellness」カテゴリの悪意のあるバージョンのアプリを書いて拡散させることがよくありました。

ChatGPT関連ツールを装ったマルウェアに関する過去の報告や、以前私たちが公開した「ChatGPTをテーマにした詐欺攻撃が増加中」では、詐欺師がChatGPT人気に乗じて攻撃をしかけていることが判明しました。脅威アクターは、字面のよく似たドメイン名を使い、被害者が個人情報を渡すようにしむけたり、マルウェアをダウンロードさせたりしています。

本稿はこのトレンドに関する続報で、最近のテレメトリから見つかった複数の悪意のあるAndroidアプリの調査結果を共有します。具体的には2種類のアクティブなマルウェアが見つかっています。1つは「SuperGPT」というアプリに偽装してMeterpreterをトロイの木馬として使うもので、もう1つはタイ国内の有料情報サービスの電話番号にSMSを送信する「ChatGPT」というアプリです。

トロイの木馬としてのMeterpreter

私たちのチームは悪意のあるAndroid Package Kit (APK)サンプルを発見し、それが正規アプリをトロイの木馬化したバージョンであることを突き止めました。正規アプリは最新版のChatGPTをベースにしたAIアシスタントです。この悪意のあるバージョンのアプリによって、エクスプロイトが成功した場合、アクターはAndroidデバイスへのリモートアクセスを確立できるようになります。

表1は正規アプリ、表2は悪意のあるアプリの説明です。

アプリ名 SuperGPT - AI with GPT-4
説明文(公式内容から要約) GPT-4搭載のAIアシスタントで以下のことを行えます:

  • 電子メールを書く
  • 質問に答える
  • 記事を作成する

このほか以下の機能も備わっています。

  • 音声認識
  • 言語翻訳
パッケージ名 com.dominapp.supergpt
バージョン名(コード) 1.2 (8)
SHA-256ハッシュ d7ef8929b236a43917f351c39963916c1dd3a9c0580499443322750435245f9f
ファイル サイズ 10.85MB (11,378,336バイト)

表1. 正規アプリのメタデータ

マルウェア サンプルのMainActivityクラスには公式のChatGPTのURL (https://chat.openai.com/chat)を参照するString変数が含まれています。v3.vという名前のついたPackage-Classは、カスタマイズされたWebViewClient (AndroidOS向けアプリにWebブラウザ機能を組み込むAndroidのビルトインの実装)クラスの実装なので、デフォルト機能の拡張やオーバーライドが可能です。そのために次のリダイレクト ルールが追加されています。

  1. URLにhttps://openai.com/blog/chatgpt/が含まれていればhttps://chat.openai.com/chatにリダイレクトする
  2. URLにbeta.openai.com/が含まれていれば1,000ms遅延させてからhttps://chat.openai.com/chatにリダイレクトする
アプリのアイコン スクリーンショット

画像1はSuperGPTアプリのアイコンです。このアイコンには、マイク付きヘッドフォンをつけた青いロボットの頭部が描かれています。
ic_launcher.png (アプリのアイコン)

画像2はSuperGPTアプリのスクリーンショットです。SuperGPTのロゴが上部に表示されており、その下には「Talk with AI(AIと話そう)」というヘッダーがあります。その下には「You can ask any question in your language and receive a response with a human-like voice powered by GPT-3. (お使いの言語でどんな質問でもでき、GPT-3が人間のような声で返事をしてくれます。)」というテキストが表示されています。下部には「Get started (はじめる)」と書かれたボタンがあります。
アプリのスクリーンショット
アプリ名 SuperGPT
SHA-256ハッシュ af19ca9213a20263c30584a2bf260dcdb3b4eafa4f43af10824af781573a2314
ファイル サイズ 12.39MB (12,994,395バイト)
プログラミング言語 Kotlin
バージョン名(コード) 1.2 (8)
パッケージ名 com.dominapp.supergpt
MainActivity com.dominapp.supergpt.activities.MainActivity
Androidのバージョン 必要最低要件: API level 23 (Android 6)
ターゲット: API level 32 (Android 12L)

表2 悪意のあるAPKサンプルのメタデータ

VirusTotalによると、このサンプルは2023-03-16 02:06:04 UTCにニカラグア(NI)からVirusTotalのWebインターフェース経由でファイル名2021id.apkとして最初に提出されています。

ペイロードのインプラント(注入)

正規APKサンプルと悪性APKサンプルの違いを比較してみると、ファイルに追加されたトロイの木馬化の肝は次のSmaliコード行ということがわかります(図1参照)。

画像3はSmaliコードのスクリーンショットです。追加された悪性コードの行は太字で表示しています。
図1. 悪意のあるSmaliコード行が追加されている

このマルウェア サンプルで中心となる脅威は「Meterpreter」の名前で知られるもので、Metasploitフレームワークを使って作成されています。

初期のJavaベースのAndroid用Meterpreterステージャーのソースコードは、Rapid7のGitHubリポジトリから確認できます。その主な機能はPayloadクラス内に実装されています。PayloadクラスのstartメソッドはMainServiceクラスから呼び出されます。このMainServiceクラスは以下のいずれかの方法で起動されます。

  • MainActivityクラスによって起動する
  • デバイスのブート シーケンス終了時にMainBroadcastReceiverクラスによって自動的に起動する

Payloadクラスのmainメソッドは以下の一連の動作を実行します。

  1. byte配列 configBytes (図2)に格納されているハードコードされたエクスプロイト構成をパースする
    • 注: これは一切難読化されていない(たとえばTCPやHTTPのリモート ホスト アドレスやポートが平文で見える)
  2. PowerManagerのシステム サービス機能であるpartial wake lock機能を使い、AndroidデバイスのCPU(中央処理装置)をオンのままにする
  3. 要求された場合はアイコンのアプリを非表示にする
  4. マルウェア作者が管理するリモート ホストへのソケット接続を確立する
  5. 接続が成功した時点で第2段階のペイロードをダウンロードし、すべての機能を実装する(dump_smsコマンドなど)

今回取り上げたAPKのマルウェア サンプルの場合、以下の一連のオペレーションによりこのMeterpreterペイロードが起動します。

  1. AndroidManifest.xmlファイルで宣言されているとおりBOOT_COMPLETEDアクションを受けてcom.dominapp.supergpt.eluad.Vojndというサービスが開始する
  2. com.dominapp.supergpt.eluad.C2094eという名前のスレッドが生成されて実行される
  3. com.dominapp.supergpt.eluad.Dapjsというパッケージ クラスのmainメソッドが呼び出される
画像4はMeterpreterのペイロードに特徴的な構成を含むbyte配列のスクリーンショットです。
図2. Meterpreterペイロードに特徴的な構成を含むbyte配列

このMeterpreterのペイロードは、tcp[://]Gwdidkfkf-47070[.]portmap[.]io:47070というリモート エンドポイントに接続するよう構成されています。Portmap.ioというのはポート フォワーディングを無償で行うサービスです。

証明書の属性

このサンプルのデジタル署名に使われたコードサイニング証明書は、次の特徴を持つ攻撃者のものでした。

  • メール アドレス – lkpandey950@gmail[.]com
  • 組織のコモン ネーム (CN) – Hax4Us
  • 所在地 – インド デリー市シャーダラ (Shahdara, Delhi, India)
  • 証明書の有効期間 – 2020-07-17 11:08:41 UTC から 2047-12-02 11:08:41 UTC
  • シリアルナンバー – 1a505d53b1c75046a81acb021fdb5f99936b75db
  • SHA-1サムプリント – 65094A64233F818AEF5A4EDE90AC1D0C5A569A8B

この証明書はVirusTotal上に公開されているほかの100以上のマルウェア サンプルに添付されているものでした(図3参照)。

画像5はVirusTotalの検索クエリー画面です。各列にはDetections (検出数)、Size (サイズ)、First seen (初認日時)が記載されています。サンプルには、android、obfuscated、reflection、telephonyなどのタグが含まれています。
図3. VirusTotalの検索クエリー Androguard: "C:IN, CN:hax4us, L:shahdara, O:hax4us, ST:delhi, email:lkpandey950@gmail[.]com."の部分的結果のスナップショット
これに対し、正規アプリは汎用的な証明書で電子署名されています。

SMSから有料情報サービスの電話番号へ

べつのAPKマルウェア サンプルのクラスターも見つかりました。一見、このマルウェアはChatGPTの説明を含む以下のWebページ(図4)を提示しているだけに見えますが、その裏にじつは不吉な意図が隠されています。

画像6はChatGPTに関するWebページの記事(ChatGPT: optimizing language models for dialogue)のスクリーンショットです。ロボットの頭にChatGPTという文字が書かれた画像があり、その下でChatGPTについて詳しく説明しています。
図4. ChatGPT: Optimizing Language Models for Dialogue. (ChatGPT: 対話のための言語モデル最適化)hxxps[://]apkafe[.]com/what-is-chatgpt
画像7はOpenAIのロゴとロゴタイプです。
図5. OpenAIのロゴとロゴタイプ

さらにこれらのAPKサンプルはすべてChatGPTとの関連でよく使われるOpenAIのロゴ(図5)をアプリ アイコンとして共有することで、このアプリがAIツール ChatGPTと関連しているかのような雰囲気を醸し出しています。

これらAPKのマルウェア サンプルは、タイ(TH)の有料情報サービスの電話番号にSMSメッセージを送信できます。有料情報サービスに電話をかけた場合、何らかのサービス(たとえばユーザーによる情報提供など)が提供される代わりに電話料金が割り増しされます。この収益をサービスの提供事業者が回収するのですが、これを悪用し、詐欺や不正行為が行われることもあります。参考までに公式のAndroid Open Source Project (AOSP)コードベースには国別の有料情報サービス電話番号のリストが含まれています。

このアプリはSMSによるテキスト メッセージ送信のためにAndroidのandroid.permission.SEND_SMSという権限を要求し、"country":"thailand"への参照がContentValueとして渡されます。またこれらのサンプルは、メールやSMS、アプリ内通知など、アプリがプッシュ通知でメッセージを送れるサービス「OneSignal」を使っています。

たとえばhxxps[://]api[.]onesignal[.]com/apps/af63b434-ec50-46a0-9374-d57a383f2e03/android_params[.]jsというURLから得られた構成内容を再現すると以下のようになります。

(OneSignalのapp IDはaf63b434-ec50-46a0-9374-d57a383f2e03)

{
  "awl_list": {},
  "android_sender_id": "660194064544",
  "chnl_lst": [],
  "outcomes": {
    "direct": {
      "enabled": false
    },
    "indirect": {
      "notification_attribution": {
        "minutes_since_displayed": 60,
        "limit": 10
      },
      "enabled": false
    },
    "unattributed": {
      "enabled": false
    }
  },
  "receive_receipts_enable": false
}

android_sender_idフィールドに設定されているフォーマット済み電話番号の値は+661-9406-4544です。

これらのAPKサンプルは、汎用的な証明書によりデジタル署名されています。そのほかの主な属性は以下の表3に示したとおりです。

Validity From 2008-02-29 01:33:46 UTC

  To 2035-07-17 01:33:46 UTC

Serial number 936eacbe07f201df
Thumbprint (SHA-1) 61ED377E85D386A8DFEE6B864BD85B0BFAA5AF81

表3 Type II APKサンプルのコードサイニング証明書の属性

このサンプル クラスターは、共通する特徴が複数ある2つの小さなバッチに分けられます。バッチ1のAPKサンプルは、ハードコードされたタイの有料情報サービスの電話番号の1つにSMSのテキスト メッセージを送信し、OneSignalサービスを利用するものです。バッチ2のAPKサンプルは、それとはまたべつのハードコードされたタイの有料情報サービス番号2つに異なるSMSテキストメッセージを送信し、外部のOneSignalエンドポイントから構成を取得しません。

バッチ1に属するAPKサンプルは、バッチ2に属するAPKサンプルと比べて小さいバージョン番号をもちます。このことから、バッチ1はバッチ2よりもマルウェア開発の初期段階のものである可能性があります。この仮説はVirusTotal上でのこれらAPKサンプルの初提供日時のタイムスタンプがバッチ1は2023年2月でバッチ2が2023年3月であることからも矛盾はしません。

バッチ1

このバッチに含まれるサンプルのSHA-256ハッシュは次のとおりです。

  • 2980329fa5eaed0f5625e961572f7ae8136ca7df30cca9e9c8783c827627b692
  • 391e8f394af425f1e7edff6aea1605aa89f2fb0233c44e70cff265fc60ec3b1b
  • d1844bf3865c7d2e4745baa2496297937821171d7a3ad4412b0a4e767bc32b5e
  • d1b1813f7975b7117931477571a2476decff41f124b84cc7a2074dd00b5eba7c

このバッチのサンプルの静的属性を以下の表4にまとめます。

パッケージ名
  • com.chatgpt.tl
  • com.gg.gptchatt
  • com.chatgpt.go
  • com.chatgpt.ogothai
MainActivity
  • chatgpt.subth.MainActivity
  • tikitaka.sub.MainActivity
バージョン名(コード) chatgpt (183)
Androidのバージョン 最低要件: API level 18 (Android 4.3)
ターゲット: API level 30 (Android 11)
タグ
  • GTA_TT
  • ChatGPT
VirusTotalへの初回提供日時のタイムスタンプ (UTC) 2023-02-02 08:37:23 から 2023-02-07 03:08:33 までの間

OneSignalの構成

App ID af63b434-ec50-46a0-9374-d57a383f2e03
Androidのsender ID +661-9406-4544

表4 バッチ1のAPKサンプルの静的属性

バッチ2

このバッチに含まれるサンプルのSHA-256ハッシュは次のとおりです。

  • b787d5ef4a0c350a9f62f55907c8ef6d92bf7699b8544fabff5a263e52a2d0d1
  • be757541584cc2dc2e7adacf7a5186be07d474f06c8698a938589f86ce56ea34
  • e9bb6d04d796eb147b9d73a7df91fb9e6a99e0be8a41a61329d600a9dfe8b1ae

このバッチのサンプルの静的属性を以下の表5にまとめます。

ファイル サイズ 1.249MB (1,309,619バイト)
パッケージ名 com.chatgpt.ggmmtlan
MainActivity ggtlan.sub.MainActivity
バージョン名(コード) chatgpt (200)
Androidのバージョン 最低要件: API level 22 (Android 5.1)
ターゲット: API level 30 (Android 11)
VirusTotalへの初回提供日時のタイムスタンプ (UTC) SHA-256ハッシュ
2023-03-08 22:16:21 be757541584cc2dc2e7adacf7a5186be07d474f06c8698a938589f86ce56ea34
2023-03-10 12:00:23 e9bb6d04d796eb147b9d73a7df91fb9e6a99e0be8a41a61329d600a9dfe8b1ae
2023-03-17 10:19:14 b787d5ef4a0c350a9f62f55907c8ef6d92bf7699b8544fabff5a263e52a2d0d1

表5 バッチ2のAPKサンプルの静的属性

結論

ChatGPTをテーマとするAPKマルウェアの出現は、モバイル デバイスのセキュリティとプライバシーに対する深刻な脅威となっています。この種のマルウェアは、機微情報の窃取やユーザーの行動監視、無防備な被害者に対する甚大な金銭的損失などをもたらす懸念があります。

こうしたマルウェアから自身を守るため、モバイル端末を利用する場合は予防的対策を講じる必要があります。たとえば、信頼できるウイルス対策ソフトウェアをインストールする、サードパーティからのアプリ ダウンロードには慎重になる、セキュリティ パッチでデバイスを最新に保つなどです。

あらためて、こうしたモバイル マルウェアの脅威は、モバイル デバイスにおけるセキュリティの重要性を全面的に浮き彫りにするものといえます。警戒を怠らず積極的にデバイスを保護することが、こうした危険なマルウェアの拡散を防ぎ、潜在的な被害から自身を守ることにつながります。

Cortex XDR次世代ファイアウォールのNGFWシリーズWildFireをご利用のパロアルトネットワークスのお客様は、本稿で取り上げた攻撃からの保護を受けています。さらに、悪意のある指標(ドメイン、URL、ハッシュ)は、DNS SecurityAdvanced URL Filteringサービスにより防ぐことができます。

侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、こちらのフォームからご連絡いただくか、infojapan@paloaltonetworks.comまでメールにてご連絡いただくか、下記の電話番号までお問い合わせください(ご相談は弊社製品のお客様には限定されません)。

  • 北米フリーダイヤル: 1.866.486.4842 (+1.866.4.UNIT42)
  • 英国: +44.20.3743.3660
  • EMEA: +31.20.299.3130
  • APAC: +65.6983.8730
  • 日本: +81.50.1790.0200

IoC (侵害指標)

カテゴリー SHA-256ハッシュ
APKマルウェア サンプル Type I
  • af19ca9213a20263c30584a2bf260dcdb3b4eafa4f43af10824af781573a2314
APKマルウェア サンプル Type II

バッチ1

  • 2980329fa5eaed0f5625e961572f7ae8136ca7df30cca9e9c8783c827627b692
  • 391e8f394af425f1e7edff6aea1605aa89f2fb0233c44e70cff265fc60ec3b1b
  • d1844bf3865c7d2e4745baa2496297937821171d7a3ad4412b0a4e767bc32b5e
  • d1b1813f7975b7117931477571a2476decff41f124b84cc7a2074dd00b5eba7c

バッチ2

  • b787d5ef4a0c350a9f62f55907c8ef6d92bf7699b8544fabff5a263e52a2d0d1
  • be757541584cc2dc2e7adacf7a5186be07d474f06c8698a938589f86ce56ea34
  • e9bb6d04d796eb147b9d73a7df91fb9e6a99e0be8a41a61329d600a9dfe8b1ae
URL
  • hxxps[://]api[.]onesignal[.]com/apps/af63b434-ec50-46a0-9374-d57a383f2e03/android_params[.]js
  • tcp[://]Gwdidkfkf-47070[.]portmap[.]io
証明書のサムプリント(SHA-1)
  • 65094A64233F818AEF5A4EDE90AC1D0C5A569A8B

MITRE ATT&CKによるTTP (戦術・技術・手順)

ID 技術 説明
T1582 SMS Control APKマルウェア サンプルは、タイの有料情報サービスの電話番号にSMSを送信できます。
T1623 Command and Scripting Interpreter APKマルウェア サンプルはMeterpreterシェルへのアクセスを提供できます。

追加リソース

Enlarged Image