网络多设备监测原理

0. 前言

有些网络由于收费目的,限制一个设备接入。如果插入路由器,则会通过某些方式检测到多个设备接入,导致网络无法使用。本文则是简单介绍所谓的“某些方式”。

注:本文介绍的为常见的检测方式,各个网络会有各个网络的特点,不能一概而论。

1. 基于 HTTP User-Agent 请求头

HTTP 协议中,User-Agent 请求头用于标识用户代理,即浏览器。通过检测 User-Agent 请求头,可以判断设备类型。

例如,Windows 10 的 User-Agent 请求头为:

1
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36

而 iPhone 的 User-Agent 请求头为:

1
Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1

通过检测 User-Agent 请求头,可以判断设备类型,从而检测多设备接入。

目前绝大部分网站都是 HTTPS 协议,而 HTTPS 协议中的请求头是加密的,无法直接获取 User-Agent 请求头。因此这种方法适用性较低。

但此方法成本最低,一旦出现多种User-Agent请求,则一定会被认定为多用户使用。

2. 基于 IP 数据包包头内的 TTL 字段的检测

IP 数据包的格式如图所示

IP数据包

图中的 Time to Live 即是这种检测主要使用的字段。TTL 是防止网络出现环路,导致数据包不断被传输,陷入死亡循环的解决方式。每经过一个路由器,TTL 减 1,当 TTL 为 0 时,数据包被丢弃。

而不同系统的默认 TTL 值是不同的,Windows 系统的默认 TTL 值是 128,而 Linux 系统的默认 TTL 值是 64。从一个不允许多设备接入的网络接口上探测到 TTL 值相差较大的数据包,例如第一个包的 TTL 为 126,第二个包的 TTL 为 63,就可以判断出多设备接入。

3.基于 IPv4 数据包包头内的 Identification 字段的检测

IP数据包

图中的 Identification 字段即是这种检测主要使用的字段。

Identification 字段是用于标识数据包的唯一性,当数据包由于某些限制被分片时,所有分片的 Identification 字段相同。通常情况下,单一系统的 Identification 字段是递增的。如果有多个设备接入,那么 Identification 字段则不会是递增的,而是跳跃性增加的。

例如Identification序列 1,2,7,3,8… 这其中,1,2,3 为一个设备产生,7,8 为另一个设备产生的。2 和 3 之间的 7 就是多设备接入的证据。

经过抓包分析,Windows 7 的 TCP/IP 协议栈对 Identification 字段的实现是递增,而 iOS 的实现是保持全 0,Windows 10+ 及 Andioid 8+ 对 IPid 已经不是简单的递增,其发出的混合数据流本身是乱序的,因此此法是否可行有待商榷。

相关专利:基于 ipid 和概率统计模型的 nat 主机个数检测方法

4.基于网络协议栈时钟偏移的检测技术

不同主机物理时钟偏移不同,就像是每个人的钟表时间不同,这种不同的时间又会表现在常用的 TTL 协议里,因此可以用时钟偏移来检测多设备。

根据此专利,其会在短时间内(1-2 秒)收集最常用的TLS/SSL协议数据包,并将这个时间段的第一个数据包 $P_{start}$ 的时间戳 $t_{start}$ 与最后一个数据包 $P_{end}$ 的时间戳 $t_{end}$ 做差,获得 $t_{len}$ ,即 $t_{len} = t_{end} - t_{start}$ ,然后对于每个数据包 $ P_i $,计算其时间戳 $ t_i $ 与 $ t_{start} $ 的差值 $ t_{i0} $,即 $ t_{i0} = t_i - t_{start} $,然后统计 $ t_{i0} > t_{len} $ 或 $ t_{i0} < 0 $ 的数据包数量。

只有一个设备的情况下,时钟不应出现偏移,因此理论上数据包内的时间戳应当是顺序发出的,因此也就不会出现 $ t_{i0} > t_{len} $ 或 $ t_{i0} < 0 $ 的情况。而多设备的情况下,由于每个设备的时钟不同,则可能出现这个情况。

但目前大多数设备均会通过NTP对时间进行同步,此方法未经测试,不确定是否有成熟的产品使用了这种方法。

相关专利:一种基于时钟偏移的加密流量共享检测方法与装置

5. DPI (Deep Packet Inspection) 深度包检测技术

DPI 技术是一种深度分析网络数据包的技术,这项技术常见于局域网防火墙。

此项技术较为耗费资源,因此不确定是否有成熟产品仅仅为了识别多用户而使用此技术。

参考


网络多设备监测原理
https://nacldragon.top/2024/multi-device-detect/
作者
NaCl
发布于
2024年9月18日
许可协议