突然消失するかもしれないブログ

”とつきえブログ”

カテゴリーアーカイブ: ケータイ

app.tv系コンテンツアプリによる実行されている及びインストール済みアプリ情報の送信について

高木先生の以下のご指導のもと、ミログ社のAppLog、app.tvの検証を行いました。

自分自身では、(1)と(4)を確認することができました。(2)(3)については未検証です。

※優先順位順

(1)apptv系コンテンツアプリの履歴送信事実の証拠保全、(←今回、済み)

(2)他のAppReward組み込みアプリの履歴送信事実の証拠保全(←未検証)

(3)FriendAppの履歴送信事実の証拠保全(←未検証)

(4)AppLogの同意状態管理の脆弱性検証(←済み)

→ AppLogのオプトアウトの仕様の脆弱性について

 

このエントリでは、(1)の確認結果について説明します。

崎山さんこと @sakichan さんに、app.tv系コンテンツアプリの解析結果を教えて頂き、自分でも確認してみました。

※詳しくは、こちらを参照してください。 → 株式会社ミログのAndroidスパイアプリ問題について崎山伸夫のBlog

 

・app.tv系コンテンツアプリの起動→メールアドレス指定→アカウントマネージャー許可→ app.tv の利用許諾画面。ここで home ボタン押して放置すると、実行されているアプリ情報、インストール済みのアプリ情報がapp.tv 系の log.friend-app.com へ平文で送信される。

また、自分で確認したところ、app.tvの利用許諾画面で許諾した後でも、サーバに情報が送信されていることが確認されました。

つまり、ユーザの許可の有無に関わらず、サーバに情報を送信していることがわかります。

app.tv系は、https://api.androidappcredit.com/に情報が送信されるとばかり思い込んでいましたが、app.tvとFriendAppは根が同じなのですね。

 

・app.tvでいったん許諾してしまうとサーバが許諾結果を覚えてしまうらしく、アプリを再インストールしても許諾画面が表示されない。

 

以下は、実行されているアプリ情報、インストール済みアプリ情報を送信する際の通信ログです。

http://log.friend-app.com/al/log/activities のURLに実行されているアプリ情報をPOSTします。

http://log.friend-app.com/al/log/packages のURLにインストール済みアプリ情報をPOSTします。

ここでは実行されているアプリ情報が3回、インストール済みのアプリ情報が4回に分けられて送信されていることがわかります。

 

<実行されているアプリ情報を送信>

以下のように、カンマ区切りで実行されているアプリのパッケージ名がサーバに送信されます。

jp.co.vfp.andapp.doga.vap.yuruani,com.android.launcher,org.proxydroid,com.android.vending,jp.co.vfp.andapp.doga.vap.akagi,jp.co.neoreeves.andapp.doga.neoreeves.misawakichi

実行されているProxyDroidが含まれていることがわかります。

NewImage

実行中のアプリ情報の送信(リクエスト)

実行中のアプリ情報の送信(レスポンス)

 

<インストール済みのアプリ情報を送信>

同様に、カンマ区切りでインストール済みのアプリのパッケージ名がサーバに送信されます。

