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

”とつきえブログ”

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ファイル)は、簡単にディスアセンブルすることができます。

 

 

Mac OS XでMicrosoft Officeを駆使するにはマウス選びが重要

OS X 10.7.1 Lionで、旧バージョンのMicrosoft Office 2008を使っています。

Windows版のPowerPointでは、複雑な図を編集していてもなんら問題なく快適に作業が行えるのに、なぜかOS X版では、オブジェクトをマウスで選択しただけなのに勝手に動いてしまう、画面をスクロールしていまう、ページが変わってしまうなど、不可解な現象が起きます。

OS X版のPowerPointで長時間作業をしているとストレスが溜まります。

これまでずっと、Windows版に比べてOS X版のPowerPointの出来が悪いから上記のような症状が起きると思っていたのですが、そうではありませんでした。

Apple製のマウス(Apple Wireless Mighty Mouse, Magic Mouse)のチャタリングが原因だったのです。

ちなみに、LogicoolのVX Nano Cordless Laser Mouse for Notebooks(M-RCJ134)では上記のような現象は全く起こりません。

長らく、OS X版の不可解なPowerPointの挙動に悩まされて、MacでMicrosoft Officeを使うのを避けてきましたが、これで本格的に仕事の資料作成をMacで行うことができるようになりそうです。(^_^)

 

深刻なMacBook離れが加速中。。

タイトルは釣り。(^_^;)

2011年8月末に新MBA(Core i7 1.8GHz、メモリ4GB、SSD256GB)を購入しました。

MBA(MacBook Air)があまりにも快適なので、これまでメインで使っていた初アルミMacBookの使用頻度が激減してしまいました。

MBAはSSDなので、HDDに比べてストレージの読み書きが速く、アプリの起動速度だけでなく、アプリが実行中にストレージを読み書きする際のパフォーマンスまで劇的に改善されるため、アプリがサクサク動きます。

また、MBAは、薄くて軽いので家中を気軽に持ち運びできるし、バッテリーもフル充電の状態で軽く2時間以上は持つので、ケーブルレスで快適に使えます。

唯一の欠点はメモリが4GBしか搭載できないこと。VMware Fusionを快適に使うには、メモリは8GB欲しいところです。

GDD2011のDevQuizのスライドパズルのsolverプログラムをMBAで実行したときは、CPUの冷却ファンがぶんぶん回って故障するのではないかと心配になりました。。

MBAは実装密度が高いので、放熱を考えると、長時間、連続して高負荷の処理を行う用途には向かないと思います。そう考えると、現状のスペックは理にかなっているのかもしれませんが。

ということで、ちょっとお高いですが、MBAの購入してよかったと思います。

P.S

@brzm505 さんのアドバイスで、MBAという素晴らしい製品に出会うことができました。いつもありがとうございます。(^_^)ノ

 

 

ThinkPadT42でDebian:Debian 6の電源管理の謎について

Linuxでの電源管理は、伝統的に、acpid, acpi-support-base, acpi-supportで行われているようですが、Debian 6のグラフィカルログイン環境では、gnome-power-managerによって電源管理が行われるようです。

つまり、acpiの設定をいくら行っても、gnome-power-managerの設定を行わないと反映されないというわけです。

Debian/etch で Gnome Power Managerをつかってサスペンドする の情報によると、

従来の場合は、すべてacpidで電源管理の処理が行われます。

(acpiのイベント)

=> acpid でフック

=> イベント種別から /etc/acpid/events 以下の設定でスクリプトを選択

しかし、グラフィカルログイン環境では、acpidで処理された後、gnome-power-managerで電源管理の処理が行われるようです。

(acpiのイベント)

=> acpid でフック

=> acpi-support パッケージにより、キーイベントに変換され、/dev/inputXに渡される。

=> Xサーバ君がキーイベントを受ける

=> gnome-power-manager がキーイベントを受け取り?、    ディスクトップのユーザ設定に応じて処理を決めて、    サスペンド/ハイバネーションの要求を〜する。

