新たな2FA回避手法でGoogleアクセス許可ポリシーを迂回するマルウェア

ESETによる分析で、Googleの最新のSMSアクセス許可制限を回避すると同時に、SMSベースの2要素認証を迂回する新手法が明らかに

2019年3月、GoogleはAndroidアプリにおけるSMSと通話ログへのアクセス許可情報(パーミッション)の使用を制限しました。これにより、認証情報を盗むアプリは、これらのアクセス許可を悪用してSMSベースの2要素認証(2FA)メカニズムを迂回できなくなりました。

しかし今回、SMSのアクセス許可を使用せずにSMS 2FAメッセージ内のワンタイムパスワード(OTP)にアクセスして、Googleの現行の制限を回避できる悪意のあるアプリが、ESETにより発見されました。なお、この手法を使用すれば、電子メールベースの複数の2FAシステムからもOTPを入手できます。

このアプリは、トルコの暗号通貨交換所BtcTurkのアプリを装い、同サービスへのログイン情報をフィッシング詐欺の手法で詐取します。これらの悪意のあるアプリは、SMSメッセージを傍受してユーザーのアカウントやトランザクションの2FA保護を迂回するのではなく、侵入したデバイスに表示される通知からOTPを取得します。また、2FA通知を読み取るだけでなく、不正なトランザクションが行われていることを被害者に気付かせないために通知を無効化することもできます。

新しいSMSアクセス許可の制限を回避できることが確認されたマルウェアは、これが初めてです。ただし、このマルウェアのすべての形態は、Android/FakeApp.KPとしてESET製品によって検出されます。

悪意のあるアプリ

最初に分析したアプリは、2019年6月7日に開発者「BTCTurk Pro Beta」が「BTCTurk Pro Beta」という名称でGoogle Playにアップロードしたものでした。ESETがGoogleセキュリティチームに報告する以前に、50人以上のユーザーがこのアプリをインストールしていました。BtcTurkはトルコの暗号通貨交換所であり、その公式携帯アプリへのリンクは交換所のWebサイトに掲載されており、利用できるのはトルコのユーザーに限られています。

2番目に分析したアプリは、2019年6月11日に開発者「BtSoft」が「BtcTurk Pro Beta」という名称でアップロードしたものです。2つのアプリで用いられている偽装方法は非常によく似ていますが、作成した攻撃者は別人のようです。ESETがアプリを報告した2019年6月12日の時点で、インストールしたユーザー数は50人未満でした。

2番目のアプリが削除された後、同じ攻撃者が同じ機能を備えた別のアプリをアップロードしました。この時のアプリ名は「BTCTURK PRO」で、開発者名、アイコン、およびスクリーンショットは同じものが使用されていました。ESETはこのアプリを2019年6月13日に報告しました。

図1に、Google Playに掲載された最初の2つの悪意のあるアプリを示します。

最新の2FA回避手法

前のセクションで説明した2つのアプリは、インストール後によく似た手順を実行します。本セクションでは、最初のアプリ「BTCTurk Pro Beta」を例にとり、新しい2FA回避手法を説明します。

このアプリは、起動されるとNotification access(通知へのアクセス)というアクセス許可を要求します(図2参照)。このアクセス許可が付与されたアプリは、デバイスにインストールされている他のアプリによって表示される通知を読み取ること、通知を無効化すること、または通知に含まれるボタンをクリックすることが可能です。

「通知へのアクセス」は、Androidバージョン4.3(Jelly Bean)で導入されたアクセス許可です。つまり、 ほぼすべてのアクティブなAndroidデバイスがこの新しい回避手法の影響を受ける可能性があります。どちらの偽BtcTurkアプリも、実行にはAndroidバージョン5.0(KitKat)以上が必要です。したがって、Androidデバイスの約90%に影響を与える可能性があります。

ユーザーがこのアクセス許可を付与すると、アプリはBtcTurkの認証情報を要求する偽のログイン画面を表示します(図3参照)。

認証情報が入力されると、トルコ語の偽のエラーメッセージが表示されます(図4参照)。メッセージを日本語に翻訳すると次のようになります。「SMS検証システムの変更により、モバイルアプリケーションのサービスを一時的に停止しています。メンテナンス作業が終了しましたら、アプリケーションを介して通知します。ご了承ください。」

バックグラウンドでは、入力された資格情報が攻撃者のサーバーに送信されます。

