基于流量与网络连接的网络代理行为特征检测与识别算法

前言

本文通过代理和网安的攻防技术等角度进行双边探讨。

相关技术介绍

根据参考资料

  1. TLS握手协议分析与理解——某HTTPS请求流量包分析
  2. SSL / TLS 协议解析!什么是 SNI? SNI 识别?
  3. 加密基础知识三 TLS/SSL HTTPS

  4. SSL 如何工作?| SSL 证书和 TLS

可以简单地自行了解相关技术

简单来说,就目前普通用户使用的一般情况下

以下内容属于“加密、保密”范围:

  1. Path 路径
  2. Content 网页内容
  3. Cookie和其他对话的数据内容
  4. User Agent 用户代理
  5. HTTP Methods 请求方法 【不是太确定,我记得是】

以下内容不属于“加密、保密”范围:

  1. 网页访问者者的IP、Port
  2. 网页提供者的的IP、Port
  3. 网页的Host域名(通过SNI,试图对抗这个的ESNI的骨灰都被扬了)
  4. 网页域名的DNS查询(除非使用加密DNS)
  5. 访问网页的时间
  6. 网页的证书(不含私有KEY)
  7. 数据传输量
  8. 数据传输带宽

同时网页的证书会暴露以下内容

  1. 签发者、CA机构
  2. 被签发的对象
  3. 签发日期、到期日期
  4. 证书支持的域名范围(尤其是多域名、泛域名共享证书)
  5. 证书公钥

流量与网络连接的网络代理行为特征

要想知道如何识别,那肯定要知己知彼,根据目前主流代理的模式,去除IPsec、OpenV*N、L2TP等过气产品外,常见的有S*s、S*R、V*y、V*s、T*n、X*y,这些懂得都懂啊,别问我这啥啊,我也不dao啊。

(以下的境内指的是中华人民共和国PRC所属的中国大陆内、内地地区,不含港澳台和某些领土争议地区,境外为地球上除了“境内的地区”,包含港澳台)

1-4链路示例是常规访问方法:

1,正常境内用户访问未受限的境内网站的链路

  • 张三 --> 境内ISP --> 境内网站服务器

2,正常境内用户访问受限的境内网站的链路

  • 张三 --> 境内ISP --> 安全网关(DNS劫持/污染、HTTP劫持/阻断、IPPort/TCP/UDP/IP阻断/重置、BGP劫持、中间人攻击)--> 爬
  • 张三 --> 傻缺浏览器、傻缺系统  --> 爬

3,正常境内用户访问未受限的境外网站的链路

  • 张三 --> 境内ISP --> 跨境和其他安全网关(放行)  -->境外ISP --> 境外网站服务器

4,正常境内用户访问受限的境外网站的链路

  • 张三 --> 境内ISP --> 跨境和其他安全网关(DNS劫持/污染、HTTP劫持/阻断、IPPort/TCP/UDP/IP阻断/重置、BGP劫持、中间人攻击)--> 爬
  • 张三 --> 傻缺浏览器、傻缺系统  --> 爬

5-8链路示例是非常规访问受限的境外网站方法:

5,直接使用境外服务器作为代理访问受限网站的链路

  • 张三 --> 境内ISP --> 跨境和其他安全网关(放行) -->境外ISP --> 境外代理服务器 -->境外ISP --> 境外网站服务器

6,使用境内服务器中转境外服务器作为代理访问受限网站的链路

  • 张三 -->境内ISP --> 境内服务器 --> 境内ISP --> 跨境和其他安全网关(放行) -->境外ISP --> 境外代理服务器 -->境外ISP --> 境外网站服务器

7,使用跨境网络专线作为代理访问受限网站的链路

  • 张三 -->境内ISP --> 境内中转服务器 --> 跨境专线段 --> 境外服务器 --> 境外ISP --> 境外网站服务器

8,使用VNC和其他远程桌面技术实现远程访问受限网站的链路

  • 张三 -->境内ISP --> 境内中转服务器 --> 跨境和其他安全网关(放行) --> 境外远程桌面服务器 --> 境外ISP --> 境外网站服务器

当然,除了跨境和其他安全网关外,境内ISP本身也有部分审查、拦截的功能,比如DNS劫持

