使用Packet Filter将iPhone流量转发到burp proxy上

0x00 背景

我们知道,如果想要用burp截取iPhone流量,可以将iPone接入mac的共享wifi,再将iPhone的wifi代理设置为burp的监听接口与端口即可。但是实际使用中,ssl等流量有时并不会被转发到burp上,我个人推测是只有使用iOS内置的NSURLSession等库的时候代理的设置才会被使用。除此之外的情况,我们需要使用路由表,强制将流量转发到burp上去。

0x01 教程

  1. 打开mac网络共享,将iPhone连接上mac的热点。

  2. 打开burp,监听本地8080端口,并开启support invisible proxying选项。

  3. 开启转发功能:

    sudo sysctl -w net.inet.ip.forwarding=1
    
  4. 添加/etc/pf.anchors/proxy.rules文件,内容如下:
    rdr pass on bridge100 inet proto tcp from any to any -> 127.0.0.1 port 8080
    
    # rdr pass on bridge100 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    # rdr pass on bridge100 inet proto tcp from any to any port 443 -> 127.0.0.1 port 8080
    
  5. 添加/etc/pf-minor.conf文件,内容如下:
    rdr-anchor "forwarding"
    load anchor "forwarding" from "/etc/pf.anchors/proxy.rules"
    
  6. 执行:sudo pfctl -evf /etc/pf-minor.conf。如果你想还原设定只需要执行sudo pfctl -evf /etc/pf.conf即可。

0x02 Android上的方法

转发:

iptables -t nat -A OUTPUT -p tcp -j DNAT --to 192.168.2.1:8080

查看:

iptables -L

删除:

iptables -F

0x03 iphone设定信赖burp的证书

在iphone10以后,仅仅下载安装burp的证书还是不行,还需要在"設定->一般->情報->証明書以来設定"中开启对你安装的证书的信任才行。