iOS 13 Burp Suite 代理无法连接

Posted

技术标签:

【中文标题】iOS 13 Burp Suite 代理无法连接【英文标题】:iOS 13 Burp Suite Proxy Unable to Connect 【发布时间】:2019-10-23 15:05:56 【问题描述】:

我正在尝试运行 Burp Suite 代理以通过我的手机进行一些测试。

我已经安装了 Burp Suite 社区版 2.1.04 我已在 Proxy > Options > Proxy Listeners 中将我的 wifi 设置为使用我计算机的 IP 地址作为正确端口上的代理。

在我的 ios 设备上,我使用了 Safari 并转到 http://ComputerIP:Port 并安装了 CA 证书。 我从设置安装了证书。我还在 About > Cert Trust Settings 中信任证书。

我无法通过手机上网。我可以在 Burp Suite HTTP History 中看到与 Google 的连接已建立,但连接已关闭。我试过http://example.com 还是出不来。

GET / HTTP/1.1
Host: www.google.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Cookie: REALLY LONG COOKIE STRING
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.1 Mobile/15E148 Safari/604.1
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: close

我遵循了this 和this 教程,但没有运气。

有什么想法吗?

我尝试了 Charles Proxy,但我需要 TLS 1.3。

【问题讨论】:

【参考方案1】:

我认为您应该等待 Port Swigger 证书更新。 iOS 13 对 TLS 有新要求 - https://support.apple.com/en-us/HT210176

作为替代方案,您可以在 macOS 中使用 https://proxyman.io/。这应该适用于 iOS13

【讨论】:

【参考方案2】:

对于 iOS 13 上的 Burp,代理提供的证书不起作用,我已经生成了自己的证书...

创建一个新文件夹:

 mkdir BurpCA && cd BurpCA

使用以下内容创建 BurpCA.cnf 文件:

[ req ]
default_md              = sha256
distinguished_name      = req_distinguished_name
x509_extensions         = root_ca

[ req_distinguished_name ]
countryName             = US
countryName_min         = 2
countryName_max         = 2
stateOrProvinceName     = California
localityName            = Los Angeles
0.organizationName      = ROTTEN APPLE
organizationalUnitName  = ROTTEN APPLE
commonName              = localhost
commonName_max          = 64
emailAddress            = admin@localhost
emailAddress_max        = 64

[ root_ca ]
nsComment               = "Certificate for Burp"
subjectKeyIdentifier    = hash
basicConstraints        = critical, CA:true
keyUsage                = critical, keyCertSign

运行

openssl req -x509 -newkey rsa:2048 -out BurpCA.cer -outform PEM -keyout BurpCA.key -days 720 -verbose -config BurpCA.cnf -nodes -sha256 -subj "/CN=ROTTEN APPLE CA"

准备证书以将其导入 Burp 并将导出密码设置为“burp”

openssl pkcs12 -export -out Burp.pfx -inkey BurpCA.key -in BurpCA.cer

打开 Burp(确保更新到最新版本)

转到:

代理选项卡 选项 导入/导出 CA 证书 PKCS#12 格式的证书和私钥

然后在你的 iPhone 上设置代理去http://burp 并按照正确的安装。

【讨论】:

自 ios 13.5.1 这个方法不再有效 :(【参考方案3】:

终于搞定了!

以下是完整说明:

    使用以下命令生成证书: openssl req -x509 -nodes -newkey rsa:4096 -keyout myBurpCA.key -out root-ca.crt -days 365 -subj "/C=CA/O=Burp/OU=Certification Services/CN=MyBURPRootCA/" -addext “扩展密钥使用=1.3.6.1.5.5.7.3.1” openssl pkcs12 -export -out BurpRootCA.pfx -inkey myBurpCA.key -in root-ca.crt

    转到 burp 并使用“导入/导出 CA 证书”选项并选择您新生成的证书(使用 pfx 文件)。 请勿使用“编辑代理侦听器 -> 证书 -> 使用自定义证书”。它不起作用(这是一个自定义的特定证书,您仍然需要一个 CA 签名的每主机证书)。

    进入iPhone,将Burp Suite代理配置为代理服务器,进入http://burp

    单击右上角下载并安装证书,下载它(“允许”),然后转到设置 -> 已下载配置文件 -> 安装,以完成其他安装步骤。

    通过转到设置 > 常规 > 关于 > 证书信任设置,为已安装的证书授权 TLS 身份验证,然后为证书切换“启用根证书的完全信任”。

就是这样!证书现在对 TLS 身份验证有效。

【讨论】:

【参考方案4】:

手动生成符合来自 iOS 13 和 Catalina 的新 Apple Security Update 的自签名证书很棘手。这是一个简单的:

    在桌面文件夹中准备 cert.config 文件
[ ca ]
default_ca    = CA_default
[ CA_default ]
default_md    = sha256
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
keyUsage=critical,keyCertSign
extendedKeyUsage = serverAuth,clientAuth
[ req ]
prompt = no
distinguished_name    = req_distinguished_name
[ req_distinguished_name ]
C=SG
L=SG
O=Proxyman
CN=proxyman.dev
OU=Proxyman

请更新 C、L、O、CN 和 OU 参数的值。

    在终端应用程序中生成 RSA 密钥。 (确保将 your_password 替换为您的真实密码)
cd ~/Desktop
openssl genrsa -aes256 -passout pass:your_password -out key.pem 2048
    生成自签名证书和私钥。 (确保将 your_password 替换为您的真实密码)
openssl req -x509 -new -nodes -passin pass:your_password -config cert.config -key key.pem -sha256 -extensions v3_ca -days 825 -out root-ca.pem
    转换为 p12 格式。 (确保将 your_password 替换为您的真实密码)
openssl pkcs12 -export -out root-ca.p12 -in root-ca.pem -inkey key.pem -passin pass:your_password -passout pass:your_password
    最后,您将拥有 root-ca.p12 文件。

如果您正在寻找更简单的方法,请通过Custom Root Certificate feature 来查看 Proxyman。可以在 iOS 和 android 远程设备上使用。

免责声明:我编写 Proxyman 应用程序。希望它可以帮助任何与 SSL 相关的人。

【讨论】:

以上是关于iOS 13 Burp Suite 代理无法连接的主要内容,如果未能解决你的问题,请参考以下文章

Burp Suite 如何抓取HTTPS请求

Burp Suite使用

Brup Suite拦截https请求

第三章 如何使用Burp Suite代理

第二章 Burp Suite代理和浏览器设置

Burp Suite使用介绍