• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kisshere
V2EX  ›  程序员

类似于光的双缝干涉实验, js 能不能检测到 fiddler 正在抓包?

  •  
  •   kisshere · Jan 4, 2021 · 10144 views
    This topic created in 2129 days ago, the information mentioned may be changed or developed.

    想用 js 检测到 fiddler 正在抓包的话,立刻阻止网络请求,终止程序继续执行。希望广大 V 友能集思广益一下

    58 replies  •  2021-01-05 12:59:15 +08:00
    nl101531
    nl101531
    Jan 4, 2021 via iPhone
    1
    理论上不行,应用层不感知传输层
    imdong
    imdong
    Jan 4, 2021❤️1
    2
    检查代理 IP,然后主动访问代理 IP,http 主动访问会有 fiddler 的引导页面。

    但是只能对付代理抓包,不能对付网卡抓包或者网关设备抓包。

    https 还可以检查证书是否真实有效并避免以上抓包。

    非 https 应该是无解?
    styletjy
    styletjy
    Jan 4, 2021❤️25
    3
    想知道是怎样类似的
    imdong
    imdong
    Jan 4, 2021
    4
    哦,JS 啊,那浏览器端应该是没戏了。
    eudore
    eudore
    Jan 4, 2021
    5
    你怎么知道你的快递没被快递员打开看过?
    virusdefender
    virusdefender
    Jan 4, 2021❤️1
    6
    其实还有些不太稳定的方式可以检测的,比如某些错误页面会返回抓包软件的错误页( burp 等,fiddler 不清楚),还有一个貌似在本站看到的?但是找不到了,大概原理就是抓包软件无法透传某些 tcp feature 来检测的
    nnnToTnnn
    nnnToTnnn
    Jan 4, 2021
    7
    @imdong 为什么没有? 如果是代理程序,直接通过 WebRTC 来进行端口扫描,判断是否存在代理的端口。
    letitbesqzr
    letitbesqzr
    Jan 4, 2021
    8
    @imdong #2 请教下,js 如何检测 https 证书是否真实有效?
    nnnToTnnn
    nnnToTnnn
    Jan 4, 2021
    9
    @eudore 5L 你知道蜡烛的封口吗? 在信封上用蜡烛封口,等待凝固,然后在盖上章,这个起码是很早就出现的技术了~
    KagurazakaNyaa
    KagurazakaNyaa
    Jan 4, 2021
    10
    @nnnToTnnn 问题是火漆蜡封可以被替换啊,别人准备一个新的信封,伪造一个火漆重新盖就实现了 MITM 了
    linksNoFound
    linksNoFound
    Jan 4, 2021
    11
    量子纠缠吧
    monkeyWie
    monkeyWie
    Jan 4, 2021 via Android
    13
    访问一个不存在或者超时的 url 就可以了,fiddler 有自己的错误页
    imdong
    imdong
    Jan 4, 2021
    14
    @eudore #5 如 #9 所说,类似的东西中国这边古代叫“油封”、“封泥”,欧洲那边叫“火漆”好像。

    至于现代,有一种简单的方法,特制胶带来区别。比如你买电子产品时的封膜胶带是一撕就碎,或者会分层,具体表现是撕开后纸面会残留印记。(应该是叫 防盗胶带)。

    但是这些都是可以通过加热来无损拆下的。

    不过如果你自己定制了一段胶带,每一厘米引得内容都是无序的,将包裹层层包好以后,几乎可以防止被无痕打开。
    march1993
    march1993
    Jan 4, 2021 via iPhone
    15
    监测 tcp 的 window
    dk7952638
    dk7952638
    Jan 4, 2021
    16
    传输数据的光子和电子都属于量子,如果抓包行为是精确到单个光子或者电子尺度的,是会引发波函数坍缩的
    zhchyu999
    zhchyu999
    Jan 4, 2021
    17
    怎么这么多杠精啊
    mingtdlb
    mingtdlb
    Jan 4, 2021❤️5
    18
    跟双缝干涉什么关系?
    sundev
    sundev
    Jan 4, 2021
    19
    做不到
    fengmumu
    fengmumu
    Jan 4, 2021
    20
    没有办法,干掉这个 也可以抓网卡的数据,无解,倒是可以增加加密这些,增加破解成本
    divilkcvf
    divilkcvf
    Jan 4, 2021❤️14
    21
    用 js 实现一个 fiddle,与真正的 fiddle 一起抓包时,浏览器会显示出明暗相间的条纹,实现干涉?
    nnnToTnnn
    nnnToTnnn
    Jan 4, 2021
    22
    @XiLingHost #10L 签章是不可伪造的,例如指纹签章,或者特殊的签章,例如 14L 所的那样,如果签章具备有伪造性,那么就无法证明,这个信封就是发起的。
    zckevin
    zckevin
    Jan 4, 2021
    23
    靠网络侧信道还是能探测出一些的,Fiddler 作为一个 HTTP/HTTPS 代理,
    zckevin
    zckevin
    Jan 4, 2021❤️1
    24
    经典的 WebSocket.bufferedAmount,在服务端把 TCP recv wnd 置零,调用 WebSocket.send() 会使得数据在代理也就是 Fiddler 而是浏览器中堆积。

    现在 Chromium Project Fugu 的目的更是把所有能塞到浏览器里的 API 都塞进去...可以供给使用的侧信道只会越来越多。

    https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/bufferedAmount
    https://www.chromium.org/teams/web-capabilities-fugu
    kisshere
    kisshere
    OP
    Jan 4, 2021
    25
    @styletjy "想知道是怎样类似的"

    光子能“感知”到是否有人在观察它,从而实现在“波”和“粒子”态之间的自由切换,我也想用 js 去察觉 fiddler 这双眼睛是否当前在观看抓包着数据流
    lscexpress
    lscexpress
    Jan 4, 2021❤️6
    26
    总结一下,书读的太少,想的又太多
    lff0305
    lff0305
    Jan 4, 2021
    27
    FF 有 getSecurityInfo API, https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/getSecurityInfo
    来看当前的证书信息

    如果用 Fiddler 抓 https 必须安装 /信任 Fiddler 自己的证书, 那么就可以知道是否有 Fiddler
    zckevin
    zckevin
    Jan 4, 2021❤️1
    28
    @zckevin 当然,如果要检测代理方是 Fiddler 还是其它应用,最靠谱的方法是找一堆各个版本 Chromium 的 0day/Nday 组个拼盘,提权后再判断。
    yolee599
    yolee599
    Jan 4, 2021
    29
    仅仅针对 fiddler 抓包你可能有办法,直接在路由器对数据包 memcpy 你一点办法都没有,甚至不用路由器,修改网卡驱动,在发送数据包的时候直接 memcpy 出来。
    zhangsanfeng2012
    zhangsanfeng2012
    Jan 4, 2021
    30
    如果用户开透明代理,然后再在服务器上用 fiddler 抓包,你本地浏览器啥也不知道
    ryd994
    ryd994
    Jan 4, 2021 via Android
    31
    HTTPS+Certificate pinning

    @mingtdlb 遇事不决,量子力学
    Lemeng
    Lemeng
    Jan 4, 2021
    32
    想了想,不可以吧。不过探索精神可以
    icyalala
    icyalala
    Jan 4, 2021
    33
    先说说你最初的目的吧,为什么想要检测 Fiddler 抓包?为什么不检测 Wireshark 呢?
    chenyu8674
    chenyu8674
    Jan 4, 2021❤️4
    35
    双缝干涉实验体现了对象的状态会因是否存在观察者而改变

    在 LZ 的语境里就是能否使代码的运行逻辑因是否存在抓包者而改变

    在我看来挺类似的啊
    kisshere
    kisshere
    OP
    Jan 4, 2021
    36
    @qiayue
    @lff0305 我用 IE8 不就破了 websocket 了???
    Maskeney
    Maskeney
    Jan 4, 2021❤️1
    37
    lz 上的什么野鸡培训班啊?都完全不了解 HTTPS 是干啥的么?以为 HTTPS 是给你加密数据包以防客户端解密出数据包原始内容的?还一门心思防止客户端解密 HTTPS 流量?想要加密自己老老实实把内容加密不好么?非要在 HTTPS 这种用来防止传输过程中被服务端客户端外的第三者窥探内容的机制上动歪脑筋?
    wangbenjun5
    wangbenjun5
    Jan 4, 2021
    38
    @Maskeney 正解,想要防止抓包手段很多,最简单的就是端对端加密,类似 ss 和 v2r
    Maskeney
    Maskeney
    Jan 4, 2021
    39
    @qiayue #34 看到这图的落款瞬间不想看内容了,Twitter 上频频爆论就是这个李靖,什么“用 SS 之后 HTTP 流量居然是明文的可能会被 ss-server 截获”、一边“招聘高潜 P5,但是要求不能变低”一边“招聘永远是个难题”,最新的又指责 safari 兼容性差,因为 safari 严格按照标准不认用-做日期连字符
    gamexg
    gamexg
    Jan 4, 2021
    40
    曾经被网站探测过本地常用代理端口,
    我记得开放的端口和未开放端口延迟有区别。
    Thiece
    Thiece
    Jan 4, 2021❤️1
    41
    我有理由怀疑这是一个标准的 X-Y Problem 。
    kaedea
    kaedea
    Jan 4, 2021 via Android
    42
    使用自定义 tls 证书应该可以
    root8080
    root8080
    Jan 4, 2021
    43
    是最近流行这个吗 我已经在好几个地方看到不同的问题 开头都是这句话 基于双缝干涉的理论 balabala 。。。。
    mxT52CRuqR6o5
    mxT52CRuqR6o5
    Jan 4, 2021
    44
    @nnnToTnnn 你自己在 js 层自己实现的蜡封,抓包工具也不会给你解开啊
    967182
    967182
    Jan 4, 2021
    45
    Wireshark 抓呢??
    nnnToTnnn
    nnnToTnnn
    Jan 4, 2021
    46
    @mxT52CRuqR6o5 #44L 你可以在 JS 层实现蜡封,为什么抓包工具不能解开?抓包既然可以抓,就可以修改里面 JS 的脚本内容,直接操作
    styletjy
    styletjy
    Jan 4, 2021❤️1
    47
    @kisshere 感谢楼主的回复
    我是这么理解的,波粒二象性是光本身就具有的性质,不论有没有人去观察
    而双缝干涉实验是通过一种途径去证明了光的波动性
    所以要类比过来的话,从流量本身的特性去着手,然后通过 fiddler 抓包表现出不同的特征,我们去观察收集这种特征来判断
    是否这样要合理一点,

    个人理解,以上
    xianxiaobo
    xianxiaobo
    Jan 4, 2021❤️1
    48
    一开始看题目很想吐槽,仔细想想很有意思。
    只要有抓包,肯定会对这个请求造成影响,可能是速度上的或者其他方面的。
    虽然微乎其微,但是绝对是有的。
    但是类似双缝实验,前端就像光源,后端就像成像的挡板,应该需要前后端配合才能知道是否有 fiddler 正在抓包。
    很有意思的想法,理论上可行,但是可惜实际生活中很大可能检测不出来。
    rioshikelong121
    rioshikelong121
    Jan 4, 2021
    49
    好问题 另外这楼里面杠精真多
    Flymachine
    Flymachine
    Jan 4, 2021
    50
    除了楼上提的黑科技,还真没什么好办法。
    但这个需求很有可能是个伪需求——JS 既然要依赖第三方浏览器解释,那就不可能是安全的。你就是防住了 fiddler 抓包,也无助于守住秘密。
    前端想加密,目前可能的途径就是用 WebAssembly/activeX 技术调用 C/C++/Rust 库加解密消息。这样能防止相关源码泄露,特别是密钥生成 /分发与加解密机制部分。这样至少能相对安全一些。
    其他的途径,连相对安全都达不到。
    sewer
    sewer
    Jan 4, 2021
    51
    这个问题可以去问下牛顿
    Felldeadbird
    Felldeadbird
    Jan 4, 2021
    52
    不能,因为你的想法超过了 现实限制。JS 是浏览器端,浏览器会阻止你读取用户本地系统信息。
    除非可以通过 JS 去触发全部浏览一个 0dya,然后监听用户本地系统的操作。
    no1xsyzy
    no1xsyzy
    Jan 5, 2021
    53
    我知道这个是什么问题了
    光的双缝干涉实验 ✘
    单光子双缝干涉实验 ✔

    你说的是放上检测设备干涉条纹就消失的那个实验吧,注意,这里有“单光子”这个关键词……
    顺便,电子也是可以做同样的实验的。
    xcstream
    xcstream
    Jan 5, 2021
    54
    可能有办法, 但是还需要实验一下
    parametrix
    parametrix
    Jan 5, 2021
    55
    如果目的是对抗中间人攻击,那成熟的密码学方法有很多。如果是对端出问题那没有一劳永逸的方法,要是发现这种方法建议立即卖给版权保护组织(比如迪士尼:),喜提各种专利、学术领域开山鼻祖,世界级名利双收。
    dzdh
    dzdh
    Jan 5, 2021
    56
    @kisshere 不用浏览器不就从根上杜绝了 :doge:
    mmdsun
    mmdsun
    Jan 5, 2021 via Android
    57
    方法很多但要配合后台。

    比如 js 取电脑时区,对比后台拿到的 ip 的时区。
    abersheeran
    abersheeran
    Jan 5, 2021
    58
    @styletjy 既然你知道双缝干涉证实了波粒二象性,那么延迟擦除实验了解一下。

    世界的规则不是靠你自己理解的,它就在那里。观察影响结果的现象确实存在,不是说你不理解、它就不存在的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2626 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 104ms · UTC 15:06 · PVG 23:06 · LAX 07:06 · JFK 10:06
    ♥ Do have faith in what you're doing.