マルウェア
有料定期購読に無断で申し込むAndroid向け不正アプリ「Joker」の攻撃手口を解説
JokerはAndroid端末を継続的に狙う最も古くから存在するマルウェアファミリの1つです。攻撃者はGitHubやリポジトリを悪用することで、Jokerの新たな亜種をGoogle Play ストアに忍び込ませることに成功しています。これらの不正アプリは以前のサンプルと類似していることから、単独の攻撃活動だけでなく攻撃キャンペーン全体の一部としても利用されているとトレンドマイクロは推測しています。
Joker(別名:Bread)は、Android端末を継続的に狙う最も古くから存在するマルウェアファミリの1つです。Jokerが登場した2017年から2020年初頭にかけて、Googleは1,700個以上の感染アプリをPlay storeから削除しています。またJokerを背後で操る攻撃者は2020年後半に、セキュリティ企業「Zscaler」社が発見したような検体をGoogle Play ストアに追加でアップロードしていたことがわかっています。
トレンドマイクロが実施した以前の調査では、GitHubを利用してペイロードを隠蔽するJokerの亜種を発見しました。このときに変更されたマルウェア内のコードは回避技術として機能します。攻撃者はGitHubやリポジトリを悪用することで、Googleが不正アプリの取り締まりを一貫して実施しているにもかかわらず、Jokerの新たな亜種をGoogle Play ストアに忍び込ませることに成功しています。
これらの不正アプリは以前の検体と類似していることから、単独の攻撃活動だけでなく攻撃キャンペーン全体の一部としても利用されているとトレンドマイクロは推測しています。
■ Jokerに関連する新たな不正アプリ
以下に示すのは、Jokerに関連する新たな不正アプリのアプリケーションIDです。トレンドマイクロは今回の調査結果をGoogleに報告し、これらの不正アプリがPlay store上から削除されているのを確認しました。
- パッケージ名(アプリ名)
- com.daynight.keyboard.wallpaper (Keyboard Wallpaper)
- com.pip.editor.camera2021 (PIP Photo Maker 2021)
- com.light.super.flashlight (Flashlight)
- com.super.color.hairdryer (Sound Prank Hair Clipper, Fart, Crack Screen Prank)
- com.super.star.ringtones (Pop Ringtones)
- org.my.favorites.up.keypaper(2021 Keyboard and Wallpaper)
- com.hit.camera.pip(PIP Camera)
- com.ce1ab3.app.photo.editor (Picture Editor)
- cool.girly.wallpaper (SubscribeSDK; VirusTotal内で発見)
その後の追跡調査により、Jokerに関連する不正アプリをさらに発見しました。
- com.photo.modify.editor (Picture Editor)
- com.better.camera.pip (PIP camera – Photo Editor)
- com.face.editor.photo (Photo Editor)
- com.background.wallpaper.keyboard (Keyboard Wallpaper)
トレンドマイクロが追跡調査を開始したきっかけは、弊社のJoker検出ルールと一致するものの、異なるペイロードを持つとみられる検体を確認したことです。
これらのアプリのうちの1つ(org.my.favorites.up.keypaper)の初期バージョンには不正活動が含まれていませんでした。しかし、Joker開発者は当該アプリのアップデートによって徐々に悪意のあるコードを追加していきます。このように、当初は問題の無い内容でアプリストアの審査を潜り抜けたのち、アップデートによって不正アプリに変化する手口も最近では見られています。
追加されたコードは、ドロッパーとして機能します。コードの構成要素であるサブパッケージ名、クラス名、メソッド名、ジャンクコードなどは厳重に難読化されています。各文字列はAES + Base64で暗号化されています。
アプリが実行されているかどうかをサンドボックス内で確認した後、この不正アプリはAPKファイル内のassets/settings.binから初期ペイロードを復号します。復号されたペイロードはメタデータのみを収集し、assets/cache.binから読み込まれる2つ目のペイロードを復号するための秘密鍵を取得するよう遠隔操作サーバ(C&Cサーバ)に要求します。このメタデータにはインストール・リファラ情報が含まれていることから、Google Play ストアがJokerの唯一の感染経路ではないと弊社は推測しています。
当該調査時点ではC&Cサーバから秘密鍵を入手することができませんでしたが、コードの類似性から類似のアプリを発見しました。複数の亜種を比較した結果、トレンドマイクロはペイロードを読み込むドロッパーの活動が単一のものでないことを確認しました。Google Play ストア上で確認された感染アプリのいくつかのグループは、第二段階に移行せずに第一段階のダウンロードのみを利用して最終的なペイロードを取得しているのを確認しました。
■検体解析から見る「Joker」の仕組み
メインのペイロードは、「com.unite.loader.LoaderExternalClass」を侵入経路として利用します。このメソッドを以下の図3に示します。
以下は、ペイロードに用いられるメソッドの主な機能です。
メソッド名 | 機能 |
init | 初期作業 (メタデータの収集、C&Cサーバへの構成要素の要求、条件に応じた不正活動の起動)を実行および最終的なペイロードを復号する |
loadUrl | カスタマイズされたWebViewを介してURLを読み込む |
doOffer | WebViewを作成、URLを読み込む、C&Cサーバから取得したJavaScriptを実行する |
onNotificationPosted | SMS受信時の通知からOTPコードを読み込む |
onMessageReceived | Firebase経由でメッセージを受信した際にdoOfferメソッドを起動する |
onActivityCreated/ onActivityResumed/ onActivityDestroyed | WebView内のActivityのライフサイクルを取得する |
Jokerは最初に端末情報と携帯電話番号を収集します。次にC&CサーバからURLとJavaScriptを取得してActivity内にWebViewを作成します。その後、WebView内にサブスクリプション(定期購読)への申し込みを行うWebサイトのURLを読み込みます。Webサイトを読み込んだ後、JokerはJavaScriptを実行します。このJavaScriptコードは、自動でプレミアムサービスに申し込みするために使用されます。
この他にもJokerは、デバッグのために「autopilot.js」というローカルファイルを読み込もうと試みます。
興味深いことに、トレンドマイクロはマルウェアやURLを分析する無料オンラインスキャンサービス「VirusTotal」からSubscribeSDK (cool.girly.wallpaper)というアプリを発見しました。このアプリには「autopilot.js」ファイルが含まれているなど、先ほど紹介したJokerのアプリと高い類似性を持っており、機能的視点からデバッグ用のテストアプリと考えられます。
この「autopilot.js」ファイルには、プレミアムサービスに利用される数百ものターゲットURLが含まれています。これらのWebサイトには、様々な言語(英語、ドイツ語、ポルトガル語、スペイン語、アラビア語、タイ語など)が使用されていることから、様々な地域を起源としていると考えられます。
このJavaScriptは、コンテンツの埋め込みや自動クリックを可能にするためにWebサイトの分析や特定の要素の検索など多くの作業を行います。
定期購読の購入手続きを開始するためにCAPTCHA認証の手順が必要になる場合もあります。しかしJokerはこれらのセキュリティ機能を回避します。
その後にJokerは、定期購読の購入手続きを行いますが、その手順は以下のようになります。
- 携帯電話会社を選択する
- 携帯電話のSIMカードに対応した電話番号(Mobile Subscriber Integrated Services Digital Network, MSISDN)を入力する
- [ One-time Password ] (ワンタイムパスワード、OTP)ボタンをタップする
- OTPコードを入力する
- [ Subscribe ](定期購読の購入)ボタンをタップする
Jokerは最初に携帯電話事業者を選択します。次に、携帯電話番号を入力して[ OTP ]ボタンをタップし、OTPを取得するためのリクエストを送信します。OTPコードは通常、SMSを経由して送られてきます。Jokerは、NotificationListenerServiceコンポーネントを介して通知内容を盗み見ることで、OTPコードを読み取ります。その後、JokerはWebサイト上の入力ボックス内にOTPコードを入力します。最後に、[ Subscribe ]ボタンをタップして定期購読を有効にします。
新たに確認された検体内に含まれるすべてのコードは、ソフトウェア開発キット(SDK)となるよう継続的に巧妙化しています。また、セキュリティ機能によって検出されないよう回避技術を絶えず導入しています。これらに関連する最も古い検体は2020年3月に登場しました。
「autopilot.js」ファイル内では、コードに対する中国語で書かれたコメントが確認されました。さらに2019年に発見された検体内では、C&Cサーバパネルのユーザ・インターフェース内やボットのコードに対するコメントの一部でも中国語で書かれたテキストが見つかっています。これはもしかすると、Jokerを背後で操る攻撃者に関する何らかの手がかりになるかもしれません。
■結論
今回新たに確認された検体と以前の検体を比較した結果、これらのJokerアプリが単独の攻撃活動だけでなく攻撃キャンペーン全体の一部としても利用されていることがその類似性を通して見て取れます。しかしマルウェア開発者は通常、短期間にコードをリファクタリングしても利点がないため、今回新たに確認された検体の多くは同一のJoker開発者が作成したものでない可能性もあります。
Jokerが継続的に取り入れている攻撃手法は、Joker開発者を駆り立てる動機について考えさせます。なぜJokerを背後で操る攻撃者は、サブスクリプション企業を支援するような攻撃活動を続けているのでしょう。定期購読を販売するWebサイトには紹介プログラムがないため、Androidユーザに無断で定期購読を購入させたところでJoker開発者は恩恵を受けることはないと考えられます。マルウェア開発者の中にはGoogleによって自身の不正アプリが検出されてからその活動を停止した者もいます。Jokerを背後で操る攻撃者は、何度削除されてもGoogle Play ストア上にJokerを設置するためにアップロードを繰り返していることから、おそらくこの手口から利益を得る方法があるとトレンドマイクロは考えています。
また、定期購読を無断で購入するこれらのアプリは、サービスプロバイダのWebサイトの安全性についても懸念を抱かせます。ユーザの中には、契約内容を申込者に確認していないため、これらに関与しているサービス事業者にも責任があると訴える人もいます。これらのWebサイトには検証機能が備わっていますが、簡素である場合、悪用される可能性があります。
このように、Jokerを背後で操る攻撃者は常に新たな手口を模索し続けているため、セキュリティリサーチャ、法人組織のセキュリティ担当者、Androidユーザは、マルウェア対策に常に注意を払う必要があります。
■被害に遭わないためには
セキュリティリサーチャが何百ものJokerアプリの正体を明らかにするにつれて、このマルウェアはすぐに新たなアプリという形でGoogle Play ストア上にその姿を見せるようになります。
Androidユーザの皆様には、以下の対策が推奨されます。
- 不要なアプリをダウンロードしない
- アプリをダウンロードする際は、公式のアプリストア(Google Play ストア)から、正規の開発者によるアプリのみダウンロードするように心がける
- スマートフォンのオペレーティングシステム(OS)とインストール済みアプリを定期的にアップデートする
■トレンドマイクロの対策
トレンドマイクロクラウド型セキュリティ技術基盤「Smart Protection Network(SPN)」の機能である「Mobile App Reputation Service(MARS)」では、主要なサンドボックスおよび機械学習技術を使用してAndroidおよびiOSの脅威に対応し、マルウェア、脆弱性攻撃、プライバシーの流出、およびアプリケーションに潜む脆弱性からユーザを保護します。個人向けiOSおよびAndroid端末向け製品「ウイルスバスターモバイル」および法人向け「Trend Micro™Mobile Security」ではMARSを利用した対策機能を実装しています。同時にデバイス所有者のデータおよびプライバシーを保護する多層セキュリティ機能と、ランサムウェア、不正なWebサイト、IDの窃取からデバイスを保護する機能も利用可能です。
参考記事:
- 「No Laughing Matter: Joker's Latest Ploy」
by Echo Duan, Zhengyu Dong, Jesse Chang, Neo Ma, Trend Micro
記事構成:岡本 勝之(セキュリティエバンジェリスト)
高橋 哲朗(スレットマーケティンググループ)
翻訳:益見 和宏(Core Technology Marketing, Trend Micro™ Research)