Cisco Japan Blog

トロイの木馬 GPlayed – Google マーケットを利用する .NET マルウェア

1 min read



はじめに

あらゆるものが常時接続され、個人の普段の生活にモバイル デバイスが頻繁に入り込むようになった現在、これらのデバイスが悪意ある攻撃を受ける機会が増えています。Cisco Talos では、モバイル デバイスに侵入を試みる最新の脅威を特定しました。Android 版の新しいトロイの木馬である「GPlayed」です。これは、多くの組み込み機能を備えたトロイの木馬です。さらに、非常に柔軟で、悪意のある攻撃者にとってきわめて有効なツールとなります。Talos で分析したサンプルでは、偽装目的で、Google Apps と非常によく似た「Google Play Marketplace」という名前のアイコンが使用されています。

悪意のあるアプリケーション(左側)

 

本マルウェアが非常に強力である所以は、展開後の適応能力にあります。この適応力を実現するために、リモートでプラグインをロードし、スクリプトを挿入し、さらには実行可能な .NET コードを新たにコンパイルできる機能が設けられています。Talos の分析では、GPlayed はテスト段階にあると見られます。しかし、その潜在能力を考えると、すべてのモバイル ユーザが GPlayed を警戒する必要があります。最近になってモバイル開発者は、従来のアプリ ストアの利用を控え、独自の方法で直接ソフトウェアを提供したいと考え始めています。しかし GPlayed の例から示されるように、このような傾向には危険が潜んでいます。特に、モバイル ユーザが偽のアプリと本物のアプリを区別する方法を知らない場合、この危険性はなおさら高まります。

GPlayed のアーキテクチャと機能

このマルウェアは、モバイル アプリケーション向けの Xamarin 環境を使用して .NET で作成されています。メイン DLL の名は「Reznov.DLL.」です。この DLL には、「eClient」と呼ばれる 1 つのルート クラスが含まれています。これがトロイの木馬の中核となる部分です。imports により、「eCommon.dll」という 2 つ目の DLL が使用されていることがわかっています。「eCommon」ファイルにはプラットフォーム非依存型の構造およびサポート コードが含まれていることが確認されました。メイン DLL には、ネイティブ機能の一部を実装する eClient サブクラスも含まれています。

パッケージ証明書はパッケージ名に基づいて発行されていますが、この名前はメイン DLL 名にも類似しています。

証明書情報

Android パッケージ名は、「verReznov.Coampany」です。このアプリケーションでは「Installer」というラベルが使用され、その名前は「android.app.Application」となっています。

パッケージのパーミッション

GPlayed では、マニフェストで多数のパーミッションが宣言されています。この中で特筆すべきは BIND_DEVICE_ADMIN です。これにより、GPlayed はデバイスをほぼ全面的に制御できるようになります。

 

GPlayed の設計は、非常に高度です。プラグインの形で実装されたモジュラ アーキテクチャを持っています。または、ランタイム時にデバイス上でコンパイルされる新しい .NET ソース コードを受け取ることができます。

コンパイラ オブジェクトの初期化

 

プラグインは、ランタイム時に追加することも、パッケージ化の際にパッケージ リソースとして追加することもできます。つまり、作成者や攻撃者は、機能を追加するときに、デバイス上のトロイの木馬パッケージを再コンパイルしてアップグレードする必要がありません。

GPlayed のネイティブ機能

 

これは、バンキング型から完全スパイ型までさまざまな機能を備えた本格的なトロイの木馬です。つまり、GPlayed は、ユーザの銀行クレデンシャルの収集からデバイス ロケーションの監視まで、あらゆることを実施できます。いくつかの兆候(下記の「GPlayed のアクティビティ」を参照)を見る限り、このマルウェアは開発の最終段階にあると考えられますが、そこには深刻な脅威となる潜在力が秘められています。

GPlayed の詳細

