传输层[TCP 层]拦截和 TLS 解密, 使用 mitmproxy 分析 iOS 和 Android 的 HTTP(S)协议

2020-11-25 10:11:41 +08:00
 thisismr2

[继上一个帖子: https://v2ex.com/t/726090 可以分析所有 TCP&UDP 协议]

这个只能分析 HTTP(S)协议, 也不用在众多协议中过滤了, 原理有异曲同工之处, 对只需要分析 HTTP(S)协议的同学可以关注下.

传输层拦截和设置系统代理的方式有什么区别

这里有位此 app 已购买者, 可以看这个帖子的 https://v2ex.com/t/727609 的 10 楼, 11 楼

另外 ios 使用了 Network Extension(会出现 vpen 标识)并不意味着就是 TCP 层拦截. Network Extension 有网络层 API, 传输层 API, 应用层 API 比如可以只用 Network Extension 设置系统代理. 这就算是[应用层], 本质同设置系统代理一样. 另外如果接管所有流量, 就需要用[网络层 API]处理 IP 包, 再加工成[传输层]的 TCP/UDP 包, 最后再给[应用层] 两种方式,工作量完全不在一别,抓包类 app,良心好的开发者会在介绍了里说明是工作在哪一层

视频

同样在我的 youtube 频道录了一个视频

https://www.youtube.com/watch?v=puES_ayJkEo

注意

可以加上--rawtcp 参数, 视频中没有加 $ mitmproxy -m socks5 --rawtcp

也有一个 mitmweb 命令, 会启动图形界面

下载地址

iOS(>=14) https://apps.apple.com/us/app/id1528537342

Android (>=8) https://play.google.com/store/apps/details?id=com.txthinking.mitmproxy

兑换码

兑换码发放: 每 10 楼, 按 1-10 的随机数抽一次奖, 比如 1-10 楼抽一次, 11-20 抽一次, 21-30 抽一次... 抽的结果会在帖子内截图. 用 google 随机数生成器抽. 被抽到的可以选择需要 iOS 或 Android 端其中的一个兑换码

google 随机数生成器长这个样子 https://i.imgur.com/WLrgWLr.png https://i.loli.net/2020/11/17/OwyukCsVGrUx8Jq.png

获得兑换码的 Google Play 同学, 烦请给个好评(不强制)

与人方便, 自己方便

mitmproxy 的根证书安装的时候是访问 http://mitm.it 这个链接, 而这个链接在他们国外服务器, 所以可能很慢很慢很慢很慢, 多刷下试试 网络是个复杂的东西, 所以针对我写的网络工具, 我都会录视频, 但使用者仍然可能忽略某个细节导致某个步骤遇到小问题, 这时候如果你是已购买者, 我很愿意在 slack 回答你的一些问题, 请不要一气之下就给个差评(你看 iOS 就有个 Leigingban 同学给差评了, 就一句话: 完全不能工作). 另外如果你对 HTTP, HTTPS, TCP, TLS, MITM, mitmproxy, ROOT CA 这些概念不太熟, 也建议三思后再决定下载与否

https://docs.google.com/forms/d/e/1FAIpQLSdzMwPtDue3QoezXSKfhW88BXp57wkbDXnLaqokJqLeSWP9vQ/viewform

为了群组的质量, 使用了 slack 和申请机制.

谢谢大家

5375 次点击
所在节点    分享创造
149 条回复
thisismr2
2020-11-25 12:15:53 +08:00
@VHacker1989 您这逻辑.
xionger
2020-11-25 12:28:53 +08:00
@thisismr2 支持楼主 不用搭理那脑回路的人 看他加入时间 V2EX 第 511086 号会员 加入于 2020-10-04 10:28:07 +08:00

楼主为开源做的贡献还少吗 再说楼主算是写了个 app 解决了一个痛点 又没卖别人的代码 你行你也弄个试试啊

同时求楼主支持 iOS13 好多同事不想升级 iOS14 啊
thisismr2
2020-11-25 12:31:36 +08:00
❤️ 1-10 楼 中奖者: #8 @MrWhite 请在这里 base64 贴上你的邮箱, 并告知需要 Android 还是 iOS
thisismr2
2020-11-25 12:33:54 +08:00
❤️ 11-20 楼 中奖者: #14 @ben0629 请在这里 base64 贴上你的邮箱, 并告知需要 Android 还是 iOS
superrichman
2020-11-25 12:35:32 +08:00
分母
thisismr2
2020-11-25 12:51:44 +08:00
@xionger 我的升了 iOS14, 下一版会支持 iOS13, 还需要一些工作, 回头买个二手的 iOS13 手机测试下,
ben0629
2020-11-25 12:55:18 +08:00
@thisismr2 MzQ4Njg0MjAyQHFxLmNvbQ== 设备是 ios,感谢!
cwyalpha
2020-11-25 13:00:07 +08:00
继续分母
Codelike
2020-11-25 13:06:56 +08:00
有意思 分母+1
crab
2020-11-25 13:08:43 +08:00
@thisismr2 证书安装信任的了,dns.google 也支持。 不能访问页面提示的是 无法访问此网站,响应时间过长。
thisismr2
2020-11-25 13:13:19 +08:00
@crab 我建了个临时 http server, 你试试能按视频操作后能访问这个吗 http://18.141.203.15
SingeeKing
2020-11-25 13:16:55 +08:00
回复总是要回复的,万一中讲了呢
crab
2020-11-25 13:18:38 +08:00
@thisismr2 这个可以访问到。
crab
2020-11-25 13:21:43 +08:00
@thisismr2 这样看还是 dns 出问题了?
liguoqinjim
2020-11-25 13:21:54 +08:00
抓包需要! 当个分母
cwyalpha
2020-11-25 13:28:16 +08:00
分母+1
thisismr2
2020-11-25 13:29:40 +08:00
@crab 如果 IP 可以访问到. 说明 DNS 问题. 而目前 iOS 的 DNS 是使用的[域名 TLS: dns.google, IP: 8.8.8.8, 端口: TCP853],
在你电脑命令行里用 dnslookup 确认你电脑网络访问这个 google 的 tls 的 dns 没有问题的话(千万确认)那么:
既然是 TLS, 所以会走 TLS 解密, 所以会需要用到根证书信任, 推测原因是: 你安装信任根证书那一步有问题. 建议检查: [设置->General->Profiles] 和 [设置] ->General->About->Certificate Trust Settings] 这两个地方.
3dxfv
2020-11-25 13:34:05 +08:00
试一下哈
crab
2020-11-25 13:37:29 +08:00
@thisismr2 不好意思啊。[设置] ->General->About->Certificate Trust Settings] 这个地方没信任上。
thisismr2
2020-11-25 13:38:32 +08:00
@crab #37

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/728980

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX