请教大家一个方案,关于 TCP 流量识别以及匹配。

260 天前
 rev1si0n

(以下是情况假设)有一台电脑,我设置了 wireshark 只抓浏览器的包,随后我通过浏览器访问 baidu.com ,抓到了访问百度首页的所有数据包。随后,设置 wireshark 抓取电脑全局流量,并随机使用电脑上安装的软件,其中我可能会访问 baidu.com 。最终,我想通过这个浏览器访问百度的流量包(全局流量的子集),解析出所有 TCP 包的时间大小相对时间协议等,在全局流量中通过滑动窗口去匹配哪个时间段访问了百度首页。这可能很麻烦,因为某些包可能并不一定会发出,其次,因为中间可能掺杂着其他流量,所以对于访问百度首页的数据包还要进行适当的 X 轴拉伸匹配。在此请教大家一下有没有什么好的实现方法或者类似的方案。

3404 次点击
所在节点    程序员
53 条回复
rrfeng
260 天前
首先说明你为什么要抓包
lambdaq
260 天前
wireshark 怎么实现只抓浏览器的包的。。。?
rev1si0n
260 天前
@rrfeng
@lambdaq 为什么抓包,抓包就是为了说明上面的问题。怎么实现只抓浏览器的包,你是觉得不行吗,至少我,能想出来至少三种办法,我觉得,设置浏览器代理最适合你。
F7TsdQL45E0jmoiG
260 天前
自己弄个代理,浏览器配代理,然后抓代理的包
liuhan907
260 天前
你首先应该想一下怎么解 https 的流量
tool2d
260 天前
我会选择用 windows 系统的防火墙来过滤,有一个 API 参数是 FWPM_CONDITION_ALE_APP_ID ,可以匹配浏览器的运行 PID 。

可能还需要装一个开源 VPN 虚拟网卡,作为抓包和转发的中转节点。

想想还是 linux 简单,iptables 需要匹配进程,一句--uid-owner 就搞定了。
lambdaq
260 天前
@rev1si0n 我还以为 wireshark 原生支持了。。。。。
lxyv
260 天前
可以考虑用微软的 network monitor 抓包,根据应用进程 pid 筛选
rev1si0n
260 天前
@liuhan907 不考虑解,因为是无解的,也并不要求解析出访问内容只需要知道这个行为,所以打算从 tcp 层面进行分析。
rekulas
260 天前
不如说说你真正想实现的是什么功能
rev1si0n
260 天前
@rekulas 标题已经很明白了,TCP 流量匹配,根据一段特征流量从当日流量匹配出特征流量出现的时间点。
tool2d
260 天前
@rev1si0n "解析出所有 TCP 包的时间大小相对时间协议等,在全局流量中通过滑动窗口去匹配哪个时间段访问了百度首页。"

TCP 滑动窗口值是动态变换的,网速好就大一点,网速卡就小一点,这个和用户是否访问百度又没必然联系。

用时间协议去匹配网站特征? 那你还不如用 TLS 浏览器指纹匹配,更靠谱一点。
thevita
260 天前
你需要个 DPI, 比如 suricata, 给你解析到协议(会重组 tcp ,不用你自己“根据一段特征流量从当日流量匹配出特征流量出现的时间点”, 把各种你可能需要的内容提取出来,也能自己加些检测规则)

产生的数据流,要可用,可后面接写时序分析什么的,自由发挥
kkocdko
260 天前
这种问题你应该去问代理协议的开发者相关的社区,在这里你只能获得上边几楼的那种质量的回答。

如果只是想拿来用,可以 OpenGFW ,由 hysteria 团队开发的 GFW 实现。

一般来说是 tls sni ,tls 指纹,dns 查询的 re-mapping 等。如果是你个人做着玩,我建议你选择类似 fakeip 的思路,然后劫持 dns ,弄一个比较大的地址池,这样的话比较不容易跟丢。
kkocdko
260 天前
13 楼的回答也不错,dpi 的话考虑到楼主刚入门不一定能玩得来。
czfy
260 天前
这题目让我想到这个帖子
🧱的测试 IP 和最近的新研究 https://v2ex.com/t/1021128
rev1si0n
260 天前
@tool2d 确实网速是个因素,以及由于其他不需要的掺杂流量的影响,所以需要再对这个子集的流量进行时间上的伸缩(举个例子就像橡皮筋,橡皮筋上有 N 个不同间隔和大小的点,我可以拉伸或者缩短,就是每个包发送的时间变大或者变小再拿过去和当日流量匹配,如果包大小,间隔,协议等都能模糊匹配上,那就认定匹配成功了。当然这样做也不太现实),指纹的话,服务器 tls 指纹倒是可以引用一下,但是精细度就没法和直接流量级的比了(虽然能不能实现还是个问题)。
@thevita 多谢多谢,我看看,除了 GFW 里听说过还没了解过这个。

@kkocdko 今天至少没白问,这里开始涉及到盲区了,个人研究下是不是有可能,劫持只能对自己做,但是是想这个是可以做到通用的,指纹确实可以做到一些,但是精细度不够,或许也可以试一下指纹配合 TCP 特征。
liuhan907
260 天前
@rev1si0n 你不解出来 https 流量怎么匹配 baidu 访问?
fano
260 天前
你研究的问题是 Encrypted Traffic Fingerprinting / Website Fingerpinting ,可以 Google Scholar 一下研究现状
fano
260 天前
@rev1si0n "像橡皮筋,橡皮筋上有 N 个不同间隔和大小的点,我可以拉伸或者缩短" Google 一下 Dynamic time warping 算法

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

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

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

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

© 2021 V2EX