NTLM中继攻击技术浅析
2019-12-07兰沂梅
◆吴 红 兰沂梅 罗 晨
NTLM中继攻击技术浅析
◆吴 红 兰沂梅 罗 晨
(国网四川省电力公司眉山供电公司 四川 620010)
本文对NTLM认证协议的认证过程进行了研究,介绍了在不安全的网络环境中利用NTLM中继攻击获取服务器权限的可能方式,并通过搭建环境模拟实现了利用NTLM中继攻击得到服务器最高权限的过程。最后,本文总结了针对于此类攻击的防御办法。
网络安全;NTLM协议;中间人攻击;NTLM中继攻击;远程代码执行
Windows质询/响应(NTLM)是在包含运行Windows操作系统的系统和独立系统的网络上使用的身份验证协议。NTLM认证协议作为一种历史遗留协议,被广泛用于Windows操作系统各内部组件及服务,是作为身份验证的基础架构[1]。其认证过程简单,必需的通信流量较小,在对通信安全性要求较低,性能要求较高的网络环境中很适合。NTLM认证本身隐含着一种极为危险的攻击面,即中间人攻击。当用户与服务器通信时,若信道本身遭到攻击者破坏与窃听,则攻击者可能充当“中间人”的角色,假冒用户的身份与服务器通信,从而危及服务器的安全,该攻击方式被称为“NTLM中继攻击”[2]。NTLM中继操作较为简单,并能造成极大的危害,例如远程代码执行,敏感信息读取等。
NTLM中继攻击自出现起至今已存在十余年。2008年MS08-068漏洞影响范围巨大,危害可观,它利用NTLM中继将用户的凭据反射到受害者计算机上,从而导致远程代码执行[3]。自那以后,微软阻止了在SMB协议,即Windows文件共享服务所使用协议中的NTLM反射攻击,这是一种NTLM中继攻击的变种。2016年,安全研究员发现NTLM反射攻击仍能在HTTP协议到SMB及DCE/RPC协议到SMB中工作;2019年,又有研究员发现绕过SMB到LDAP协议(在微软活动目录数据库中使用)限制的方式,这使得NTLM中继攻击的威力更上一层楼,这个漏洞的出现让NTLM中继攻击在2019年再次热门了起来。
1 NTLM认证与中继攻击
这里从三个方面对NTLM中继攻击进行研究:
1.1 NTLM认证
NTLM是一种质询/响应认证方案,其认证过程分为三步:
(1)协商(Type1消息)
客户端向服务器发送Type 1消息。这主要包含客户端支持和服务器请求的功能列表。
(2)质询(Type2消息)
服务器响应Type 2消息。其中包含服务器支持和同意的功能列表。但最重要的是,它包含服务器生成的挑战数(Challenge)。
(3)响应(Type3消息)
客户端使用Type 3消息回复挑战数。其中包含有关客户端的若干信息,包括客户端用户的域和用户名。它还包含对Type 2挑战的一个或多个响应。
NTLM认证大体过程如图1所示:
NTLM认证中,挑战(Challenge)是服务器生成的一个8字节的随机数,而响应则包含客户端使用用户的密码hash与该挑战经过单向函数计算后得出的一组数据[4]。由于服务端也持有用户的密码hash,则它能通过相同的计算来比较响应是否正确,从而确定用户是否认证成功。
1.2 NTLM中继攻击
NTLM中继攻击属于一种中间人攻击。在NTLM认证中,攻击者若处于客户端和服务端信道之间,则他能转发并修改往来的任何消息,如图2所示:
图2 NTLM中继攻击流程
在图2中,对于客户端,攻击者扮演服务器的角色;对服务端,他扮演客户端的角色。攻击者首先转发客户端所发送的Type1消息到服务端,并获取服务端的响应。由于服务端并不知道客户端的真实身份,它会发送挑战。当攻击者收到该挑战后,将挑战发回客户端。客户端计算出响应,将响应发送给攻击者,攻击者再次发送到服务端。这样,在服务端看来,攻击者已经是经过验证的合法客户端,因此攻击者能假冒真正的客户端做任何他有权限做的操作。
1.3 NTLM中继在SMB协议中的使用状况
由于NTLM认证仅是诸多认证协议中的一种,在真实世界中,它必须与其他协议相配合使用[5]。SMB协议是Windows文件共享服务所使用的协议。Windows文件共享服务默认开启并绑定445端口,高权限用户能使用该服务执行命令。SMB协议可以使用NTLM认证作为其认证协议,因此,使用NTLM中继攻击能使攻击者获取到访问SMB服务的权限,进而执行命令,危及服务器安全。
互联网上有很多开源的工具能使攻击者实施此类攻击,其中最著名也是最成熟的工具是Impacket工具包中的ntlmrelayx。Impacket是Python的网络协议库,其中实现了smb、ldap、kerberos等多种协议,并有大量使用该库的工具。在实验环境如下:
攻击者IP:172.17.129.177;客户端IP:172.17.8.4;
服务端IP:172.17.129.163。
“操作员是服务端”缺点如下:
攻击者启动smbrelay,命令为:smbrelayx.py -h 172.17.129.163 -c whoami。
该工具监听445端口,并转发NTLM认证至-h指定的服务器。在客户端上,执行:dir \172.17.129.177”命令模拟访问smbrelay所启动的smb服务器。
Dir命令后接UNC路径,即以\开头的URL,Windows将以SMB协议访问该地址。
Smbrelay接收到访问请求后,将启动NTLM中继过程。从攻击者到服务器的三次认证捕获流量如图3所示:
图3 攻击者到服务器之间的NTLM流量
从客户端到攻击者的三次认证捕获流量如图4所示:
图4 客户端到攻击者之间的NTLM流量
比较上面两张图可以看出,三次认证的流量几乎是一模一样的,这也说明攻击者在认证中扮演着中间人的角色,负责转发双方的流量。当攻击者假冒客户端认证成功后,他便能通过若干DCE/RPC调用在服务器上写入木马并启动。
最终smbrelay将能执行任意代码,如图5所示,攻击者执行whoami命令,查看服务器上用户:
图5 攻击者得到恶意命令执行的结果
2 NTLM中继攻击防范
NTLM中继攻击虽然危害巨大,但微软早已准备大量应对方案。NTLM认证协议属于历史遗留协议,其本身并不安全,必要时也可放弃使用,转而使用更安全的Kerberos协议[6]。管理员可在本地安全策略中限制传入与传出的NTLM流量。
同时在SMB服务器上启用SMB签名。SMB签名可对SMB协议中的数据包进行数字签名,以防止中间人攻击,这是一种非常有效的方式。
图6 启用SMB数字签名
3 结束语
本文对NTLM协议的通信机制做了简单介绍,举例实现了对在SMB服务中扮演认证角色的NTLM协议的中继攻击,并对防范此种NTLM协议中继攻击做了介绍。NTLM技术的应用十分广泛,针对NTLM协议的攻击方式也多种多样,如何能彻底解决NTLM技术在应用中的安全问题,仍需要进一步的研究。
[1]潘志刚.从Windows2003服务器远程登录失败以识NTLM协议[J]. 电大理工大学学报,2013(2):39-41.
[2]邱奇志. 剖析Windows的用户验证机制[J].现代计算机(专业版),2005(02):61-64+78.
[3]肖道举,郭杰,陈晓苏.一种对中间人攻击的防范策略的研究[J].计算机工程与科学,2004(09):9-10+17.
[4]黎松,段海新,李星.域间路由中间人攻击的实时检测系统[J].清华大学学报(自然科学版),2015(11):1229-1234.
[5]汪定,马春光,翁臣,等.强健安全网络中的中间人攻击研究[J].计算机应用,2012(01):48-50+71.
[6]徐恒,陈恭亮,杨福祥. 密钥交换中中间人攻击的防范[J].信息安全与通信保密,2009(02):96-98.