ということで、Debian 6でgnomeのグラフィカルログイン環境での電源管理は、acpidだけではなく、gnome-power-managerでも管理されているということを理解する必要があります。

詳しくは以下をご覧下さい。

ThinkPadT42でDebian:リッドクローズドモードで使う

 

ThinkPadT42でDebian:リッドクローズドモードで使う

Debian 6をインストールしたThinkPad T42はサーバとして使用したいので、液晶画面は閉じた状態でも電源がONの状態で使える、リッドクローズドモードの設定を行います。

Debian 6のグラフィカルログインには落とし穴がある。

Debian 6をグラフィカルログイン環境でインストールすると、ログイン後の状態では液晶画面を閉じてもサスペンドしないのに、ログイン前の状態のログイン画面で液晶画面を閉じるとサスペンドしてしまう、という現象が起きます。

原因は、gnome-power-managerというプロセスです。

ログイン前の状態では、gdm3のユーザIDである、Debian-gdm(UID=106)でgnome-power-managerが実行されますが、ログイン後の状態ですは、ログイン時のユーザIDで実行されます。

gnome-power-managerは、”電源管理の設定”というアプリケーションで設定した設定ファイルを参照しますが、Debian-gdm(UID=106)には、その設定が反映されていないのが原因です。

では、どうすれば、Debian-gdm(UID=106)にも電源管理の設定を反映させることができるのかと言うと、”電源管理の設定”のウィンドウの下に「デフォルト値」にする」というボタンがありますので、これをクリックします。

”デフォルト値にする”のボタンの意味は、システム全体で共通の設定値を設定するということです。

NewImage

”電源管理の設定”は、gconfによって設定ファイルを保存しており、システム全体で共通の設定値として保存した場合は、以下のファイルに設定値が保存されます。

○デフォルト値が保存される場所

/etc/gconf/gconf.xml.defaults/%gconf-tree.xml

ちなみに、各ユーザの個別の設定値は、ログインしたユーザIDのホームディレクトリ配下の ~/.gconf/apps/gnome-power-manager/%gconf.xml に保存されます。

NewImage

すると上記のように、”lid_ac”が”blank”、つまり、液晶画面が閉じられた時は、サスペンドせずに液晶画面をブランク(液晶画面の電源をOFFにして真っ暗)にするという設定になります。

これで、ログイン前の状態のログイン画面で液晶画面を閉じてもサスペンドしなくなります。

めでたし、めでたし。

 

 

ThinkPadT42でDebian:Debian 6のインストール

ThinkPad T42に最後の一働きをしてもらうため、Debian 6 squeezeをインストールしてみました。

Pentium-M 1.8GHz、メモリ2GBなのでできることは限られますが、それでも玄箱Pro(ARM9 400MHz, メモリ128MB)に比べれば快適です。

(1)Debian 6のインストールCDイメージ(isoイメージ)をDLする。

ThinkPad T42はUSBメモリからブートすることができないので、Debian 6のインストールCDイメージ(isoイメージ)をDLし、CD-R、ないしは、DVD-Rに焼いて、そのメディアからブートします。

http://www.debian.org/distrib/netinst#smallcd

今回は、上記のネットワークから必要なファイルを適宜DLしながらインストールする”小さなCD”というイメージを使いました。

これならCD-R、あるいは、DVD-R一枚で済みます。焼いたメディアは緊急用のメンテナンスディスクとしても使えるので、インストールが終わったら大事にとっておきましょう。

最近のLinuxのディストリビューションは64bit版がメインになっているため、DLするときは、64bit版(amd64)ではなく、32bit版(i386)のイメージが必要です。(ThinkPad T42のPentium-Mは、32bit CPUです。)

※ちなみに、ThinkPad T42で間違って64bit版(amd64)のイメージでブートしてみたところ、途中まではブートしますが、ハングアップしてしまいます。。

ThinkPad T42のCD/DVDドライブがへたっている場合は、外付けのUSB CD/DVD-ROMドライブからでもブートできます。

