トレンドマイクロは、Android OS を搭載した端末(以下、Android 端末)に存在する脆弱性を利用し、ユーザ端末のルート権限を取得しようとする不正アプリを多く確認してきました。2013年6月に確認した「ANDROIDOS_OBAD」は、そのような脆弱性の利用を強化し、さらに高度な活動を行う不正アプリです。この不正アプリは、端末からのアンインストールを回避する機能を実装しており、またさらに他の不正アプリをユーザにわからないようにダウンロードし実行します。
■新しくさらに改良された隠ぺい活動
この「ANDROIDOS_OBAD」という新しいファミリは、一般ユーザおよびセキュリティリサーチャの双方から自身の身を完全に隠したり、解析を回避したりする機能を備えています。この不正アプリは、インストールされると、ルート権限および「端末管理者」の設定の有効化を要求します。「ANDROIDOS_OBAD」は、ルート権限を取得することにより、端末を完全に制御することを可能にします。
ユーザが要求に従わず「端末管理者」を有効化しない場合、この不正アプリは、端末の再起動後に、ポップアップメッセージを頻繁に表示します。また、ユーザが端末上の「戻る」ボタンを選択しても、ポップアップメッセージが再び表示されます。「ホーム」ボタンを選択すると、ポップアップメッセージは、その後少し経ってから再び表示されます。
図1では、ユーザが問題のアプリをアンインストールしようとするところですが、「端末管理者」が有効になっている場合、この不正アプリは、ユーザに見つからないように実行されます。
|
自らを隠ぺいしていても、ユーザは、アプリケーションの管理画面からこの不正なアプリを見つけることができます。しかし、繰り返しますが、この不正なアプリは端末管理者として設定されたアプリであるため、アンインストールすることができません。
|
アンインストールの回避方法は、Android 端末に存在する脆弱性を利用し、「端末管理者」の管理画面から自身を隠ぺいします。
|
トレンドラボのセキュティリサーチャの見解では、この不正アプリの作成者は、従来型の解析ツールに対する「ANDROIDOS_OBAD」の有効性を検証したであろうと考えられます。
Android OS はファイル “AndroidManifest.xml” を認識します。しかし主要な復号ツールは、これを正確に解釈することができません。「ANDROIDOS_OBAD」は復号ツールを最初に検知する機能を備えているため、サンドボックスはこの不正アプリの読み込みに難航することとなります。
■新しい難読化の方法
アプリにおける Dalvik のコードは、新たな方法で難読化されています。ほぼすべての Class ファイルは、固有であり、難読化された復号方法が埋め込まれています。つまり、アプリの実行中に呼び出されるすべての文字列および関数が、最初に復号されるということです。文字列が続くようなコードの一部は、多重に暗号化されているものもあります。今日の逆コンパイラは、実行順序を正確に解釈することに難点があります。
図4は、復号方法によって出力された順序立てられていない実行コードの一例です。
|
上の赤枠内の if 文は、while 文を繰り返すループと入れ子になっています。if の条件文が「真」にはならないため、結果としてコードは実行されませんが、下の赤枠では、while 文が、if の条件文「(p6 = (p6 + 1); )」の中間へと再び繰り返えされています。正しい順序は、if の条件文の最後の2列が while ループに付加し、if の条件文が無効になります。
トレンドマイクロは、このコードを復号し、解析することができました。この不正アプリは、以下の挙動を実行することを確認しました。
■「ANDROIDOS_OBAD」 VS 「ANDROIDOS_JIFAKE」
トレンドラボでは、「ANDROIDOS_OBAD」は、以前に確認されている不正アプリ「ANDROIDOS_JIFAKE」と同一の作者により作成されたものと考えています。「ANDROIDOS_OBAD」は、「ANDROIDOS_JIFAKE」と類似する機能を共有しています。後者は偽アプリのインストーラーであり、ユーザにインストールおよび実行を促します。そしてユーザに気付かれないように自身をサービスとして登録し、リモートサーバに接続し、コマンドを待機します。そのリモートサーバは、高額料金が発生するテキストメッセージを送信し、アンインストールの回避を展開します。
このアンインストール回避手法は、Android 端末の「端末管理」における機能を利用しています。あるアプリがインストールされ、端末管理者として有効化された場合、このアプリは、セキュリティに関するポリシーの強化を含むユーザ端末を抑圧するような権限を譲渡されることになり、ユーザ端末をロックまたは上書きします。この状況下においてアプリは、容易にアンインストールされることはなく、アンインストール回避が実現されます。
この不正アプリをアンインストールするためには、[設定]>[セキュリティ]>[端末管理者]を選択し、デバイス管理者を無効にする必要があります。しかし、Android 端末に存在する非公開の脆弱性が利用され、無効化オプションが隠ぺいされる可能性があります。その場合、ユーザはこの不正アプリをデバイス管理者として有効化されたアプリとして強制的に受け入れるほか手立てがありません。
トレンドマイクロ製品をご利用のユーザは、弊社「ウイルスバスターモバイル for Android 」によって守られており、「不正アプリ対策」によって本ブログで取り上げたファミリをインストールの過程で検出します。
参考記事:
by V.E.O Zhang (Mobile Threats Analyst)
翻訳:宮越 ちひろ(Core Technology Marketing, TrendLabs)