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 Security、WildFireサービスが防止します。
関連する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のビルトインの実装)クラスの実装なので、デフォルト機能の拡張やオーバーライドが可能です。そのために次のリダイレクト ルールが追加されています。
- URLにhttps://openai.com/blog/chatgpt/が含まれていればhttps://chat.openai.com/chatにリダイレクトする
- URLにbeta.openai.com/が含まれていれば1,000ms遅延させてからhttps://chat.openai.com/chatにリダイレクトする
アプリのアイコン | スクリーンショット | |
アプリ名 | 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参照)。
このマルウェア サンプルで中心となる脅威は「Meterpreter」の名前で知られるもので、Metasploitフレームワークを使って作成されています。
初期のJavaベースのAndroid用Meterpreterステージャーのソースコードは、Rapid7のGitHubリポジトリから確認できます。その主な機能はPayloadクラス内に実装されています。PayloadクラスのstartメソッドはMainServiceクラスから呼び出されます。このMainServiceクラスは以下のいずれかの方法で起動されます。
- MainActivityクラスによって起動する
- デバイスのブート シーケンス終了時にMainBroadcastReceiverクラスによって自動的に起動する
Payloadクラスのmainメソッドは以下の一連の動作を実行します。
- byte配列 configBytes (図2)に格納されているハードコードされたエクスプロイト構成をパースする
- 注: これは一切難読化されていない(たとえばTCPやHTTPのリモート ホスト アドレスやポートが平文で見える)
- PowerManagerのシステム サービス機能であるpartial wake lock機能を使い、AndroidデバイスのCPU(中央処理装置)をオンのままにする
- 要求された場合はアイコンのアプリを非表示にする
- マルウェア作者が管理するリモート ホストへのソケット接続を確立する
- 接続が成功した時点で第2段階のペイロードをダウンロードし、すべての機能を実装する(dump_smsコマンドなど)
今回取り上げたAPKのマルウェア サンプルの場合、以下の一連のオペレーションによりこのMeterpreterペイロードが起動します。
- AndroidManifest.xmlファイルで宣言されているとおりBOOT_COMPLETEDアクションを受けてcom.dominapp.supergpt.eluad.Vojndというサービスが開始する
- com.dominapp.supergpt.eluad.C2094eという名前のスレッドが生成されて実行される
- com.dominapp.supergpt.eluad.Dapjsというパッケージ クラスのmainメソッドが呼び出される
この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参照)。
これに対し、正規アプリは汎用的な証明書で電子署名されています。
SMSから有料情報サービスの電話番号へ
べつのAPKマルウェア サンプルのクラスターも見つかりました。一見、このマルウェアはChatGPTの説明を含む以下のWebページ(図4)を提示しているだけに見えますが、その裏にじつは不吉な意図が隠されています。
さらにこれらの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にまとめます。
パッケージ名 |
|
|
MainActivity |
|
|
バージョン名(コード) | chatgpt (183) | |
Androidのバージョン | 最低要件: API level 18 (Android 4.3) | |
ターゲット: API level 30 (Android 11) | ||
タグ |
|
|
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 SecurityやAdvanced 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 |
|
APKマルウェア サンプル Type II |
バッチ1
|
バッチ2
|
|
URL |
|
証明書のサムプリント(SHA-1) |
|
MITRE ATT&CKによるTTP (戦術・技術・手順)
ID | 技術 | 説明 |
T1582 | SMS Control | APKマルウェア サンプルは、タイの有料情報サービスの電話番号にSMSを送信できます。 |
T1623 | Command and Scripting Interpreter | APKマルウェア サンプルはMeterpreterシェルへのアクセスを提供できます。 |
追加リソース
- ChatGPT Malware: A New Threat in Cybersecurity, Sangfor Technologies
- Into Android Meterpreter and how the malware launches it — part 2, Medium
- ChatGPT-Themed Scam Attacks Are on the Rise, Unit 42, Palo Alto Networks