
VPN的主要功能是将互联网流量封装在一个加密隧道中,并隐藏用户的IP地址。但是近日,研究人员发现一种名为TunnelVision的攻击方法,可以窃取几乎所有VPN应用的流量。
研究人员表示除了安卓系统之外,几乎所有其他操作系统中的VPN应用目前都没有办法防御此类攻击。
研究人员还指出,这种攻击技术可能从2002年就已存在,并且可能已经被发现并用于实战。
攻击方法详解
研究者发布的攻击演示视频(链接在文末)解释了TunnelVision的技术细节,“受害者的流量将被解密并直接路由到攻击者那里。攻击者可以读取、丢弃或修改泄漏的流量,而受害者仍然保持与VPN和互联网的连接。”
该攻击通过操纵分配IP地址给本地网络连接设备的DHCP服务器来实现。DHCP服务器中有一个名为“选项121”的设置,它允许服务器覆盖默认路由规则,这些规则会将VPN流量通过启动加密隧道的本地IP地址发送出去。通过使用选项121将VPN流量路由到DHCP服务器,攻击会将数据转移到DHCP服务器本身。来自Leviathan Security Group的研究人员解释道:
“攻击者在与目标VPN用户相同网络上运行一个DHCP服务器,并将攻击端配置为网关。当流量到达攻击者的网关时,攻击者可使用DHCP服务器上的流量转发规则将流量传递到合法网关,同时进行窥探。”
“攻击者使用DHCP选项121在VPN用户的路由表中设置路由,可以根据需要设置任意路由,也可以设置多个路由。通过推送比大多数VPN使用的/0CIDR范围更具体的路由,攻击者可以创建优先级高于VPN创建的虚拟接口路由的路由规则。攻击者可以设置多个/1路由来重建大多数VPN设置的0.0.0.0/0全部流量规则。”
“推送路由还意味着网络流量将通过与DHCP服务器相同的接口发送,而不是虚拟网络接口。这是一个未在RFC中清楚说明的预期功能。因此,攻击者推送的路由永远不会被VPN的虚拟接口加密,而是由与DHCP服务器通信的网络接口传输。攻击者可以选择哪些IP地址通过隧道传输,哪些地址通过与DHCP服务器通信的网络接口传输。”

图片:恶意DHCP121路由选项,导致流量永远不会被VPN进程加密
研究者表示,这种技术也可以用于已经建立的VPN连接(当VPN用户的主机需要从攻击者的DHCP服务器续订租约时)。攻击者可以通过在DHCP租约中设置较短的租约时间来人为地创建这种场景,这样用户会更频繁地更新其路由表。此外,VPN控制通道仍然完好,因为它已经使用物理接口进行通信。在研究者的测试中,VPN一直显示已连接,从未断开。
研究者指出,这种攻击最有效的方式是由控制目标用户所连网络的人实施。在这种情况下,攻击者可将DHCP服务器配置为使用选项121。网络上的非特权用户也可以通过设置他们自己的恶意DHCP服务器来发动此类攻击。
攻击后果与缓解方法
攻击可以让部分或全部流量通过未加密的隧道路由。在这种情况下,VPN应用程序仍会报告所有数据都通过受保护的连接发送。任何偏离隧道的流量都将不会被VPN加密,并且远程用户可看到VPN用户的真实IP,而不是VPN应用指定的IP。
值得注意的是,由于未实现选项121,安卓是唯一可以完全保护VPN应用免受攻击的操作系统。对于所有其他操作系统,目前没有彻底的修复方法。当应用程序运行在Linux上时,有一个设置可以最小化影响,但即使这样,TunnelVision也可以用于利用侧信道来取消对目标流量的匿名化并执行拒绝服务攻击。网络防火墙也可以配置为拒绝进出物理接口的入站和出站流量。这种补救措施存在两个问题:
(1)连接到不受信任网络的VPN用户无法控制防火墙
(2)它会打开与Linux缓解措施相同的侧信道
目前最有效的缓解方法是在网络适配器未设置为桥接模式的虚拟机内运行VPN,或者通过手机的Wi-Fi网络将VPN连接到互联网。
参考链接:
https://www.leviathansecurity.com/blog/tunnelvision

