标题: HTTPS抓包扯淡 创建: 2023-09-01 08:19 更新: 链接: https://scz.617.cn/network/202309010819.txt 这是一篇WEB安全白丁的扯淡,没有任何有效内容。扯淡,自然不是正经技术文,就 是东拉西扯些有的没的。 HTTPS抓包这事,很多年前干过一些,SSLKEYLOGFILE+Wireshark、Burp、Fiddler、 HttpWatch、HTTP Analyzer、Firefox的Live HTTP Headers、Tamper Data插件,后 来F12,大概这么些,别的工具没用过。只抓过PC应用,没抓过手机应用。 虽然干过,也知道技术原理,但以我的标准看,与白丁无异。年轻时写简历,「了解、 熟悉、精通」这些词的正确涵义我一直门儿清,从未用错过。近日稍微成体系地学习 HTTPS抓包,目标是Windows系统HTTPS抓包,就有了这篇扯淡。 网友UID(1832267322)有次提及他喜欢用mitmproxy的upstream模式,只在客户端装 mitmproxy的证书,再"-k -m upstream:"接Burp、Fiddler、Charles等工具。这个思 路挺好,以前我未想过,实践后甚为满意。理论上,某工具只要能作为downstream与 其他upstream串联,都有这种效果。 一直知道mitmproxy,之前从未用过,最近用上后,爽!先启动mitmproxy或mitmweb, 给客户端配置代理,访问特定URL: http://mitm.it/ 根据其中的指示,安装mitmproxy证书。Firefox不用OS的根证书库,它有自己的根证 书库。Chrome用OS的根证书库,它自己的设置最终还是转向OS设置。LTSB版Win10安 装mitmproxy证书时,不要下载mitmproxy-ca-cert.p12,有很多教程让下载该文件并 双击安装,但在Win10中这样行不通,中间有一步让输密码,无论如何无法继续,提 示密码不正确。搜了一下,据说是个BUG。如下命令行同样提示密码不正确: $ certutil.exe -importpfx root mitmproxy-ca-cert.p12 Enter PFX password: CertUtil: -importPFX command FAILED: 0x80070056 (WIN32: 86 ERROR_INVALID_PASSWORD) CertUtil: The specified network password is not correct. 正确搞法是,下载Android用的mitmproxy-ca-cert.cer -------------------------------------------------------------------------- 添加证书 certutil.exe -addstore root mitmproxy-ca-cert.cer 查看已添加证书 certutil.exe -store root mitmproxy 删除已添加证书 certutil.exe -delstore root mitmproxy -------------------------------------------------------------------------- certmgr.msc同样可以导入、查看、删除证书: 受信任的根证书颁发机构->证书->右键->所有任务->导入->mitmproxy-ca-cert.cer 奇特的是,certutil.exe添加的证书,certmgr.msc可以看到并管理,certmgr.msc添 加的证书,certutil.exe看不到,原因不明。所以,推荐用certutil.exe。 假设只想用Chrome测试代理,暂时不验证服务端证书,类似"curl -k",可先杀掉所 有Chrome实例,再指定命令行参数启动Chrome: --proxy-server=: --proxy-server=socks5://: --ignore-certificate-errors 若不先杀掉现有实例,据说上述命令行参数不生效,这是个坑。 mitmproxy的SOCKS代理兼容性不够,只支持SOCKS5,不支持SOCKS4,某些版本Win10 的IE只支持SOCKS4。 jdk-17.0.7+7的javaw.exe启动burp 2023.9.2后,"Open Browser"访问 https://api.ipify.org/ 报错 Burp Suite Professional Error Permission denied: no further information curl也报错 curl --proxy http://: -k https://api.ipify.org jdk-17.0.7+7的java.exe无此BUG,jdk-17.0.8的javaw.exe无此BUG。 "Fiddler Everywhere"是收费版,要破解,不想折腾。"Fiddler Classic"还是免费 使用,我用这个。正经下载前要填一些信息,就像过去三年过度收集信息一样,但最 终下载链接固定且可直接使用,我就不填信息。 https://www.telerik.com/docs/default-source/fiddler/fiddlersetup.exe https://telerik-fiddler.s3.amazonaws.com/fiddler/FiddlerSetup.exe Fiddler的"Allow remote computers to connect"缺省清空,侦听127.0.0.1,若勾 选,侦听0.0.0.0,无法指定绑某个IP,这比较扯。 从Win8开始,UWP默认不允许访问127.0.0.1;Edge算UWP,可用它实测之;这幺蛾子 我才知道。Fiddler有个工具处理这种事: Fiddler->Tools->Win8 Loopback Exemptions 参看: 《UWP默认不允许访问127.0.0.1》 https://scz.617.cn/windows/202308311521.txt Charles 4.6.4是最后的稳定版,5.x是Beta版,但keygen仍适用。4.6.4有BUG,看不 到baidu的Response,Fiddler无此幺蛾子。可以弄个Rewrite规则,访问baidu,收到 Response时,在Header中"Content-Type: text/html"尾部增加";charset=UTF-8", 之后Charles可正常解码Response中的汉字并显示出来。4.6.4有捕捉异常,未Rewrite 时,baidu这种直接空空如野,想看hexdump都没有。5.x未捕捉此异常,若设法用 java.exe启动5.x,可看到错误提示: WARNING com.xk72.charles.CharlesContext Uncaught exception on AWT-EventQueue-0 java.lang.StringIndexOutOfBoundsException: String index out of range: 61 LTSB版Win10中无法这样安装 Add-AppxPackage -Path charles-proxy-5.0b11-win-x86_64.appx 双击更不行,有Microsoft Store的Win10应该可以。我用7-Zip拖出来用。缺省情况 下5.x无法在LTSB版Win10中启动,需要改配置,4.6.4兼容性更好。 此处留两个小作业,设法用java.exe分别启动Charles 4.6.4、5.x,不只看到GUI, 还得正常抓HTTPS包,且控制台无任何警告。有一定难度,充满好奇心的可以一试。 一般用不上这种启动方式,但若想调试Charles,可能就用上了。 测了若干代理转换工具,新接触到pproxy、gost、glider。pproxy是纯Python版,用 得很爽,所以用py2exe转了一个standalone版。gost、glider都是Go开发的,很容易 交叉编译得到gost.exe、glider.exe。便携可移动的EXE,是一种追求。 参看: 《若干代理转换工具》 https://scz.617.cn/network/202308291902.txt 抓HTTPS干坏事咱不能干,但不在现实世界用,就少点啥。微信视频号无法直接下载, 网上有一堆用Fiddler、Charles下视频号的教程,有现成工具,有微信小程序。学过 mitmproxy,我写了个mitmproxy插件下载视频号,你也可以这样检验学习效果。 成体系学习某项技术,自己可以定一些框架,依此填补空白,迭代更新学习文档。比 如,这是我学mitmproxy时的框架: -------------------------------------------------------------------------- ☆ 安装mitmproxy ☆ mitmproxy基本操作 ☆ mitmweb基本操作 ☆ 客户端安装mitmproxy证书 1) Firefox安装mitmproxy证书 2) Chrome安装mitmproxy证书 3) Windows安装mitmproxy证书 4) curl使用mitmproxy证书 ☆ mitmproxy与其他代理串联 1) Burp 2) Fiddler 3) Charles ☆ 代理类型转换 1) pproxy 2) pproxymain.exe 3) gost 4) glider ☆ 微信视频号下载 1) 启动Charles 2) 启动mitmweb 3) 客户端代理设置 4) Charles过滤规则 5) mitmproxy插件 ☆ 参考资源 -------------------------------------------------------------------------- 每一项都有如过江之鲫的现成资料可获取,但那是别人的知识,学完并写完,就变成 你的知识。人有思维定势,在脑子里时不容易跳出来,写在文档中,可能很快就意识 到。比如视频号下载,最初我用mitmproxy+Charles,后者GUI更好用,在此过程中 学习了"Recording Settings"以及Ctrl-F的精准用法。可以直接Charles,但前面说 过只装mitmproxy证书的,不纠结这点。写完"Charles过滤规则"这一小节,手工扒视 频链接没问题,但GUI中再怎么加强过滤也比不过mitmproxy插件精准,想着都到这份 上了,正好借此实践mitmproxy插件编写。若非写文档迭代至此,最初并未想过写插 件,换句话说,写文档促使学习更进一步。显然,他日若需手机抓包,便会继续迭代 更新文档。 这是一种万试万灵的学习方法,这是一套方法论。二十岁上下的,有志于网络安全行 业的,问到我这儿来的,都会提一下写文档的事。事实上,我已在有意无意引导嘉嘉 写文档,只不过她写的是数学文档。