(2)光学メディアからブートする。

ThinkPad T42のBIOSの設定で、起動順が、HDDよりも先に、内蔵のCD/DVD-ROMドライブ、外付けUSB CD/DVD-ROMドライブが来ていることを確認して、いよいよインストールを開始します。

(3)インストールする。

ネットワークから必要なファイルを適宜DLしながらインストールするので、通信状況やサーバの状況によって変わってきますが、インストールが完了するのに結構時間がかかるので、気長に待ちましょう。

P.S

玄箱Proでは、開発版の次期Debian 7 wheezyを使用していましたが、アップデートが頻繁に行われるため、追従するのが大変なので、今回はおとなしくリリース版のDebian 6にしています。(^_^;)

 

Google+ APIをPythonから使用する方法

Google+ APIが公開されたため、Pythonから使用する方法を調べてみました。

あとでわからなくなりそうなので、自分用のメモ。

 

(1)入手先

○Google+ Platform
http://developers.google.com/+/downloads

上記のGoogleの公式サイトから、Google+ API の各種言語用のライブラリをダウンロードすることができます。

現在サポートされているのは、.NET, Google Web Toolkit, Java, Objective C, PHP, Python, Rubyです。

○Google APIs Client Library for Python
http://code.google.com/p/google-api-python-client/

Google APIをクライアントから使用するためのPython版の共通ライブラリです。Google+ APIのPython版を使用するのに必要なモジュールなので、事前にインストールしておく必要があります。

Google+ PlatformのProject Homeのリンクからたどれます。

○Google+ Python API Starter Project
http://code.google.com/p/google-plus-python-starter/

Google+ APIのPython版のページです。

Google+ PlatformのStarter Projectのリンクからたどれます。

 

(2)必要なもの

・Google APIs Client Library for Python

http://code.google.com/p/google-api-python-client/ Downloads から、以下の2つのファイルをダウンロードします。

oauth2client-1.0beta4.zip
google-api-python-client-1.0beta4.zip

・Google+ Python API Starter

http://code.google.com/p/google-plus-python-starter/ の zip archive から、以下のファイルをダウンロードします。

google-plus-python-starter.zip

 

(3)共通ライブラリをインストールする。

oauth2client-1.0beta4.zip
google-api-python-client-1.0beta4.zip

をそれぞれ展開して、以下のように実行すると、ホームディレクトリの下(~/lib/python)にモジュールがインストールされます。

# インストール時

$ python setup.py install –home=~

また、モジュールを使用するときは、以下のように環境変数のPYTHONPATHを設定すると、ホームディレクトリの下にインストールされたモジュールを使用することができるようになります。

#モジュールを使う時

$ export PYTHONPATH=~/lib/python

 

(4)サンプルアプリの設定ファイルを作成する。

google-plus-python-starter.zipを展開すると、google-plus-python-starter/cli/settings.pyという設定ファイルがあるので、以下の情報をGoogle APIs Console https://code.google.com/apis/console/ から取得して設定します。

<google-plus-python-starter/cli/settings.py>

CLIENT_ID=”クライアントID”
CLIENT_SECRET=”シークレット”
API_KEY=”APIキー”

初めてGoogle APIs Consoleにアクセスすると、プロジェクトを作成するか訪ねてくるので、「Create Project…」のボタンをクリックします。

NewImage

NewImage

「Services」→「Google+ API」をONにします。すると、利用許諾が表示されるので、同意します。

NewImage

Google+ APIがONになりました。

NewImage

Simple API AccessのAPI keyのところに、発行されたAPI Keyが表示されています。これをメモっておきます。

次に、OAuth 2.0のクライアントIDを作成します。「Create an OAuth 2.0 client ID…」のボタンをクリックします。

NewImage

Product nameを入力します。適当な内容でいいと思います。それ以外は入力しなくてもOKです。 「Next」ボタンをクリックします。

NewImage

「Installed application」を選択して、「Create client ID」をクリックします。

NewImage

 

NewImageこれで、Client IDとClient secretを取得できたので、メモっておきます。

