「リパッケージ」と「贋作」による不正アプリの被害

コミュニケーションアプリのシェア争いはまだ過熱しています。各運営会社によれば、2013年1月18日に LINE の利用者数は 1億人を突破。また、2013年7月2日に カカオトーク の利用者数も 1億人を突破したと発表しています。こうしたコミュニケーションアプリの盛り上がりに水をさす事例が確認されました。

今回は、「カカオトーク」になりすましたことで不正アプリの被害が拡散した事例を2件紹介します。なお、こうした攻撃はカカオトークに限らずあらゆるアプリにて考えられる攻撃手法といえます。特に広い拡散を狙った攻撃においては、情報の広範囲な拡散が期待できるソーシャル機能を有するアプリが標的となりうることを知り規範を見いだすためにこのような被害事例を知っておく必要があるといえます。

■被害例1. なりすましの手口は公式アプリの「リパッケージ」
2013年1月に確認されたのは、極めて限定的な範囲のメールに添付する形で拡散された「ANDROIDOS_ANALITYFTP.A」でした。信頼する人物を装った上で、インストールを促す文面とともに、アプリが添付されていれば多くの人は疑うこと無くインストールするのではないでしょうか。

攻撃者が用意した不正アプリ「ANDROIDOS_ANALITYFTP.A」は、「リパッケージアプリ」でした。リパッケージアプリとは、公式アプリを解析し、無断で改変(不正なコードの追加)を行った上で再配布が行われているアプリです。AndroidアプリはJavaで開発されているため、バイナリからコードへの可逆性が高いとされています。このため、リパック技法を使い不正なコードを追加された不正プログラムはかねてから多数報告されていました。

Androidでは、リパッケージを防衛する技術として開発者認証書の署名が組み込まれています。これにより、一度アンパッキングした場合には、新しい認証書による再署名が必要となります。この技術に注目することで、アプリが正当な開発者により開発されたものであるのか、第三者により改造が施されたものであるのか見破ることが可能です。

「ANDROIDOS_ANALITYFTP.A」 も例外ではありませんでした。真偽アプリ双方について、同一バージョンに署名されている情報を比較してみました。どうやら、攻撃者は署名の内容まで真似る手間をかけなかったようです。署名情報を確認すれば、真贋判定は容易であったといえます。

  正規の「com.kakao.talk」 偽(リパック)の「com.kakao.talk」
バージョン 3.5.5 3.5.5
Common Name   qwe
Organization Unit kakaoteam asd
Organization kakao zxc
Location   rty
State   fgh
Country ko vbn
Serial Number 4c707197 a3e5475
Valid from: Sun Aug 22 08:38:47 CST 2010 to: Tue Jul 29 08:38:47 CST 2110 from: Wed Jan 09 11:45:49 CST 2013 to: Thu Oct 13 11:45:49 CST 2067
表1:真偽アプリの開発者認証書比較

■盗んだ情報を FTP サーバへアップロード
「ANDROIDOS_ANALITYFTP.A」のパーミッションを確認したところ、公式アプリよりも多くのパーミッションを要求していることが確認出来ます。攻撃者の狙いがこのあたりにあることは明らかです。

図1:「ANDROIDOS_ANALITYFTP.A」が要求しているパーミッション
図1:「ANDROIDOS_ANALITYFTP.A」が要求しているパーミッション

パーミッション名
android.permission.BIND_DEVICE_ADMIN
android.permission.BLUETOOTH_ADMIN
android.permission.CHANGE_CONFIGURATION
android.permission.DEVICE_POWER
android.permission.MODIFY_PHONE_STATE
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
android.permission.PROCESS_OUTGOING_CALLS
android.permission.READ_SMS
android.permission.WRITE_APN_SETTINGS
android.permission.WRITE_SECURE_SETTINGS
android.permission.WRITE_SETTINGS
表2:リパッケージの際に追加された、「ANDROIDOS_ANALITYFTP.A」のみが要求するパーミッション

解析の結果、明らかとなったのは「ANDROIDOS_ANALITYFTP.A」が盗聴を狙った不正アプリであったということです。この不正アプリは定期的に「連絡先」/「通話履歴」/「テキストメッセージ」/「通信事業者設定」を「INFO.TXT」へ書き出し暗号化した上でコマンド&コントロール(C&C)サーバへ送信する機能を有していました。

■被害例2. セキュリティの不安を煽ることでなりすました「贋作アプリ」
ここまで、限定的な範囲で発生した被害事例をみてきました。引き続き、広域で確認された被害事例を見ていきたいと思います。

2013年6月29日、KakaoTalk の公式 Twitter アカウント(@kakaoteam)にて、「KakaoTalk セキュリティプラグイン」なる不正アプリ 「ANDROIDOS_FAKEKKAO.A」に対する注意喚起が発表されました。

図2:公式Twitterアカウント(@kakaoteam)による不正アプリに関する注意喚起
図2:公式Twitterアカウント(@kakaoteam)による不正アプリに関する注意喚起

