Endpoint Protection

 View Only

Android の進化とモバイルマルウェアの変化をめぐる歴史 

Oct 02, 2015 12:37 AM

Header-image60.jpg

Google から Android 6.0、通称「Marshmallow」が公式に発表されました。最新バージョンとなる Android 6.0 でも、オペレーティングシステムの高レベルの層で動作がどう変わったかをうかがい知ることができます。これまでにも、Android 3.0(Honeycomb)で始まって Marshmallow に至るまで続いている変更が、ルート権限を取得していないデバイスに限っては、マルウェア環境に大きな影響を与え続けてきました。

有料 SMS に関するポリシーの適用
2012 年 10 月にリリースされた Android 4.2(Jelly Bean)では、有料ショートメッセージサービス(SMS)に関するポリシー適用の機能が追加されています。当時、有料 SMS を悪用するトロイの木馬が流行しており、その被害を抑えるためでした。

発信される SMS をすべて監視し、宛先の番号が料金の発生する有料の短縮番号かどうかをヒューリスティックに判定するというのが、この機能の中核となった考え方です。宛先が有料の短縮番号と判定されると、特定のアプリが有料の短縮番号に宛てて SMS を送信しようとしているというアラート通知がポップアップ表示され、その動作を許可するかどうか確認を求められます。

これが機能したのは、Android で正規表現(regex)ベースの判定モジュールが導入され、SMS 発信のたびに宛先の番号を確認できるようになったからです。regex ベースのエンジンは、SIM(加入者識別モジュール)カードのサービスプロバイダーの国コードに基づいて宛先を判定し、国ごとに固有のパターンマッチングエンジンを読み込みます。たとえば 4 桁の番号は、米国で発行された SIM カードの有料短縮番号ではなく、ロシアで発行された SIM カードの有料短縮番号と判定されます。

図 1 は、ユーザーに知られずに有料 SMS を悪用するトロイの木馬が Android 4.2 以上でどう対処されるかを示しています。システムが有料の短縮番号を検出すると、送信する前にまずアラートを表示し、メッセージを許可するかどうか確認します。

Fig1_25.png
図 1. Android 4.2 以上では、有料 SMS を悪用するトロイの木馬が密かに SMS を送信するのを遮断する

この機能は、有料 SMS を悪用するトロイの木馬を防ぐうえで、かなり効果を発揮しました。利便性を考えて、システムはユーザーが信頼する特定のアプリについては判定を記憶しておくこともできます。判定は、Atomic XML ファイルに保存されます。この方法には弱点がありますが、それでもこの機能が無力化されて被害が出たことはありません。

ブロードキャストレシーバを通じたサイレントな自動起動を遮断
2011 年 2 月にリリースされた Android 3.1(Honeycomb)で導入されたのが、ブロードキャストレシーバを通じたサイレントな自動起動を遮断する機能です。これは、フロントエンドでは何も動作せずサイレントに自動起動する機能をトロイの木馬が悪用するのを防ぐことが目的でした。デフォルトでは、インストールされただけでまだ起動されていないアプリはすべて、停止状態になっています。

過去には、多くのトロイの木馬がサイレント自動起動の機能を悪用していました。攻撃者はそのようなトロイの木馬を、ソーシャルエンジニアリングの手法を通じてデバイスにインストールさせようとします。インストールされても、起動アイコンは表示されず、フロントエンドでは何の動作も示しません。そのかわりに、通知のためのブロードキャストレシーバを登録し、デバイスの起動時、SMS の受信時、あるいはネットワークの切り替え時などに登録されるレシーバに基づいて自身を起動します。

この機能は、マルウェアの作成者が対策を講じたため、ある程度しか効果を発揮しませんでした。ソーシャルエンジニアリングの手口でいったんアプリを実行した後は、setComponentEnabledSetting() という API を使ってデバイスから起動アイコンを隠すようにしたからです。

SMS の遮断を禁止
2013 年 10 月にリリースされた Android 4.4(KitKat)からは、SMS の変更が禁止され、傍受しかできなくなっています。ワンタイムパスワード(OTP)のひとつであるモバイルトランザクション認証番号(モバイル TAN、mTAN)を悪用する情報窃盗マルウェアやスパイウェアの活動を抑えることが、主要な目的でした。

