2011-02
11
21:32:11

[改訂版] iPhoneアプリのSSL接続をパケットキャプチャする方法

前回記事のはてブコメントで教えてもらったんですが、Burp Proxyというプロキシー型キャプチャソフトがあるそうです。
で実際使ってみると、これいい!お手軽ですね。Fiddler2と違ってiPhoneアプリでも利用可能です。
ということで改訂版をまとめてみますよ。 一応再度のまとめにしますので前回と被る部分もありますがご了承下さい。

なおやはり再度の補足になりますが、セキュリティの向上や社会的に正当な目的の下で正しく使用されることを期待してこのエントリーを記載しています。筆者は利用の結果に対して全くの無責任・無保証ですので、あくまで自己責任でご利用下さい。

概要

前回と同じく、Man In The Middle(MiTM)と呼ばれる「第三者介入」方式によるキャプチャとなります。つまりSSL/TLSは本来ピア・ツー・ピアなので第三者が通信経路上で通信傍受して暗号を複合化することは無理なので、クライアント側(ブラウザやここではiPhoneアプリ)を騙して別のサーバーに接続させ暗号を解除し、そこでキャプチャを取るという方法です。
本来は攻撃手法の一種ですが、応用すると暗号化通信でもキャプチャできるようになる、ということです。

以下は概要図です。

  1. iPhoneではホストAをプロキシとして設定する
  2. ホストAはiPhoneからのSSL/TLSセッションの暗号化を一旦解除し、更にSSl/TLSクライアントとしてリクエストをターゲットサイトへ転送する。
  3. ターゲットサイトはレスポンスをホストAへ返答し更にホストAはターゲットサイトに成り代わりiPhoneへレスポンス
  4. ホストAにてキャプチャ

使用機材・ツール

まずは当然iPhone(もしくはiPad,  iPod touch)。iOSバージョンは問いません。
前回と異なりJailBreakは必要ありません。

またここでは以下のツールを利用します。

iPhone構成ユーティリティ (Windows版はこちら)
Burp Suite(Burp Proxy)

主役となるBurp Proxyは本来Burp Suiteというセキュリティツールの一機能のようです。Suiteは有償ですが、Proxyだけであればフリーで利用できます。JavaですのでWindows/Mac/Linuxで動作します。
SSL/TLSプロキシとして動作すると同時に、WireSharkのようなパケットキャプチャも同時に行えます。
SSL/TLSセッションの場合は内蔵のSSL/TLSサーバ機能によってターゲットサイトになりすまします。iPhoneではプロキシとして設定しているだけなのでターゲットサイトと直接ピア・ツー・ピアで通信していると誤認しますが、実際にはピア・ツー・ピアレベルではBurp Proxyと通信していることになります。
つまりL3では無く、L7プロキシ(アプリケーション・ゲートウェイ)として動作する訳です。

iPhone構成ユーティリティはMacまたはWindowsが必要です。

機材はBurp Proxyを稼働させるホストが1台必要です。

1. Burp Proxyの設定

まずBurp Proxyをダウンロードして起動しましょう。
Windowsではsuite.batを起動するだけでOKです。Macならburpsuite_vx.x.x.jarといったバージョンの付いた名称のjarファイルがあるのでこれを起動するだけです。

これで既に稼働している状態なのですが、初回起動直後はlocalhostからのセッションしか受け付けなくなっているのでこれを変更します。
[proxy]タブ – [option]を選択します。既にProxyの設定が1エントリーなされていますが、「loopback only」がチェックされているのでこれを外します。
エントリーを選択後[edit]ボタンを押し、下部で変更できるようになるので「listen on loopback interface only」のチェックを外し、[update]ボタンを押します。これでリストのエントリのチェックも外れるはずです。
デフォルトポートは8080ですが、上記の作業で変更することも出来ます。

また初期状態では[proxy] – [intercept]がONになっているかも知れません。このままでは通信が止まってしまうので、必ずOFFにしておいてください。

2. Burp ProxyのCA証明書の取得