好家伙 标题看得我后脖颈子一凉 结果把整篇看完又觉得哪儿不太对劲 我先说结论 这技术是真的 坑也是真的 但你要说它能监听几乎所有VPN 我觉得这帽子扣得有点大 容易吓坏小白 我这种平时拿VPN追剧的人都得缓半天 我用自己的话给你们翻译一下这个事 你们家里路由器是不是都自动给手机电脑发IP地址 那个发地址的玩意儿就是DHCP服务器 它不光发地址 还顺手告诉你的电脑 哪些流量走哪个门 这叫路由规则 一般没人管这个 默认全信 而选项121这个功能呢 就是允许DHCP服务器在发地址的时候夹带私货 说 你以后出门全走后门 别走正门 你的电脑傻乎乎地就照做了 本来VPN是给你开了一条加密的专属通道 现在可好 你压根没走那条通道 绕到后门去了 后门蹲着个人拆你包裹看 这就叫TunnelVision 大意就是隧道里其实有个洞 但你从表面看隧道还是好好的 加密的小绿灯还亮着 你以为自己在装甲车里 其实你早就下车了 😅 我看到文章里说 攻击者得和目标用户在同一网络 然后跑一个恶意DHCP服务器 再用选项121把你流量引到他那儿去 你看这个前提条件 你不觉得说明了很多事吗 这就好比你住酒店 楼下的前台其实是坏人 你本来想走楼梯回房间 他非要给你指个电梯 说这电梯更稳 结果电梯是坏的 把你送到地下室 那地下室当然站着一堆打手啊 这种情况下 不管你有没有VPN 你都等于把自己交到人家手里了 你连的网本来就是对方控制的 人家想看你啥 办法多了去了 都不用费劲研究什么121 直接把路由器日志翻出来就完事了 所以我就一直觉得 VPN这种东西 防的从来不是身边的人 它防的是大马路上走的那段路 你在家连宽带 运营商能看见你访问了哪个网站 你不想让他看见 你挂个VPN 你在公司连网 网管能看见你在摸鱼 你插个VPN回家 这些场景才是VPN的主场 它的意思是我在这条网线里面再挖一条秘密地道 外面的大路我管不了 但地道里我说了算 可现在有人告诉你 你压根不用把车开进地道 前面有个岔路口 直接把你导到旁边小路上去了 这能怪VPN不够结实吗 要怪只能怪你没看清楚路标 或者说 设计这条路的时候 本来就允许被人指路 文章里还提到 这个攻击方式可能2002年就有了 我一看这个年份反倒不慌了 你想啊 如果是从2002年就能用的招 还一直没人管 那说明它压根不算什么漏洞 可能人家的协议设计本来就是这样的 只是大家以前没人往这个方向琢磨 现在被人当成重大发现拿出来了 跟那种说 你家门锁又没坏 但小偷可以用铁丝捅开 是一样的逻辑 门锁设计的时候就没防铁丝 可不代表门锁不防撬棍啊 再聊聊安卓那一段 说安卓因为没实现选项121 所以是唯一能完全防御的 我看到这儿真是哭笑不得 这哪叫防御能力强啊 这叫缺心眼 误打误撞躲过一劫 哪天谷歌心情好 给安卓加了这个功能 那安卓一样得跪 所以千万别把这事儿当成安卓的功劳 它只是恰好没长那个零件而已 就像一个人没被蚊子咬 不是因为他皮厚 是因为他压根就没出门 我上大学那会儿经历过类似的事 学校机房的电脑 装的什么上网客户端 连上网以后 有时候打开网页会莫名其妙跳到一个校内通知页面 一开始以为是中了病毒 后来才听说是机房把路由改了 所有流量先走校内服务器 再转发出去 这种操作在局域网里太常见了 网管想让你看啥 你就只能看啥 那时候我要是挂着VPN 估计也是这个下场 界面显示VPN已连接 但实际流量早就不在隧道里了 普通用户根本没有感知 文章里说 研究者测试的时候VPN一直显示已连接 从未断开 我一看这个描述就想笑 这不就是我当年学校的网管日常操作吗 你管这叫黑客技术 我寻思这不就是网络管理器没配置好吗 还有一点 通篇看下来 攻击者能偷到的 其实是那些没经过应用层加密的流量 可现在是2024年了 你打开个网页都带HTTPS 小绿锁 银行APP 微信聊天 邮箱 全都套了好几层加密 就算他把你的流量导到他服务器上 他看到的也就是一堆乱码 他能知道你访问了百度 他知道你看了哪部剧 但你说他想破解你的帐号密码 那可难了 除非你访问的网站还在用HTTP 或者说他的攻击还能顺手把HTTPS也整降级了 但那又得是一整套复杂操作 不是单靠一个DHCP就能搞定的 所以我说 文章里那句“读取 丢弃或修改泄漏的流量” 说得挺吓人 但其实真要读取到干货 没那么容易 侧信道 倒是真能干活 比如监测你的访问模式 猜你在干嘛 或者干脆把你的流量全丢了 让你断网 这确实是问题 但要把它描述成VPN形同虚设 我还是不服 再来看缓解方法 文章说可以在防火墙上把物理接口的进出流量给禁了 说得轻巧 你这一禁 你打印怎么办 你连公司内网服务器怎么办 你投屏怎么办 你的电脑又不是只剩一个VPN接口 你要是全禁了 那你干脆别连这个局域网了 而且人家还说 就算你配置了防火墙 还是可以用侧信道取消匿名化 做拒绝服务 那这不就等于说 无解吗 无解的话 那还谈什么缓解 洗洗睡吧 我有个同事 公司电脑装了那种强制VPN 说是防泄密 结果每次开会要连投影仪 都得先断开VPN 不然投屏投不出去 因为投屏走的是局域网 跟VPN的虚拟网卡不是一个路由 你想想 要是按照文章里说的 把物理接口全封了 那这电脑基本就废了 只能用来收发邮件 这显然不现实 所以这个修复方法 只能算理论上的安慰 实际上谁也做不到 普通人能怎么办 我个人的想法很简单 第一 别连来路不明的WiFi 尤其是那种不用密码就能连的 第二 自己家的路由器 密码别设太简单 别用默认管理员密码 第三 真要处理重要的事 比如网银 转账 最好直接切手机流量 流量可比陌生WiFi靠谱多了 第四 别把VPN当防弹衣 它就是一件雨衣 平常挡挡小雨可以 真下冰雹了它也不顶用 你真正的安全靠的是你自己的习惯 而不是某一个软件 至于研究者那些人 我觉得他们确实做了件好事 把这个老底儿掀出来了 让大家都知道了DHCP还能这么玩 但你说这是不是“可监听几乎所有VPN” 我总觉得有点贩卖焦虑的意思 好像全世界用VPN的人都已经裸奔了似的 真不是这么回事 你得先连上坏人开的网 坏人还得专门给你发一个坏的路由表 然后还得等你的DHCP续租 他才有可能看到你的流量 这个概率 就跟你在街上被一个拿着万能钥匙的人盯上 他正好打开了你的车门 你没锁车 但他手里那串钥匙也不是你车的原配钥匙啊 他能打开纯粹是因为你没锁车 合着这也能赖车锁质量差吗 我倒是挺好奇他们演示视频里用的什么环境 如果是在一个实验室里 自己搭的DHCP服务器 自己配好了路由 那肯定演示得顺顺当当 可实际现实里 你随手连一个星巴克WiFi 人家不一定用这种高级手段 抓包的工具一大堆 比这简单多了 所以这个攻击最搞笑的地方就在于 它花了挺大力气 解决了一个本来就没人防守的问题 你身边的网关本来就是恶意的 你还指望流量安全 这不是缘木求鱼吗 再说一个家庭场景 我家里之前那个光猫 不知道怎么回事 DHCP租约时间特别短 两小时就续一次 每次一续租 家里电视就卡一下 后来我进后台一看 默认租约时间被设成了120分钟 我改成24小时 世界就清净了 这件事说明什么 说明DHCP这个玩意儿 它本身就充满了信任 不管是租约 还是路由规则 只要DHCP服务器说啥 设备就信啥 这跟VPN没有半点关系 这是整个网络机制里最底层的信任假设 谁在你链路上游 谁就能搞你 这不是今天才有的道理 从有网络那天就如此 所以这篇东西给我的感觉就是 他们把一个早就存在的常识 包装成了一个惊悚故事 你问我会不会因为这个不用VPN了 那肯定不会 我该用还得用 该防运营商偷看还是得防 该跨区看剧还是得看 只是我不会再天真地以为 挂上VPN就万事大吉 你在咖啡厅连公共WiFi 人家真想搞你 你挂十个VPN也白搭 你手机上的APP不也一样吗 它们同样走你手机系统里的网络栈 你APP里加密得再好 底层路由被人指到别处去了 那你APP里的流量也得从人家的机器上路过 唯一能防住的 就是你应用层自己那个加密 所以我说 与其研究怎么防这个防那个 不如养成好习惯 别在公共网络上裸奔 别在来路不明的网页上输密码 这才是正经事 研究者还提到 这种攻击可能已经被发现并用于实战 这句话我一琢磨 更觉得没什么大惊小怪的 真正混黑产的人 谁他妈用这么绕的方案 直接一个钓鱼WiFi 搞个假的登录页面 等着你输密码 比你分析选项121省事多了 这种技术估计也就是在安全圈里转悠 吓唬吓唬圈内人 真正的坏蛋 早就在用更简单粗暴的办法了 文章最后说 对于所有其他操作系统 目前没有彻底的修复方法 我看到这句反而踏实了 这说明他们不是来卖解决方案的 纯粹是来报信的 报信嘛 难免喊大声点 不然没人当回事 但我这人就爱抬杠 你一喊大声 我就得琢磨琢磨 你这声儿是不是有点虚 就好比有人说 你家窗户玻璃能被人用石头砸碎 玻璃厂商赶紧出来说 这是重大安全漏洞 几乎所有玻璃都有问题 但你想想 玻璃它本来就防君子不防小人 真正要安全 你得上防盗网 不能怪玻璃不够硬 反正我看完就一个想法 别把希望全寄托在某个工具上 这个世界上没有万能的安全套 你把所有保护都系在一根绳上 那绳子一断你就完了 还不如多重准备 重要数据自己多留心 别啥都往网上放 真的 攻击者最想偷的 往往不是你那一堆开票记录 而是你银行卡里那点余额 你要是连陌生WiFi都不登网银 他就算把你流量全导走 他也拿你没办法 顶多看看你在追什么剧 那也无所谓 我追剧又不犯法 😂 最后一个槽点 他们给这个漏洞起名TunnelVision 听着跟赛博朋克大招一样 我一开始还以为是啥量子破解 看完才知道 就是改个路由表 这名字起得倒是挺唬人 建议下次再发现什么大新闻 先把前提条件加粗放大写在标题里 比如“同一网络下攻击者可通过恶意DHCP服务器劫持部分VPN流量” 这样虽然不抓眼球 但至少不会让我这种小白白激动一场 把公司VPN卸了又得挨IT骂
一个2002年的老洞,现在才被翻出来当新闻发。回头看看自己vpn上显示的小绿锁,是挺讽刺的。最安全的居然是啥防御都没做的安卓,这世界真他妈魔幻。合着我们这些年交的vpn钱,全是在给黑客当保护费呢。
卧槽,这漏洞听着玄乎,可普通人谁在乎啊?
用DHCP改路由表。VPN其实可以正确报告哪些连接经过VPN的,只不过没做这个功能而已。Clash虚拟网卡模式(虽然不算VPN)都能做到。
@无线技术
净TM扯淡,还DHCP改路由表?这名儿一看就是拿个破路由器说明书翻了两页就出来装大头蒜的。你懂个屁的VPN啊,我他妈用Clash用了五六年了,它那虚拟网卡是这么回事儿吗?你怕不是连TUN模式和系统代理的区别都没搞明白,就敢跑这儿来指点江山了。 我真服了,你张嘴就是“VPN其实能正确报告哪些连接经过”,这话说的跟放屁一样轻松。你让OpenVPN给你报一个试试?你让WireGuard给你报一个试试?那玩意儿底层就是tun设备,所有流量进去就是进去,出来就是出来,系统层面就只知道有这个网卡在跑,你告诉告诉我它怎么给你区分哪个连接走的隧道哪个连接走的直连?靠猜吗?靠做梦吗? 还非得捎带一句Clash,真是笑掉大牙了。Clash那套是用户态自己写的路由规则,把流量分门别类塞进不同出站,这叫应用层的事,跟DHCP有鸡毛关系?你改个DHCP下发个网关,那叫把全局默认路由改了,跟分流有个屁关系,你能做到让某几个IP走隧道某几个IP走直连吗?你就只会一刀切吧?连个policy routing都不会写,还跑这来科普上了。 再说你那个“没做这个功能而已”,我操,你说得可真轻巧啊。你知道做个连接级报告得动多少底层吗?得给每个socket打标记,得在netfilter那边挂钩子,还得自己维护一张连接状态表,然后还要考虑IPv4和IPv6的差异,要考虑UDP的假连接,要考虑TCP连接被RST之后怎么清理,这些你他妈想过吗?你怕是连什么叫连接跟踪都不知道吧,就在那儿“而已”上了。 我看你就是那种典型的上网搜了两篇博客就觉得啥都懂了的货色,文章标题看个大概就急着来评论区显摆。还扯什么DHCP,你知道DHCP是干啥的吗?那玩意儿分配IP地址和网关用的,跟VPN有个锤子关系。黑客要是靠改路由表就能监听所有VPN,那还要什么中间人攻击,还要什么证书劫持,全世界搞网络安全的都去吃屎算了。 真他妈受不了你们这帮半吊子,每一个都觉得自己比开发VPN的人还懂VPN,什么“其实可以做”、“只是没做”,你行你上啊?你去给OpenVPN提个PR去啊?人家Benedikt又是搞加密又是搞握手协议的,轮得到你在这儿指点说人家功能没做全?你连个VPN配置都得抄网上的吧?还Clash虚拟网卡,我呸。 最搞笑的是你说“不算VPN”,那你提它干什么?显摆你知道Clash有个TUN模式?知道个名词就出来秀,你懂那玩意儿性能开销多大吗?懂它跟系统防火墙怎么交互吗?懂它跟公司那个深信服VPN一起开会出什么幺蛾子吗?你全不懂,你就是个用过两天免费机场的菜鸡,跑这儿来装大尾巴狼来了。 以后少看点那种营销号写的破文章,多动手配几台机器再来吹牛逼。你连个basic的ip rule都不会写,就敢在这儿大放厥词说DHCP能监听VPN,我真是替你的智商感到捉急。就你这水平,也就在这儿骗骗那些跟你一样啥都不懂的小白了,真碰上个干过networking的,三句话就给你问露馅了。行了,别回了,我怕你搜半天百度也编不出个像样的反击。
传统vpn技术是二十年前的东西了吧?现在随便加个ssl或者换个加密协议,你只能窃取加密流量,有啥用?
搞没搞清楚VPN是干什么的,就虾传[捂脸]IPsec VPN还是SSL VPN?用户标识是什么?用没用证书?ACL策略怎么设的?固定IP还是动态IP?整个基于DHCP的路由攻击,你以为所谓的VPN就是用来翻墙下毛片公开VPN网络吧[捂脸],真正企业级用的VPN,配置好了固定IP,点对点密钥协商,和DHCP有毛关系,DHCP还能管到ACL配置啦,况且也不是只有虚拟网口一种形式。VPN要防不住中间人攻击,还能叫VPN?