通过1-8链路示例,正常人应该都知道这链路是怎么走的了

通过再上文一点的部分,正常人应该都知道在HTTPS/TLS环境下的密和非密内容有哪些了

那么要做到检测与识别,就需要针对链路关键节点和绕过方法、配合非密内容进行针对性突破。

算法的提出思路和示例方法

流量模式

任何代理行为中,进行下载和在线观看大型媒体文件,都需要较长时间、较大大流量、较大带宽的下载

此时可有几个突破点

  1. 是否为常见/大量使用的域名(比如说是Bilibili的数字媒体海外节点、Steam国际节点下载域名)
  2. 是否为常见/大量使用的IP(比如说是CloudFlare CDN的IP、Akamai CDN的IP)
  3. 点对点时段平均带宽(比如1080P的流量为5-10M、4K的视频的流量为20-50M、IDM下载的全速拉满)
  4. 流量对称性(需要服务器或者其上级网管可监管)(比如代理服务器一般流量和带宽上下对等)
  5. 该域名+IP的访问者、用量、访问时间
  6. 通过主动探测检测该连接是否属于普通、正常、合规使用(比如检查网络相应内容、检查域名和其关联域名/IP/ASN是否被收录/有没有黑白名单记录/有没有关键字/有没有实名/注册商在哪里/域名后缀风险程度)

对照的实际应用手段包括但不限于

  1. 拦截奇怪的域名后缀(比如cf、ga、gq、tk、ml五大免费域名,比如xyz、de等廉价域名,比如me、cc、top等滥用黑历史较多的域名)
  2. 拦截奇怪的主域名关键字(比如说机场、v*n、FQ、v*y)
  3. 拦截奇怪的子域名关键字(比如说HK、TW、SG、US、Azure、AWS、Hinet、IPLC、IEPL、v*y、lv、yun、cu、cm、ct、ddns、az、cn2、gia、9929、dmit、do、vu、vir、rn、pr、cloud、emby、drive、cdn、gd)
  4. 阻断多时间段带宽均值十分接近的(比如说持续性5~50M、持续性跑满)
  5. 阻断有黑历史的IP、ASN(比如日常被滥用的CFCDN、AWS、Linode、DO、Vultr、Oracle)
  6. 有少量个体持续性访问奇怪的网站
  7. 网站内容比较蠢、流量表现异常(比如元素周期表、SpeedTest、宝塔初始页、Wordpress、Whmcs等不会进行持续性/大流量的网站)

同时,对于可被监控的机器(包括但不限于,受到中国监管的腾讯云境内外服务器、中国三大运营商境内外服务器)可通过部署网管、网安、防火墙设备进行流量识别,想检查出你是不是上下对等,不能说很难,只能说有手就行。

网络连接模式

首先根据链路示例,可首先对可能被使用的“境内中转服务器”开展检测

无论是什么专线、还是普通的机房,必然有网管/网安/防火墙设备,可通过该部分进行分析,比如说看这些傻子用户:

 

可能这就是肆无忌惮呢,有的直接用HTTP/WS把Path写出来了,还TM带关键字的,只能说这还真是高手过招,而用了HTTPS的那些,傻缺域名骗谁呢?

所以对于HTTP/WS来说,啥都不保密,只要你在中国大陆境内用这个,无论有没有跨境,都是明文、招摇过市的,当然,也不一定都寄就是,毕竟各路WS免流还在玩。

对于HTTPS/WSS来说,有的内容有密,但是依然有大量内容非密,比如说

  1. 证书(是不是垃圾、高风险证书,比如CF的、自签名的、测试的、LE/TA等免费证书的、过期的、域名对不上的、黑域名共享的)
  2. 域名和其内容(和上文域名攻击方向一致,从公网收录数据、黑白历史、负面记录、主动探测、主/子域名关键字、人工标记等方面进行分析)
  3. 服务器IP和ASN(和IP/ASN域名攻击方向一致,从IP/ASN的黑白历史、滥用情况、连坐情况、主动探测和扫端口等方面进行分析)
  4. 访问者IP(比如在该IP的近期的DNS查询、HTTP访问中,有没有访问敏感词、受限内容,比如Google、V*N、Youtube,该IP访问对象是否出现代理访问模型*的情况)

