想用 js 检测到 fiddler 正在抓包的话,立刻阻止网络请求,终止程序继续执行。希望广大 V 友能集思广益一下
1
nl101531 2021-01-04 09:06:09 +08:00 via iPhone
理论上不行,应用层不感知传输层
|
2
imdong 2021-01-04 09:06:44 +08:00 1
检查代理 IP,然后主动访问代理 IP,http 主动访问会有 fiddler 的引导页面。
但是只能对付代理抓包,不能对付网卡抓包或者网关设备抓包。 https 还可以检查证书是否真实有效并避免以上抓包。 非 https 应该是无解? |
3
styletjy 2021-01-04 09:07:38 +08:00 25
想知道是怎样类似的
|
4
imdong 2021-01-04 09:08:56 +08:00
哦,JS 啊,那浏览器端应该是没戏了。
|
5
eudore 2021-01-04 09:09:21 +08:00
你怎么知道你的快递没被快递员打开看过?
|
6
virusdefender 2021-01-04 09:10:54 +08:00 1
其实还有些不太稳定的方式可以检测的,比如某些错误页面会返回抓包软件的错误页( burp 等,fiddler 不清楚),还有一个貌似在本站看到的?但是找不到了,大概原理就是抓包软件无法透传某些 tcp feature 来检测的
|
8
letitbesqzr 2021-01-04 09:12:44 +08:00
@imdong #2 请教下,js 如何检测 https 证书是否真实有效?
|
10
XiLingHost 2021-01-04 09:19:11 +08:00
@nnnToTnnn 问题是火漆蜡封可以被替换啊,别人准备一个新的信封,伪造一个火漆重新盖就实现了 MITM 了
|
11
linksNoFound 2021-01-04 09:19:22 +08:00
量子纠缠吧
|
13
monkeyWie 2021-01-04 09:19:54 +08:00 via Android
访问一个不存在或者超时的 url 就可以了,fiddler 有自己的错误页
|
14
imdong 2021-01-04 09:22:19 +08:00
@eudore #5 如 #9 所说,类似的东西中国这边古代叫“油封”、“封泥”,欧洲那边叫“火漆”好像。
至于现代,有一种简单的方法,特制胶带来区别。比如你买电子产品时的封膜胶带是一撕就碎,或者会分层,具体表现是撕开后纸面会残留印记。(应该是叫 防盗胶带)。 但是这些都是可以通过加热来无损拆下的。 不过如果你自己定制了一段胶带,每一厘米引得内容都是无序的,将包裹层层包好以后,几乎可以防止被无痕打开。 |
15
march1993 2021-01-04 09:23:40 +08:00 via iPhone
监测 tcp 的 window
|
16
dk7952638 2021-01-04 09:24:42 +08:00
传输数据的光子和电子都属于量子,如果抓包行为是精确到单个光子或者电子尺度的,是会引发波函数坍缩的
|
17
zhchyu999 2021-01-04 09:41:01 +08:00
怎么这么多杠精啊
|
18
mingtdlb 2021-01-04 09:41:21 +08:00 5
跟双缝干涉什么关系?
|
19
sundev 2021-01-04 09:43:08 +08:00
做不到
|
20
fengmumu 2021-01-04 09:49:33 +08:00
没有办法,干掉这个 也可以抓网卡的数据,无解,倒是可以增加加密这些,增加破解成本
|
21
divilkcvf 2021-01-04 09:52:28 +08:00 14
用 js 实现一个 fiddle,与真正的 fiddle 一起抓包时,浏览器会显示出明暗相间的条纹,实现干涉?
|
22
nnnToTnnn 2021-01-04 10:09:46 +08:00
@XiLingHost #10L 签章是不可伪造的,例如指纹签章,或者特殊的签章,例如 14L 所的那样,如果签章具备有伪造性,那么就无法证明,这个信封就是发起的。
|
23
zckevin 2021-01-04 10:13:31 +08:00
靠网络侧信道还是能探测出一些的,Fiddler 作为一个 HTTP/HTTPS 代理,
|
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 |
25
kisshere OP |
26
lscexpress 2021-01-04 10:21:23 +08:00 6
总结一下,书读的太少,想的又太多
|
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 |
28
zckevin 2021-01-04 10:30:12 +08:00 1
@zckevin 当然,如果要检测代理方是 Fiddler 还是其它应用,最靠谱的方法是找一堆各个版本 Chromium 的 0day/Nday 组个拼盘,提权后再判断。
|
29
yolee599 2021-01-04 10:42:26 +08:00
仅仅针对 fiddler 抓包你可能有办法,直接在路由器对数据包 memcpy 你一点办法都没有,甚至不用路由器,修改网卡驱动,在发送数据包的时候直接 memcpy 出来。
|
30
zhangsanfeng2012 2021-01-04 10:43:55 +08:00
如果用户开透明代理,然后再在服务器上用 fiddler 抓包,你本地浏览器啥也不知道
|
32
Lemeng 2021-01-04 10:51:12 +08:00
想了想,不可以吧。不过探索精神可以
|
33
icyalala 2021-01-04 10:51:38 +08:00
先说说你最初的目的吧,为什么想要检测 Fiddler 抓包?为什么不检测 Wireshark 呢?
|
34
qiayue 2021-01-04 10:52:18 +08:00
|
35
chenyu8674 2021-01-04 11:18:08 +08:00 4
双缝干涉实验体现了对象的状态会因是否存在观察者而改变
在 LZ 的语境里就是能否使代码的运行逻辑因是否存在抓包者而改变 在我看来挺类似的啊 |
37
Maskeney 2021-01-04 11:53:46 +08:00 1
lz 上的什么野鸡培训班啊?都完全不了解 HTTPS 是干啥的么?以为 HTTPS 是给你加密数据包以防客户端解密出数据包原始内容的?还一门心思防止客户端解密 HTTPS 流量?想要加密自己老老实实把内容加密不好么?非要在 HTTPS 这种用来防止传输过程中被服务端客户端外的第三者窥探内容的机制上动歪脑筋?
|
38
wangbenjun5 2021-01-04 11:58:19 +08:00
@Maskeney 正解,想要防止抓包手段很多,最简单的就是端对端加密,类似 ss 和 v2r
|
39
Maskeney 2021-01-04 12:00:20 +08:00
@qiayue #34 看到这图的落款瞬间不想看内容了,Twitter 上频频爆论就是这个李靖,什么“用 SS 之后 HTTP 流量居然是明文的可能会被 ss-server 截获”、一边“招聘高潜 P5,但是要求不能变低”一边“招聘永远是个难题”,最新的又指责 safari 兼容性差,因为 safari 严格按照标准不认用-做日期连字符
|
40
gamexg 2021-01-04 12:03:40 +08:00
曾经被网站探测过本地常用代理端口,
我记得开放的端口和未开放端口延迟有区别。 |
41
Thiece 2021-01-04 12:04:59 +08:00 1
我有理由怀疑这是一个标准的 X-Y Problem 。
|
42
kaedea 2021-01-04 13:28:00 +08:00 via Android
使用自定义 tls 证书应该可以
|
43
root8080 2021-01-04 14:06:57 +08:00
是最近流行这个吗 我已经在好几个地方看到不同的问题 开头都是这句话 基于双缝干涉的理论 balabala 。。。。
|
44
mxT52CRuqR6o5 2021-01-04 14:24:46 +08:00
@nnnToTnnn 你自己在 js 层自己实现的蜡封,抓包工具也不会给你解开啊
|
45
967182 2021-01-04 14:50:20 +08:00
Wireshark 抓呢??
|
46
nnnToTnnn 2021-01-04 15:00:32 +08:00
@mxT52CRuqR6o5 #44L 你可以在 JS 层实现蜡封,为什么抓包工具不能解开?抓包既然可以抓,就可以修改里面 JS 的脚本内容,直接操作
|
47
styletjy 2021-01-04 15:17:52 +08:00 1
@kisshere 感谢楼主的回复
我是这么理解的,波粒二象性是光本身就具有的性质,不论有没有人去观察 而双缝干涉实验是通过一种途径去证明了光的波动性 所以要类比过来的话,从流量本身的特性去着手,然后通过 fiddler 抓包表现出不同的特征,我们去观察收集这种特征来判断 是否这样要合理一点, 个人理解,以上 |
48
xianxiaobo 2021-01-04 15:50:12 +08:00 1
一开始看题目很想吐槽,仔细想想很有意思。
只要有抓包,肯定会对这个请求造成影响,可能是速度上的或者其他方面的。 虽然微乎其微,但是绝对是有的。 但是类似双缝实验,前端就像光源,后端就像成像的挡板,应该需要前后端配合才能知道是否有 fiddler 正在抓包。 很有意思的想法,理论上可行,但是可惜实际生活中很大可能检测不出来。 |
49
rioshikelong121 2021-01-04 16:15:39 +08:00
好问题 另外这楼里面杠精真多
|
50
Flymachine 2021-01-04 16:31:16 +08:00
除了楼上提的黑科技,还真没什么好办法。
但这个需求很有可能是个伪需求——JS 既然要依赖第三方浏览器解释,那就不可能是安全的。你就是防住了 fiddler 抓包,也无助于守住秘密。 前端想加密,目前可能的途径就是用 WebAssembly/activeX 技术调用 C/C++/Rust 库加解密消息。这样能防止相关源码泄露,特别是密钥生成 /分发与加解密机制部分。这样至少能相对安全一些。 其他的途径,连相对安全都达不到。 |
51
sewer 2021-01-04 22:44:54 +08:00
这个问题可以去问下牛顿
|
52
Felldeadbird 2021-01-04 23:42:09 +08:00
不能,因为你的想法超过了 现实限制。JS 是浏览器端,浏览器会阻止你读取用户本地系统信息。
除非可以通过 JS 去触发全部浏览一个 0dya,然后监听用户本地系统的操作。 |
53
no1xsyzy 2021-01-05 01:30:15 +08:00
我知道这个是什么问题了
光的双缝干涉实验 ✘ 单光子双缝干涉实验 ✔ 你说的是放上检测设备干涉条纹就消失的那个实验吧,注意,这里有“单光子”这个关键词…… 顺便,电子也是可以做同样的实验的。 |
54
xcstream 2021-01-05 05:29:32 +08:00
可能有办法, 但是还需要实验一下
|
55
parametrix 2021-01-05 07:09:37 +08:00
如果目的是对抗中间人攻击,那成熟的密码学方法有很多。如果是对端出问题那没有一劳永逸的方法,要是发现这种方法建议立即卖给版权保护组织(比如迪士尼:),喜提各种专利、学术领域开山鼻祖,世界级名利双收。
|
57
mmdsun 2021-01-05 12:54:51 +08:00 via Android
方法很多但要配合后台。
比如 js 取电脑时区,对比后台拿到的 ip 的时区。 |
58
abersheeran 2021-01-05 12:59:15 +08:00
|