悪意のあるアプリは通知へのアクセス許可を利用して、他のアプリ(SMS、メールアプリなど)から送信された通知を読み取ることができます。このアプリには、図5に示したようにキーワード「gm、yandex、mail、k9、outlook、sms、messaging」が名前に含まれているアプリからの通知のみをターゲットにするためのフィルタが設定されています。 

ターゲットになったアプリからの全ての通知内容は、攻撃者のサーバーに送信されます。ロック画面に通知を表示するために被害者が使用している設定に関係なく、攻撃者は表示内容にアクセスできます。このアプリの背後にいる攻撃者は、着信した通知を無効化し、デバイスの呼び出しモードをサイレントに設定することもできるため、不正なトランザクションが実行されていることに被害者が気付くのを阻止できます。

この手法では、2FA回避の有効性に関して限界があります。というのも、攻撃者は通知のテキストフィールドに適合するテキストにしかアクセスできないため、OTPが含まれているとは限りません。ターゲットになったアプリ名を見ると、このマルウェアを使用している攻撃者の関心がSMSおよび電子メールの2FAであることがわかります。SMSの2FAのメッセージは一般的に短く、OTPは通知メッセージに通常収まります。しかし、電子メールの2FAではメッセージの長さと形式が多様であり、攻撃者のOTPへのアクセスに影響を与える可能性があります。

急速に進化する手法

ESETは先週、トルコの暗号通貨交換所Koineksを偽装した悪意のあるアプリの分析を行いました(このアプリについてESETに注意喚起してくれた@DjoNn35に謝意を表します)。興味深いのは、この偽のKoineksアプリがSMSベースと電子メールベースの2FAを迂回するために用いている手法が同じでありながら、通知を無効化し表示させないようにする機能が搭載されていない点です。

ESETが分析したところ、本ブログ記事で分析した「BTCTurk Pro Beta」アプリと同じ攻撃者によって作成されたことが確認されました。つまり、攻撃者は現在、この手法にチューニングを加えて、SMSメッセージの窃取の「次善策」を完成させようとしていると考えられます。

対策

前述した悪意のあるアプリのいずれかをインストールし使用したと思われる場合は、直ちにアンインストールすることをお勧めします。ご自分のアカウントで不審なアクティビティが行われていないかをチェックし、パスワードを変更してください。

ESETは先月、ビットコインの価格高騰を受けてGoogle Playに数多くの暗号通貨マルウェアが出現したことについて警告する記事を公開しました。この度の発見された事実は、サイバー詐欺師たちがこの状況を利益の増加に利用する目的で、セキュリティ対策の迂回方法を模索していることを示しています。

この新たな手法、および金銭目的のAndroidマルウェア全般に対する防御策は次のとおりです。

  • 暗号通貨関連のアプリやその他の金融アプリについては、サービスの公式サイトにリンクが掲載されているアプリのみを信頼する
  • セキュリティが確保された正規のオンラインフォームであると確信できる場合に限り、機密情報を入力する
  • デバイスを常に最新の状態に保つ
  • 信頼できるモバイルセキュリティソリューションを使用して、脅威をブロックし、除去する。なお、ESETシステムはこれらの悪意のあるアプリケーションを、Android/FakeApp.KPとして検出し、ブロックします
  • 可能であれば、SMSや電子メールの代わりに、ソフトウェアベースまたはハードウェアトークンのワンタイムパスワード(OTP)ジェネレータを使用してください
  • 信頼できると判断したアプリのみを使用してください。その上で、通知へのアクセスを要求する正当な理由があるアプリに限り、アクセスを許可する

IoC(セキュリティ侵害の痕跡情報)

パッケージ名ハッシュESETの検出名
btcturk.pro.beta8C93CF8859E3ED350B7C8722E4A8F9A3Android/FakeApp.KP
com.app.btsoft.app843368F274898B9EF9CD3E952EEB16C4Android/FakeApp.KP
com.app.elipticsoft.app336CE9CDF788228A71A3757558FAA012Android/FakeApp.KP
com.koinks.mobilpro4C0B9A665A5A1F5DCCB67CC7EC18DA54Android/FakeApp.KP

MITRE ATT&CK

戦術ID名称説明
初期アクセスT1475正規アプリストアを介した悪意のあるアプリの配信Google Playでマルウェアが正規サービスを偽装します
認証情報アクセスT1411ユーザーインタフェースのスプーフィングマルウェアがフィッシングアクティビティを行い、ユーザーにログインを要求します