利用蓝队工具绕过EDR对NTDS.dit的保护机制

3 阅读3分钟

在一次内部渗透测试中,目标域控制器上安装了Cortex EDR。在获得域管理员权限后,EDR拦截了所有已知的NTDS哈希提取尝试。因此,我需要考虑替代方法来获取哈希值。

TL;DR : 要提取哈希值,我们需要:

  • SYSTEM hive:我使用Magnet DumpIt转储了整个服务器内存,然后用Volatility提取了配置单元。
  • NTDS.dit:该文件受操作系统保护并被EDR监控,我使用FTK Imager以原始状态读取C:\驱动器,从而触发了正常系统调用。
  • 然后在本地使用impacket-secretdump解密文件。

详细过程: 之前我写过一篇关于类似方法转储Lsass的文章 medium.com/@0xcc00/byp…,本文在初始步骤上使用了相同技术并进行了扩展。

所使用的所有工具均已签名,且蓝队有合法使用场景,这为攻击者提供了优势,即使用它们时不会被拦截。

要手动提取哈希值,我们需要两样东西:SYSTEM配置单元和系统中的ntds.dit文件。

对于SYSTEM配置单元: 我通过转储整个服务器内存来提取它,使用Magnet DumpIt(www.magnetforensics.com/resources/m…)大约花费了30分钟。

接下来,我们可以使用Volatility从原始内存转储中提取配置单元。我将结合使用Volatility2和Volatility3,因为某些模块在特定版本中表现更佳。

首先,使用Volatility3 (github.com/volatilityf…) 列出所有配置单元及其位置:

vol -f test.raw windows.registry.printkey.PrintKey

为了转储配置单元,我们将使用Volatility2: (github.com/volatilityf…)

/opt/volatility_2.6_lin64_standalone/volatility_2.6_lin64_standalone --profile=Win10x64_14393 dumpregistry -o 0xaf0287e41000 -D output_vol -f test.raw

对于NTDS.dit文件: 该文件受操作系统保护,难以直接复制。这就是像卷影拷贝这样的攻击手段存在的原因,但EDR拦截了这些尝试,并可能监控了涉及该文件的所有系统调用。为了绕过此限制,我使用了FTK Imager。FTK Imager通常用于取证,以创建和分析硬盘转储,它还具有允许读取和分析所连接驱动器的功能。

这种方法允许我们以原始状态读取C:\驱动器,并访问其上的任何文件,而不会触发正常的系统调用。使用这种方法,我们不仅可以读取ntds.dit,还可以读取系统上任何受保护、被监控或被运行进程锁定的文件。

FTK Imager本身不是便携式的,虽然有一个名为FTK Imager Lite的便携版本,但它是收费的。因此,我们需要创建自己的便携版本(因为在评估期间没人愿意在域控制器上安装软件)。

以下是创建便携版本的步骤:

  1. 在您的Windows机器上下载并安装FTK Imager:(www.exterro.com/digital-for…)
  2. C:\Program Files\AccessData\FTK Imager的内容复制到一个新文件夹中。
  3. 将以下DLL从C:\Windows\System32复制到新文件夹中:
    • mfc100*
    • mfc110*
    • mfc120*
    • mfc140*
    • mfc140u.dll
    • msvcp140.dll
    • vcruntime140.dll

现在您可以共享此文件夹并从域控制器访问它。

要打开当前驱动器:

  1. 转到 File -> Add Evidence Item -> Physical Drive -> 选择C盘。
  2. 导出 C:\Windows\NTDS\ntds.dit。

现在我们可以使用impacket-secretdump解密NTDS.dit文件。

secretsdump.py LOCAL -system output_vol/registry.0xaf0287e41000.SYSTEM.reg -ntds ntds.dit

CSD0tFqvECLokhw9aBeRqv2FsLdINop9u2a1bq3Xlo5ejzZY1j6gp4HS2kVKCrZ5whLvQ6iaeWllCvaindtKGUCEex+/kzH4R8GJa2jSQ2F9pwUG2pcLukUqA8yGqDUP