利用蓝队工具绕过EDR防护提取NTDS.dit哈希

2 阅读3分钟

在内部渗透测试期间,域控制器上安装了Cortex EDR。在获得域管理员权限后,EDR阻止了所有已知的提取NTDS哈希的尝试。因此,我不得不考虑替代方法来获取哈希值。

TL;DR:

要提取哈希,我们需要:

  • SYSTEM注册表单元,我使用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. C:\Windows\System32中将以下DLL文件复制到新文件夹: — 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