Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法
-
Upload
tobaruyuta -
Category
Internet
-
view
405 -
download
5
Transcript of Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法
Burp Suiteを使ってiPhoneアプリを診断した時に
困ったことと、解決方法
Burp Suite Japan LT Carnival
自己紹介
名前 桃原 裕太 / とうばる ゆうた
所属 株式会社 シーエー・アドバンス 技術統括本部
経歴 前職 ・ECサイト等の開発株式会社 シーエー・アドバンス ・社内ツールの開発 ・脆弱性診断の業務に携わって約4年
業務 Webアプリケーション脆弱性診断 ・PCブラウザ向けアプリ ・SPブラウザ向けアプリ ・Androidアプリ ・iOSアプリ
2/26
本日のテーマについてざっくり解説
❏ 困ったこと
❏ Burp Suite で iPhone アプリを診断した時に、
特定のドメインだけ通信が取得できない状態に…
❏ 解決方法
❏ Macの機能を使って解決できました!
❏ インターネット共有
❏ パケットフィルタ機能
3/26
通常は下記のように診断しています。
Android/iPhoneの診断
Burp Suite:8080
社内NW
Burp Suite上でHTTPリクエスト/レスポンスを確認、改竄できる
4/26
通常は下記のように診断しています。(HTTPリクエスト)
Android/iPhoneの診断
Burp Suite:8080
社内NW
Burp Suite上でHTTPリクエストの確認や、改竄ができる
5/26
通常は下記のように診断しています。(HTTPレスポンス)
Android/iPhoneの診断
Burp Suite:8080
社内NW
Burp Suite上でHTTPレスポンスの確認や、改竄ができる
6/26
Androidアプリの診断(問題発生前)
いつものようにゲームアプリを診断していました。(SSL通信+Messagepack)
※特に問題なく進む…
POST /api HTTP/1.1Host: stg.hoge.comContent-Type: application/x-msgpackUser-Agent: Android---略---Content-Length: 530000Connection: close
{"postData": {"data": [“hogehoge”], "method": "fuga"}}
7/26
iPhoneアプリの診断(問題発生)
対象ドメインの通信が取得できない…
POST /api HTTP/1.1Host: stg.hoge.comContent-Type: application/x-msgpackUser-Agent: IPhone---略---Content-Length: 530000Connection: close
{"postData": {"data": [“hogehoge”], "method": "fuga"}}
8/26
深まる謎
❏ iPhone版の診断対象のドメインだけ通信が拾えない
❏ iPhone版のゲームは正常にプレイできている
❏ Android版は全て通信が拾える
❏ Burp SuiteのSSL Path Throughにも登録されていない
❏ Burp SuiteのAlertsタブは特に反応しない
9/26
さらに深まる謎
❏ iPhoneのモバイルデータ通信をオフにしても拾えない
❏ Android端末のプロキシ設定はiptablesコマンドで設定
❏ iPhone端末のプロキシ設定は下記で設定
❏ 設定→Wi-Fi→無線LANの詳細→HTTPプロキシ(手動)
❏ サービス側に確認すると、下記の回答
❏ Unityで開発しています
❏ Android/iOSともほぼ同じコードです
❏ 特別な対応はしていないのでUnity依存かもしれません10/26
❏ iPhoneのモバイルデータ通信をオフにしても拾えない
❏ Android端末のプロキシ設定はiptablesコマンドで設定
❏ iPhone端末のプロキシ設定は下記で設定
❏ 設定→Wi-Fi→無線LANの詳細→HTTPプロキシ(手動)
❏ サービス側に確認すると、下記の回答
❏ Unityで開発しています
❏ Android/iOSともほぼ同じコードです
❏ 特別な対応はしていないのでUnity依存かもしれません
ここに着目しました!
11/26
解決案
iPhoneでもiptablesを
設定したらいけるのでは!
12/26
iPhoneでiptablesコマンドがなくて震える
((((;゚Д゚))))ガクガクブルブル
13/26
現実逃避
14/26
現実逃避
15/26
翌営業日
Macの機能を使って
解決できました!
# インターネット共有
# パケットフィルタ
16/26
解決方法(図解)
診断対象外URLの通信経路
社内NW Burp1:8081
PF(パケットフィルタ)
リダイレクト設定診断対象外:Burp1
診断対象外のSSL通信は全てSSL Path Through に登録非SSL通信はそのまま通す
Mac
Win
17/26
解決方法(図解)
診断対象URLの通信経路
Burp3:8080
社内NW
Burp2:8080
診断対象URLのみBurp2→Burp3へリダイレクト
PF(パケットフィルタ)
リダイレクト設定
診断対象 :Burp2
通常通り、Burp上で診断対象のURLに対して脆弱性診断が出来る
Mac
Win
18/26
解決方法(設定)
Mac
Burp1:8081 を起動し、Proxy -> Options の赤枠部分にチェックを入れる
19/26
解決方法(設定)
Mac
Burp2:8080 を起動し、Proxy -> Options -> Proxy Listener を設定
20/26
解決方法(設定)
Mac
有線LAN接続し、インターネット共有を設定
PF設定ファイルの作成(通信のリダイレクト先を指定する)
PF設定の反映
rdr inet proto tcp from any to port 80 -> 127.0.0.1 port 8080
rdr inet proto tcp from any to 診断対象のIPアドレス port 443 -> 127.0.0.1 port 8080
rdr inet proto tcp from any to any port 443 -> 127.0.0.1 port 8081
pf_burp.conf
% sudo pfctl -ef pf_burp.conf
21/26
解決方法(設定)
Win
Burp3:8080 を起動する
MessagePack の Extention を追加
※実際にBurpを操作する端末
※こちらの端末だけ Burp Suite Pro を使ってました
22/26
解決方法(図解)
結果、この状態で診断できました。
Burp3:8080
社内NW Burp1:8081
Burp2:8080
診断対象URLのみBurp2→Burp3へリダイレクト
リダイレクト設定診断対象外:Burp1診断対象 :Burp2
診断対象外のSSL通信は全てSSL Path Through に登録非SSL通信はそのまま通す
PF(パケットフィルタ)
通常通り、Burp上で診断対象のURLに対して脆弱性診断が出来る
Mac
Win
23/26
解決!
無事にiPhone版でも対象のURLが取得できました!
POST /api HTTP/1.1Host: stg.hoge.comContent-Type: application/x-msgpackUser-Agent: IPhone---略---Content-Length: 530000Connection: close
{"postData": {"data": [“hogehoge”], "method": "fuga"}}
24/26
まとめ
❏ Macでインターネット共有とパケットフィルタを使うと通信が強
制的に取れる
❏ 泡盛飲んで寝たら解決できるかもしれない(できないかもしれない)
❏ 参考リンク
❏ PF 設定方法
❏ http://qiita.com/watarin/items/ca845c95843c5a52a7a6
❏ http://ftp.tuwien.ac.at/.vhost/www.openbsd.org/xxx/faq/pf/ja/rdr.html
❏ MessagePack の Extension
❏ http://io.cyberdefense.jp/entry/2016/05/13/Burp_Extension%E9%96%8B%E7%99%BA_-_MessagePack
25/26
ご清聴ありがとうございました。
26/26