V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kisshere
V2EX  ›  程序员

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

  •  
  •   kisshere · 2021-01-04 09:00:15 +08:00 · 8860 次点击
    这是一个创建于 1404 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

    不过如果你自己定制了一段胶带,每一厘米引得内容都是无序的,将包裹层层包好以后,几乎可以防止被无痕打开。
    march1993
        15
    march1993  
       2021-01-04 09:23:40 +08:00 via iPhone
    监测 tcp 的 window
    dk7952638
        16
    dk7952638  
       2021-01-04 09:24:42 +08:00
    传输数据的光子和电子都属于量子,如果抓包行为是精确到单个光子或者电子尺度的,是会引发波函数坍缩的
    zhchyu999
        17
    zhchyu999  
       2021-01-04 09:41:01 +08:00
    怎么这么多杠精啊
    mingtdlb
        18
    mingtdlb  
       2021-01-04 09:41:21 +08:00   ❤️ 5
    跟双缝干涉什么关系?
    sundev
        19
    sundev  
       2021-01-04 09:43:08 +08:00
    做不到
    fengmumu
        20
    fengmumu  
       2021-01-04 09:49:33 +08:00
    没有办法,干掉这个 也可以抓网卡的数据,无解,倒是可以增加加密这些,增加破解成本
    divilkcvf
        21
    divilkcvf  
       2021-01-04 09:52:28 +08:00   ❤️ 14
    用 js 实现一个 fiddle,与真正的 fiddle 一起抓包时,浏览器会显示出明暗相间的条纹,实现干涉?
    nnnToTnnn
        22
    nnnToTnnn  
       2021-01-04 10:09:46 +08:00
    @XiLingHost #10L 签章是不可伪造的,例如指纹签章,或者特殊的签章,例如 14L 所的那样,如果签章具备有伪造性,那么就无法证明,这个信封就是发起的。
    zckevin
        23
    zckevin  
       2021-01-04 10:13:31 +08:00
    靠网络侧信道还是能探测出一些的,Fiddler 作为一个 HTTP/HTTPS 代理,
    zckevin
        24
    zckevin  
       2021-01-04 10:20:17 +08:00   ❤️ 1
    经典的 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
        25
    kisshere  
    OP
       2021-01-04 10:21:13 +08:00
    @styletjy "想知道是怎样类似的"

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

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

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

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

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

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

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

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

    世界的规则不是靠你自己理解的,它就在那里。观察影响结果的现象确实存在,不是说你不理解、它就不存在的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1202 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:19 · PVG 02:19 · LAX 10:19 · JFK 13:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.