Burp Proxyは独自のCA証明書からターゲットサイトになりすますための一時的なSSL証明書をアクセス時に発行するのですが(デフォルト時動作)、このCA証明書をiPhoneへインストールするためにまず取得(CA証明書の生成ではありません。既に存在している証明書をエクスポートするだけです)しないといけません。もしかするとBurp Proxyに設定があるのかも知れませんが、僕は分かりませんでした。そこで一e="font-size: 11px;">携帯アドレス帳登録用QR生成

  • Blog
  • 2011-02
    11
    21:32:11

    [改訂版] iPhoneアプリのSSL接続をパケットキャプチャする方法

    前回記事のはてブコメントで教えてもらったんですが、Burp Proxyというプロキシー型キャプチャソフトがあるそうです。
    で実際使ってみると、これいい!お手軽ですね。Fiddler2と違ってiPhoneアプリでも利用可能です。
    ということで改訂版をまとめてみますよ。 一応再度のまとめにしますので前回と被る部分もありますがご了承下さい。

    なおやはり再度の補足になりますが、セキュリティの向上や社会的に正当な目的の下で正しく使用されることを期待してこのエントリーを記載しています。筆者は利用の結果に対して全くの無責任・無保証ですので、あくまで自己責任でご利用下さい。

    概要

    前回と同じく、Man In The Middle(MiTM)と呼ばれる「第三者介入」方式によるキャプチャとなります。つまりSSL/TLSは本来ピア・ツー・ピアなので第三者が通信経路上で通信傍受して暗号を複合化することは無理なので、クライアント側(ブラウザやここではiPhoneアプリ)を騙して別のサーバーに接続させ暗号を解除し、そこでキャプチャを取るという方法です。
    本来は攻撃手法の一種ですが、応用すると暗号化通信でもキャプチャできるようになる、ということです。

    以下は概要図です。

    1. iPhoneではホストAをプロキシとして設定する
    2. ホストAはiPhoneからのSSL/TLSセッションの暗号化を一旦解除し、更にSSl/TLSクライアントとしてリクエストをターゲットサイトへ転送する。
    3. ターゲットサイトはレスポンスをホストAへ返答し更にホストAはターゲットサイトに成り代わりiPhoneへレスポンス
    4. ホストAにてキャプチャ

    使用機材・ツール

    まずは当然iPhone(もしくはiPad,  iPod touch)。iOSバージョンは問いません。
    前回と異なりJailBreakは必要ありません。

    またここでは以下のツールを利用します。

    iPhone構成ユーティリティ (Windows版はこちら)
    Burp Suite(Burp Proxy)

    主役となるBurp Proxyは本来Burp Suiteというセキュリティツールの一機能のようです。Suiteは有償ですが、Proxyだけであればフリーで利用できます。JavaですのでWindows/Mac/Linuxで動作します。
    SSL/TLSプロキシとして動作すると同時に、WireSharkのようなパケットキャプチャも同時に行えます。
    SSL/TLSセッションの場合は内蔵のSSL/TLSサーバ機能によってターゲットサイトになりすまします。iPhoneではプロキシとして設定しているだけなのでターゲットサイトと直接ピア・ツー・ピアで通信していると誤認しますが、実際にはピア・ツー・ピアレベルではBurp Proxyと通信していることになります。
    つまりL3では無く、L7プロキシ(アプリケーション・ゲートウェイ)として動作する訳です。

    iPhone構成ユーティリティはMacまたはWindowsが必要です。

    機材はBurp Proxyを稼働させるホストが1台必要です。

    1. Burp Proxyの設定

    まずBurp Proxyをダウンロードして起動しましょう。
    Windowsではsuite.batを起動するだけでOKです。Macならburpsuite_vx.x.x.jarといったバージョンの付いた名称のjarファイルがあるのでこれを起動するだけです。

    これで既に稼働している状態なのですが、初回起動直後はlocalhostからのセッションしか受け付けなくなっているのでこれを変更します。
    [proxy]タブ – [option]を選択します。既にProxyの設定が1エントリーなされていますが、「loopback only」がチェックされているのでこれを外します。
    エントリーを選択後[edit]ボタンを押し、下部で変更できるようになるので「listen on loopback interface only」のチェックを外し、[update]ボタンを押します。これでリストのエントリのチェックも外れるはずです。
    デフォルトポートは8080ですが、上記の作業で変更することも出来ます。

    また初期状態では[proxy] – [intercept]がONになっているかも知れません。このままでは通信が止まってしまうので、必ずOFFにしておいてください。

    2. Burp ProxyのCA証明書の取得

    Burp Proxyは独自のCA証明書からターゲットサイトになりすますための一時的なSSL証明書をアクセス時に発行するのですが(デフォルト時動作)、このCA証明書をiPhoneへインストールするためにまず取得(CA証明書の生成ではありません。既に存在している証明書をエクスポートするだけです)しないといけません。もしかするとBurp Proxyに設定があるのかも知れませんが、僕は分かりませんでした。そこで一e="clear: both" >

    2011-02
    11
    21:32:11

    [改訂版] iPhoneアプリのSSL接続をパケットキャプチャする方法

    前回記事のはてブコメントで教えてもらったんですが、Burp Proxyというプロキシー型キャプチャソフトがあるそうです。
    で実際使ってみると、これいい!お手軽ですね。Fiddler2と違ってiPhoneアプリでも利用可能です。
    ということで改訂版をまとめてみますよ。 一応再度のまとめにしますので前回と被る部分もありますがご了承下さい。

    なおやはり再度の補足になりますが、セキュリティの向上や社会的に正当な目的の下で正しく使用されることを期待してこのエントリーを記載しています。筆者は利用の結果に対して全くの無責任・無保証ですので、あくまで自己責任でご利用下さい。

    概要

    前回と同じく、Man In The Middle(MiTM)と呼ばれる「第三者介入」方式によるキャプチャとなります。つまりSSL/TLSは本来ピア・ツー・ピアなので第三者が通信経路上で通信傍受して暗号を複合化することは無理なので、クライアント側(ブラウザやここではiPhoneアプリ)を騙して別のサーバーに接続させ暗号を解除し、そこでキャプチャを取るという方法です。
    本来は攻撃手法の一種ですが、応用すると暗号化通信でもキャプチャできるようになる、ということです。

    以下は概要図です。

    1. iPhoneではホストAをプロキシとして設定する
    2. ホストAはiPhoneからのSSL/TLSセッションの暗号化を一旦解除し、更にSSl/TLSクライアントとしてリクエストをターゲットサイトへ転送する。
    3. ターゲットサイトはレスポンスをホストAへ返答し更にホストAはターゲットサイトに成り代わりiPhoneへレスポンス
    4. ホストAにてキャプチャ

    使用機材・ツール

    まずは当然iPhone(もしくはiPad,  iPod touch)。iOSバージョンは問いません。
    前回と異なりJailBreakは必要ありません。

    またここでは以下のツールを利用します。

    iPhone構成ユーティリティ (Windows版はこちら)
    Burp Suite(Burp Proxy)

    主役となるBurp Proxyは本来Burp Suiteというセキュリティツールの一機能のようです。Suiteは有償ですが、Proxyだけであればフリーで利用できます。JavaですのでWindows/Mac/Linuxで動作します。
    SSL/TLSプロキシとして動作すると同時に、WireSharkのようなパケットキャプチャも同時に行えます。
    SSL/TLSセッションの場合は内蔵のSSL/TLSサーバ機能によってターゲットサイトになりすまします。iPhoneではプロキシとして設定しているだけなのでターゲットサイトと直接ピア・ツー・ピアで通信していると誤認しますが、実際にはピア・ツー・ピアレベルではBurp Proxyと通信していることになります。
    つまりL3では無く、L7プロキシ(アプリケーション・ゲートウェイ)として動作する訳です。

    iPhone構成ユーティリティはMacまたはWindowsが必要です。

    機材はBurp Proxyを稼働させるホストが1台必要です。

    1. Burp Proxyの設定

    まずBurp Proxyをダウンロードして起動しましょう。
    Windowsではsuite.batを起動するだけでOKです。Macならburpsuite_vx.x.x.jarといったバージョンの付いた名称のjarファイルがあるのでこれを起動するだけです。

    これで既に稼働している状態なのですが、初回起動直後はlocalhostからのセッションしか受け付けなくなっているのでこれを変更します。
    [proxy]タブ – [option]を選択します。既にProxyの設定が1エントリーなされていますが、「loopback only」がチェックされているのでこれを外します。
    エントリーを選択後[edit]ボタンを押し、下部で変更できるようになるので「listen on loopback interface only」のチェックを外し、[update]ボタンを押します。これでリストのエントリのチェックも外れるはずです。
    デフォルトポートは8080ですが、上記の作業で変更することも出来ます。

    また初期状態では[proxy] – [intercept]がONになっているかも知れません。このままでは通信が止まってしまうので、必ずOFFにしておいてください。

    2. Burp ProxyのCA証明書の取得

    Burp Proxyは独自のCA証明書からターゲットサイトになりすますための一時的なSSL証明書をアクセス時に発行するのですが(デフォルト時動作)、このCA証明書をiPhoneへインストールするためにまず取得(CA証明書の生成ではありません。既に存在している証明書をエクスポートするだけです)しないといけません。もしかするとBurp Proxyに設定があるのかも知れませんが、僕は分かりませんでした。そこで一e="float: left;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.rocaz.net%252F2011%252F02%252F1167.html%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%5B%E6%94%B9%E8%A8%82%E7%89%88%5D%20iPhone%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AESSL%E6%8E%A5%E7%B6%9A%E3%82%92%E3%83%91%E3%82%B1%E3%83%83%E3%83%88%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%22%20%7D);">

    前回記事のはてブコメントで教えてもらったんですが、Burp Proxyというプロキシー型キャプチャソフトがあるそうです。
    で実際使ってみると、これいい!お手軽ですね。Fiddler2と違ってiPhoneアプリでも利用可能です。
    ということで改訂版をまとめてみますよ。 一応再度のまとめにしますので前回と被る部分もありますがご了承下さい。

    なおやはり再度の補足になりますが、セキュリティの向上や社会的に正当な目的の下で正しく使用されることを期待してこのエントリーを記載しています。筆者は利用の結果に対して全くの無責任・無保証ですので、あくまで自己責任でご利用下さい。

    概要

    前回と同じく、Man In The Middle(MiTM)と呼ばれる「第三者介入」方式によるキャプチャとなります。つまりSSL/TLSは本来ピア・ツー・ピアなので第三者が通信経路上で通信傍受して暗号を複合化することは無理なので、クライアント側(ブラウザやここではiPhoneアプリ)を騙して別のサーバーに接続させ暗号を解除し、そこでキャプチャを取るという方法です。
    本来は攻撃手法の一種ですが、応用すると暗号化通信でもキャプチャできるようになる、ということです。

    以下は概要図です。

    1. iPhoneではホストAをプロキシとして設定する
    2. ホストAはiPhoneからのSSL/TLSセッションの暗号化を一旦解除し、更にSSl/TLSクライアントとしてリクエストをターゲットサイトへ転送する。
    3. ターゲットサイトはレスポンスをホストAへ返答し更にホストAはターゲットサイトに成り代わりiPhoneへレスポンス
    4. ホストAにてキャプチャ

    使用機材・ツール

    まずは当然iPhone(もしくはiPad,  iPod touch)。iOSバージョンは問いません。
    前回と異なりJailBreakは必要ありません。

    またここでは以下のツールを利用します。

    iPhone構成ユーティリティ (Windows版はこちら)
    Burp Suite(Burp Proxy)

    主役となるBurp Proxyは本来Burp Suiteというセキュリティツールの一機能のようです。Suiteは有償ですが、Proxyだけであればフリーで利用できます。JavaですのでWindows/Mac/Linuxで動作します。
    SSL/TLSプロキシとして動作すると同時に、WireSharkのようなパケットキャプチャも同時に行えます。
    SSL/TLSセッションの場合は内蔵のSSL/TLSサーバ機能によってターゲットサイトになりすまします。iPhoneではプロキシとして設定しているだけなのでターゲットサイトと直接ピア・ツー・ピアで通信していると誤認しますが、実際にはピア・ツー・ピアレベルではBurp Proxyと通信していることになります。
    つまりL3では無く、L7プロキシ(アプリケーション・ゲートウェイ)として動作する訳です。

    iPhone構成ユーティリティはMacまたはWindowsが必要です。

    機材はBurp Proxyを稼働させるホストが1台必要です。

    1. Burp Proxyの設定

    まずBurp Proxyをダウンロードして起動しましょう。
    のブラウザでProxy設定をして一度ターゲットサイトへアクセスし、ブラウザ経由でBurp ProxyのCA証明書をダウンロードします。

    最近のIEではそもそも接続が出来ませんので、Firefoxなど他のブラウザを使って下さい。
    Firefoxでは[オプション] – [詳細] – [ネットワーク]からSSLプロキシとしてホストAを、ポートとして8080(デフォルトの場合)を設定して、ターゲットサイトのURLへアクセスします。当然これはHTTPSです。
    すると「接続の安全性を確認できません」と表示されそのままではアクセスできないはずです。これはSSLサーバーとしてBurp ProxyがなりすましているためSSL証明書の検証に失敗しているからです。
    本来行うべきではありませんが、ここでは「危険性を理解した上で接続するには」を選び「例外」を押下します。すると「証明書」の表示ボタンがあるのでこれを押して証明書の詳細を「表示」します。
    証明書ビューアが表示されるので[詳細]タブを選ぶと、証明書の信頼チェーンが表示されます。ここで一番上位にある「PortSwigger CA」を選択して「エクスポート」ボタンを押します。これでBurp ProxyのCA証明書がダウンロードできますので、どこかへ保存しておきます。

    なお上記のように元々組み込みのCA証明書を利用する方法の他、前回のようにOpenSSLなどで生成したオリジナルのCA証明書をBurp Proxyにインポートして利用する方法もあるようですが、試していません(特に今回の目的では意味がありません)。

    3. iPhoneへCA証明書の組み込み

    ここが今回の話題の最大のポイントになります。
    iPhone構成ユーティリティは主に企業内部でiPhoneを配布するために様々な設定をプロファイルという単位でまとめてiPhoneに直接設定しておくことが出来ます。このプロファイルのインストールとあるいはアンインストールも構成ユーティリティからしか行えません。
    このプロファイルには企業の内部CAの証明書をインストールして信頼させる機能があるのでこれを利用します。

    1. まず構成ユーティリティを起動してiPhoneを接続します。
    2. [構成プロファイル]-[資格情報]を選択します
    3. 構成ボタンを押して、3で取得したBurp ProxyのCA証明書を追加します。Macでキーチェーンに追加していない場合には「信頼されていない証明書」というアラートが出ますが問題ありません。
    4. [デバイス]からiPhoneを選択して今設定したプロファイルをインストールします。

    4. iPhoneでのプロキシ設定

    WiFi接続が前提になります。
    [設定]から[Wi-Fi]を選択し現在接続中のアクセスポイントの詳細を表示します。
    一番下の方に[HTTPプロキシ] の設定がありますので手動を選び、[サーバ]にはホストAを、[ポート]には8080(デフォルト時)を設定します。

    5. キャプチャを行う

    これで準備は完了です。実際にiPhoneからアプリを起動して動作するかどうか確認してみましょう。正常に動作するなら、Burp Proxyの[proxy]タブ – [history]にキャプチャ結果が表示されるはずです。
    Burp Proxyのキャプチャ機能は確かにWireSharkあたりと比べると見劣りしますが、例えばiPhoneアプリがどんな情報を送信しているかなどを簡単に確認するには十分でしょう。
    とかくiPhoneアプリ(iPhoneに限らずモバイルアプリはそうでしょうが)は「内部が何をやっているか分かりにくい」ことが問題視されたり不安を呼んでいる面も多いように思います。こうした方法などで少しでも安心感が得られるならよいですね。



    2 個のコメント+トラックバックがあります

    1. Nitro238 より:

      はじめまして。この度このページの情報を参考にiPhoneでパケットキャプチャをやらせていただいたNitro238と申します

      キャプチャしたいアプリには機能が限定的ながらもブラウザ版もあり、ブラウザ版のhttpsパケットキャプチャには成功したのですが、

      アプリのパケットキャプチャを行おうとするとアプリがインターネットに接続できませんでした

      と出てきてしまい、キャプチャすることができなくて困っております。

      ブラウザの場合、アクセスしたとき、「この証明書はなんかあれですが それでも接続しますか」的なダイアログが出て続行ボタンを押せば接続できるのですが、

      アプリの場合そういった類のものが一切出なくて、証明書が合わないと切断される設計になっているためか、失敗します

      知り合いに、アプリとブラウザで接続できる、できない の違いがでるのは、ブラウザで使っているProxy関連の設定とアプリで使っている設定が違うためだ、と言われました。

      その後使わなくなったiPhoneをJailBreakしてetc/hostsファイルとやらを書き換えても見たのですが、現状に変化はありませんでした

      何か、よい方法がありましたら、アドバイスいただけたらと思います。

      もしどんなアプリ名かわからなければ具体的な回答ができない、というのであれば、アプリ名を開示したいと思います。

      以上、お忙しいとは思いますが、よろしくお願いします。

    コメントをする

    Archives

    Category

    Recent Posts

    Recent Comments

    Hot Entries