「ANDROIDOS_ANALITYFTP.A」がリパッケージアプリであったのに対し、「ANDROIDOS_FAKEKKAO.A」はカカオトークのブランド名にただ乗りした「贋作アプリ」でした。

しかし、こうした贋作アプリであっても、多くの被害者が騙されています。そこには、「セキュリティ」という単語の難しいイメージや、直ちに対応しなければ被害に遭うかもしれないという不安を与えることで、盲目的に信用させてしまうソーシャルエンジニアリング効果があったのかもしれません。

■テキストメッセージをばらまくマスメーリング攻撃
「ANDROIDOS_FAKEKKAO.A」はその発症により、連絡先情報を読み取ってアルファベット順に「all msgs」という文面のテキストメッセージをばらまく症状が現れます。この不正なテキストメッセージ送信活動は送信履歴などの主観的な症状が残るため、被害者は比較的容易に「何かが」原因で不審な症状が発生していることに気づくことができます。

「ANDROIDOS_FAKEKKAO.A」が要求しているパーミッションについて確認してみます。アイコンやアプリ名はそのアプリの信頼性や出所を判断するための材料として使えないことは言うまでもありません。

図3:「ANDROIDOS_FAKEKKAO.A」が要求しているパーミッション
図3:「ANDROIDOS_FAKEKKAO.A」 が要求しているパーミッション

リバースエンジニアリングすると、ネイティブライブラリである「Eglsv1」がSystem.loadLibrary()によってロードされていることが確認できました。

図4:「ANDROIDOS_FAKEKKAO.A」 はネイティブライブラリをロードしている
図4:「ANDROIDOS_FAKEKKAO.A」 はネイティブライブラリをロードしている

また、一定間隔毎に繰り返し処理を呼び出していることも確認できます。

図5:「ANDROIDOS_FAKEKKAO.A」 は処理を繰り返している
図5:「ANDROIDOS_FAKEKKAO.A」 は処理を繰り返している

■実害を担っているのはネイティブライブラリ
「ANDROIDOS_FAKEKKAO.A」の不正活動を担っているのはネイティブライブラリであることが判りました。取り出すのは難しいことではありません。「android-apktool」を使えば誰でも取り出すことができます。

では、早速取り出したファイル “libEglsv1.so” のヘッダ情報を見てみましょう。

# readelf -h libEglsv1.so
ELF Header:
 Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data:
Version:
2’s complement, little endian
1 (current)
OS/ABI: UNIX – System V
ABI Version:
Type:
0
DYN (Shared object file)
Machine: ARM
Version:
Entry point address:
Start of program headers:
Start of section headers:
Flags:
Size of this header:
Size of program headers:
Number of program headers:
Size of section headers:
Number of section headers:
Section header string table index:
0x1
0xe100
52 (bytes into file)
918816 (bytes into file)
0x5000002, has entry point, Version5 EABI
52 (bytes)
32 (bytes)
6
40 (bytes)
23
20

ヘッダ情報からはファイルフォーマットが「Executable and Linking Format(ELF形式)」であること、また、「OS/ABI: UNIX – System V」、「Machine: ARM」と言った情報が読み取れます。ELF 形式は Linux の実行可能ファイルの形式であり、Androidの影に隠れていた Linux が姿を現した瞬間といえます。

■謎に包まれた真の狙い
ネイティブライブラリである “libEglsv1.so” には、libcURL や、libmcrypt の機能を含んでいることが確認できます。遠隔操作によりメッセージの送信や文面の変更が行える可能性があり、どうやら、外部の C&C サーバと通信を確立し、コマンド実行する振る舞いがあるようです。これらの機能には、遠隔操作を実現するために攻撃者の狙いは単にマスメーリング攻撃を仕掛けることだけにあらずと言えそうです。トレンドマイクロでは全容解明のため、引き続き、通信先の C&C サーバに対する調査を行っています。

■具体的な対策
ここまで、「リパッケージアプリ」と「贋作アプリ」による不正アプリの被害を見てきました。こうした不正アプリに対する予防策は基本を怠らないことです。

  1. セキュリティソフトやサービスを導入し、適切に運用すること
  2. Android端末の標準装備のセキュリティ機能を活用すること(「設定」-「現在地情報とセキュリティ」)
  3. 「Wi-Fi」の自動接続を無効にすること
  4. 公式の Androidマーケットや信用ある Androidマーケット以外を利用しないこと
  5. アプリをダウンロードする際、デベロッパーを確認し、ユーザのレビューにも一読すること
  6. ダウンロードするごとに、アクセス許可項目を確認し、許可する前に、そのアプリの機能上必要がどうか、十分に確認すること

また、今回の攻撃で利用されている不正アプリはトレンドマイクロのクラウド型セキュリティ基盤「Trend Micro Smart Protection Network」の機能の 1つであるモバイルアプリケーション評価技術「Trend Micro Mobile App Reputation」でブロックされます。誘導に使われている複数の URL は「Webレピュテーション」技術でブロックします。

これらの製品や機能を有効にして対策を強化することを、トレンドマイクロでは推奨します。