やること
Mac OS X (yosemite)で、Burp Proxyを使ったWi-Fi 透過型Proxyを構築する。
目的
burp proxyのよくある使い方説明は、通常のFoward Proxyとして、クライアント側でProxyとしてBurpを利用するように設定して利用している。けどスマホ(iOSやAndroidなどなど)の脆弱性試験とかだと、いちいち設定するの面倒だし、そもそもProxy設定が出来なかったり無視したり(Androidとか)するで不便だったりする。
透過型とすることで、強制的に全てBurpを通すようすることが出来る。
構成
Mac を無線LAN APとして、無線APにきたhttp(s)通信を全てBurpにリダイレクトさせる
device ---> mac[ wifi --PFでリダイレクト--> burp --> ether ] ---> internet
必要な物
- Burp Proxy : http://portswigger.net/burp/proxy.html
- 無線LAN IFと、有線LAN IFの両方(Mac Bookなら、USBかThunderboltのEthernetアダプタ)
使う物
設定
無線LANアクセスポイント化する
ネットワーク共有でWiFiを共有する
- 有線LANをつないでおく
- システム環境設定 -> 共有 -> インターネット共有 で
- 共有する接続経路を有線LANのポート(USB Ethernetなど)
- 相手のコンピュータが使用するポートをWi-Fi
- Wi-Fiオプションを設定。(セキュリティなしだと接続され放題になる)
- セキュリティを WPA2パーソナル
- パスワードを設定
- インターネット共有にチェック
Burp Proxyを起動する
- Burp Proxy を起動する
- 本例では 127.0.0.1:8080
- invisible に設定する
- Proxy -> Options -> Proxy Liseners -> Edit -> Request handling -> Support invisible proxying をONにする
PFを使ってポートフォワーディングする
※yosemite未満の場合にはipfwでフォワーディングする。詳細は省略
PFを使う前に、IPフォワーディング許可の設定をする
% sudo sysctl -w net.inet.ip.forwarding=1
Burp Proxyを127.0.0.1:8080で起動。ネットワーク共有のBridgeがbrige100 の場合
(on bridge100 を省略してしまって全部のインターフェースを対象にしちゃっても動くので困らなければそれでもOK)
PFの設定ファイルを作る
rdr on bridge100 inet proto tcp from any to port 80 -> 127.0.0.1 port 8080
rdr on bridge100 inet proto tcp from any to port 443 -> 127.0.0.1 port 8080
実行する
% sudo pfctl -ef pf_transproxy_8080.conf
これで、ネットワーク共有にきたport 80, 443 宛のTCPパケットは全て、Burp Proxy にフォワードされるようになる
なおPFの設定確認は
% sudo pfctl -sn
でできる
使う
これで共有している無線LANアクセスポイントにつないだ端末からのhttp, httpsアクセスは全てBurp Proxyを通るようになるので、あとは焼くなり煮るなりする。
検証環境構築で参考にした情報
- Windowsを無線LANアクセスポイントにする http://www.atmarkit.co.jp/ait/articles/1005/27/news096_2.html
- Max OS X を無線LANアクセスポイントにする : http://weekly.ascii.jp/elem/000/000/136/136392/
- Linuxでの透過型Proxyの構築 : http://blog.tokumaru.org/2013/09/cookie-manipulation-is-possible-even-on-ssl.html
- Mac OS XでのWiFi透過型Proxy : http://lucumr.pocoo.org/2013/1/6/osx-wifi-proxy/
- Mac OS X でのポートフォワーディング : http://serverfault.com/questions/97117/how-do-i-enable-ip-forwarding-in-macos-x
- ipfwとPF : http://riatw.me/blog/vagrant_on_yosemite.html
- PF : http://ftp.tuwien.ac.at/.vhost/www.openbsd.org/xxx/faq/pf/ja/index.html
最後に
色々調べて作ったけど、、、、
mitmproxyには公式ドキュメントに方法が載っていた、、、orz
http://docs.mitmproxy.org/en/stable/transparent/osx.html