そして、settings.pyに取得できたパラメータをセットします。

(5)サンプルアプリを実行する。

$ google-plus-python-starter/cli/python plus_cli.py

を実行すると、OAuth2で認証するときに最初に別のWebブラウザで許可を与えるページを開くためのURL(https://accounts.google.com/〜で始まる)が表示されるので、これをWebブラウザにコピペして表示させます。

NewImage

すると、以下のような許可の確認ページが表示されるので、「Allow access」のボタンをクリックします。

NewImage

認証に成功すると、「The authentication flow has completed.」と表示されます。

認証結果は、plus_auth.dat に保存されるので、以後は特に許可を与える必要はありません。

そのあと、自分の最新の「共有」ストリームが取得されて、表示されます。

今後、Google+ APIが拡充されていくと思いますので、面白くなりそうですね。(^_^)ノ

Windows 8 Developer Preview Intel 64bit版、32bit版ともにVMware Fusion 3.1.3でインストールできず

本日、一般向けにWindows 8 Developer PreviewのIntel 64bit版、32bit版ともにVMware Fusion 3.1.3 on OS X 10.6.8, 10.7.1の環境ではインストール途中でクラッシュしてしまい、インストールできませんでした。

Windows 8 Developer PreviewのISOイメージは、Windows Dev CenterからDL可能です。ARM版はまだありません。

http://msdn.microsoft.com/en-us/windows/home/

64bit版の場合、VMware Fusionの仮想CPUがサポートしていないCPU命令を実行しようとしてクラッシュしてしまう旨のエラーが表示されます。

32bit版の場合は、VMware Fusionのエラーではなく、Windows 8 Developer Previewが実行環境をサポートしていないので、リセットしろという旨のエラーが表示されます。

ひょっとすると、新しいVMware Fusion 4なら動作するのかもしれませんが、いち早く、最新のWindows 8を試してみたい自分としては、なんとももどかしい結果となってしまいました。

ということで、今後のMSに期待したいと思います。(^_^)

 

VMware Fusion 4.0.1 リリース!

2011/09/14、本日、VMware Fusion 4.0.1が発売されました。

http://www.vmware.com/jp/support/support-resources/pubs/fusion_pubs

現時点では、DL販売、新規購入でしか購入できないようですが、日本円で4,635円のようです。

http://store.vmware.com/store/vmware/DisplayProductDetailsPage/ProductID.165310200/Currency.JPY

NewImage

評価版のDLは、3営業日以降にできるようになるようです。

 

VMware Fusion 4.0.1の主な変更点としては、次の通りです。

http://www.vmware.com/jp/products/desktop_virtualization/fusion/migrate.html

  • OS X Lion 対応
  • パフォーマンスの向上

64bit対応したことで、大幅にパフォーマンスの向上が図られているようです。

高度に最適化された 64 ビット エンジンと高速のマルチコア プロセッサを VMware Fusion 4 と併用すると、Windows アプリケーションと Mac アプリケーションを最大速度で同時に実行できます。このとき、信頼性が損なわれることはありません。
VMware Fusion 4 は、アプリケーションの高速起動、シームレスなスクロール操作、サスペンド状態からの迅速なレジューム、およびディスク パフォーマンスの全体的な向上を実現し、VMware Fusion 3 より優れた End-to-End のアプリケーション パフォーマンスを提供します VMware Fusion 4 では、3D グラフィックの処理速度が 2.5 倍以上に向上し、OpenGL 2.1 および DirectX 9.0c Shader Model 3 のグラフィックスがサポートされています。これにより、AutoCAD 2011 などの要件の厳しい 3D アプリケーションを容易に実行できます。

3D関係が2.5倍以上にパフォーマンスが向上しているということで、Mac上でWindowsがさらに快適に使えるようになりますね。

NewImage

仮想マシンの暗号化にも対応して、セキュリティも向上しています。

仮想マシンのスナップショットがTimeMachine互換になった点も嬉しいポイントですね。

 

 

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