在我睡觉时,手机在偷跑什么流量
曾经想做过这个有趣的主题,现在它来了——在我睡觉时,手机在偷跑什么流量。我认为可视化的数据能够更好的展示当前网络的情况,毕竟你才是这个家庭网络的主人,你有权知道。并且我尝试发现发现一些异常的流量,它将有助于更好的保护隐私。你可能觉得像Pi-Hole、AdGuardHome以及NextDNS已经提供了网络流量的情况,但我觉得还不够。于是2023年8月3日凌晨,共计三小时,在路由器tcpdump捕获流经接口的全部数据包。最终得到大小为76MB的pcapng文件。想直接看原始表格分类结果的请访问这里。
数据处理还是花费了我的一些时间,用到了Maxmind GeoLite2的免费数据(最终只用到了AS信息,城市、国家没啥用),HTTPS请求提取出SNI信息,HTTP则提取Host头。结果还是剩下一堆不明流量。由于DNS数据包我也捕获了,根据解析结果反向确定了域名。这一做法有点像是Passive DNS,许多安全大厂都将解析结果保留,以供后期的溯源,比如360PassiveDNS 系统(但目前无法访问了),思科也有相应的付费产品。所以当安全厂商收购或是推出DNS公共解析服务并不是那么没有道理。我也可以利用类似的服务,确定它的真实身份。幸运的是VirusTotal提供了一个免费的限速服务。剩下的话就是确定各个协议了,这也是最耗时的,尽管Wirshark能够解析绝大部分协议,似乎不少连接还是使用私有的协议。确定协议后,结合其他信息就能方便对应用进行分类了,来看分析结果吧。
按应用分类
| 应用 | 流量 | 流量占比 |
|---|---|---|
| 一加[1] | 28.67M | 41.47% |
| 腾讯[2] | 23.51M | 34.01% |
| 字节[3] | 13.02M | 18.83% |
| 小米 | 1.16M | 1.68% |
| 高德[4] | 1.05M | 1.52% |
| 谷歌[5] | 0.59M | 0.86% |
| 未知应用 | 0.24M | 0.35% |
| 阿里[6] | 0.22M | 0.33% |
| 网心科技[7] | 0.07M | 0.10% |
| 华为[8] | 0.05M | 0.07% |
| 友盟 | 0.04M | 0.06% |
| 朝夕光年[9] | 0.03M | 0.04% |
| 中国移动 | 0.02M | 0.03% |
| 迅雷 | 0.02M | 0.02% |
| Voice.com[10] | 0.02M | 0.02% |
| 金山云 | 0.01M | 0.01% |
| 秒针分析 | 0.00M | 0.00% |
[1]:其中包括欢太商城,OPPO域名。[2]:由于准确区分QQ和微信难度较大(因为大多用的无法识别的私有协议),故归为一类。[3]:字节系包涵旗下的头条的流量,不再单独区分。[4]:仅代表高德自身域名流量,尽管它已经被阿里收购。[5]:谷歌包含谷歌境内合资公司谷翔的流量。[6]:阿里包含阿里云、潜在的淘宝流量,不再细分。[7]:指深圳市网心科技有限公司,根据官网是一家提供边缘计算的公司。[8]:华为包含华为云,以及已知的华为使用的域名,如dbankcloud.cn。[9]:指域名为dailygn.com的流量,字节跳动旗下游戏。[10]:指域名为volces.com的流量,应为某个SDK流量。
其实我注意到一加在跑流量,但是我在机器上开了一个VPN确定到底是哪个应用在偷跑,流量就停了…不得不说腾讯似乎真的很喜欢GQUIC,所有这些GQUIC流量都是它贡献的(见下协议分类),另外微信在使用一些私有的协议,能看到一些文本,但又不像HTTP。高德地图的域名cgicol.amap.com已经确定是用于上传基站、Wi-Fi位置信息,好家伙居然偷偷上传了1MB多的信息。谷歌,因为连接不上服务器所以只能产生这些流量了,谷歌喜欢TLS和QUIC并用,QUIC流量几乎都是它产生的(见下)。华为产生的流量比较少,不知道是不是因为设备比较老,还是真的比较隐私友好。还有一些我听都没听说过的应用。我真不知道它们是干嘛的,迅雷可能是某应用的SDK或者小米的迅雷下载服务造成的。
这里重点强调一下网心科技,域名看起来是NAT打洞,协议为UDP、HTTP,不出意外为P2P应用。官网宣称“整合闲置带宽、计算、存储资源,打造绿色计算网络”也太道貌岸然了。搜索了一翻就是PCDN,白嫖家宽用户,然后给一些小恩小惠。
我曾经有捕获到家宽网络与世界各地家宽疯狂连接的,根据端口的流量特征,发现来自腾讯系应用:
按协议分类
| 协议 | 流量占比 |
|---|---|
| 未知 TCP | 53.9% |
| TLS | 33.7% |
| GQUIC | 11.2% |
| HTTP | 0.7% |
| DNS | 0.1% |
| NTP | 0.1% |
| QUIC | 0.0% |
| 未知 UDP | 0.0% |
| XMPP | 0.0% |
这里得先把局域网内的流量过滤掉,比如ARP协议这些,以避免影响结果,看了一眼局域网内的流量只有1.8M:!(ip.src==192.168.0.0/16 && ip.dst==192.168.0.0/16) && !arp || dns(供参考,可能还有其他的)。
协议分类真的是吃力不讨好的活,所以直接用了Wireshark的解析结果。基本上一半都是未知协议(这里指无法被具体分类到应用层的协议)。HTTP协议全是微信的MMTLS。
在检查中,还发现存在DNS over TLS (114.114.114.114)流量,但是没有握手成功,目前的推测是腾讯Tim的流量。并且我惊讶地发现似乎存在绕过本地DNS解析的情况,比如resolver.mi.xiaomi.com(HTTP?),mobile.ttgw.httpdns-hl.l.bytedns.net(UDP),httpdns-sc.aliyuncs.com(TLS),这些域名均没有在本地存在解析记录,也提取不到任何表明服务器身份的信息,完全是靠VirusTotal Passive DNS的结果发现的,意味着你没法在DNS和应用层级别屏蔽它。而微信的dns.weixin.qq.com.cn比较良心了,既有本地DNS解析,又有Host头,很好确定身份。此外还有一些直连IP却未找到相应解析的,可能是应用的DNS缓存造成,也可能是真的写死IP的,这里无法推断。
一圈看下来,还是属于字节系的域名最多,dig.bdurl.net中的bd我甚至以为是百度系,结果发现这里的bd是ByteDance的意思。其他的话:腾讯QQ协议应该还是老的,还是能够看到明文的QQ号,一眼就能分类成腾讯系。也确实有应用在使用NTP协议,但是由于我ThinkPad也在同步,对结果有些干扰。
以上就是静置时家宽网络下的手机流量分析,利用协议本身的信息、目标网络的归属确定应用流量的身份。同时也对私人网络流量控制提出了挑战,在不使用商业流量产品下如何网络自主,还是任由他人摆布?在这个目前不可能摆脱专有软件生活的世界,这个答案似乎并不好寻找。
小字提一下:事实上,最近我尝试了Rethink: DNS + Firewall,我觉得它很有创意,DNS屏蔽列表+应用防火墙,支持指定上游DNS/DoH,支持Socks5代理转发。但是不太稳定,比如有时无法开机自启。缺点也很多,无法自定义过滤列表,必须从Rethink官网下载;备份恢复不完整;协议分类不准确,甚至把IMCP协议结合不知道哪里来的25端口,识别成SMTP协议。我倒是期望能够增加应用级别的“阻止未在使用的应用访问网络”,或是能在“全局”下添加例外,那倒是很实用的。
--
本页面最后更新于2026年1月28日。
