先週このブログでは、Android プラットフォームの進化が、一部のマルウェアグループの機能性に影響を与えてきた歴史についてお伝えしました。今回は、金融機関を狙う Android.Bankosy というトロイの木馬が、Android におけるある変化によってどんな影響を受けているかをご紹介します。Android.Bankosy は、ポーランドのコンピュータ緊急対応チーム(CERT)によって最近確認されたマルウェアです。
2014 年に Android 5.0 Lollipop がリリースされた時点で、getRunningTasks API は非推奨になりました。それ以来、この API はすべてのタスクではなく、実行中のタスクのサブセットしか返さなくなっています。このデータには、呼び出し側そのもののタスクと、他の共通情報しか含まれていません。
Bankosy は、どのアプリがフォアグラウンドにあるかを確認するので、getRunningTasks API の出力が重要です。これは、狙ったアプリ(オンラインバンキングやメールなどのアプリ)が実行中かどうかを判定するための動作であり、実行されている場合には、標的としたアプリの上にウィンドウを重ねて表示します。表示されたウィンドウには、アプリケーションに関連して以下のような重要情報を入力するよう求めてきます。
次の図は、ユーザーがメールアプリケーションを開いたとき、Bankosy が情報を盗み出すために重ねて表示するウィンドウです。
図 1. Bankosy によって、正規のメールアプリの上にウィンドウが重ねて表示される
Lollipop で止まった Bankosy Lollipop のリリースで getRunningTasks API が非推奨になったため、前面ウィンドウを表示する Bankosy のコードはトリガーされなくなりました。実行中のアプリを確認しようとする getRunningTasks の状態としては、常に「偽」が返されます。標準アプリ(ランチャーなど)の場合や、関数を呼び出した側が作成した場合を除いて、現在実行中のアプリが API によって開示されないからです。
図 2 は、Bankosy グループの他の亜種で見られる一般的なコードパターンです。Lollipop で getRunningTasks API が制限されたために、if 条件が満たされなくなっています。
図 2. Bankosy の他の亜種で見つかった一般的なコードパターン
シマンテックは、このマルウェアを Android.Bankosy として検出します。以下のベストプラクティスを守ってください。
* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。
【参考訳】