前言
这篇文章是我们“攻击与防御的双刃剑”系列文章的第三篇,我们将重点说明恶意行为者用于实现其网络活动的不同策略和技术,以及组织应该如何对这些恶意行为进行检测并最终阻止它们。如果大家感兴趣,可以首先阅读《攻击与防御的双刃剑:深入分析PowerShell的两面性》、《攻击与防御的双刃剑:对Windows UAC Bypass的研究》这两篇前序文章。
简介
在这篇文章中,我们将介绍Windows凭据的巧妙用处。具体而言,我们将重点介绍一种名为“操作系统凭据转储”的技术。本质上,如果威胁已经在我们的环境中实现了横向移动,那么其背后的威胁执行者很有可能已经执行了某种类型的凭据转储,以允许它们在系统之间跳转。因此,掌握如何检测并防范这类技术就显得至关重要。
如果大家熟悉MITRE ATT&CK框架,可能会产生疑问:“这类攻击技术的名称实际上应该叫做凭据转储?”确实是这样的,但由于该类别中记录的技术数量仍然在不断增加,MITRE决定将所有知识库都分解为子技术。现在,我们仍然可以在“凭据访问”的页面中找到该特定技术,但是目前已经更新了其包含的八项子技术。我们并不会在这篇文章中涉及到所有这些内容,而是将重点关注与Windows相关的三个技术。
关于Windows凭据
Windows操作系统会在许多不同的位置上存储或缓存其凭据。下面是其存储的某些Windows凭据类型,以及可以找到这些凭据的位置:
1、安全帐户管理器(SAM)数据库
SAM数据库是所有Windows系统上都存在的文件。该文件包含所有创建的帐户,以及在Windows操作系统(XP、Vista、Win7、Win8.1、Win10)上存在的所有内置帐户。在这里,密码是以哈希值(NT密码哈希)形式存储的。
2、其他文件
我们也可以在各种文件中找到密码,其中包括配置文件和用户创建的文件(通常为纯文本)。某些日志文件可能包含凭据信息,例如安装程序日志,有时还可以在崩溃报告中找到它们。
3、缓存的凭据
域凭据被存储在注册表中,以允许用户在未连接到域时能够登录其系统。Windows系统会缓存最后10个登录哈希,默认情况下一些位置最多可以存储25个。这个数字可以在注册表中配置。
4、本地安全授权机构(LSA)
LSA Secrets存储在注册表中,并允许服务以用户权限运行。这些服务包括VPN、计划任务、自动登录、备份服务器帐户、IIS网站等。它们以加密的形式保存在“Security/Policy/Secrets”注册表中。
5、本地安全机构子系统服务进程(LSASS)
在本地或域中登录Windows计算机时,凭据将会存储在LSASS进程的内存中。这主要是用于允许用户访问其有权访问的网络上的其他资源,而不必再重新进行身份验证。存储的格式可以是纯文本、NT和LM哈希以及Kerberos Ticket。
6、凭据存储管理器
该管理器适用于Windows 7和更高版本。它基本上是一个数字保险库,让用户可以“安全地”存储用户凭据。所有凭据都存储在Windows系统的特定文件夹中。Windows和Web凭据都可以存储在这里。
7、活动目录域数据库(NTDS.DIT)
该数据库存储位于活动目录域环境中的每个活动目录域控制器服务器上的用户和计算机的所有凭据,即%SystemRoot%\NTDS文件夹。
操作系统凭据转储的攻击技术
如我们所见,Windows操作系统会将凭据存储在各种位置,并且以各种格式进行存储,这就导致攻击者在入侵凭据时可以选择多种方式。
正如我们之前所提到的,凭据转储攻击通常是攻击者所使用一系列技术中的第一种技术,目的是让威胁行为者能够在环境中横向移动。一旦获得了正确的访问权限,攻击者就可以找到如何将恶意Payload复制到系统的方式,并找到远程执行该Payload的方法。随后,攻击者将致力于重复相同的步骤,以感染更多的主机。这可能会是一个人工的过程,但大多数情况下攻击者都会选择自动化的实现方式。
之所以要特别提及这一点,是因为如果我们在实际应急过程中发现了本文讨论的任何凭据转储技术,那么就非常有必要在接下来的两个横向移动步骤中寻找其他证据。
其中的一种方式是查看日志,查看是否有Psexec.exe和Psexesvc.exe被用于远程复制和执行恶意软件的迹象。Psexec时Microsoft Sysinternals工具,用于在其他系统上复制和执行进程或文件,这个工具对于远程管理来说非常有用。威胁参与者还会利用该工具,通过SMB恶意软件将其复制到远程系统功能并执行。我之所以重点强调psexecsvc.exe文件的原因在于,当psexec.exe运行时,它会将psexecsvc.exe文件复制到远程系统,然后将其作为服务启动。需要注意的是,当我们在寻找该活动时,可以重点关注发送恶意文件的主机使用psexec.exe且接收并执行恶意文件的主机使用psexecsvc.exe的情况,这是一个比较典型的特征。
如果大家想要了解有关横向移动三个步骤的更多信息,请阅读2018年的《Thrip ATP攻击更新》文章。现在,我们将目光重新聚焦到凭据转储技术上来。
使用PsExec命令复制和执行文件:
根据MITRE ATT&CK知识库,存在8种不同的操作系统凭据转储技术。但是,由于本文的篇幅所限,我们将仅讨论与Windows相关的三种技术。
攻击技术1:缓存域凭据
正如前面所提到过的,Windows操作系统在配置为登录到活动目录(AD)域时,系统会最多可以存储最后25个登录凭据(取决于操作系统版本,默认配置可以进行调整),因此在无法连接到AD域时,我们仍然可以登录。值得关注的是,这些缓存的凭据在重启之后不会消失。这些凭据是持久性的,它们以Mscach2格式存储在注册表(HKLM\Security hive)中。
我们可以使用多种工具从注册表中提取缓存的凭据,例如cachedump、Metasploit、PWDumpx和creddump。如果攻击者成功转储了缓存的凭据,接下来他们需要使用密码破解工具(例如预先计算的彩虹表,或者John Ripper)对哈希值进行暴力破解,以获取到真实密码,这也是登录到另一个系统所必须的。最后,如果要提取缓存的域凭据,攻击者还需要具有SYSTEM权限。
攻击技术2:LSASS内存
由于例如NT/LM和Kerberos Tickets之类的哈希凭据都存储在内存中,也就是LSASS进程中,因此具有相应级别访问权限(Administrative)的威胁行为者可以使用各类免费提供的工具来转储哈希值,这些工具包括Mimikatz和Windows凭据编辑器。
在内存中,也有可能很容易地找到TsPkg、WDigest和LiveSSP。这些可以很容易地进行解密,从而得到纯文本密码。我们可以在这里找到更多信息。
与缓存的域凭据不同,一旦用户注销登录后,内存中的哈希值将不再存在。在某些情况下,由于应用程序或进程仍然在使用哈希值,因此用户注销登录后哈希值可能会仍然可用。但是,在大多数情况下,攻击者必须在用户已经登录的情况下才能窃取其凭据。因此,这提醒我们在日常使用计算机时不应该以管理员(特别是域管理员)身份登录。如果在域管理员登录期间攻击者成功实现了攻击,那么攻击者将能够获得指向整个域的密钥。
此外,这些转储的哈希可以用于在无需暴力破解的情况下验证另一个系统的纯文本密码,这种技术被称为“哈希传递”。这种类型的攻击仅适用于NTLM身份验证,但是目前的很多现代系统中都有可用的NTLM身份验证方式。我们将在后文的视频中,演示如何复现“哈希传递”技术。
攻击技术3:NTDS
当攻击者在环境中建立初始立足点时,他们通常会寻找具有域控制器(DC)角色的服务器。这是因为,每个DC上存在NTDS.DIT文件包含所有用户和计算机帐户的哈希值。如果攻击者掌握了这些信息,他们将可以自由控制AD域之中的所有资源。
数据库中包含的哈希值为NT格式,但也可能是LM格式的哈希值,具体取决于所使用系统的版本。此外,NTDS.DIT文件中还提供了密码历史记录。
要进行访问,攻击者需要域访问权限。这也意味着,如果攻击者成功获取了这一权限,我们就暴露在了较大的风险之中。由于文件正在使用中,因此提取凭据的过程比较困难,该文件会被锁定。随后,攻击者需要对磁盘本身的原始访问权限,这可以通过驱动程序来完成。另外,一些攻击者可以通过卷影副本来获取这一文件。
近期,勒索软件日益流行,我们可能已经接触过很多攻击者删除卷影副本的案例。FortiGuard Labs曾发表过一篇非常不错的文章,名为《Stomping Shadow Copies》,其中讨论了用于实现此目标的不同方法。但是,在我们的攻击场景中,攻击者将要提取卷影副本,或者如果发现其不存在将会创建一个卷影副本。对攻击者而言的另一个障碍是,他们还需要收集SAM和SYSTEM注册表信息,以解密NTDS数据库中的内容。
我们在这里仅仅讨论了其中的三种技术策略,但大家可以想象,基于Windows中存储凭据位置的不同,攻击者还可能会有更多用于窃取凭据的方法。
操作系统凭据转储的防御技术
除了选择一些可靠厂商的工具,我们还可以通过进行一些配置来实现上述攻击的防御。
1、限制管理员访问权限
攻击者所使用的许多技术都需要管理员或者域管理员特权才能执行。因此,我们需要确保每个用户都以普通用户的身份登录,这将有助于防御这些攻击。
2、使用唯一的本地管理员帐户密码
如果我们在所有工作站上使用相同的本地管理员帐户密码,那么攻击者只需要攻破其中一个帐户,就可以获得其他帐户的管理员访问权限。要防范这一点,可以使用唯一的本地管理员密码来进行限制,从而使攻击者难以实现横向移动。为此,可以尝试使用Microsoft的本地管理员密码解决方案(LAPS)。这是一个密码管理器,利用活动目录来管理和轮换工作站上本地管理员帐户的密码。
3、避免将高特权帐户用于远程交互式会话
当我们以交互方式登录Windows设备(控制台登录、RDP或runas)时,哈希值将会出现在内存中,特别是在服务器上。因此,需要在这一方面尽可能的加以限制。
4、使用Credential Guard
这是Windows 10中引入的一项新功能,可以通过虚拟化隔离LSASS进程。从原理上说,它是在一个虚拟容器中运行,该容器创建名为LSAIso的代理,以允许与隔离的LSASS进程进行通信。值得注意的是,即使具有管理员权限,我们也无法利用这个保护来转储凭据。这可能是针对操作系统凭据转储的最有效防御方式之一。
5、限制缓存登录帐户的数量
对于缓存的帐户,可以对存储在注册表中的登录数量进行限制。这并不是一个完美的解决方案,但确实有帮助。
6、实施严格的密码策略(长度和复杂性)
如果凭据被盗,并且需要离线解密,则密码越长越复杂,成功破解它们所花费的时间就越长。
需要注意的是,上述的所有防御措施都可以被绕过,包括Credential Guard,但在我们应用上述缓解措施之后,会使攻击者的攻击过程更加困难。
文章来源: 赛虎学院整理于海外媒体
- 还没有人评论,欢迎说说您的想法!