burp suite を使って iphone アプリを診断した時に困ったことと、解決方法

26
Burp Suiteを使って iPhoneアプリを診断した時に 困ったことと、解決方法 Burp Suite Japan LT Carnival

Upload: tobaruyuta

Post on 08-Jan-2017

405 views

Category:

Internet


5 download

TRANSCRIPT

Page 1: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

Burp Suiteを使ってiPhoneアプリを診断した時に

困ったことと、解決方法

Burp Suite Japan LT Carnival

Page 2: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

自己紹介

名前 桃原 裕太 / とうばる ゆうた

所属 株式会社 シーエー・アドバンス 技術統括本部

経歴 前職 ・ECサイト等の開発株式会社 シーエー・アドバンス ・社内ツールの開発 ・脆弱性診断の業務に携わって約4年

業務 Webアプリケーション脆弱性診断 ・PCブラウザ向けアプリ ・SPブラウザ向けアプリ ・Androidアプリ ・iOSアプリ

2/26

Page 3: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

本日のテーマについてざっくり解説

❏ 困ったこと

❏ Burp Suite で iPhone アプリを診断した時に、

特定のドメインだけ通信が取得できない状態に…

❏ 解決方法

❏ Macの機能を使って解決できました!

❏ インターネット共有

❏ パケットフィルタ機能

3/26

Page 4: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

通常は下記のように診断しています。

Android/iPhoneの診断

Burp Suite:8080

社内NW

Burp Suite上でHTTPリクエスト/レスポンスを確認、改竄できる

4/26

Page 5: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

通常は下記のように診断しています。(HTTPリクエスト)

Android/iPhoneの診断

Burp Suite:8080

社内NW

Burp Suite上でHTTPリクエストの確認や、改竄ができる

5/26

Page 6: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

通常は下記のように診断しています。(HTTPレスポンス)

Android/iPhoneの診断

Burp Suite:8080

社内NW

Burp Suite上でHTTPレスポンスの確認や、改竄ができる

6/26

Page 7: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

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

Page 8: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

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

Page 9: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

深まる謎

❏ iPhone版の診断対象のドメインだけ通信が拾えない

❏ iPhone版のゲームは正常にプレイできている

❏ Android版は全て通信が拾える

❏ Burp SuiteのSSL Path Throughにも登録されていない

❏ Burp SuiteのAlertsタブは特に反応しない

9/26

Page 10: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

さらに深まる謎

❏ iPhoneのモバイルデータ通信をオフにしても拾えない

❏ Android端末のプロキシ設定はiptablesコマンドで設定

❏ iPhone端末のプロキシ設定は下記で設定

❏ 設定→Wi-Fi→無線LANの詳細→HTTPプロキシ(手動)

❏ サービス側に確認すると、下記の回答

❏ Unityで開発しています

❏ Android/iOSともほぼ同じコードです

❏ 特別な対応はしていないのでUnity依存かもしれません10/26

Page 11: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

❏ iPhoneのモバイルデータ通信をオフにしても拾えない

❏ Android端末のプロキシ設定はiptablesコマンドで設定

❏ iPhone端末のプロキシ設定は下記で設定

❏ 設定→Wi-Fi→無線LANの詳細→HTTPプロキシ(手動)

❏ サービス側に確認すると、下記の回答

❏ Unityで開発しています

❏ Android/iOSともほぼ同じコードです

❏ 特別な対応はしていないのでUnity依存かもしれません

ここに着目しました!

11/26

Page 12: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

解決案

iPhoneでもiptablesを

設定したらいけるのでは!

12/26

Page 13: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

iPhoneでiptablesコマンドがなくて震える

((((;゚Д゚))))ガクガクブルブル

13/26

Page 14: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

現実逃避

14/26

Page 15: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

現実逃避

15/26

Page 16: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

翌営業日

Macの機能を使って

解決できました!

# インターネット共有

# パケットフィルタ

16/26

Page 17: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

解決方法(図解)

診断対象外URLの通信経路

社内NW Burp1:8081

PF(パケットフィルタ)

リダイレクト設定診断対象外:Burp1

診断対象外のSSL通信は全てSSL Path Through に登録非SSL通信はそのまま通す

Mac

Win

17/26

Page 18: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

解決方法(図解)

診断対象URLの通信経路

Burp3:8080

社内NW

Burp2:8080

診断対象URLのみBurp2→Burp3へリダイレクト

PF(パケットフィルタ)

リダイレクト設定

診断対象 :Burp2

通常通り、Burp上で診断対象のURLに対して脆弱性診断が出来る

Mac

Win

18/26

Page 19: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

解決方法(設定)

Mac

 Burp1:8081 を起動し、Proxy -> Options の赤枠部分にチェックを入れる

 

19/26

Page 20: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

解決方法(設定)

Mac

 Burp2:8080 を起動し、Proxy -> Options -> Proxy Listener を設定

 

20/26

Page 21: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

解決方法(設定)

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

Page 22: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

解決方法(設定)

Win

 Burp3:8080 を起動する

 MessagePack の Extention を追加

 ※実際にBurpを操作する端末

 ※こちらの端末だけ Burp Suite Pro を使ってました 

22/26

Page 23: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

解決方法(図解)

結果、この状態で診断できました。

Burp3:8080

社内NW Burp1:8081

Burp2:8080

診断対象URLのみBurp2→Burp3へリダイレクト

リダイレクト設定診断対象外:Burp1診断対象 :Burp2

診断対象外のSSL通信は全てSSL Path Through に登録非SSL通信はそのまま通す

PF(パケットフィルタ)

通常通り、Burp上で診断対象のURLに対して脆弱性診断が出来る

Mac

Win

23/26

Page 24: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

解決!

無事に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

Page 25: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

まとめ

❏ 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

Page 26: Burp suite を使って iPhone アプリを診断した時に困ったことと、解決方法

ご清聴ありがとうございました。

26/26