当你正用浏览器访问网站时,Windows的一个古老漏洞就可能泄露了你电脑的用户名密码、微软登录信息,甚至还有你VPN的账号密码。
多年以前当Windows还在使用单核处理器和256M的RAM的时候,微软的员工想出了单点登录,也就是说你只需要登录一次,就能够访问所有的内部资源,无需再次访问。
当用户使用NTLM验证方式时,操作系统会发送域名、用户名和密码哈希值给对方主机。只有验证不成功时才会出现登录框。但是现在看来,这样的机制是不安全的。因此,微软修复了一些问题,有些修复了一般,还有一些根本没有修复,以至直到今天还能被利用。
这些没有修复的漏洞中其中一个就是系统会把账号登录信息传输给SMB服务器。SMB是一个使用非常广泛的协议,它能够访问网络共享的文件、文件夹、打印机等。SMB的这个漏洞几乎每年都会提一次,去年的 Blackhat US 2015 也提过,但好像微软根本不打算修复的样子,安上最新更新的Windows 10仍然存在这个漏洞。
当你用标准浏览器(IE或Edge)访问带有SMB资源的链接或者使用含有标准Windows API或者使用IE做HTML渲染的程序(如Outlook),SMB服务器会在你看到登录提示框之前就获取到你的账号密码。攻击者只需网页或者邮件中添加一个指向SMB资源的链接或者隐藏的图片,你的账号信息就被窃取了。不过有的时候危害也没这么大,因为黑客可能只能获取到你的用户名,用户名还有可能是某个默认的用户名,至于密码很多人可能还没设定。要想通过那些信息进行进一步的攻击难度很大。
不过如果涉及到企业的域帐号,危害就不同了。首先,从域的名字很容易判断电脑属于哪个公司,然后攻击者可以从hash爆破出密码,之后就可以尝试访问公司内部资源了。
有时候也不一定要爆破密码,如果你事先知道哪个host有NTLM验证的话,只要客户端连接上了你的SMB服务器的话,就可以对认证进行实时的代理。
新的Windows版本都和互联网紧密结合,基本上不让你创建本地账号,而是要你创建一个微软账号。没有用微软账号就无法使用OneDrive和Cortana。
基本上这方面的研究都是在Windows 8之前做的,在Blackhat的ppt里面也没怎么提到微软账户。但其实,当使用Windows 8, 8.1和10系统时,传输的不是你本地账号的数据,而是微软账号的登录信息!
原本这个漏洞只能对企业用户产生大的危害,现在还可以用来针对家庭用户了。
当笔者在测试问题的时候,我发现3个旧的Windows 10与简化的SMB服务器工作正常( Responder , Impacket ),但新安装的Windows不行。几天后我发现,NetBIOS和工作站名称得要相同才行。但如果你连接了系统自带的,有MSCHAPv2认证的VPN连接协议(IPsec, PPTP, L2TP),Windows就不会传输你的账号密码了,而是传输VPN用户名密码hash!!我认为原因可能出在MSCHAPv2上,不过Wi-Fi WPA-Enterprise (PEAP/MSCHAPv2)协议下不行。
现在我们知道只要我们试图打开远程SMB服务器上的任何文件或者目录,系统都会自动把账号密码或者VPN的账号密码传输过去。那我们应该如何利用呢?
大部分邮箱的web界面都会过滤file://,但是Yandex邮箱却没有过滤。Yandex是俄罗斯最大的邮箱提供商。这种攻击危害更大,因为它不仅能够把用户名和IP关联起来,还会把邮件也关联起来。
Chrome也支持file://,但是只会在复制粘贴或者直接在地址栏输入时才会生效。Chrome比IE流行很多,因此我们有必要做一些社会工程学来诱骗用户复制粘贴或者手动输入。
我们窃取到的信息可以用作很多用途。很多VPN服务商的管理账号和VPN连接本身的用户名密码是一样的,从IP地址我们在可以判断VPN是哪家供应商的,足够幸运的话我们就可以把别人的VPN拿来用了。而拿到了微软账号,我们可以爆破hash,然后就可以访问它的OneDrive文件、Outlook邮件、Skype账号了。
别以为你不用IE不打开file://就安全了。你还是有可能会不小心运行某个不安全的程序。程序可能没有权限直接获取你的密码,但是它可以用标准函数如URLDownloadToFile()发送请求到远程服务器,你的账号可能就这样被盗了。
要想修复问题,我们可以新建一个reg文件,内容如下:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa/MSV1_0] "RestrictReceivingNTLMTraffic"=dword:00000002 "RestrictSendingNTLMTraffic"=dword:00000002
另一种方法是用防火墙把所有的SMB流量都禁掉。只需要把所有445 TCP端口的流量都禁掉,除了一下这些目标IP段:
192.168.0.0/16
169.254.0.0/16
172.16.0.0/12
10.0.0.0/8
fd00::/8
fe80::/10
有些ISP已经帮你把他们屏蔽掉了。
作者已经把NTLM hash泄露检测加入到了 WITCH? 网站里了。小编使用IE浏览器确实发现了我的用户名:
大家也可以用IE或者Edge打开,看看你的账号密码有没有泄露?网站会尝试抓取你的密码并用一个小字典尝试爆破。连个VPN再访问成功几率更高哦
有些VPN服务商已经知道了这个问题,他们通过屏蔽445端口,或者在客户端软件屏蔽解决了这一问题。
很遗憾,大部分流行的爆破软件都不能破解NTLMv2哈希。Hashcat会跳过一些,John The Ripper with OpenCL也是,哪怕把密码都放在字典里了还是无法破解。oclHashCat, Hashcat 3.0和John The Ripper的non-OpenCL版本可以破解。
*参考来源: Medium ,FB小编Sphinx编译,转载请注明来自Freebuf黑客与极客(FreeBuf.COM)