恶意黑客发封电子邮件就能诱使你的Windows系统到远程服务器上验证身份——交出系统口令散列值。不信?试试就知道!
如果还没采用比大多数安全专家建议的长得多的口令,那你最好注意了:只需要一封电子邮件,嵌入里面的链接就可以促使你的系统向远程服务器发起身份验证,作为验证尝试的系统口令散列值就是远程服务器的囊中之物了。相信我,破解散列加密没那么难的。
计算机通过软件连接Web服务器时通常默认选择匿名方式。匿名连接失败1次或多次后,往往就切换成用当前活跃登录凭证来尝试连接。支持Windows集成验证的计算机可能会以用户的Windows身份验证凭证自动登录。用户根本察觉不到这一切。只有自动验证失败,用户才会看到弹出的手动登录框。
自动化集成Windows身份验证是很有必要的单点登录(SSO)功能,尤其是对本地资源和受信服务器而言。该功能可使用户在登录公司环境中不同服务器时省去重复的登录凭证提交操作。当前主流浏览器绝大多数都不同程度地支持这一功能。
1990年代末,恶意黑客滥用该功能捕获用户的Windows身份验证凭证。他们向用户发送电子邮件,诱使用户点击其中链接(或促使其电子邮件客户端秘密响应内嵌不可见单像素Web信标),然后用户的计算机就会悄悄连接上流氓服务器了。只要Windows集成身份验证功能开启(通常都开启的),用户的计算机便会向流氓远程Web服务器发送用户的企业登录凭证。
事实上,发送出去的是用户的局域网管理器(LM)或 Windows NT LM 网络身份验证挑战响应,从中可以计算出用户的LM或NT散列值。
微软后来禁用了用户用Windows身份验证凭证向局域网外服务器的默认发送,在 IE 4 或 IE 5 时启用了该新的默认发送功能。如今,你可以打开IE高级设置(互联网选项->高级->启用集成Windows身份验证),勾选或取消该功能。很多人都认为这样就阻止了上述攻击。
但事实往往打脸,如今仍有很多方法可以诱使Windows(及其他支持Windows集成身份验证的软件程序,比如谷歌Chrome)向远程服务器发送NTLM网络身份验证挑战。最起码,以 file:////<serverhostaddress>/<anyfilename> 的格式嵌入一条链接即可,例如:file:////contoso.com/index.html。
将上述例子中的 contoso.com 替换成有效远程服务器域名,浏览器就会尝试通过 TCP 445 端口上的NTLMv2连接(默认)向远程服务器发起SMB/NetBIOS验证。如果开启NetBIOS监听,该监听进程会以有效SMB/NetBIOS挑战响应NTLMv2连接,服务器便会获得客户端的NTLMv2挑战响应,进而从中计算出用户的NT散列值。剩下的就是破解该散列或者执行重放攻击的事儿了。
除非禁止 TCP 445 端口出站流量,否则无论IE中Windows集成身份验证设置是否勾选,结果都是一样的——用户NT散列值被获取。
只要点击内嵌的 file://// 链接,用户的NTLM响应挑战确实会被发送至远程服务器。这一攻击适用于:
远程攻击者将会获得你的主机名、域名和NTLMv2挑战响应,且大多数企业环境中都有效。这可真是个不幸的消息。
好消息是:补丁完整的系统上,仅仅打开电子邮件而不点击其中链接是不会受害的。曾经有补丁描述称,在微软 Office 365 中使用RTF电子邮件可以成功攻击,但该漏洞似乎已补上。这是件好事,毕竟没人想体验仅仅打开一封电子邮件就中招的经历。当然,我们都知道,诱使用户点击链接也不是多难。所以,切记:乱点邮件中的链接可能导致企业口令被盗。
网络安全分析师 Rob Tompkins 对很多软件进行了电邮链接盗口令的尝试。他发现,即便封锁了企业网络的 TCP 445 端口以阻止恶意SMB/NetBIOS出站连接,只要某移动设备没在本地防火墙中封禁该端口,当该设备离开企业网络,其NTLM挑战响应也会成功传输到远程服务器上。这是个很重要的发现,Rob还找了个AlienVault规则/特征码来识别此类攻击。
2017年11月,微软为 Windows 10 和 Windows Server 16 发布了相关补丁和注册表设置,要求用户启用Windows防火墙并定义能够使用 NTLM SSO 的网络。这些要求意味着大量企业无法应用该补丁。另外,坊间传闻,没精确定义允许网络的公司企业遭遇了服务宕机。所以,请小心谨慎地尝试应用该补丁。
有足够加密熵的强口令无论破解器有多强大都无法破解。强口令应成为对抗此类攻击的头号防御。另外,毫无疑问,封禁未授权出站身份验证端口也是必须要做的,比如用普通过滤方法封掉MB/NETBIOS,以及滤掉 file://// 记号。
想要测试自家公司及其软件是否免疫此类攻击?搭个由Linux服务器和Windows客户机组成的双机实验室,1个小时就能测出。
首先,下个基于Python的Responder程序。Responder是个超有用的工具,可以用来观察基于网络的口令散列盗窃。该工具具备自动“中毒”LLMNR(微软Windows本地名称解析协议)、NetBIOS和多播DNS(mDNS)的能力,可以当做流氓服务器使用(Web、NetBIOS、SQL、FTP和LDAP)。网上有很多视频教人如何使用Responder中毒和捕获NTLM挑战响应。
如果不想自己花时间设置Responder,可以下载个 Kali Linux,然后如下操作:
在Windows机器上:
想要破解散列值,回到Linux机器上:
用黑客工具验证各种漏洞还挺有意思。当然,最主要的是学到了点击电子邮件中的链接可能会惹出大麻烦,从而在现实生活中不再犯蠢。
微软2017年11月的补丁:
Responder地址: