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

264 天前
 rev1si0n

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

3411 次点击
所在节点    程序员
53 条回复
rev1si0n
263 天前
@liuhan907
@DefoliationM
@sampeng 话是这么说,TCP 内容层面看到的内容确实是无序随机的,但是,每个请求或者每个包,发出的接收到的流量,以及每个包之间的相对间隔通信端口地址等,大量数据去学习的话,应该是有一定规律的。
shilyx
263 天前
访问百度同域名其他页面和访问首页在流量上没什么区分

域名不同还有点区分,https 里有明文域名信息

但 tls 的握手不会总是发生,有缓存的。因此包里没有也不代表没有访问


正解:
本机做透明代理,代理层做 tls 卸载

创建一个根证书,安装到系统受信任证书位置。根据 tls 握手包自动签发当前 dns 名称的证书,实现中间人攻击

浏览器层面无察觉

![_202403070957531d44fb8523cb079f.jpeg]( https://youjb.com/images/2024/03/07/_202403070957531d44fb8523cb079f.jpeg)
Jirajine
263 天前
@rev1si0n #41 能否识别取决于你要识别的到底是什么。如果只是站点域名,那有明文 sni 和 dns ,不用自己识别。以百度首页为例,百度首页的返回 body 大小应该是固定的,引用的其他资源应该也是固定大小的,根据这个特征可以大概判断访问的是百度首页还是其他页面。
GenericT
263 天前
@Jirajine “百度首页的返回 body 大小应该是固定的”
你忘了 Content-Encoding 了,不同的 Accept 回来的东西不一样的,brotli 和 gzip 的长度显然不一样,不同的 CDN 节点的 compression level 也可能不一样
rev1si0n
263 天前
@Jirajine
@GenericT 所以这也就需要大量样本去找特征
rev1si0n
263 天前
@Jirajine 并不是站点级别,是比站点更加详细的信息,比如,在看百度贴吧的帖子,那么看帖子出现的流量就是一个特征,不需要知道具体是访问了什么帖子,只需要知道在访问帖子。
rev1si0n
263 天前
@shilyx 证书和网络是不可控因素,在这个帖子里就是个纯旁听的角色,不能动,只能听收发的流量。
Jirajine
263 天前
@rev1si0n #46 还是那句话,取决于你到底要识别什么,贴吧应该是有单独子域名的,其他页面也有可能会引用独特域名的资源。
shilyx
263 天前
特征只在于 tsl 握手环节,和 ip 地址

其他部分都是加密流量,即便认定了什么特征也不可靠,缘木求鱼
liuhan907
263 天前
@rev1si0n 虽说 TLS 不是为了对抗审查做出来的,但是也有随机化的部分。我觉得不是靠数据统计就能找到可用的规律的。
NeedI09in
263 天前
在你能 proxy 这些请求的前提下。
1.中间人攻击,需要信任证书
2.抓 connect 请求,connect 请求是明文,能知道 host ,缺陷:连接层面的 connect 量,不能知道实际发了多少个请求,只知道实际 connect 了多少次。
cczh678
263 天前
@rev1si0n 谢谢 OP 答复,我这边可以提供商业化的解决方案,符合合规要求,不会有个人隐私的侵犯。如果需要,我们再细致交流下
ben666
250 天前
TLS 连接握手部分是可以看到域名的明文的
方法 1: 网关上连接跟踪每个报文
方法 2:交换机上镜像一份报文,离线

现在网络上的报文处理很多用 DPDK 技术,可以看一些知名的 DPDK 项目,学习一下怎么用:
1. 测试仪 https://github.com/baidu/dperf
2. 4 层负载均衡 https://github.com/iqiyi/dpvs

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

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

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

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

© 2021 V2EX