爱意满满的作品展示区。
thisismr2

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

  •  4
     
  •   thisismr2 ·
    PRO
    ·
    txthinking · Nov 25, 2020 · 9278 views
    This topic created in 2168 days ago, the information mentioned may be changed or developed.

    [继上一个帖子: 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 和申请机制.

    谢谢大家

    Supplement 1  ·  Nov 25, 2020

    重要!!!

    关于[如何信任根证书], 因为包含设备信息故视频里隐藏了几帧图像, 无论是iOS还是Android信任根证书都需要: 好几步好几步好几步, 点好几个地方点好几个地方点好几个地方. 繁琐的步骤不是我所能左右的 而且http://mitm.it这个是mitmproxy的根证书服务器, 这不是我所能左右的, 访问慢多刷几次多刷几次.

    视频只是一个简单的操作流程, 流程的每一步都可能有很多知识, 每一步操作有问题都会导致不顺畅, 建议对正文提到的任何概念不太了解的话, 还是建议大家花点时间搜索下补充下相关知识

    iOS 仍然是不支持中国大陆区AppStore, 苹果不让, 我发现大概我的软件 https://github.com/txthinking 但凡用到那个技术都不允许中国大陆区上架, 这也不是我所能左右的

    Supplement 2  ·  Nov 25, 2020
    **重要**

    * 如果你是 iOS, 确保你的电脑网络能访问 google dns-over-tls DNS 8.8.8.8 TCP 853 端口 dns.google (怎么测试: https://github.com/ameshkov/dnslookup)
    * 下一版本会改成使用 8.8.8.8 的 UDP 53
    * 如果你是 Android, 确保你的电脑网络能访问 8.8.8.8 的 UDP 53 端口
    Supplement 3  ·  Nov 28, 2020
    关于安装 mimtproxy 根证书时是否会慢的情况解释如下 感谢 @mrchi 同学提出

    两种情况:
    1. 如果手机端提前进行 mitm.it 的 DNS 解析, 然后将 IP 给 mimtproxy, 那么安装证书时会发起远端请求, 因为它在读取数据前是不知道这个 IP 是干嘛的
    2. 如果手机端不进行 DNS 解析, 直接将 mitm.it 给 mimtproxy, 那么安装时就不会发起远端请求
    Supplement 4  ·  Nov 28, 2020
    #136 有个 windows 上使用的经验
    149 replies  •  2020-12-03 10:59:04 +08:00
    1  2  
    ❮ ❯
    cwyalpha
    cwyalpha
    Nov 25, 2020 via iPhone
    1
    谢谢楼主,另外想问问有没有什么能解决 ssl pin 的方案
    cwyalpha
    cwyalpha
    Nov 25, 2020 via iPhone
    2
    另外问一下,这个和 ios 的 stream 有什么区别?不考虑 ssl pin 的话,会存在 stream 抓不到,这个能抓到的情况吗
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    3
    @cwyalpha #1 Android 的话我会配合 xposed
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    4
    @cwyalpha #2
    我不了解 stream, 如果它是工作在应用层的话. 那么的确会有抓不到的情况.
    而这里是工作在传输层(TCP 层), 所以自然都能抓到, 然后就是如果是 HTTPS, 会尝试 TLS 解密 (对于 TLS 的相关原理我就不打字了, 太多内容, 感兴趣的话大家可以搜下)
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    5
    @cwyalpha 我简单写个数据包流向

    [物理层] -> [网络层(就是 IPv4 或 IPv6 包)] -> [传输层(就是 TCP/UDP 包)] -> [应用层(HTTP 协议等)]

    目前大部分抓包软件都工作在[应用层](上图中的最后一个环节), 比如通过让你手动设置系统代理 或 通过 iOS 的 NetworkExtension 和 Android 的 Builder 自动设置系统代理, 两种设置系统代理本质一样. 系统代理是一个尊重但不强制的东西. 所以自然就很多应用不尊重那么就抓不到了

    而这个 app 是工作在[网络层](上图中的第二个环节), 什么意思呢, 即会接管所有的 IP 包(0.0.0.0/0), 然后加工成 TCP/UDP 包到传输层, 然后再将 TCP 包加工后给 mitmproxy, 同时将 UDP 包丢弃(因为 mitmproxy 不能分析 UDP)
    MrWhite
    MrWhite
    Nov 25, 2020
    6
    上次没中,这次中个奖看看?
    crab
    crab
    Nov 25, 2020
    7
    iOS 上用 stream app 可以正常抓包。现在不知道什么原因用 Wireshark Helper 弄出来的代理直接导致 iOS 网络连不上了。
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020❤️1
    8
    @crab 不要混着用啊, 各家的 app 设计原理都不一样的
    crab
    crab
    Nov 25, 2020
    9
    @thisismr2 没同时用。设置按你视频操作操作,iOS 上 vpn 图标也有,虽然 Wireshark 那边可以看到有 iOS 数据进来,但 iOS 上的网络请求没办法得到响应。
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020❤️1
    10
    @crab 估计根证书没信任彻底吧
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020❤️1
    11
    还有“但 iOS 上的网络请求没办法得到响应“ 可以展开, 比如访问 https://www.baidu.com 提示页面会出现错误, 错误描述是:xxx
    gogo88
    gogo88
    Nov 25, 2020 via iPhone
    12
    可以弃用其它抓包 App 了,厉害👍
    qq2511296
    qq2511296
    Nov 25, 2020
    13
    试试 看看能中不
    ben0629
    ben0629
    Nov 25, 2020
    14
    上次没中,这次再来试试
    NFC
    NFC
    Nov 25, 2020 via iPhone
    15
    感觉你这个更强大啊。
    adminii
    adminii
    Nov 25, 2020 via iPhone
    16
    难道是抓包工具?拉低中奖率
    VHacker1989
    VHacker1989
    Nov 25, 2020
    17
    拿开源的项目来卖钱真的好吗
    VHacker1989
    VHacker1989
    Nov 25, 2020
    18
    稍微有点动手能力,整合一下开源工具都不会用这玩意
    xiaocsl
    xiaocsl
    Nov 25, 2020
    19
    抽一个...
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020❤️2
    20
    @crab 还有, 你看下那个帖子最后一个 append 的内容
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    21
    @VHacker1989 您这逻辑.
    xionger
    xionger
    Nov 25, 2020❤️1
    22
    @thisismr2 支持楼主 不用搭理那脑回路的人 看他加入时间 V2EX 第 511086 号会员 加入于 2020-10-04 10:28:07 +08:00

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

    同时求楼主支持 iOS13 好多同事不想升级 iOS14 啊
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    23
    ❤️ 1-10 楼 中奖者: #8 @MrWhite 请在这里 base64 贴上你的邮箱, 并告知需要 Android 还是 iOS
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    24
    ❤️ 11-20 楼 中奖者: #14 @ben0629 请在这里 base64 贴上你的邮箱, 并告知需要 Android 还是 iOS
    superrichman
    superrichman
    Nov 25, 2020 via iPhone
    25
    分母
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020❤️1
    26
    @xionger 我的升了 iOS14, 下一版会支持 iOS13, 还需要一些工作, 回头买个二手的 iOS13 手机测试下,
    ben0629
    ben0629
    Nov 25, 2020
    27
    @thisismr2 MzQ4Njg0MjAyQHFxLmNvbQ== 设备是 ios,感谢!
    cwyalpha
    cwyalpha
    Nov 25, 2020 via iPhone
    28
    继续分母
    Codelike
    Codelike
    Nov 25, 2020
    29
    有意思 分母+1
    crab
    crab
    Nov 25, 2020
    30
    @thisismr2 证书安装信任的了,dns.google 也支持。 不能访问页面提示的是 无法访问此网站,响应时间过长。
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020❤️1
    31
    @crab 我建了个临时 http server, 你试试能按视频操作后能访问这个吗 http://18.141.203.15
    SingeeKing
    SingeeKing
    Nov 25, 2020
    32
    回复总是要回复的,万一中讲了呢
    crab
    crab
    Nov 25, 2020
    33
    @thisismr2 这个可以访问到。
    crab
    crab
    Nov 25, 2020
    34
    @thisismr2 这样看还是 dns 出问题了?
    liguoqinjim
    liguoqinjim
    Nov 25, 2020
    35
    抓包需要! 当个分母
    cwyalpha
    cwyalpha
    Nov 25, 2020 via iPhone
    36
    分母+1
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020❤️2
    37
    @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
    3dxfv
    Nov 25, 2020 via Android
    38
    试一下哈
    crab
    crab
    Nov 25, 2020❤️2
    39
    @thisismr2 不好意思啊。[设置] ->General->About->Certificate Trust Settings] 这个地方没信任上。
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    40
    @crab #37

    Suclogger
    Suclogger
    Nov 25, 2020
    41
    分母+1
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020❤️2
    42
    @crab 估计给差评的那哥们亦如是也 :) 烦请使用者多多研究
    googlehub
    googlehub
    Nov 25, 2020
    43
    分母+1
    troyl
    troyl
    Nov 25, 2020 via iPhone
    44
    平时工作都是用 Charles 抓包,看到这个有点想试试了。
    honk
    honk
    Nov 25, 2020
    45
    牛逼!想試試
    liusir
    liusir
    Nov 25, 2020
    46
    上次没中,再试试
    blakejia
    blakejia
    Nov 25, 2020
    47
    分母一下
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    48
    @MrWhite TODO
    @ben0629 已发

    💛 21-30 楼 中 #28 @cwyalpha
    💛 31-40 楼 中 #32 @SingeeKing

    请在这里 base64 贴上你的邮箱, 并告知需要 Android 还是 iOS
    xionger
    xionger
    Nov 25, 2020
    49
    @thisismr2 #26 感谢楼主, 持续关注, 等支持 iOS13 的了我让同事试试
    SingeeKing
    SingeeKing
    Nov 25, 2020
    50
    这辈子第一次从 v2 中奖……

    感谢,iOS,邮箱:c2luZ2Vla2luZ0BnbWFpbC5jb20=
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    51
    @SingeeKing 已发
    HFX3389
    HFX3389
    Nov 25, 2020
    52
    我咋印象中这个帖子发过一次....
    xiaolang
    xiaolang
    Nov 25, 2020
    53
    分母+1
    hinomo
    hinomo
    Nov 25, 2020
    54
    分母+1
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    55
    💛 41-50 楼 #41 @Suclogger 请在这里 base64 贴上你的邮箱, 并告知需要 Android 还是 iOS. 谢谢
    ik
    ik
    Nov 25, 2020 via iPhone
    56
    这帖再抽一次
    Cawrr
    Cawrr
    Nov 25, 2020
    57
    分母+1
    pirates
    pirates
    Nov 25, 2020
    58
    来试试
    yushiro
    yushiro
    Nov 25, 2020 via iPhone
    59
    咦,lz 又来了啊,上次给人推荐过你的 app 。
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    60
    @yushiro 谢谢
    byte10
    byte10
    Nov 25, 2020
    61
    @VHacker1989 哈哈,牛
    Suclogger
    Suclogger
    Nov 25, 2020
    62
    @thisismr2 非常感谢,需要 iOS 版本,邮箱:echo Y2FpcnVucWlhbmdAZ21haWwuY29t | base64 --decode
    rikka
    rikka
    Nov 25, 2020
    63
    分母+1
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    64
    💛 51-60 楼 #56 @ik 请在这里 base64 贴上你的邮箱, 并告知需要 Android 还是 iOS. 谢谢
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    65
    @Suclogger 哎呀 太贴心了😊, 我直接复制粘贴回车就可以了. 已发
    lkxjlkejwr
    lkxjlkejwr
    Nov 25, 2020
    66
    分母+1
    ik
    ik
    Nov 25, 2020 via iPhone
    67
    @thisismr2 #64 dnZkd2FuZ0BpY2xvdWQuY29tCg== 终于中了,多谢老铁 iphone/ios
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020❤️1
    68
    @ik 已发
    peacewalker
    peacewalker
    Nov 25, 2020
    69
    分母+1
    sankemao
    sankemao
    Nov 25, 2020
    70
    分母来了
    q8515620
    q8515620
    Nov 25, 2020 via Android
    71
    支持一下,万一中了呢?
    thisismr2
    thisismr2
    OP
    PRO
    Nov 25, 2020
    72
    💛 61-70: #70 @sankemao 请在这里 base64 贴上你的邮箱, 并告知需要 Android 还是 iOS. 谢谢
    sdandroid
    sdandroid
    Nov 25, 2020
    73
    分母+1
    zhangchioulin
    zhangchioulin
    Nov 25, 2020
    74
    @cwyalpha #1 iOS Frida 配合脚本 Hook "libboringssl.dylib" 在回调的地方可以获得 keylog,然后 wireshark 可以看原文;解决的话 Hook "Security" 的 "SecTrustEvaluate" 能解决,再或者自己写一个 MitM
    qinxi
    qinxi
    Nov 25, 2020
    75
    stream 有..不过也不知道他工作在第几层.
    来当个分子试试这个
    xiaopenyou
    xiaopenyou
    Nov 25, 2020
    76
    分母,今天刚有个人跟我聊准备从 mitmweb 换到 mitmdump,没想到转身来 v 站就遇到这帖了
    AmItheRobot
    AmItheRobot
    Nov 25, 2020
    77
    分母+1
    axo
    axo
    Nov 25, 2020
    78
    分母+1
    lada05
    lada05
    Nov 25, 2020
    79
    试试运气
    brotherlegend
    brotherlegend
    Nov 25, 2020 via Android
    80
    来啦,我也参加一下。
    o0OoO0o
    o0OoO0o
    Nov 25, 2020
    81
    感谢
    Maskeney
    Maskeney
    Nov 25, 2020
    82
    试试
    ethusdt
    ethusdt
    Nov 25, 2020
    83
    ```swift
    let sessionConfig = URLSessionConfiguration.default
    sessionConfig.connectionProxyDictionary = [AnyHashable : Any]() // 主要是这一行
    let session = URLSession.init(configuration: sessionConfig, delegate: nil, delegateQueue: OperationQueue.current)
    // 网络请求
    ```

    楼主提到的「一行代码」可以 bypass 系统代理, 是上面这几行吗?
    1314258
    1314258
    Nov 25, 2020 via iPhone
    84
    关键在于 vpn 。
    sankemao
    sankemao
    Nov 25, 2020
    85
    @thisismr2 #72 竟然中了,感谢 MjEwOTgwMDU5QHFxLmNvbQ== iOS 设备
    enjolife
    enjolife
    Nov 25, 2020
    86
    分母+1
    MrMario
    MrMario
    Nov 25, 2020 via iPhone
    87
    抽
    mrchi
    mrchi
    Nov 25, 2020
    88
    mitmproxy 的根证书安装的时候是访问 http://mitm.it 这个链接, 而这个链接在他们国外服务器, 所以可能很慢很慢很慢很慢, 多刷下试试
    -----
    这个不对吧,http://mitm.it 是 mitmproxy 代理直接拦截返回响应的
    test008u7
    test008u7
    Nov 25, 2020 via iPhone
    89
    分子
    cwyalpha
    cwyalpha
    Nov 26, 2020 via iPhone
    90
    @thisismr2 Y3d5YWxwaGFAZm94bWFpbC5jb20= ios 版 谢谢楼主
    cat9life
    cat9life
    Nov 26, 2020
    91
    双向绑定证书的能用吗 一直没有好的方案
    zhygkx
    zhygkx
    Nov 26, 2020 via Android
    92
    看看运气
    eluotao
    eluotao
    Nov 26, 2020 via iPhone
    93
    用迅雷 sdk 如何抓到下载地址
    dzdh
    dzdh
    Nov 26, 2020
    94
    ssl pinning 是怎么搞的
    obabull
    obabull
    Nov 26, 2020
    95
    请问对于 android 不信任用户 CA 证书的情况,可以抓到吗?
    obabull
    obabull
    Nov 26, 2020
    96
    #95 仔细看了下介绍,需要 root 后安装到 system CA store 。
    sangmong
    sangmong
    Nov 26, 2020
    97
    分母
    nayihz
    nayihz
    Nov 26, 2020
    98
    分母一下
    sapphires
    sapphires
    Nov 26, 2020
    99
    分母+1
    free9fw
    free9fw
    Nov 26, 2020
    100
    +1
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1517 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 118ms · UTC 23:16 · PVG 07:16 · LAX 15:16 · JFK 18:16
    ♥ Do have faith in what you're doing.