繁体   English   中英

在OSX上使用透明的mitmproxy测试iOS应用的SSL / TLS证书验证

[英]Testing an iOS app's SSL/TLS certificate validation using a transparent mitmproxy on OSX

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

mitmproxy配置的详细信息

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

我正在使用以下脚本来配置和启动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上使用物理iPhone5,并连接到与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
[...]

我遇到了同样的问题。 就我而言,我在“设置”面板中关闭了Mac OS防火墙。 它可以工作,我可以使用mitmproxy作为透明代理。

我今天也遇到同样的问题。我只解决了dns问题。我认为mitmproxy不提供dns

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM