1

作为我正在开发的 iOS 应用程序安全测试的一部分,我想验证它在连接到各种 API 时是否正确验证了 SSL/TLS 证书。我在我的 Mac 上安装了 mitmproxy 并将其配置为透明代理,然后根据这个透明代理 iOS WiFi 截图配置 WiFi 。iPhone需要很长时间才能显示它已连接到WiFi,然后它就无法访问网络。mitmproxy 中什么也没有出现,包括在它的事件日志中: mitmproxy 什么也没显示

mitmproxy 配置的详细信息

我在我的系统 python 中安装了 mitmproxy 0.11.3(并重命名了 OSX 附带的过时的 pyOpenSSL,以便它使用 pyOpenSSL 0.14 与 mitmproxy 通过 pip 一起安装)。

我正在使用以下脚本来配置和启动 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上的透明代理wifi配置

我使用了 192.168.20.118,因为这是我的 Mac 在同一个 WiFi 网络上的 IP 地址,我使用 ifconfig 找到了它:

$ 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 回答
1

我今天遇到了同样的问题。我解决了它只设置了 dns。我认为 mitmproxy 没有提供 dns

于 2018-04-14T08:03:38.903 回答