はじめに
Cisco Talos では 10 月 11 日に、「GPlayed」と呼ばれる Android 版の新しいトロイの木馬に関する調査結果をブログに掲載しました。記事の中では、コードのパターン、文字列やテレメトリを踏まえて、GPlayed が開発のテスト段階にあるようだとお伝えしました。ただし Talos では GPlayed の先行バージョンを発見し、それを「GPlayed バンキング」と呼んでいます。これは GPlayed の最初のバージョンと異なり、広範囲を狙ったバンキング型トロイの木馬ではありません。具体的には、ロシアの国有銀行が提供するサービス「Sberbank AutoPay」のユーザを標的とするバンキング型トロイの木馬です。
GPlayed バンキングはオリジナルの GPlayed と同様の方法で拡散されます。Google Play ストアを装いながら、起動されると実際にはマルウェアをインストールします。このことは、Android ユーザが悪意のあるアプリを区別できるようになり、かつ特定のプログラムに割り当てる権限の種類に注意する必要があることを示しています。
悪意のあるアプリケーション(左側)
GPlayed バンキングのアーキテクチャと機能
このマルウェアは、モバイル アプリケーション向けの Xamarin 環境を使用して .NET で作成されています。コードは「PlayMarket.dll」という DLL で実装されています。
GPlayed バンキングは、アプリケーションの名前にもパッケージの名前にも関係のない偽の名前でパッケージの証明書を発行します。
証明書情報
Android パッケージ名は「lola.catgirl」です。このアプリケーションでは「Play Google Market」というラベルが使用され、本物の Google アプリ ストアに似せてデザインされたアイコンがついています。アプリケーションの名前は「android.app.Application」となっています。
パッケージの権限
GPlayed バンキングでは、マニフェストで多数の権限が宣言されています。この中で特筆すべきは、BIND_DEVICE_ADMIN です。これにより、GPlayed バンキングはデバイスをほぼ全面的に制御できるようになります。
GPlayed バンキングで実際に動作する機能は、バンキング型トロイの木馬としての目的を果たすために必要なものに限られています。ただし唯一の例外は、ユーザが受信したすべての SMS メッセージをコマンド アンド コントロール(C2)に漏洩させる機能です。
「GPlayed バンキング」の詳細
GPlayed バンキングが実行されると、ユーザに権限設定の変更を要求することで、デバイスの管理者権限の取得を開始します。
権限昇格の要求
ユーザがデバイスの管理要求をキャンセルすると、最終的に管理者権限が付与されるまで、5 秒ごとに要求ダイアログが再表示されます。GPlayed バンキングにはデバイスのスクリーンをロックするコードが含まれていますが、呼び出されることは決してありません。同じことが、デバイスの管理者権限を必要とする別の機能でも起こります。
使用されていないコード
バンキング型トロイの木馬としてアクティビティを実行する上で、これらの権限はどれも不要です。
初期化プロセスにおける次の段階では、900 ~ 1,800 秒の範囲のランダムな値でタイマーを作成します。このタイマーは、トリガーされると、URL「hxxp://sub1[.]tdsworker[.]ru:6565/index_main.html」からロードされる WebView を起動します。起動された WebView は 500 という金額を注入します。標的ユーザのデジタル リテラシーを考慮すると、影響は破壊的なものになると考えられます。
オーバーレイによってスクリーンが完全に覆われるため、モバイル デバイスによっては再起動するか WebView を閉じるまで使用不能になります。ただし調査中に C2 が一度もオンラインにならなかったため、この WebView コードは特定できませんでした。
デバイスをプロックする WebView
この WebView オーバーレイは、同じ GPlayed ファミリで使用されている手口と同じです。ただし GPlayed では、アプリケーション パッケージに含まれているローカル リソースから WebView がロードされます。ここでの WebView は、偽の「Google サービス」に支払うためのクレジット カード情報を要求します。「GPlayed」と「GPlayed バンキング」の類似性を考えると、この WebView も同じような目的を持っていると考えて間違いありません。WebView コードを C2 にホストさせる形態から、パッケージに含める形態へと変更された狙いは、C2 から独立性を保つことだと考えられます。
GPlayed バンキングは WebView を作成した後、「Sberbank AutoPay(+79262000900)」サービスに「баланс」という単語(ロシア語で「残高」の意味)を SMS で送信します。返信を受け取ると、GPlayed バンキングはそれを解析して口座の残高を特定します。残高が 3,000 未満の場合は何もしません。68,000 を超える場合は 66,000 という金額を要求し、そうでない場合は利用可能な金額から 1,000 を引いた金額を要求します。
残高チェックと金額の決定
最後に、利用可能な金額が決まると、新しい WebView オブジェクトを作成し、前述のルールに従って決定された金額を要求します。
パスワード抽出コード
金融取引を完了するには確認番号が必要なため、SMS 処理プログラムを登録します。これは着信した SMS メッセージを解析し、ロシア語で「パスワード」を意味する「пароль」という単語を探します。GPlayed バンキングは該当単語を含む SMS を解析してパスワードを抽出し、前に作成した WebView にパスワードを注入します。抽出された値とともに「s3dscode」という変数を WebView オブジェクトに注入することから、GPlayed バンキングは特に 3-D Secure 不正防止メカニズムを回避するために設計されたと考えられます。こうして抽出されたパスワードが、取引を完了するために必要な確認番号です。
また SMS 受信ハンドラは、3-D Secure 検証コードを解析するだけでなく、すべての SMS を C2 に送信します。
SMS 漏洩コード
SMS は、単純な GET 要求により、REST ベースの URL「hxxp://sub1[.]tdsworker[.]ru:5555/sms/」に不正送信されます。この要求の形式は次のとおりです。
<URL><device id>/<sender address>/<message content>
GPlayed バンキングのアクティビティ
この記事の執筆時点で GPlayed バンキングは広く拡散しておらず、多くのウイルス対策プログラムにも検出されていません。しかし Talos が GPlayed バンキングを発見したのとほぼ同じ週に、サンプルが検出分析のために提出されました。検出方法は GPlayed の場合と同じでした。最初にパッケージが提出され、次にコードを保持する DLL が提出されました。提出された DLL 配布元の 1 つは、GPlayed バンキングのサンプルと GPlayed との間で重複していました。これは両者の関連性をさらに示唆しています。コードのアーキテクチャ、構成や成熟度から、GPlayed バンキングは GPlayed の初期バージョンをベースに作成された可能性が高く、C2 も共有していることから同じ作成者の手によるものと考えられます。
コードの比較(上が GPlayed バンキング、下がオリジナルの GPlayed)
GPlayed の場合と同様、GPlayed バンキングの C2 も調査中に一度もオンラインになりませんでしたが、この C2 を変更するのは簡単でしょう。そのため、前述の WebView で何が表示されたかは不明です。同じアイコン ファイルを共有していることも、GPlayed と GPlayed バンキングの関連性を示唆しています。
まとめ
GPlayed バンキングは、特定の集団(つまり AutoPay サービスを使用する Sberbank の顧客)を狙って設計されたものです。しかし、GPlayed マルウェア ファミリを他の銀行顧客に向けて変更するのはきわめて簡単です。
今回の脅威は、特定のアプリに与える権限にモバイル ユーザが注意すべき別の理由だと言えます。GPlayed ファミリは特定の脆弱性をエクスプロイトしているわけではなく、単純なスパム キャンペーンのみを介してデバイスにインストールされます。Android ユーザは、2 つの重要なポイントを認識する必要があります。まず、信頼できないアプリケーション ストアからアプリケーションをインストールすると、自らデータを危険にさらすということです。次に、誤った権限を与えても、マルウェアと正当なアプリとでは結果が異なるという点です。アプリ開発者が権限を要求する理由について、ユーザは盲信せず注意して確認し、ケースバイケースでそれらを割り当てる必要があります。
SMS 検証コードの傍受は、バンキング型トロイの木馬にとっては新しい技法ではありません。しかし、GPlayed バンキングに続いて GPlayed が登場したことは、マルウェア ファミリやその手口が明らかに進化していることを示しています。つまり単純なバンキング型トロイの木馬から、今まで見られなかった本格的なトロイの木馬へと進化したのです。
GPlayed バンキングではコードの大半を DLL が占めていますが、Android 用ウイルス対策ソリューションの大半は検出に失敗しています。これはつまり、それらのソリューションがパッケージの権限とリソースだけを調べており、ファイル内のコードを実際に調べていないことを物語っています。GPlayed バンキングはまだ広く拡散していませんが、多数のユーザに感染し、ユーザの銀行クレデンシャルをすばやく詐取する危険性があります。
カバレッジ
お客様がこの脅威を検出してブロックできる別の方法を以下に記載します。
Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。
シスコクラウド Web セキュリティ(CWS)または Web セキュリティ アプライアンス(WSA)の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、これらの攻撃で使用されるマルウェアを検出します。
電子メール セキュリティは、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。
次世代ファイアウォール(NGFW)、次世代侵入防止システム(NGIPS)、およびMeraki MX などのネットワーク セキュリティ アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を埋め込みます。
シスコのセキュア インターネット ゲートウェイ(SIG)である Umbrella は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。
オープンソース Snort サブスクライバ ルール セットをお使いであれば、Snort.org で購入可能な最新のルール パックをダウンロードすることで、システムを最新状態に維持できます。
侵害の兆候(IOC)
URL
hxxp://sub1[.]tdsworker[.]ru:5555/sms/
hxxp://sub1[.]tdsworker[.]ru:6565/index_main.html
ハッシュ
Package.apk – 81d4f6796509a998122817aaa34e1c8c6de738e1fff5146009c07be8493f162c
PlayMarket.dll – 3c82d98f63e5894f53a5d2aa06713e9212269f5f55dcb30d78139ae9da21e212
本稿は 2018年10月29日に Talos Group のブログに投稿された「GPlayed’s younger brother is a banker ? and it’s after Russian banks」の抄訳です。