android,android.tts,com.adamrocker.android.input.simeji,com.android.bluetooth,com.android.browser,com.android.calculator2,com.android.certinstaller,com.android.contacts,com.android.defcontainer,com.android.development,com.android.htmlviewer,com.android.launcher,com.android.livewallpaper.microbesgl,com.android.magicsmoke,com.android.mms,com.android.musicvis,com.android.nfc3,com.android.packageinstaller,com.android.phone,com.android.protips,com.android.providers.applications,com.android.providers.calendar,com.android.providers.contacts,com.android.providers.downloads,com.android.providers.downloads.ui,com.android.providers.drm,com.android.providers.media,com.android.providers.settings,com.android.providers.subscribedfeeds,com.android.providers.telephony,com.android.providers.userdictionary,com.android.server.vpn,com.android.settings,com.android.setupwizard,com.android.soundrecorder,com.android.spare_parts,com.android.systemui,com.android.vending,com.android.vending.updater,com.android.voicedialer,com.android.wallpaper,com.android.wallpaper.livepicker,com.applogsdk.tweak,com.awwa,com.brainworks.contacts,com.cw.milogtest,com.google.android.apps.books,com.google.android.apps.genie.geniewidget,com.google.android.apps.googlevoice,com.google.android.apps.maps,com.google.android.apps.uploader,com.google.android.backup,com.google.android.calendar,com.google.android.camera,com.google.android.carhome,com.google.android.deskclock,com.google.android.email,com.google.android.feedback,com.google.android.gallery3d,com.google.android.gm,com.google.android.googlequicksearchbox,com.google.android.gsf,com.google.android.inputmethod.latin,com.google.android.latinimetutorial,com.google.android.location,com.google.android.marvin.kickback,com.google.android.marvin.soundback,com.google.android.marvin.talkback,com.google.android.music,com.google.android.onetimeinitializer,com.google.android.partnersetup,com.google.android.street,com.google.android.syncadapters.calendar,com.google.android.syncadapters.contacts,com.google.android.tag,com.google.android.talk,com.google.android.voicesearch,com.google.android.youtube,com.google.earth,com.hamatz.app.clairvoyance,com.noshufou.android.su,com.svox.pico,com.tf.thinkdroid.sg,jp.co.milog.appcredit,jp.co.milog.apptv,jp.co.neoreeves.andapp.doga.neoreeves.misawakichi,jp.co.vfp.andapp.doga.vap.akagi,org.proxydroid

愛用させて頂いているSimejiが含まれていることがわかります。

NewImage

インストール済みのアプリ情報の送信(リクエスト)

インストール済みのアプリ情報の送信(レスポンス)

追記:2011/10/10 08:46

崎山さんがキャプった通信ログは以下から参照できます。通常のhttpで平文なので、WireShark等で読めるようです。

apptv アカギアプリの利用許諾に同意しない場合にとれたパケットキャプチャを公開してみます。binaryのままだからWireSharkとかで読んでね

http://dl.dropbox.com/u/2985145/packets-without-accepting-tos-of-apptv

 

AppLogのオプトアウトの仕様の脆弱性について

ミログ社が提供しているAppLogのオプトアウトの仕様の脆弱性が懸念されていたため、AppLogのオプトアウトを行うためのミログ社公式アプリである「AppLogCancel(旧称AppLog Opt-out)」の通信内容を以下の方法で解析を行った。

Androidのhttpsの通信をスニファーする方法(暫定版)

このAPIは端末とサーバ間で何ら認証を行っておらず、第三者がANDROID_IDを収集し、上記のリクエストをサーバに行えば、不正にオプトアウトの状態を変更することができることが確認できた。

収集したログはこちらを参照のこと。 → AppLog Opt-outのサーバAPIの通信ログ(Evernote)

AppLogのオプトアウトをするにはサーバに以下のURLをPOSTする。

https://api.applogsdk.com/v2/device/update

パラメータは、以下の2つ。

・android_id
・device[log_allowed](device%5Blog_allowed%5D)

android_idは、Androidが提供している端末を識別するためのIDである、ANDROID_IDがセットされる。

また、device[log_allowed] = 1(ログ収集を許可) or 0(ログ収集を不許可) である。


AppLogSDKが組み込まれたアプリはログ収集の許可状態を確認するためにサーバに以下のURLをGETする。

https://api.applogsdk.com//v2/device

パラメータは、以下の3つ。

・android_id(上記と同様)
・developer_id(アプリ開発者を識別するためのID?)
・application_id(アプリを識別するためのID?)

サーバからは以下のレスポンスを返してくる。