起動時、GPlayed はまず内部構造上の設定を共有設定ファイルに読み込みます。その後、さまざまなタスクを実行するためのいくつかのタイマーを起動します。最初のタイマーは、設定された間隔(この場合は 20 秒)で呼び出され、コマンド & コントロール(C2)サーバに対する ping を実行します。その応答として、単純な「OK」が返ってくる場合と、デバイス上で何らかのアクションを実行する要求が返ってくる場合があります。2 番目のタイマーは 5 秒ごとに実行され、Wi-Fi が無効になっている場合は有効にしようとします。3 つ目のタイマーは 10 秒ごとに起動され、デバイスを C2 に登録し、システムのウェイクアップ ロックを登録して、デバイスのステータスを制御しようとします。

 

GPlayed は登録段階において、電話機のモデル、IMEI、電話番号、国などの個人情報を密かに抽出します。電話機能が稼動している Android のバージョンやその他の機能についても報告します。

デバイス登録

主なタイマーは 3 つ作成され、これが最後のタイマーとなります。GPlayed は、SMS ハンドラを登録します。このハンドラは、電話機上のすべての SMS メッセージの内容と送信者を C2 に転送します。

GPlayed 初期化の最後のステップは、デバイスの権限の昇格とメンテナンスです。これを行うために、デバイスの管理者権限を要求するとともに、アプリケーションからデバイス設定へのアクセスを許可するようユーザに求めます。

 

 

権限昇格の要求

 

ユーザが権限昇格を承認しない限り、承認を求める画面が閉じることはありません。ユーザがウィンドウを閉じると、タイマー設定に基づいて再表示されます。

GPlayed は、インストールされた後、ネイティブ機能の 1 つを有効化するために 3 ~ 5 分のランダムな間隔で待機します。ネイティブ機能は、「GoogleCC」という eClient サブクラスで実装されます。このクラスにより WebView が開き、Google サービス利用料の支払いを求める Google テーマのページが表示されます。このページは、ユーザにいくつかの手順を案内し、最終的に、必要なクレジット カード情報をすべて収集します。クレジット カード情報はオンラインで確認され、C2 に抽出されます。このプロセス中に、悪意のある攻撃者によって設定された金額がユーザに請求されます。


ユーザのクレジット カード情報を要求する手順

 

Talos のサンプルの設定では、上記ビューの要求をキャンセルしたり画面から削除したりすることはできません。クレジット カード情報を提供しない限り無効にならない、画面ロックのような動作となります。

C2 との通信はすべて HTTP で行われます。標準の Web 要求が使用されるか、最初のメソッドが失敗した場合には Web ソケットにデータが書き込まれます。C2 は WebSocket をバックアップの通信チャネルとして使用することもできます。

GPlayed によるデータ偽装の試みを利用して C2 にデータを送信する前に、JSON でデータをシリアル化し、さらに Base64 でエンコードします。ただし、GPlayed は「=」を「AAAZZZXXX」に、「+」を「|」に、「/」を「.」に置換して Base64 を隠ぺいします。

エンコーディング プロセスの要求

HTTP 要求は以下の形式に従いますが、WebSocket ではクエリ データのみが書き込まれます。

<server path>?q=<IMEI>-<REQUEST CODE>:<Obfuscated Base64 encoded data>

トロイの木馬でよく見られるように、C2 に対する通信は常にデバイス上の GPlayed によって開始されます。要求コードは実際には C2 アクション要求への返答であり、「応答」と呼ばれます。C2 が GPlayed への要求に使用できる応答コードは 27 個あります。これは、機能セクションに記載したものとほぼ一致しています。

  • Error
  • Registration
  • OK
  •  Empty
  • SendSMS
  • RequestGoogleCC
  • Wipe
  • OpenBrowser
  • SendUSSD
  • RequestSMSList
  • RequestAppList
  • RequestLocation
  • ShowNotification
  • SetLockPassword
  • LockNow
  • MuteSound
  • LoadScript
  • LoadPlugin
  • ServerChange
  • StartApp
  • CallPhone
  • SetPingTimer
  • SMSBroadcast
  • RequestContacts
  • AddInject
  • RemoveInject
  • Evaluate

GPlayed のもう 1 つの機能は、JavaScript の断片コードを注入する機能です。これらは、GPlayed によって生成された WebView オブジェクトで実行されます。これを利用して、ユーザのクッキーを盗んだり、アカウント番号や電話番号などのフォーム フィールドを偽装したりする一方で、任意のサイトにアクセスするようユーザを誘導することができます。

