虚拟专用网(VPN)解决了许多隐私问题。由于VPN通常会加密您的计算机与VPN提供商之间的流量,因此观察者很难查看您的流量以查看您的最新动态。但是,有许多人希望能够掩盖他们完全使用VPN的事实。例如禁止使用VPN的国家/地区的人,或其他通常不允许通过技术手段使用或禁止使用VPN的情况。在本文中,我们重点介绍观察者可以从网络数据包捕获中收集的数据类型,以及如何将这些数据用于检测VPN使用情况.
问题背景
迫在眉睫的问题是“为什么”?谁在乎是否有人发现您正在运行VPN?如果流量是经过高度加密的,那是什么问题?
的确,在许多情况下和许多国家/地区,观察者检测到VPN的使用都没有关系。但是,许多国家/地区禁止使用VPN,因此对于这些国家/地区的VPN用户来说,了解如何发现它们很重要.
为了确定是否正在使用VPN,观察者必须有权访问目标流量正在通过的路由器。对于目标受害者,攻击者可能会花费大量资源来确定接管特定受害者使用的路由器的方式。在民族国家监视的情况下,有效的检测将需要控制许多路由器。当您将这两件事结合在一起时-一个关心您是否正在使用VPN的组织 并且 具有控制大量路由器的能力,这通常表示国家/地区级别的威胁参与者.
请记住,本文介绍了观察者可以发现VPN使用情况的方式。不一定意味着VPN隧道中加密的数据更易于利用.
测试方法
由于无法访问州级资源,因此我的测试平台和方法的规模要小一些。我使用带有VirtualBox的三个虚拟机(VM)创建了一个小型内部网络。网络拓扑如下:
我在OpenWRT路由器VM上安装了数据包嗅探软件,然后在其他两个虚拟机上测试了各种VPN配置。数据包嗅探软件tcpdump允许我捕获VM的网络流量以进行分析。在更现实的设置中,数据包捕获软件可能会安装在Internet上的路由器中,或者至少安装在ISP的网络中。分析软件的策略性放置将需要一些有关目标流量可能在其上流动的互联网上的汇聚点的知识。在我的测试网络中,我以100%的确定性知道往返于虚拟机的所有流量都将通过该OpenWRT路由器。因此,这是我放置收藏工具的最佳位置.
VPN指标的非技术来源
并非所有指示VPN使用情况的数据源都是技术性的。虽然有些是非常技术性的,例如数据包分析,但有些是非技术性的,例如人为错误和日常工作.
意外的网络流量
大多数VPN用户具有必须启动的客户端软件才能建立VPN。在计算机启动时,在建立VPN之前很难确保没有流量通过Internet。甚至那些带有Kill Switch的VPN可能也无法对系统启动过程中通过的流量进行任何处理.
为了测试这一点,我在Windows虚拟机中设置了VyprVPN的自动连接和终止开关选项。然后,我关闭Windows计算机,在OpenWRT路由器上启动数据包捕获,然后启动Windows计算机。产生了很多数据包,有趣的是这两个序列.
首先,我们可以看到许多类似IP地址的ping操作。我没有故意对这些数据包进行分组-这是它们自然发送的方式:
这表明正在尝试枚举服务器。在VPN方案中,这种流量的一个很常见的原因是VPN客户端试图确定最快的服务器。一种方法是将ICMP数据包(称为ping)发送到一组服务器,以查看哪些服务器最快返回.
从第一个屏幕截图中我们可以看到209.99.63.34返回的速度最快是99毫秒。在数据包捕获的更下方,我们突然看到从那时开始,大多数流量都已加密,并注定要发送至209.99.63.34。
下一个难题是找出这些IP的含义。使用声明了IP的注册所有者的IP WHOIS,我们可以看到,除了一个IP之外,所有IP都属于YHC Corporation,并且解析为Data Foundry数据中心的服务器:
209.99.108.46
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.109.167
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.113.70
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209-99-115-97
209.99.117.82
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.21.36
单位名称:YHC公司
OrgTech电子邮件:[email protected]
OrgTech电子邮件:[email protected]
209.99.22.46
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.60.34
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.61.42
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.62.34
单位名称:YHC公司
OrgTech电子邮件:[email protected]
单位名称:Powerhouse Management,Inc.
OrgTech电子邮件:[email protected]
209.99.63.34
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.63.34
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.67.41
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.72.70
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.75.70
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.93.34
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.94.37
单位名称:YHC公司
OrgTech电子邮件:[email protected]
209.99.95.40
单位名称:YHC公司
OrgTech电子邮件:[email protected]
合理的下一步是扫描这些IP,以查看它们正在运行什么服务。我不会提供有关操作方法的详细信息,但是我的测试表明,大多数服务器显示的默认连接横幅已从VyprVPN服务器中删除,因此没有明显的故事表明这些IP正在运行VPN服务器.
在启动计算机之前,您无能为力。因此,如果您想混淆这种设置顺序,则需要在计算机“前面”运行VPN。一种方法是在路由器上运行VPN客户端,而不是在计算机上运行客户端。路由器重新启动时,您仍然会遇到相同的启动顺序,但这通常比计算机少.
没有未加密的数据包
如上所述,一旦ping操作完成,数据包捕获就会显示出到最快IP的加密流量。如果观察者仅看到加密的数据包,而看不到单个未加密的数据包,则可能表明存在正在使用VPN的迹象。尽管世界正迅速朝着在网络上尽可能多地加密数据的方向发展,但仍然存在一些通常未加密的请求。其中包括DNS查找查询,NNTP(时间服务器)查询以及少量其他协议请求(例如FTP和Telnet),这些请求有时在我们的某些应用程序中使用,但根本不支持加密.
马虎的人为操作安全(OpSec)泄漏
通过使用看似无关紧要的信息,可以从目标中获取大量有意义的数据。许多人花费大量时间和精力来缓解他们认为“重要”的东西,而这些东西只能由他们没有想到的琐碎信息来识别。一些例子包括对互联网的长期记忆,这表明希拉里·克林顿的电子邮件管理员很可能是一个名叫保罗·康贝塔的人。可怕的海盗罗伯茨(又名Ross Ross Ulbricht),据称是非法丝绸之路互联网市场的策划者,受到起诉的主要原因是笔记本电脑上的数据是在他从公共图书馆分散注意力时从他身上实际获取的.
不太戏剧化的是,观察者可以经常使用活动周期之类的方法来确定目标的时区或消息中是否包含特殊字符,以识别与目标国家/地区相对应的语言布局。考虑操作安全性时,没有要考虑的事情的完整列表,因为提出新的交叉引用数据方法主要是想象力和资源的练习。.
但是,有一些与数据包捕获有关的特定事项可以识别VPN的使用.
数据包元数据中的告示牌
PFS重新密钥是可预测的
由于VPN流量通常是加密的,因此通常不会被窥探。加密之所以起作用,是因为很难“蛮力”加密的数据以显示其明文内容。实际上,破解加密是如此困难,以至于大型监视项目有时仅收集他们可以收集的所有数据,以希望它们能够在计算机功率增加的某个将来的某个日期破解加密,或者能够获得密钥。用于加密数据的文件。完全前向保密(PFS)是一种可用于防止后一种情况的方法.
Perfect Forward Secrecy会重新生成用于定期加密VPN流量的加密密钥。生成新的密钥对时,先前的密钥对将被销毁。这意味着以后无法解密任何收集到的加密数据包,因为用于加密它们的密钥不再存在.
OpenVPN支持PFS。在捕获本文的数据时,我将密钥循环速率降低到10秒,以便捕获正在发生的过程。我发现在进行密钥重新生成时,会生成以下数据包序列:
09:01:48.461276 IP 192.168.1.204.openvpn > 104.254.92.61.openvpn:UDP,长度94
09:01:54.749114 IP 192.168.1.204.openvpn > 104.254.92.61.openvpn:UDP,长度65
09:01:58.895381 IP 192.168.1.204.openvpn > 104.254.92.61.openvpn:UDP,长度86
09:01:58.951091 IP 192.168.1.204.openvpn > 104.254.92.61.openvpn:UDP,长度94
09:01:58.951614 IP 192.168.1.204.openvpn > 104.254.92.61.openvpn:UDP,长度259
09:01:59.007916 IP 192.168.1.204.openvpn > 104.254.92.61.openvpn:UDP,长度94
09:01:59.008027 IP 192.168.1.204.openvpn > 104.254.92.61.openvpn:UDP,长度94
09:01:59.008265 IP 192.168.1.204.openvpn > 104.254.92.61.openvpn:UDP,长度94
09:01:59.008300 IP 192.168.1.204.openvpn > 104.254.92.61.openvpn:UDP,长度94
09:01:59.062927 IP 192.168.1.204.openvpn > 104.254.92.61.openvpn:UDP,长度256
09:01:59.106521 IP 192.168.1.204.openvpn > 104.254.92.61.openvpn:UDP,长度575
关于此序列的值得注意的是,每次密钥再生发生时,包大小都是相同的。因此,每当我在数据包捕获中看到一系列具有这些大小的数据包时,我就知道密钥循环正在发生:
94
65岁
86
94
259
94
94
94
94
256
575
可以说,任何重复过程在理论上都将像这样生成重复的数据包序列,但是它仍然可以用作PFS发挥作用的指示。结合其他数据,此信息可能足以确认VPN连接.
所有发往相同IP的数据包
在正常的Internet使用过程中,人们和计算机从许多不同的站点请求数据。每个站点都有一个不同的IP地址。使用VPN时,每个单个数据包都将发送到VPN服务器。 VPN服务器从每个数据包剥离VPN加密层以显示真实数据包,然后将其发送到其实际目的地。 VPN服务器的响应也是如此。它接收响应数据包,将其包装在加密层中,然后将数据包发送到用户的计算机.
数据包捕获显示计算机将100%的流量发送到单个IP,这很好地表明VPN或代理正在使用.
赛风(Psiphon)是一种互联网审查规避工具。它具有有趣的功能,可以在某种程度上与之抗衡。它具有拆分隧道模式,该模式实际上仅将赛风隧道用于离开您自己的国家/地区的流量.
为了查看数据包级别的情况,我启动了Psiphon并测试了两个站点。我在加拿大,这是送往我们自己的.CA网域注册商的流量示例。在这种情况下,我的目的地在数据包捕获中清晰可见.
8:30:14.213668 IP 192.168.1.210.58787 > www.cira.ca.https:标志[。],ack 1026833,获胜64240,长度0
08:30:14.229178 IP www.cira.ca.https > 192.168.1.210.58787:标志[。],seq 1026833:1028293,ack 715,win 5094,长度1460
08:30:14.229427 IP www.cira.ca.https > 192.168.1.210.58787:标志[。],seq 1028293:1031213,ack 715,win 5094,长度2920
08:30:14.229781 IP 192.168.1.210.58787 > www.cira.ca.https:标志[。],ack 1031213,获胜64240,长度0
然后,我访问了位于美国的Comparitech网站:
8:29:48.028789 IP li832-56.members.linode.com.ssh > 192.168.1.210.58659:标志[P。],seq 107809:108277,ack 19080,win 1392,长度468
08:29:48.029101 IP 192.168.1.210.58659 > li832-56.members.linode.com.ssh:标志[。],ack 108277,获胜856,长度0
08:29:48.029306 IP 192.168.1.210.58659 > li832-56.members.linode.com.ssh:标记[P。],seq 19080:19132,ack 108277,win 856,长度52
08:29:48.108658 IP li832-56.members.linode.com.ssh > 192.168.1.210.58659:标志[。],ack 19132,获胜1392,长度0
请注意,发往美国的流量是如何发送到Linode服务器而不是comparitech.com的。 Linode是一家非常大型的服务器公司,看到目的地为Linode服务器的流量并不罕见。 Psiphon通过使用SSH隧道隐藏VPN的任何痕迹进一步模糊了该流量。同样,Linode上的Psiphon服务器的反向DNS(rDNS)也不会背离其与Psiphon的关联。 rDNS仅显示Linode拥有IP,这是预期的。本文稍后的混淆部分将介绍有关rDNS的更多信息.
操作系统和数据包指纹数据不一致
尽管TCP网络与操作系统无关,但不同的操作系统会创建具有某些不同值的数据包。例如,默认的数据包生存时间(TTL)值在不同系统上创建的数据包中会有所不同。大多数Windows系统默认将数据包TTL设置为128,而大多数Linux系统将其默认值设置为64。由于TTL是捕获数据包的可见部分,因此可以确定哪个操作系统最有可能创建该数据包。数据包结构中还存在其他明显的迹象,例如长度和最大段大小(MSS),它们也随操作系统的不同而不同.
以下代码段是Windows系统生成的数据包的一部分。注意 ttl 127 最后一行的“值”设置为127。这是因为TTL以“跳数”表示。每次数据包经过路由器之类的设备时,其TTL都会减1。在这种情况下,TTL从128开始,但是由于我在路由器上捕获了它(在一跳之后),所以它现在是127。但是,我仍然可以说它从来都不是64,因此这很可能是Windows系统上创建的数据包.
08:08:51.657495 IP(tos 0x0,ttl 64,id 32150,偏移量0,标志[DF],原始UDP(17),长度177)
google-public-dns-a.google.com.domain > 192.168.2.139.59414:40501 3/0/0 cdn-3.convertexperiments.com。 CNAME cdn-3.convertexperiments.com.edgekey.net。,cdn-3.convertexperiments.com.edgekey.net。 CNAME e5289.g.akamaiedge.net。,e5289.g.akamaiedge.net。 A 104.94.35.212(149)
08:08:51.659278 IP(tos 0x0,ttl 127,id 3890,偏移量0,标志[DF],proto TCP(6),长度52)
从Linux机器捕获的数据包在其第一跳之后的TTL为63。这是因为大多数Linux机器将数据包TTL的初始值设置为64.
08:15:55.913493 IP(tos 0x0,ttl 63,id 41443,偏移量0,标志[DF],原始UDP(17),长度56)
192.168.2.139.48635 > resolver1.ihgip.net.domain:47200+ A? google.com。 (28)
但是,那又如何呢?为什么知道哪个操作系统创建了数据包为什么很重要?
如果观察者对目标有专门知识,那可能会很重要。如果已知目标使用Windows(也许是整个组织都使用Windows的大型组织的成员),但是从该目标捕获的数据包表明它们很可能是在Linux机器上创建的,则可以很好地表明某些目标的VPN或代理一种正在使用。值得注意的是,几乎所有VPN服务器都在Linux或类似Unix的服务器上运行.
可以在大多数系统上调整数据包参数,但很少有人会这样做.
VPN提供商的混淆技术不足
网络分析不仅仅是收集数据包。 DNS等辅助进程可以发挥作用。许多VPN用户都知道DNS,因为以明文形式发送DNS查询是观察者确定您正在访问或即将访问的位置的一种方式。但是,很少有用户知道反向DNS(rDNS)。就像DNS将域名与IP地址相关联一样,rDNS将IP地址与主机名相关联,并且主机名通常标识IP的所有者。此外,大多数程序库和操作系统都带有某些版本的标准gethostnameby *()函数,这些功能扩展了系统将IP和主机名关联的能力.
反向DNS并不像“普通” DNS那样关键,因为rDNS在流量路由中不起作用。相反,它主要用作识别IP所有权的一种方式。只有IP地址的所有者才能将rDNS记录与其关联。因此,检查IP地址的rDNS记录可以合理地确保谁拥有它,或者至少是所有者希望您认为拥有它的人。请注意,不需要rDNS,而且许多IP地址根本没有rDNS条目.
让我们看一下facebook.com域的示例。标准DNS查询提供的DNS A记录显示此IP地址:
$挖+短facebook.com
31.13.67.35
现在,我们使用反向DNS查询或gethostnamebyaddr()函数来查看谁拥有该IP:
$ host -n 31.13.67.35
35.67.13.31.in-addr.arpa域名指针edge-star-mini-shv-01-mia3.facebook.com
由此可见,Facebook实际上拥有该IP地址。但是,大多数站点都不拥有自己的IP。它们是租赁的,属于任意组织,或者也许是由不太明显的实体拥有。亚马逊是许多公司使用的大型计算提供商的示例。对许多互联网服务的IP地址进行rDNS查询仅表明Amazon拥有该IP,因此该信息在确定谁操作IP方面没有多大用处。另一个例子是谷歌。 Google的rDNS条目略微有些微,但它仍然保留所有权信息。反向DNS查找Google IP的方法如下:
$ dig + short google.com
216.58.207.46
$ host -n 216.58.207.46
46.207.58.216.in-addr.arpa域名指针fra16s24-in-f14.1e100.net.
Google拥有1e100.net域,因此我们可以看到该IP实际上属于Google.
在VPN的世界中,可以使用地址解析工具来查看您的流量预定的IP是否属于VPN。例如,OpenWRT路由器上的默认tcpdump命令将尝试解析它在TCP数据包中看到的IP。似乎主要是使用gethostbyaddress()来执行此操作,因此有时可以查看数据包的目的地。 IPVanish会话的默认tcpdump捕获说明了这一点:
08:23:14.485768 IP 216-151-184-30.ipvanish.com.3074 > 192.168.1.210.51061:UDP,长度1441
08:23:14.485847 IP 216-151-184-30.ipvanish.com.3074 > 192.168.1.210.51061:UDP,长度1441
08:23:14.486144 IP 216-151-184-30.ipvanish.com.3074 > 192.168.1.210.51061:UDP,长度1441
08:23:14.486186 IP 216-151-184-30.ipvanish.com.3074 > 192.168.1.210.51061:UDP,长度385
Windows的IPVanish客户端提供三种配置:标准的OpenVPN连接,使用HTTPS的OpenVPN连接和混淆的连接.
上面的数据包是在使用混淆的OpenVPN连接设置的会话期间捕获的,但WireShark仍然能够提供目标信息.
综上所述
在确定VPN使用率时,很少有“银色子弹”。通常需要大量的技术或观察来编译足够的指示符,以指示VPN正在使用中,即使这样,也很难100%确定。对禁止使用VPN拥有既得利益的公司(例如Netflix和其他流服务)拥有专职于此问题的专职团队。在其他情况下,许多东欧和中东国家/地区禁止使用VPN,并拥有类似的小组来寻找VPN用户.
现,观察者可以通过检查数据包元数据中的PFS重新密钥来确定VPN的使用情况。如果重新密钥是可预测的,那么观察者可以推断出VPN的使用情况。所有发往相同IP的数据包 除了PFS重新密钥,观察者还可以通过检查所有发往相同IP的数据包来确定VPN的使用情况。如果所有数据包都发往相同的IP地址,那么这表明VPN正在使用。操作系统和数据包指纹数据不一致 观察者还可以通过比较操作系统和数据包指纹数据来确定VPN的使用情况。如果操作系统和数据包指纹数据不一致,那么这表明VPN正在使用。 VPN提供商的混淆技术不足 最后,观察者可以通过检查VPN提供商的混淆技术来确定VPN的使用情况。如果VPN提供商的混淆技术不足,那么观察者可以推断出VPN的使用情况。 综上所述,虚拟专用网(VPN)解决了许多隐私问题,但是观察者可以通过多种方式检测VPN的使用情况。因此,如果您希望掩盖VPN的使用情况,您需要采取一些措施来混淆您的流量。