【域渗透】域Hash缓存

概述:域用户 hash 缓存。MSCACHE(Domain Cached Credentials, DCC),域缓存凭据

相关文章:

MSCACHE

说明

MSCACHE,或者叫 domain cached credentials、DCC、域缓存凭据。

它是缓存在机器本地注册表中的域凭据+域授权信息,后面就直接用 “凭据” 来代表 “凭据信息” + “授权信息”。

你的办公笔记本加了公司的域,你一直是使用域账号登陆这台机器。你尝试登陆时所输入的账号密码将由域控来进行验证,验证通过后你就能登陆这台笔记本。但是你是否发现过,当你的笔记本处于断网状态的时候,你依然可以用域账号来登陆这台笔记本。也就是说,当这台机器根本连不上域控的时候,你也可以使用域账号来登陆这台机器,那这个时候,是谁来负责验证你输入的域账号密码是否正确呢? 就是 MSCACHE。

DCC1 与 DCC2

前面说了,MSCACHE 保存的是 dcc hash,而并不是 NTLM 的 HASH。所以你导出的域缓存的 hash 是不能用于 PTH 的,只能用来破解。

这里简单记录一下两种 Hash 的生成算法:

DCC1=MD4(NTHASH+LowerUnicode(username))DCC1 = MD4 (NT HASH + LowerUnicode(username))

DCC2=PBKDF2(HMACSHA1,Iterations,DCC1,LowerUnicode(username))DCC2 = PBKDF2(HMAC-SHA1, Iterations, DCC1, LowerUnicode(username))

顺便推荐一个叫做 passlib 的 Python 库,这个库可以生成各种我们可能会在安全行业里面碰见的 Hash 或密文。如果你使用 passlib 生成 nthash,则代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
>>> from passlib.hash import msdcc2

>>> # hash password using specified username
>>> hash = msdcc2.hash("password", user="Administrator")
>>> hash
'4c253e4b65c007a8cd683ea57bc43c76'

>>> # verify correct password
>>> msdcc2.verify("password", hash, user="Administrator")
True
>>> # verify correct password w/ wrong username
>>> msdcc2.verify("password", hash, user="User")
False
>>> # verify incorrect password
>>> msdcc2.verify("letmein", hash, user="Administrator")
False


# Example
from passlib.hash import msdcc2
from passlib.hash import msdcc
from passlib.hash import nthash

#hash password using specified username
hash = msdcc2.hash("Admin@123", user="test")

print("Hash:", hash)

#hash password using specified username
hash = msdcc.hash("Admin@123", user="test")

print("Hash:", hash)

#hash password using specified username
hash = nthash.hash("Admin@123")

print("Hash:", hash)

也可以直接用它来生成 dcc hash。


【域渗透】域Hash缓存
https://hodlyounger.github.io/A_内功/A_winsafe/【域渗透】域Hash缓存/
作者
mingming
发布于
2024年9月5日
许可协议