GPlayed のアクティビティ

この記事の執筆時点では、サンプル上にある URL(IOC セクションを参照)はいずれも機能しておらず、このマルウェアが広まっているようには見えません。このサンプルには、開発の最終段階でのテスト サンプルにすぎないことを示す兆候がいくつか見受けられます。「test」または「testcc」という文字列やラベルが、いくつか残っています。クレジット カード データの抽出に使用される URL でさえ、「testcc.php」という名前です。

logcat でのデバッグ情報

 

もう 1 つの兆候として挙げられるのは、GPlayed が今なお生成しているデバッグ情報の量です。実稼働レベルにあるなら、ログは最小限に抑えられているはずです。

唯一のサンプルは公開リポジトリで見つかったものであり、サンプルの検出率を判断するためのテスト実行であったと考えられます。Talos では、GPlayed が、パッケージとして 1 回、さらに DLL 単位で 1 回、公開ウイルス対策テスト プラットフォームに提出され、検出率が判定されるのを観察しました。分析したサンプルは、ロシア語圏のユーザを対象にしていました。ほとんどのユーザ操作ページはロシア語で書かれていました。しかし、その作成方法を考えると、GPlayed では非常に柔軟なカスタマイズが可能です。つまり別の言語への変更はきわめて簡単です。GPlayed の機能は幅広く、バンキング型トロイの木馬やランサムウェアのような特定の不正アクティビティに限定されたものではありません。このため、ターゲット プロファイルを作成することは不可能です。

まとめ

GPlayed は、脅威が進化する新たな道を示しています。eCommon.DLL のような、デスクトップからモバイル プラットフォームにコードを容易に移行できる機能の存在は、悪意のある攻撃者が以前より少ないリソースで迅速にハイブリッド脅威を作成できることを意味しています。GPlayed は、設計と実装のレベルが並外れて高く、危険な脅威になっています。こうした種類の脅威は、ソフトウェアを直接ユーザに公開しようとする企業が増えるにつれ、さらに広がっていくでしょう。

 

最近、企業が従来のストアを回避してソフトウェアを直接ユーザにリリースすることを選択する例が、いくつか見られます。正当なサイトと悪意のあるサイトを区別するための必要スキルが、平均的なユーザには備わっていない可能性があります。この状況は、デスクトップとモバイル プラットフォームでのスピアフィッシング キャンペーンで見られるように何年も前から続いていることなので、残念ながらすぐに変わるとは考えられません。つまり、攻撃は引き続き成功するだろうと考えられます。

カバレッジ

お客様がこの脅威を検出してブロックできる別の方法を以下に記載します。

Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。

シスコクラウド Web セキュリティ(CWS)または Web セキュリティ アプライアンス(WSA)の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、これらの攻撃で使用されるマルウェアを検出します。

電子メール セキュリティは、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。

次世代ファイアウォール(NGFW)、次世代侵入防止システム(NGIPS)、およびMeraki MX などのネットワーク セキュリティ アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。

AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を埋め込みます。

シスコのセキュア インターネット ゲートウェイ(SIG)である Umbrellapopup_icon は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。

オープンソース Snort サブスクライバ ルール セットをお使いであれば、Snort.orgpopup_icon で購入可能な最新のルール パックをダウンロードすることで、システムを最新状態に維持できます。

侵害の兆候(IOC)

URL
hxxp://5.9.33.226:5416
hxxp://172.110.10.171:85/testcc.php
hxxp://sub1.tdsworker.ru:5555/3ds/

ハッシュ値
Package.apk – A342a16082ea53d101f556b50532651cd3e3fdc7d9e0be3aa136680ad9c6a69f
eCommon.dl – 604deb75eedf439766896f05799752de268baf437bf89a7185540627ab4a4bd1
Reznov.dll – 17b8665cdbbb94482ca970a754d11d6e29c46af6390a2d8e8193d8d6a527dec3

カスタム アクティビティのプレフィックス
com.cact.CAct

本稿は 2018年10月11日に Talos Grouppopup_icon のブログに投稿された「THURSDAY, OCTOBER 11, 2018
GPlayed Trojan – .Net playing with Google Market
popup_icon」の抄訳です。

コメントを書く