在一次内部渗透测试中,目标域控制器上安装了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的便携版本,但它是收费的。因此,我们需要创建自己的便携版本(因为在评估期间没人愿意在域控制器上安装软件)。
以下是创建便携版本的步骤:
- 在您的Windows机器上下载并安装FTK Imager:(www.exterro.com/digital-for…)
- 将
C:\Program Files\AccessData\FTK Imager的内容复制到一个新文件夹中。 - 将以下DLL从
C:\Windows\System32复制到新文件夹中:- mfc100*
- mfc110*
- mfc120*
- mfc140*
- mfc140u.dll
- msvcp140.dll
- vcruntime140.dll
现在您可以共享此文件夹并从域控制器访问它。
要打开当前驱动器:
- 转到 File -> Add Evidence Item -> Physical Drive -> 选择C盘。
- 导出 C:\Windows\NTDS\ntds.dit。
现在我们可以使用impacket-secretdump解密NTDS.dit文件。
secretsdump.py LOCAL -system output_vol/registry.0xaf0287e41000.SYSTEM.reg -ntds ntds.dit
CSD0tFqvECLokhw9aBeRqv2FsLdINop9u2a1bq3Xlo5ejzZY1j6gp4HS2kVKCrZ5whLvQ6iaeWllCvaindtKGUCEex+/kzH4R8GJa2jSQ2F9pwUG2pcLukUqA8yGqDUP