McAfee Mobile Researchチームは、2019年5月頃から活動が確認されている新種のAndroidマルウェアファミリーAndroid/LeifAccess.Aを発見しました。このマルウェアは、悪意ある機能の一部として、アクセシビリティサービスやOAuth認証を悪用し、ユーザのメールアドレスを利用して、複数のサードパーティアプリのアカウントを自動的に作成します。また、同様のアプローチによりGoogle Playストア上にフェイクレビューを投稿しアプリのランキングを不正操作したり、広告詐欺、自己更新、任意のリモートコードを実行することができます。
なお、フェイクレビューの対象となっているアプリの多くはGoogle Play上で配信されています。
このマルウェアは公式のアプリストアでの配布は確認されていませんが、私たちの調査の結果、ソーシャルメディア、ゲームプラットフォーム、マルバタイジング(悪意ある広告)およびコマンド&コントロール(C&C)サーバーからのAPKファイルの直接ダウンロードなどが潜在的な拡散方法として考えらます。
目次
アクセシビリティサービスを有効化させるソーシャルエンジニアリング
Android/LeifAccess.Aがインストールされた後、アイコンやショートカットは表示されません。バックグラウンドで実行され、以下のようにシステム警告をシミュレートしたり、トースト通知を表示することによって、悪意のあるコードを実行するために、アクセシビリティサービスを有効化するよう誘導します。
アクセシビリティサービス(ユーザー補助サービス)は、障害のあるユーザーをサポートするように設計されています。ただし、バンキングマルウェアやその他のモバイルの脅威にて確認されているように、アクセシビリティサービスはマルウェア作成者によって悪用され、ユーザーの操作なしに悪意のあるコードを実行する可能性があります。Androidの最近のバージョンでは、Google社はGoogle Playストア上のアクセシビリティサービス権限を持つアプリ数を制限し、悪用を最小限に抑えるために、新しく作成されたAPIに一部の機能を移行しましたが、サイバー犯罪者は依然としてそれを悪用しようとしており、ユーザーに対してこの重要な権限を有効化するよう催促します。
アクセシビリティの許可が付与されている場合、トロイの木馬は悪意のある活動を完全に実行できます。許可されていない場合でも、不正行為、ショートカットのインストール、更新などの可能なコマンドの一部を実行し、新たな攻撃の足掛かりとします。
フェイクレビュー
難読化解除された第2段階のdexファイル(fields.css)の静的分析に基づき、Android/LeifAccessはアクセシビリティサービスを悪用することでGoogle Playストアにフェイクレビューを投稿できると結論付けることができます。
ユーザーアカウントは以前にインストールされたアプリのレビューのみを書き込むことができるため、Android/LeifAccessはターゲットアプリのダウンロードとインストールを試みます。Google Playを介してダウンロードを試みますが、代替マーケットストア(APKPure)からアプリをダウンロードする場合もあります。
実例
この悪意のある動作の実例として、C&Cサーバーから受信し、難読化解除された共有プリファレンスにXML形式として保存されているパラメーターと一致するレビューをGoogle Playで見つけることができました。たとえば、アプリ「Super Clean-Phone Booster, Junk Cleaner & CPU Cooler」は、平均4.5つ星と7,000以上のレビューでランク付けされています。これらの多くは、トロイの木馬のコマンドパラメーターからコピーされたフレーズを複製している偽物です。
いくつかの偽のコメントには、複数の「いいね!」が投票されており、これもまた、このマルウェアが実行する他のコマンドに関連付けられています。
コマンドとパラメーターの復号
Android/LeifAccess.Aは、ハッシュテーブルマップを共有プリファレンスにXML形式で保存します。キーは関数名で、値はコマンドで使用されるパラメーターです。検出を回避するために、実際の関数名(プレーンテキスト)とパラメーターは難読化、暗号化、ソルト、および/または一方向ハッシュ(MD5またはSHA1)化されます。
- 値は、防御回避手法としてdeflaterおよびbase64.encondeを使用したデータ圧縮を使用して、難読化された文字列として保存されます。一部の文字列は、同じアルゴリズムで複数回難読化されます。
- キーは、サンプルの「関数名」と「パッケージ名」に対するカスタム操作の結果として、文字列のカスタムbase64によって生成されたバイト配列のMD5ダイジェストチェックサムを使用して計算されます。このマルウェアファミリには何百もの異なる亜種が存在し、それぞれが異なるパッケージ名を持っています。そのため、マルウェア作成者はパッケージ名の文字列の一意性を利用して、キー値をハッシュ化するためのソルトとして使用します。
図5のxml <String>要素には、C&Cサーバーから送信されたレビューが含まれていますが、属性「name」はハッシュテーブルキーを表しています。この例では、キー「FF69BA5F448E26DDBE8DAE70F55738F6」はコマンド「rate_p_words」に関連付けられています。
MD5は一方向関数であるため、文字列を解読することはできませんが、静的分析に基づいて、第2ステージのDEXファイルで見つかったすべてのデコードされた文字列のハッシュテーブルを再計算し、それをハッシュに関連付けることができます。
この特定のハッシュの再計算は、「rate_p_words」および「com.services.ibgpe.hflbsqqjrmlfej」を引数としてハッシュ関数を呼び出すことにより可能になりました。
同じ暗号化/難読化手法を使用して、同じハッシュテーブルに自己更新サーバーURLなどの他のパラメーターが格納されます。
このキー 「F09EA69449BA00AA9A240518E501B745」および埋め込まれた値は、次のように解釈できます。
他のコマンドは、ショートカットの作成と更新の頻度を含む付録のコマンド一覧に記載されています。
さらに、受信したコマンドは、マルウェアによって実行されたアクションログを記録するSQLite DBにローカルに保存される場合もあります。
アクセシビリティの悪用
Google Playプロテクトの無効化:
LeifAccessは、accessibilityNodeInfoを使用して、view-idリソース名でターゲットアプリを操作しようとします。たとえば、Google Playプロテクトを無効化する場合、Google Playアプリ(パッケージ名:com.android.vending)に埋め込まれた、文字列gで定義されているビューID「play_protect_settings:」へのアクセスを試みます。以下の難読化解除されたコードに示されているように、完全修飾リソースIDは「com.android.vending:id/play_protect_settings」です。次に、「android:id/switch_widget」を見つけて、デバイスのスキャンオプションの無効化を試みます。
シングルサインオンを悪用した偽アカウント作成:
このマルウェアファミリで使用されるもう1つの収益化手法は、感染したデバイスに登録されている実際のユーザーIDとアカウント名を利用して、別サービスのアカウントを作成することです。これは、多くの正規アプリがアプリ内に統合しているGoogle OAuth 2.0認証でアカウント作成とログインを実行するために、アクセシビリティサービスが悪用されています。
Android/LeifAccessは、ターゲットアプリをダウンロードしインストールして、ユーザーの操作なしにアカウントをセットアップできます。
以下の難読化解除されたコードは、Android/LeifAccessがアクセシビリティイベントを使用して別のアプリに移動し、Googleログインオプションを使用してアカウントを作成する方法を示しています。
以下は、偽アカウント作成の標的となっている、主にショッピング、デート、ソーシャルなどのカテゴリに関連するアプリケーションのパッケージ名の例です。
- android
- gits
- submarino
- zzkko
- phrendly
- client
- netshoes.app
- makemytrip
- like
- android
- joom
- android
- hotstar
- client
- intl.android.apps.poseidon
- aliexpresshd
- android
その他の悪意のあるペイロード
広告詐欺:
広告クリック機能も実装されているため、インターフェース上に広告を1つも表示せずに、感染したデバイスから広告トラフィックが要求されます。
特定のユーザーエージェントヘッダーをC&Cサーバーから受信し、不正行為を実行します。
広告ネットワークのIDは、C&Cサーバーを介して更新されます。
通常、広告を表示するアプリは、JARライブラリとして配布されている複数の広告ネットワークSDKを統合して、デバイスのロケーション、デバイスタイプ、ユーザーデータを要求します。一方、このマルウェアでは、広告ネットワークSDKパッケージはソースコードに統合されていません。Android/LeifAccessは、C&Cサーバーから受信したJSON形式のデータに基づいて、広告クリックまたは広告表示回数を増やすために、直接リンクを介して正規の広告ネットワーク形式のデータをロードします。これは、感染デバイスが、ユーザーによる正当な広告バナーのクリックをシミュレートできることを意味します。また、JARライブラリやSDKを統合しないことでアプリケーションのファイルサイズが小さく保たれています。
アドウェアのJSON構造には次のものが含まれます。
さらに、このマルウェアは、コマンドを受信した場合、C&Cサーバーによって定義された頻度で、デバイスのロック解除後に、フルスクリーンで実際の広告を表示できます。また、フローティングオーバーレイとして広告にリダイレクトするオーバーレイアイコンを表示することができます。
受信したパラメーターに基づいて、ホーム画面上に任意のショートカットを作成できます。
偽の通知:
アクセシビリティサービスを取得するため、または許可されていないOSセキュリティオプションの無効化を要求するために、マルウェアはトースト通知を起動して、特定のアクションを実行するようにユーザーを説得しようとします。
図13は、偽の通知のリストです。「dialog」属性には、トースト通知のタイトルとコンテンツを含むJSON形式のデータで「notifi_inter」属性の時間間隔(28800000ミリ秒、8時間に相当)で通知が表示されます。
「無効化」や「有効化」の文字列は、OSでの使用言語に合わせて国際化されています。
難読化解除と実行:
検出を回避するため、または防御回避の手法として、元のインストール済みアプリケーションは単なるラッパーであり、実行されるとアセットファイル「assets/fields.css」からJARファイルを復号し、リフレクションを使用して動的にメインアプリケーションにロードします。システムAPI呼び出し文字列もカスタムbase64実装を使用して難読化されています。
復号されたJARファイルを解析するためには、Android/LeifAccess.Aが使用する文字列の難読化解除が必要です。これらはすべてカスタムエンコードされています。
コマンド&コントロールサーバー:
コマンド&コントロールサーバーは、マルウェアの配布とペイロードの更新にも使用されます。ドメイン名には、正当な広告ネットワークまたはコンテンツ配信ネットワーク(CDN)に属していると思わせる文字が含まれています。
- hxxp://api.adsnativeXXX.com
- hxxp://cdn.leadcdnbXXX.com
配信とテレメトリー
配布方法:
マルウェアサンプルは、直接APKリンクとしてC&Cサーバー上にホストされており、ソーシャルメディアで配信したり、重要なセキュリティアップデートを装う悪意ある広告キャンペーンとして配信したりすることもできます。このとき、アプリ名として「SystemSecurityUpdates」を使用したり、パッケージ名は「com.services.xxxx」で始まるなどシステムアップデートのふりをします。
Android/LeifAccess.Aの亜種は、ゲーマー向けチャットプラットフォーム「Discord」を介してホストおよび配布されています。次のURLスキームで悪意のあるAPKの亜種がいくつか確認されています。
- hxxps://cdn.discordapp.com/attachments/XXXXXXXXX/XXXXXX
マルウェアに感染させるためには、ユーザーが悪意のあるAPKをダウンロードしてインストールする必要があります。これは、感染させるための前段階としてソーシャルエンジニアリングの手法が使用されることを意味します。広告を使用して潜在的な脅威について人々を怖がらせたり、「隠された機能」を追加したいゲーマーを誘い込み、攻撃者による投稿やビデオのインストール手順の指示によって、センシティブな情報へのアクセスやアクセシビリティサービスを有効化させるために、セキュリティ通知を破棄したり、セキュリティを無効させます。
結論
このユニークなマルウェアは、対象アプリをインストールし、被害者の名前でGoogle Playにフェイクレビューを投稿し、自己防衛として複数の難読化および暗号化技術と組み合わせて、サードパーティサービスに偽アカウントを作成する機能を持ち、アンチウイルス製品をインストールしていない端末上で悪意ある活動を続けていました。
このトロイの木馬の主な機能は次のとおりです。
- Google PlayまたはAPK Pureからアプリをダウンロードする
- Google Playプロテクトを無効にする
- アクセシビリティ機能を悪用して偽アカウントを作成する
- Google Playにフェイクレビューを投稿する
- メイン画面にショートカットを作成する
- バックグラウンドおよびフルスクリーンで広告を表示する
- 自己更新を行う
Android/LeifAccessは、自己防衛のための複数の手法が実装されています。悪意のある動作を暗号化および難読化することで、セキュリティアプリによる検知を回避しようとします。
ユニークなサンプルが大量に確認されているため、かなりの量のリソースがインフラ上に蓄えられ、サーバー側でのポリモーフィックな手法によるサンプルの自動生成が行われていると推測できます。
フェイクレビューを生成するモバイルボットネットを存続させるために、常に新しい亜種が展開されています。
この種のマルウェアは、ユーザーに損害を与えるだけでなく、アプリマーケットの信頼性や、誰も見ないバナーの代価を支払った広告ネットワークにも影響を与えます。
また、アプリの評判を不正に操作する市場が存在することを示唆しており、このようなサービスは、フォロワーやライクを購入するサービスと同様にソーシャルメディアでの収益化を目標としているに違いありません。
これらの不正操作は、主にレビューとランキングがユーザーが適切で安全なアプリを選択するのを阻害するため、Google Playストアのガイドラインに違反しています。偽物によりユーザーの信頼を損なう可能性があります。
ただし、この種のフェイクレビューは偽アカウントでは作成されておらず、ほとんどのスパム対策方法は正当なユーザーではなく、信頼されていない、または未検証のアカウントによって作成されたコンテンツを見つけるように設計されているため、このランキングの不正操作の特定および削除は困難なものとなります。この同じ手法は、ソーシャルメディアや他のプラットフォーム配信にも使用されることでしょう。
もし、このマルウェアファミリーの影響を受けている可能性がある場合は、https://aboutme.google.com/から自身のGoogleアカウントで書いたレビューを表示または編集できます。
このマルウェアは、McAfee Mobile SecurityによってAndroid/LeifAccess.AおよびAndroid/LeifAccess.Bとして検出されます。
付録:技術データとIOC
コマンド一覧
MITRE ATT&CKマトリックス
IoCs
- 6032c1a8b54f3daf9697a49fdd398d3ebe35f3fec3d945d6d8e9588043332969
- 032184204b50f0634ad360a2090ea9904c012cb839b5a0364a53bf261ce8414e
- 0a95e9cce637a6eb71e4c663e207146fe9cde0573265d4d93433e1242189a35c
- 533a395ed16143bbe6f258f3146ea0ea3c56f71e889ace81039800803d0b1e18
- 6755f708d75a6b8b034eae9bcb6176679d23f2dc6eb00b8656d00f8ee0ec26c1
URLs
- adsnative123[.]com
- Myapkcdn[.]in
- adsv123[.]com
References
- https://android-developers.googleblog.com/2018/12/in-reviews-we-trust-making-google-play.html
※本ページの内容は、2020年3月4日(US時間)更新の以下のMcAfee Blogの内容です。
原文:Android/LeifAccess.A is the Silent Fake Reviewer Trojan
著者:Fernando Ruiz