双因素认证如何有效防御哈希传递攻击

本文详细介绍了如何使用双因素认证技术防御哈希传递攻击,包括攻击原理、实验环境搭建、Mimikatz工具使用、WiKID双因素认证协议实现机制以及安全配置建议。

使用双因素认证防御哈希传递攻击

实施远程访问的双因素认证是防止攻击者入侵网络的有效方法。用户的凭证在互联网上随处可见,但攻击者仍可通过恶意软件和其他工具进入您的网络。过去我们曾描述过如何在攻击的每个阶段使用双因素认证,以便更容易检测并大幅增加攻击执行难度:

  • 实施远程访问的双因素认证将使入侵更加困难
  • 实施特权账户的双因素认证将使权限提升更加困难
  • 在出站代理实施双因素认证将使数据外泄更加困难

PCI委员会现在要求对非控制台管理访问实施双因素认证。为了展示哈希传递攻击的简易性以及WiKID如何缓解这种攻击,我们讲述两个域管理员的故事:一个使用静态密码,另一个使用WiKID原生Active Directory双因素认证协议。

实验环境设置

在我们的实验室中,我们设置了两台机器:一台使用Server 2012的Windows域服务器和一台运行Windows 10的PC。在Win 10机器上下载两个工具:Mimikatz和PStools。我们将使用mimikatz获取哈希值,使用psexec将其传递给AD服务器以获取控制台。

注意:您需要关闭Windows Defender,因为它会删除并隔离Mimikatz。右键单击相应的mimikatz.exe并选择"以管理员身份运行"。您需要是本地管理员才能使该工具正常工作。

接下来,通过运行以下命令检查您是否具有适当的权限:

1
privilege::debug

管理员登录场景

让我们的两个域管理员登录到机器上进行一些工作。第一个域管理员使用其静态AD密码登录,因为网络规模小且用户相当聪明。然后,我们更复杂的域管理员使用来自其WiKID服务器的一次性密码登录,该服务器已设置为AD登录提供双因素认证,因为他真的很喜欢晚上睡个好觉,并且知道攻击者有很多动机且很聪明。这两个管理员以非常不同的方式在同一台计算机和网络上工作只是糟糕脚本开发的示例。

注意几点:

  • AD协议支持满足AD复杂性要求的复杂一次性密码
  • 密码生命周期也可以在域设置中配置。此设置很关键,因为它是一个攻击窗口
  • 这是PC客户端图片,在现实生活中您可能会使用智能手机软件令牌

获取哈希值

接下来,我们使用此mimikatz命令获取这两个管理员的哈希值:

1
sekurlsa::logonpasswords

注意NTLM哈希 - 这就是我们将要使用的。

哈希传递攻击

现在,我们将使用Mimikatz的哈希传递命令将我们的权限提升为域管理员。首先,我们尝试使用静态密码的管理员:

1
sekurlsa::pth /user:sysadmin /domain:wikidsystems.com /ntlm:0a53c1165654e555ed5992963d097495

此命令给我们一个显示用户未更改的DOS提示符:

但实际上,用户拥有管理员票证。我们可以使用psexec来证明这一点:

1
psexec.exe \\192.168.56.129 cmd.exe

您可以看到我们现在是域服务器上的sysadmin。攻击成功了!

双因素认证防御

现在,让我们对使用WiKID密码登录的域管理员尝试相同的操作:

1
sekurlsa::pth /user:nowen_admin /domain:wikidsystems.com ntlm:f2ef29069c481dfaec8ce0590b4fa46d

我们再次获得带有用户名的DOS提示符:

现在,让我们看看哈希是否有效。我们运行相同的命令:

1
psexec.exe \\192.168.56.129 cmd.exe

它失败了!当然会失败。密码在"一次性密码"过期后已更改,哈希不再有效。请注意,这并不真正是一次性密码。WiKID服务器将一个随机密码写入AD,并将其发送到令牌。一旦密码过期,WiKID服务器会用另一个无人知道的随机复杂字符串覆盖AD中的密码。因此,攻击者仍然可以使用哈希的窗口期 - 密码的生命周期,可以在WiKID域中配置为您想要的任何值。这也意味着您可以在SIEM中设置警报,用于检测不成功的哈希传递攻击(类似于"蜜罐令牌")和密码过期前的多次成功登录。

WiKID服务器最多可供5个用户免费使用。因此,即使您不为远程访问使用双因素认证,拥有5个或更少域管理员的公司也可以免费使用此功能。这适用于很多公司。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计