2019年4月,永恒微软发布了一个针对SMBv3协议的漏洞安全补丁,编号CVE-2020-0796。永恒这个漏洞后来被安全圈称为“永恒之黑”——一个和五年前的漏洞“永恒之蓝”同样致命的名字。但有意思的永恒是,它被发现时,漏洞距离补丁发布已经过去了整整一年。永恒
SMBv3.1.1是漏洞Windows 10和Server 2016以上版本默认启用的文件共享协议。漏洞出在它处理压缩数据包时的永恒一个整数溢出。攻击者只需要向目标主机的漏洞445端口发送一个特制数据包,就能在系统内核中执行任意代码。永恒不需要用户交互,漏洞不需要任何凭证,永恒甚至不需要知道目标系统的漏洞账号密码。换句话说,永恒只要你的Windows系统暴露在公网上,开着默认的文件共享端口,你就是一块待宰的肉。
我拿到POC(概念验证代码)时,第一反应是——这玩意儿写得太优雅了。它不像那些需要堆叠大量ROP链的漏洞利用,整个攻击过程干净利落。发送一个畸形数据包,系统蓝屏,然后在蓝屏前的那一刻,代码已经在内核态执行了。那种感觉就像看一场精心编排的魔术,你明知道有机关,但就是看不出破绽。
更让人后背发凉的是,这个漏洞的触发条件极其简单。你不需要像利用其他漏洞那样去猜内存地址、绕过ASLR(地址空间布局随机化)、构造堆喷。因为漏洞本身就在内核的压缩引擎里,攻击者可以直接利用Windows内置的SMB压缩功能,把恶意代码“压缩”进一个看似正常的数据包中。目标系统解压时,漏洞就触发了。
微软在3月发布紧急补丁时,连常规的月度更新周期都没等。但真正的危险在于,补丁发布前的那一年里,这个漏洞一直存在于所有Windows 10用户的系统中。谁也不知道有没有人已经悄悄利用了它。后来360和奇安信都发布了技术分析,指出这个漏洞的实际利用难度比“永恒之蓝”还低——永恒之蓝还需要利用MS17-010的多个漏洞链组合,而永恒之黑是单点突破。
我自己在测试环境里复现过这个漏洞,用的是Windows 10 1903版本。从发送数据包到拿到SYSTEM权限的shell,整个过程不超过两秒。那种感觉挺奇妙的——你对着一个黑漆漆的命令行窗口,知道自己刚刚击穿了一台机器的整个安全防线,而它甚至不知道发生了什么。
这个漏洞至今没有出现在任何勒索软件的广泛传播中,算是不幸中的万幸。但它提醒了我们一件事:那些默认开启的服务,那些你根本不会去注意的底层协议,可能才是系统最脆弱的环节。你装了再好的杀毒软件,开了再严格的防火墙,只要445端口开着,只要SMB还在默默运行,一切防御都可能形同虚设。
现在回头看,微软在2019年3月修复这个漏洞时,可能根本没想到它会如此致命。安全圈后来复盘时发现,这个漏洞和“永恒之蓝”有一个惊人的相似点——都是微软自己引入的“新功能”惹的祸。SMB3.0的压缩特性是2018年才加入的,原本是为了提升传输效率,结果成了攻击者最顺手的武器。
所以别迷信新版本。有时候,最新的功能,恰恰是最深的坑。
顶: 2591踩: 2






评论专区