{“device”:{“log_allowed”:true},
“notification”:{“enable”:false},

“promotion”:{“interval”:86400},
“collect”:{“interval”:60},
“url”:{“edit”:”https://api.applogsdk.com/v2/device/edit”,
“update”:”https://api.applogsdk.com/v2/device/update”},
“log”:{“interval”:21600},”ads”:{“interval”:2419200}}

AppLogSDKが組み込まれたアプリが、ユーザにログ収集の同意確認画面を表示されるのは、”notification”:{“enable”:true} の場合であるため、第三者に不正にオプトアウトの状態を変更されると、ユーザにログ収集の同意確認画面を表示することなく、ログ収集を行うことが可能である。

 

ログを確認すると、Date: Sun, 09 Oct 2011 13:53:41 GMT、つまり、日本時間の10/9(日)22:53では、AppLogのサーバの脆弱性のある動作を確認できたが、その2時間後の10/10(月)0:52では、ANDROID_IDを変更しても、常に、{“device”:{“log_allowed”:false}, “notification”:{“enable”:false}の値が返ってくるようになった。

恐らく、上記の脆弱性の指摘に気づいて、サーバの設定を変更し、ログ収集を一時的に止めたものと推察される。

 

Androidのhttpsの通信をスニファーする方法(暫定版)

Androidのhttpsの通信をスニファーする方法(暫定版)です。

現在、某アプリの解析が忙しいので簡単な図による説明だけです。

あとでまとめます。m(_ _)m

尚、https/sslによる通信は、端末やサーバに不具合などの脆弱性が無い、端末やサーバを改造されたりしなければ、一般的に覗き見されることはありません。

ここに記載した内容は、Androidのアプリのhttpsの通信を解析することを目的とした、技術的なノウハウをまとめたものです。


Androidでhttps通信をスニファーするのは、iPhone、Windows Phoneと異なり、とても大変です。

理由は、以下の通りです。

(1)システム共通のプロキシーの設定が行えない。

(2)ルート証明書を変更することができない。(追加や削除を行うにはroot権限が必要)

(3)iptablesによるポートフォワーディングを行うことができない。(root権限が必要)

 

ということで、方法は2つあります。

 

(方法1)ポートフォワーディングを使う

参考:

技術 / Android / Emulator(AVD)の証明書ストアに証明書を追加する

NewImage

・(1)実機からミログ系の検体アプリ、(2)ProxyDroid(透過型プロキシアプリ)を抜き出して、(3)エミュレータにインストールします。

・(4)ProxyDroid(Linuxのiptablesを使います)でAndroidの通信を外部PCで動作するBurp Proxy(非透過型プロキシ)に転送する設定を行います。

・(5)Burp ProxyのオレオレCA証明書をエミュレータに設定します。(6)Burp Proxyで特定ホスト名のサーバ証明書を返すように設定します。

これで、Burp Proxyでhttpsの通信をスニファーできます。

尚、Android Marketは実機のみで使え、正規の方法ではエミュレータでは使えないので、いずれにせよ実機は必要です。実機/エミュレータ共に正規の方法ではルート証明書を変更することができないので、エミュレータでもイメージの改造が必要です。

 

(2)AndroidのSSLのライブラリで証明書のチェックを無効化するように改造する

(あとで書く)

参考:

AndroidアプリケーションのSSL通信をプロキシで解析する(1)

 

 

applog検出アプリの動作原理と安全性について

総裁こと、村上福之氏が「applog検出アプリ」という素晴らしいアプリを開発されました。

Android Marketから入手可能となっています。

Applogがあなたの端末にインストールされてないかどうか調べるツールを作りました
(ITmedia オルタナティブ・ブログ)

追記:2011/10/05 13:03

applog検出ツールのソースコード公開します。
(ITmedia オルタナティブ・ブログ)

「applog検出アプリ」のソースコードが公開されました。

追記:2011/10/08 14:55

「通報君Z」(@hamatz 先生作)がリリースされました。

紹介文によると、

「最近話題の個人情報収集をするようなお行儀の悪いアプリがインストールされていないか?を検出する為のアプリです。クレイジーワークスの村上総裁が公開されていたAppLog 検出アプリを機能拡張し、ブラックリスト型で登録されているコンポーネントを含むアプリを検出します。ユーザの皆様からも、ブラックリストの更新について情報提供頂けますと幸いです。」

とのことです。

AppLog SDK及びapp.tv SDK(AppLogSDKと同等の機能を持っている)が組み込まれたアプリの検知と削除を行ってくれるアプリです。

最新版のv1.1以降でないと、app.tvシリーズのアプリを検知することができないのでご注意ください。

v1.0で、applogシリーズのアプリを検知することができます。
v1.1で、app.tvシリーズのアプリを検知することができるようになりました。

本アプリは「(ミログ社のapplogシリーズ、app.tvシリーズに限らず)同じことをする人達は一網打尽にするためのブラックリスト形式」になっているとのことです。

はまっつ先生に感謝。

NewImage

 

AppLogとは、ミログ社によって提供されているログ収集サービス及びアプリに組み込むための開発キットです。

以下、抜粋です。

http://www.applogsdk.com/ja/developer_sdk

AppLogSDKとは、アンドロイド端末におけるアプリケーションの利用情報を取得、送信する技術です。取得したアプリケーション情報は、端末における広告配信の最適化など、端末のユーザー体験の向上 に利用する事を目的とし、個人情報に該当する情報は送信されません。

 

「applog検出アプリ」の動作原理は以下の通りです。

(1)PackageManagerにAndroid端末にインストールされているパッケージ(アプリのこと)を問い合わせて、各パッケージ(アプリ)から ”com.applogsdk.ui.WebDialog” というActivityが含まれているかをチェックします。

(2)もし、パッケージ(アプリ)内に ”com.applogsdk.ui.WebDialog” というActivityが含まれていれば、そのアプリにはAppLogが組み込まれていると判断します。

 

尚、「applog検出アプリ」のAndroidManifest.xmlには、一切の<uses-permission>が含まれていない(つまり、全くpermissionが付与されない)ため、このアプリの安全性については問題ありません。

具体的には「applog検出アプリ」が通信を行ったりすることはできません。


以下に「applog検出アプリ」のAppLog検出部分をJava言語にディスアセンブルした結果を載せておきます。onCreate()のメソッド内ですべての処理を行っています。

(ありがとうございます!(^_^) > 総裁)

スクリーンショット 2011 10 03 9 25 19

注意事項:

・Forward-LockのかかっていないAndroidアプリケーション(.apkファイル)は、Android端末のrootをとらなくても簡単に抜き出すことができます。

(Forward-Lockがかかっている場合は、rootが必要です。)

・また、リバースエンジニアリング対策が行われていないAndroidのアプリケーション(.dexファイル)は、簡単にディスアセンブルすることができます。

 

 

人は技術を選ぶが、技術も人を選ぶ

「猫に小判」「豚に真珠」と言いますが、価値が分からい人に貴重なものを与えても無駄であることのたとえです。

ことわざデータバンクより
http://www.sanabo.com/kotowaza/arc/2002/09/post_235.html

技術の世界でも同じことが言えるようで、有用な技術を導入しても、使いこなせなければ、「宝の持ち腐れ」になってしまいます。

人と技術の出会いにはご縁があります。

人は技術を選びますが、技術もまた人を選ぶということを、頭の片隅に置いておきたいと思います。

C:\aqua_bitmap.cppという謎ファイル

Windows7のCドライブをたまたま覗いていたら、C:\aqua_bitmap.cppという見慣れない謎ファイルを発見。

MSEでスキャンしてもウィルスとは認識されなかった。でも、なんか気持ち悪い。

ググってみると、情報が少ない。

日本のサイトでは↓の一カ所だけヒット。

Note – imatakutin’s Mind Map: 2010/12/24 の Tweet

で、更にググると、こちらの情報を見つけた。

Whats This File ? aqua_bitmap.cpp – Neowin Forums

どうやら、Galaxy S/TabなどSamsung製の製品をPCから管理するためのSamsung製のKiesというソフトが原因で、C:\aqua_bitmap.cppという謎のファイルが作成されるらしい。

ちなみに、C:\aqua_bitmap.cppの中身はこんな感じ。

unsigned char anAQUA_BITMAP[288] =
{
  0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00,
  0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00,
  0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00, 0x92, 0x8D, 0x8C, 0x00, 0x16, 0x11, 0x10, 0x00,
  0xF7, 0xDA, 0x90, 0x00, 0xF7, 0xDA, 0x90, 0x00, 0x92, 0x8D, 0x8C, 0x00, 0x92, 0x8D, 0x8C, 0x00,
  0x92, 0x8D, 0x8C, 0x00, 0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00, 0x8A, 0x77, 0x72, 0x00,
  0x16, 0x11, 0x10, 0x00, 0xEF, 0xB2, 0x22, 0x00, 0xEF, 0xB2, 0x22, 0x00, 0x8A, 0x77, 0x72, 0x00,
  0x8A, 0x77, 0x72, 0x00, 0x8A, 0x77, 0x72, 0x00, 0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00,
  0x8A, 0x77, 0x72, 0x00, 0x16, 0x11, 0x10, 0x00, 0xEF, 0xB2, 0x22, 0x00, 0xEF, 0xB2, 0x22, 0x00,
  0x8A, 0x77, 0x72, 0x00, 0x8A, 0x77, 0x72, 0x00, 0x8A, 0x77, 0x72, 0x00, 0x16, 0x11, 0x10, 0x00,
  0x16, 0x11, 0x10, 0x00, 0x8A, 0x77, 0x72, 0x00, 0x16, 0x11, 0x10, 0x00, 0xEF, 0xB2, 0x22, 0x00,
  0xEF, 0xB2, 0x22, 0x00, 0x8A, 0x77, 0x72, 0x00, 0x8A, 0x77, 0x72, 0x00, 0x8A, 0x77, 0x72, 0x00,
  0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00, 0x8A, 0x77, 0x72, 0x00, 0x16, 0x11, 0x10, 0x00,
  0xEF, 0xB2, 0x22, 0x00, 0xEF, 0xB2, 0x22, 0x00, 0x8A, 0x77, 0x72, 0x00, 0x8A, 0x77, 0x72, 0x00,
  0x8A, 0x77, 0x72, 0x00, 0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00, 0x92, 0x8D, 0x8C, 0x00,
  0x16, 0x11, 0x10, 0x00, 0xF7, 0xDA, 0x90, 0x00, 0xF7, 0xDA, 0x90, 0x00, 0x92, 0x8D, 0x8C, 0x00,
  0x92, 0x8D, 0x8C, 0x00, 0x92, 0x8D, 0x8C, 0x00, 0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00,
  0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00,
  0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00, 0x16, 0x11, 0x10, 0x00,
};

BITMAP sAQUA_BITMAP =
{
  0,   // bmType
  9,  // bmWidth
  8,  // bmHeight
  36, // bmWidthBytes
  1,   // bmPlanes
  32,  // bmBitsPixel
  anAQUA_BITMAP // bmBits
};

Nexus S, Android2.3,Gingerbreadリリース!

待望のNexus S、Android 2.3ことGingerbreadが噂通り本日リリースされました。

Official Google Blog: Introducing Nexus S with Gingerbread

Nexus S – The new Android phone from Google

Nexus S – Google Phone Gallery

image

Nexus S video demos: NFC, VoIP, more | Android Community

Nexus Sのビデオ紹介です。

Google、Android 2.3搭載Nexus Sを発表、米国では12月16日、英国では12月20日発売(更新) | juggly.cn

Nexus Sは米国では12月16日よりBestBuyまたはBestBuy Mobileの店舗かオンラインストアから、T-Mobileのプランと共に購入できる。もちろんSIMロック無し。恐らくGT-I902

また、英国では12月20日よりCarphone WarehouseまたはBestBuyから購入できるようになる。恐らくGT-I9020

とあるので、米国から輸入したとしても最短で日本でNexus Sをゲットできるのは、年明けの2011年1月早々になりそうです。

Android 2.3 Platform | Android Developers

現在、SDKはDLできるようですが、まだソースコードは公開されていないようです。

Gingerbreadの変更点は以下のリンクから確認できます。

Android 2.3 SDK released, Gingerbread features revealed – Android and Me

最速Gingerbread変更点報告隊 – for Application Developer – – Hack the World!

仮面ライダーオーズ/OOOにAndroidがやってきた

今日から仮面ライダーシリーズの最新作、仮面ライダーオーズ/OOOの放映が始まりました。

テレビ朝日|仮面ライダーオーズ/OOO.

仮面ライダーオーズ/OOO | 東映[テレビ].

仮面ライダーOOO – Wikipedia.

本作品の基本システムは、以下のような式で表現できると思います。

仮面ライダーオーズ/OOO=

(仮面ライダー電王+仮面ライダーW+仮面ライダーディケイド)/2+α(アルファ)

オーズドライバー=電王ベルト/Wドライバー

オースキャナー=ライダーパス

オーメダル=ガイアメモリ/ライダーカード
変身用のメダル=コアメダル
ツールの起動用のメダル=セルメダル

カンドロイド=メモリガジェット/ディスクアニマル(仮面ライダー響鬼)

仮面ライダーWでは左右の2つの組み合わせでしたが、仮面ライダーオーズ/OOOでは上下3つの組み合わせになり、チェンジバリエーションがさらに複雑になりました。

変身時に流れる、串田アキラ氏の曲が熱いですね〜♪

それと”カンドロイド”のネーミングですが、前作の仮面ライダーWがGoogleを意識していたことを考えると、どう考えてもAndroidを意識してますよね。(こじつけっぽい?(^^;)

まぁ、実際、仮面ライダーWの最終話近くで、HTCのAndroid端末らしきものが劇中に出てましたので、スタッフの中にはAndroidのことを知っている人がいるかもしれません。

ということで、メディア露出度がどんどん上がってきているAndroidなのでした。

ところで、twitter界隈で問題が起きているようです。(^^;

・仮面ライダーOOOを見た特撮fanが#oooで今朝から大量にツイート。
・OpenOffice.orgで#oooを以前から利用していた技術者が日本からの大量のツイートに困惑。

一度は目を通しておきたい”spモードご利用規則”

ドコモから”ご利用ガイドブック(spモード編)”というドキュメントが公開されていますが、spモードを契約する前はもちろんのこと、契約後にも一度はじっくり目を通しておきたいものです。

ご利用ガイドブック(spモード編)

http://www.nttdocomo.co.jp/service/provider/spmode/guide/index.html

特に注意したいのは、ガイドブックの一番後ろの方にある”ご利用規則”の免責事項、禁止事項等です。

超訳すると、

第6条(免責事項)

「スマートフォンは使い方によっては危ないことがあるので、くれぐれも自己責任で使ってね。ドコモは責任とらないから。」、

第8条(禁止事項)

「不正アクセス(違法)はもちろんのこと、ハックはしないでね。」ってな感じですかね。

他にもいろいろな意味で怖いことが沢山書いてあるので、twitterとかブログする人は、一度はよく目を通しておいた方が良いかもしれません。

もし万が一、なんらかの問題を見つけてしまった場合は、twitterやブログに書くんじゃなくて、とにかくドコモに連絡しましょう。

LYNX SH-10Bが故障!?

発売後すぐに入手したdocomoのSHARP製Android端末一号機、LYNX SH-10Bがどうやら故障してしまったようです。

具体的な症状としては、以下の通りです。

・数日くらい前から、ドコモ純正のACアダプタを付属の変換アダプタ、USBケーブルでLYNX SH-10Bに接続して充電しているにもかかわらず、ふと気がつくと電源が落ちてOFFになっている。

・上記の状態で充電ランプ(LED)が点灯せず、充電できない。

・上記の状態で電源が入らない。

・バッテリーを抜き差ししたり、ACアダプタを抜き差ししたり、ACアダプタや変換アダプタ、USBケーブルを違うものと交換しても症状が改善しない。

恐らく初期不良だと思うのですが、修理に出すことにしました。

修理から戻ってくるのに、だいたい2週間くらいかかるということで、spモードが始まったばかりだというのにもどかしい限りです。

%d人のブロガーが「いいね」をつけました。