1

開発中の iOS アプリのセキュリティ テストの一環として、さまざまな API に接続するときに SSL/TLS 証明書が正しく検証されることを確認したいと思います。Mac に mitmproxy をインストールし、それを透過プロキシとして構成してから、この透過プロキシ iOS WiFi スクリーンショットに基づいて WiFi を構成しました。iPhone が WiFi に接続されていることを示すのに非常に長い時間がかかり、その後ネットワークにアクセスできなくなります。イベントログを含め、mitmproxy には何も表示されません。 mitmproxy は何も表示しません

mitmproxy 構成の詳細

システムpythonにmitmproxy 0.11.3をインストールしました(そして、OSXに同梱されている古いpyOpenSSLの名前を変更して、pipによってmitmproxyとともにインストールされたpyOpenSSL 0.14を使用するようにしました)。

次のスクリプトを使用して、pf と mitmproxy を構成および開始しています。

#!/bin/bash -x
sudo sysctl -w net.inet.ip.forwarding=1

# sudo sysctl -w net.inet.ip.scopedroute=0
## OSX can't change the net.inet.ip.scopedroute kernel flag in user space so I used:
## sudo defaults write "/Library/Preferences/SystemConfiguration/com.apple.Boot" "Kernel     Flags" "net.inet.ip.scopedroute=0
## and then rebooted
sudo defaults read /Library/Preferences/SystemConfiguration/com.apple.Boot

cat > pf.conf << _EOF_
rdr on en0 inet proto tcp to any port 80 -> 127.0.0.1 port 8080
rdr on en0 inet proto tcp to any port 443 -> 127.0.0.1 port 8080
_EOF_
cat pf.conf

sudo pfctl -d
sudo pfctl -f pf.conf
sudo pfctl -e

mitmproxy -T --host

インターフェイス en0 は、私の Mac の WiFi 接続です。

そのスクリプトからの出力 (control-C で mitmproxy を停止した後に表示されます) は次のようになります。

$ ./transparent.sh 
+ sudo sysctl -w net.inet.ip.forwarding=1
net.inet.ip.forwarding: 1 -> 1
+ sudo defaults read /Library/Preferences/SystemConfiguration/com.apple.Boot
{
    "Kernel Flags" = "net.inet.ip.scopedroute=0";
}
+ cat
+ cat pf.conf
rdr on en0 inet proto tcp to any port 80 -> 127.0.0.1 port 8080
rdr on en0 inet proto tcp to any port 443 -> 127.0.0.1 port 8080
+ sudo pfctl -d
No ALTQ support in kernel
ALTQ related functions disabled
pf disabled
+ sudo pfctl -f pf.conf
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.

No ALTQ support in kernel
ALTQ related functions disabled
+ sudo pfctl -e
No ALTQ support in kernel
ALTQ related functions disabled
pf enabled
+ mitmproxy -T --host

iOS構成の詳細

iOS 8.1 で物理的な iPhone5s を使用しており、Mac と同じ WiFi ネットワークに接続しています。私のWiFi構成は次のようになります。 iPhone のトランスペアレント プロキシ Wi-Fi 設定

192.168.20.118 を使用しました。これは、ifconfig を使用して見つけた同じ WiFi ネットワーク上の Mac の IP アドレスであるためです。

$ ifconfig
[...]
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether xx:xx:xx:xx:xx:xx 
    inet6 fe80::22c9:d0ff:fe84:983b%en0 prefixlen 64 scopeid 0x4 
    inet 192.168.20.118 netmask 0xffffff00 broadcast 192.168.20.255
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: active
[...]
4

2 に答える 2

1

私は同じ問題を抱えています。私の場合、設定パネルで Mac OS ファイアウォールをオフにしています。動作し、mitmproxy を透過プロキシとして使用できます。

于 2015-02-06T03:22:02.833 に答える