KitKat 以降では、アプリが "SMS_RECEIVED_ACTION" ブロードキャストを中止しようとしても、システムによって無視されます。つまり、マルウェアは SMSReceiver コンポーネントの内部で "abortBroadcast()" の API を使えないということです。

過去には、この機能を悪用するマルウェアグループが数多く存在し、着信する SMS(通常は OTP または mTAN)を密かに傍受したうえで、"abortBroadcast" を呼び出して、受信箱に届かないようにしていました。

Fig2_16.png
図 2. SMS ブロードキャストレシーバを登録する

Fig3_10.png
図 3. 着信する SMS を傍受し、abortBroadcast を利用して遮断する

図 2 と図 3 に示すように、これは OTP 情報窃盗マルウェアや、SMS 傍受型のトロイの木馬の多くの亜種で一般的な手口でした。こうした古いマルウェアのサンプルは、Android KitKat 以降が稼働しているデバイス上で実行されても機能しなくなり、着信した SMS をデフォルトの SMS アプリに届かないよう中断することはできなくなりました。

マルウェアの作成者も、この変更に迅速に対応しました。SMS 着信のアラート通知音を消し、コンテンツリゾルバを使ってプログラム的に SMS を受信箱から削除するようにコードを変更したのです。

サードパーティ製アプリに対して "getRunningTasks" API を制限
2014 年 6 月に発表された Android 5.0(Lollipop)では、サードパーティ製アプリで "getRunningTasks()" API を利用できなくなりました。この変更の大きい目的は、プライバシー情報の漏えいを防ぐことですが、パスワードを盗み出すマルウェアグループの一部にも影響しました。

Lollipop 以降では、"getRunningTasks()" API がオリジナルデータのごく一部、たとえば呼び出し側アプリ自体のタスクや汎用のタスクなどしか返さなくなっています。それ以前の Android では、デバイスで実行中のあらゆるタスクに関する情報が返されていました。

一般的に、特定のパスワードを盗み出すマルウェアは、この API の出力を利用して、現在実行中のタスクのリストを取得します。また、標的となる特定のアプリ(オンラインバンキング用アプリなど)が実行されていると、マルウェアはその上に重なるようにウィンドウを表示し、被害者を欺いてパスワードなどの重要情報を開示させます。

そのため、Lollipop で導入された機能は、このようなパスワード窃盗を困難にするうえでは非常に効果的でした。ところが、ランサムウェアの亜種を伴う場合、ランサムウェアは実際にこの API の出力を使い、「等しくない」条件によって再帰的なデバイス管理許可要求ウィンドウを開きます。そのため、ランサムウェアの亜種に対しては、Lollipop の新機能も効果がありません。

「危険」と「危険以上」の許可
Marshmallow からは、一部の許可が「危険以上」、「危険」、「通常」の許可に分類されます。この新しい機能が Android を狙うランサムウェアの世界にどんな影響を与えるか、先日、このブログでも詳しくお伝えしました。

"SYSTEM_ALERT_WINDOW" の許可を「危険以上」のカテゴリに分類すると、ランサムウェアの亜種を弱体化するには大きい効果があります。ただし、アプリがこの新しい許可モデルを採用することは義務付けられてはいないため、古いソフトウェア開発キット(SDK)をベースにして、古い許可モデルを使って実行するアプリがまだ残る可能性もあります。

したがって、Android デバイスは利用できる最新のバージョンに更新しておくことが重要です。十分に考えぬかれた機能によってデバイスが保護され、既知の脆弱性への対策も講じることができるからです。

保護対策
モバイルを狙うランサムウェアから身を守るために、以下のベストプラクティスに従うことをお勧めします。

  • 見たことのないサイトからアプリをダウンロードすることは避け、信頼できるサイトだけからダウンロードするようにしてください。
  • アプリが要求する許可の種類に注意してください。
  • デバイスとデータを保護するために、ノートンなど適切なモバイル用セキュリティアプリをインストールしましょう。
  • ソフトウェアは最新の状態に保ちましょう。
  • Make frequent backups of important data

* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。

【参考訳】

Statistics
0 Favorited
0 Views
0 Files
0 Shares
0 Downloads

Tags and Keywords

Related Entries and Links

No Related Resource entered.