欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

使用 PtH 攻击 NTLM 认证的 Web 应用

来源:本站整理 作者:佚名 时间:2018-07-30 TAG: 我要投稿

本文详细介绍了在Windows/Active Directory环境中使用PtH攻击NTLM认证的web应用的详细步骤。该技术细节来源于Alva ‘Skip’ Duckwall 和Chris Campbell在2012年blackhat中名为“Still Passing the Hash 15 Years Later…”的演讲主题。
 
简介
Windows Active Directory环境的主要优点是它使用Kerberos 或者 NTLM认证来实现企业级单点登录(SSO)。这些方法通常用于各种企业资源的访问控制,从文件共享到Web应用程序,例如SharePoint,OWA或用于特定业务的内部Web应用程序。在Web应用程序的方面,IWA(Integrated Windows Authentication)允许用户通过Kerberos 或者 NTLM认证对Web应用程序进行自动身份验证,比如用于Web应用程序的Windows SSO。众所周知,NTLM身份验证协议的设计可能存在PtH攻击,用户使用哈希密码而不需原始密码就能进行身份验证。自1997年开始,这种攻击的公共工具已经存在,当时Paul Ashton发布了一个改进的SMB客户端,该客户端使用LanMan哈希来访问网络共享。
 
背景
多年来,PtH针对Windows环境的攻击已经得到了充分的证明。下面是选取的一些有价值的参考文献:
1.     Microsoft的官方文档详细说明了在尝试NTLM身份验证之前,“客户端计算出一个哈希密码,丢弃掉实际密码”的过程。在Windows环境中可能更有助于理解NTLM身份验证为什么存在PtH攻击: https://docs.microsoft.com/en-us/windows/desktop/secauthn/microsoft-ntlm
2.     Hernan Ochoa’s的幻灯片讨论了PtH最初的工具包:https://www.coresecurity.com/system/files/publications/2016/05/Ochoa_2008-Pass-The-Hash.pdf 。文章讲述了一种从2000年开发的针对Windows机器的PtH攻击方法。
3.     所有关于PtH的文章中,最感兴趣的是pth-suite Linux工具(这工具最初的发布是为Backtrack Linux编写的。所有的工具在Kali Linux中都有了新的位置,有一个需注意的例外,对写这篇博客非常有用,后面会详细说明): https://passing-the-hash.blogspot.com/
4.     “Pass-the-Hash Is Dead: Long Live LocalAccountTokenFilterPolicy”讨论的是本地用户账户的PtH,以及自Windows Vista的对PtH增加的额外限制:https://www.harmj0y.net/blog/redteaming/pass-the-hash-is-dead-long-live-localaccounttokenfilterpolicy/
5.     使用Metasploit中的PsExec模块利用PtH: https://www.offensive-security.com/metasploit-unleashed/psexec-pass-hash/
6.     Mimikatz中PtH模块的GitHub文档:https://github.com/gentilkiwi/mimikatz/wiki/module-~-sekurlsa#pth
我一直对这种攻击技术感兴趣主要是因为可以使用PtH攻击NTLM认证的Web应用。由于Windows Active Directory环境无处不在,大量的企业内部Web应用都用此验证方案进行登陆,允许从公司工作站无缝SSO(Single Sign-On)到公司资源。因此,如果能够在Windows环境中对这些网站完成PtH攻击,就可以在后续对其进行更加深入有效的利用。当一个域名全部使用这种方案时,攻击的影响就非常明显了,比如一个给定域名在完整域名hashdump之后,会包含所有员工用户账户相关的NT哈希。在这种情况下,PtH不需要破解任何哈希密码就可以模拟任意公司员工登陆。这意味着即使对于那些具有安全意识的用户,他们可能使用了20多个字符长度的密码,也无法避免攻击者在企业的Web应用程序上模拟登陆。
 
使用PtH攻击NTLM认证的Web应用
那么实际中如何对NTLM认证的网站进行攻击?很长一段时间以来,我用谷歌搜索这个主题的结果,并没有找到对这种攻击方法详细的介绍(大约在2015-2018年)。在研究Kali Linux的PtH工具集(pth-suite)时,有个很奇怪的问题。大部分原来的pth-suite工具在2015年整合到了Kali Linux中,我之前提到的有一个不同,就是pth-firefox,顾名思义就是用于修改Firefox中NTLM认证代码以便能够允许Pth的工具。由于这些Linux工具对我没什么用,我就把注意力转移到了研究在Windows主机上使用Mimikatz进行同样的攻击的技术上。
在我自己发现一个可用的技术之后,我最近又偶然发现了由Alva ‘Skip’ Duckwall 和Chris Campbell在Blackhat 2012发表的“Still Passing the Hash 15 Years Later…”幻灯片的第30页。它详细介绍了一种方法,在使用Hernan Ochoa的Windows凭据编辑器(WCE)直接注入详细NT哈希到内存后,使IE(或者其他使用Windows内置“Internet Options”的浏览器)能够通过IWA进行认证。他们在演讲中的第18分29秒给出了这种技术的演示。我花了很多时间才找到这些信息,并为实际利用的相关步骤写了文档,这篇博客的后续内容将介绍在Windows10主机中如何使用Mimikatz进行攻击。
 
攻击
配置环境
为了演示使用NTLM身份验证的Web应用程序,我是用了Exchange 2013服务器,配置为专门使用IWA进行OWA。在Exchange服务器上运行PowerShell配置命令如下:
Set-OwaVirtualDirectory -Identity “owa (Default Web Site)” -FormsAuthentication $false -WindowsAuthentication $true
Set-EcpVirtualDirectory -Identity “ecp (Default Web Site)” -FormsAuthentication $false -WindowsAuthentication $true
其它预先准备的条件:
l  Exchange服务器已加入test.com域。在此域上,使用复杂的密码和相应的邮箱创建名为TESTpath的用户。计算此用户密码的NT哈希值,以便稍后攻击使用。NT哈希生成如下:
python -c 'import hashlib,binascii; print binascii.hexlify(hashlib.new("md4", "Strong,hardtocrackpassword1".encode("utf-16le")).digest())'
57f5f9f45e6783753407ae3a8b13b032
l  在此之后,在未入域的Windows 10主机上下载最新版本的Mimikatz,该主机与Exchange服务器连接的网络相同。我们为了能够使用Exchange服务器的域名而不是IP地址,将此独立计算机上的DNS服务器设置为test.com的域名控制器。

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载