注:代理访问模型*,典型有

  1. 全局代理:境内基本无访问,持续性单一(或少量不同)访问境外某IP、域名,可能存在境内外网站的DNS明文查询
  2. 绕过大陆:境内正常访问,持续性单一(或少量不同)访问境外某IP、域名,可能存在境内外网站的DNS明文查询
  3. 绕过受限网站:境内外正常访问,偶尔单一(或少量不同)访问境外某IP、域名,可能存在境内外网站的DNS明文查询

对于未知(加密)流量来说,只能说在刀尖跳舞吧,仅次于明文HTTP的高风险、易识别。

算法的小结

可以参考Stripe Rader的风控乘算评分规则,根据自己实际情况分配权重

参考评分项目有

  1. 服务器的IP
  2. 服务器的ASN
  3. 服务器同IP的其他网站
  4. CDN供应商识别
  5. 域名的后缀
  6. 域名的搜索引擎收录情况
  7. 域名的实名情况
  8. 域名的备案情况
  9. 域名的注册商
  10. 域名的注册时间和有效期
  11. 域名的DNS解析供应商
  12. 域名的相关DNS解析集
  13. 域名的DNS解析的CNAME识别
  14. 主域名的关键字
  15. 子域名的关键字
  16. 多时段带宽分析
  17. 主动探测相应码
  18. 主动探测的相应内容的关键字识别
  19. 主动探测的相应内容的特征识别
  20. 证书的签发者
  21. 证书的签发时间和有效期
  22. 证书的被签发者
  23. 证书的共享域名
  24. 访问者的IP
  25. 访问者的DNS查询
  26. 访问者的历史行为
  27. 访问者的代理访问模型
  28. 异常大流量

同时流量对称性、相应内容识别、代理访问模型等内容还需要使用者进一步的研究

关于跨境专线的单点突破

由于很多人鼓吹这些多稳定啊、抗风险啊、无惧高峰期以及高墙期什么的,其实核心的问题,卖家比买家要清楚的多

正如某跨境专线卖家的公告所述:

近几日频繁收到用户关于IPLC断流,断联问题。统一说明。
**云IPLC专线(含转发),内网和公网是由专业交换和路由设备控制,内网稳定无攻击。IPLC入口到出口稳定运行。我们一再说明,用户本地到入口公网这段会有协议阻断(情况表现为无法连接入口),此情况下,更换本地地址如果恢复,90%本地运营商阻断你(包含本地和入口同一所在地)。也可以使用手机流量连接测试。此类情况,需要更换协议,和更换本地ip解决(本地到入口公网这段请加密,加密,加密,不要认为使用专线运营商不会阻断你,别忘记你本地到入口需要走公网。)

正好最近有个叫做 Nathosts 被扬了,具体怎么扬的不知道,总之结果就是他家提供的被拔线、不能用,这也是跨境专线的主要风险所在:直接端了专线。

因为单点对象比较明显,跨境专线必然有国内入口,而这个入口大概率是有实名的,虽然实名大概率是假的/买的/不保真的就是(不过也有销售经理、其他公司见钱就开专线用的,毕竟别玩太大的话,及时封你机器也问题不大),但是在国内就意味着大概率属于受控范围内,比如说机房检测、网警查封等,哪怕N层转发一样也得有个给用户连的国内入口,然后用户到流量入口处必然还有一段公网检测路径,比如说经典案例就是上图的HTTP明文请求的用户。

关于误封

风控系统一旦提高风控水平,必然存在误判,比如说条纹和其他国外商家常见的砍单、拒收、拒付等。

一般来说限制可以通过多种方法实现、阶梯性限制,这也是目前GFW主要的行为方式(除了敏感期)。

比如说从定向不定时阻断、DNS污染、IPPort阻断、域名阻断等做起,最终到封IP、封域名。

只要不是影响重大,干了就干了,目前来说,人家压根就没怕过,GitHub的RAW库、Cloudflare的cdn/page/worker、jsdelivr的主域名,有的干一阵子放出来了,有的就关里面,然后动不动加个DNS污染、域名拦截,然后再加上江苏、浙江、泉州的高频反诈,很显然就没把境外势力放在眼里(˵¯͒ བ¯͒˵)