サーバーサイドポリモーフィック型の Android アプリケーション
Windows の世界では、かなり以前からサーバーサイドポリモーフィズムの技法を使ってコンピュータに感染する手口が全世界で確認されてきました。これはつまり、ファイルがダウンロードされるたびに、異なるバージョンのファイルを作成して従来のシグネチャベースの検出をすり抜けようとすることを意味します。最近、この同じ手口が、ロシアの Web サイトでホストされている悪質な Android アプリケーションにも使われていることが判明しました。シマンテック製品では、この亜種をすべて Android.Opfake として検出します。Opfake をホストしているサイトにはリンクかボタンが設置され、それを使うと人気の高い Android ソフトウェアの無料版をダウンロードできることになっていますが、実際にダウンロードされるのは悪質なパッケージです。
このアプリケーションは、ダウンロードされるたびに少しずつ自動的に形態を変えます。それだけでなく、数日ごとに手動でも変更が加えられているところから、作成者は現在もこのマルウェア群の保守にいそしんでいると考えられます。
Opfake がサーバーサイドポリモーフィズムに利用している手法は、可変データによる変更、ファイルの並べ替え、ダミーファイル挿入の 3 つです。以下、それぞれのケースを見ていくことにします。
1 つ目は可変データを使ったケースです。2 つのダウンロードファイルの CRC を比較すると、意味のある変更は "res/raw/data.db" の部分にしかないことがわかります。META-INF にも変更されているファイルがありますが、これにはパッケージのシグネチャデータが含まれているので、res/raw/data.db が変更された事実が反映されているにすぎません。
| ファイルの CRC | ファイル名 | |
| Installer.APK | SKACHAT.APK | |
| 9dc48f61 | 074c54b5 | META-INF/MANIFEST.MF |
| b1377893 | 42ecb534 | META-INF/ALARM.SF |
| 248c37f7 | 65105b65 | META-INF/ALARM.RSA |
| 40659b25 | 40659b25 | AndroidManifest.xml |
| bbd88c2d | bbd88c2d | resources.arsc |
| 7a3498c4 | 7a3498c4 | classes.dex |
| 6129f361 | 9e488e9e | res/raw/data.db |
| 27bc873d | 27bc873d | res/drawable-hdpi/logo.png |
| 27bc873d | 27bc873d | res/drawable-ldpi/logo.png |
| 27bc873d | 27bc873d | res/drawable-mdpi/logo.png |
| fa11bed8 | fa11bed8 | res/drawable-hdpi/icon.png |
| fa11bed8 | fa11bed8 | res/drawable-ldpi/icon.png |
| fa11bed8 | fa11bed8 | res/drawable-mdpi/icon.png |
つまり、共有されているコード(classes.dex に格納されている)はまったく同じで、データが可変だということになります。このコードを調べると、res/raw/data.db にはネットワーク事業者のデータベースが含まれており、有料電話番号の一覧や、ワナにかかったユーザーがこのマルウェアを実行した場合に送信されるメッセージなどが記載されています。この SMS メッセージの内容がダウンロードのたびに変更されるために、毎回異なるファイルが生成されるのです。
2 つ目は、ファイルの並べ替えを使ってポリモーフィズムを実現していたケースです。こちらの場合、APK に含まれるコードファイルとデータファイルがすべて同一で、マニフェストファイルとシグネチャファイルのみが違っていました。
| CRC | ファイル名 |
| 311fa59a | META-INF/MANIFEST.MF |
| 86f1655e | META-INF/CERT.SF |
| ed814261 | META-INF/CERT.RSA |
| 02568138 | AndroidManifest.xml |
| 5539013f | classes.dex |
| c9805df6 | res/drawable-hdpi/icon.png |
| c9805df6 | res/drawable-mdpi/icon.png |
| c9805df6 | res/drawable-ldpi/icon.png |
| 1d66a094 | res/layout/offert.xml |
| b93210cd | res/layout/grant_access_to_content.xml |
| 169b2a86 | res/layout/main.xml |
| 30fe74be | res/raw/activation_schemes.cfg |
| aca144d2 | res/drawable/progress_finished.xml |
| 3367b765 | res/xml/countries.xml |
| f3087726 | resources.arsc |
| 88a24ad9 | 0.temp |
| 88a24ad9 | 1.temp |
| 88a24ad9 | 2.temp |
| 88a24ad9 | … |
つまり、このケースではアプリケーションパッケージ内でコードファイルとデータファイルの順序を並べ替えるだけでポリモーフィズムを実現しているということです。パッケージを作成する際にファイルの順序を変えると、異なるマニフェストファイルとシグネチャファイルが作成されるからです。
3 つ目は、パッケージにダミーの .temp ファイルを使うケースです。1 つのパッケージに 40 個以上のダミーファイルが確認された場合もありますが、ダミーの .temp ファイルの数はダウンロードごとに異なり、アプリケーションがダウンロードされるたびにさらに多くの組み合わせが発生します。ただし、.temp ファイルがこのマルウェアで実際に利用されている形跡はなく、どのファイルにも以下の意味不明な画像が含まれているだけです。
パッケージがダウンロードされて携帯端末にインストールされると、自動時に SMS メッセージが送信され、ブラウザで特定の Web サイトが開きます。このサイトではさらに別のマルウェアや、ときには正規の Android アプリケーションもホストされています。マルウェアの拡散に関与している詐欺サイトの例を以下に示します。
拡散に利用されていることがこれまでに確認されたのは、すべてロシアのサイトですが、パッケージが SMS メッセージを送信する際には、他のヨーロッパ各国のほかオーストラリアや台湾まで含めて、ロシア語以外の言語でも送信できる機能があります。このマルウェアの影響を受けるのは、以下の国または地域です。
| アルメニア オーストラリア オーストリア アゼルバイジャン ベラルーシ ベルギー ブルガリア チェコ共和国 デンマーク エストニア |
フランス グルジア ドイツ アイルランド イスラエル カザフスタン キルギスタン ラトビア リトアニア オランダ |
ノルウェー ポーランド ポルトガル ロシア スペイン スウェーデン 台湾 英国 ウクライナ |
今回のマルウェアにはサーバーサイドポリモーフィズムが使われていますが、シマンテックのノートン モバイルセキュリティをお使いのお客様は、このように自動生成される亜種からも保護されます。また、この Android パッケージがホストされている Web サイトへのアクセスも、Web プロテクション機能によって遮断されます。いつものことですが、アプリケーションは必ず信頼できるソースからダウンロードするようにし、アプリケーションのインストール時に要求される許可にも注意を払うようにしてください。たとえば、次のスクリーンショットのように、Android.Opfake は必ず SMS メッセージ送信の許可を要求します。
2012 年 2 月 2 日更新:
上記の意味不明な画像に写っている未確認人物は、Свидетель из Фрязино という人物であることが判明しました。情報をお寄せいただいた F-Secure の Sean Sullivan 氏に感謝します。この男性は、さまざまな写真にデジタル加工されて登場していることで知られています。
* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。
