域渗透-mscache
2022-10-19 10:45:47 Author: qin9(查看原文) 阅读量:8 收藏

起因--公司考试遇到这样一题目

答案当然选b了,排除法 A C D有点类似的成分,通过内存中凭据,hash来进行攻击。

mscache 的全称是

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

MSCACHE 简介

举个例子的话就是。你的笔记本加了公司的域来方便工作的使用,你一直是使用域账号登陆这台机器。你尝试登陆时通过ldap从dc进行认证,验证通过后你就能登陆域用户的桌面了。(当然,本地administrator没影响) 但是假如你把笔记本电脑带走了,和dc不是同一个网络,访问不到的时候,你依然可以用域账号来登陆这台笔记本。也就是说,当这台机器根本连不上域控的时候,你也可以使用域账号来登陆这台机器,那这个时候,是谁来负责验证你输入的域账号密码是否正确呢? 就是 MSCACHE。原理就是再无法访问域控进行认证的时候。通过本地注册表保存的dcc hash来验证是否正确。

这样就可以理解题目了,因为mscache保存的是 dcc hash 而不是 NTLM hash ,自然就无法 PTH 了

版本区别

域用户的 mscache hash,根据不同的操作系统又分为了不同的版本,

分别是 dcc1 hash 与 dcc2 hash。Vista 之前保存的是 dcc1, 之后保存的是 dcc2。 两种 hash 的生成算法不一样。这段 mscache hash 主要用于对用户输入的密码进行验证

不同版本的算法

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

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

MSCACHE查看

MSCACHE 的保存位置默认只有 SYSTEM 权限可读

保存的键值  HKEY_LOCAL_MACHINE\SECURITY\Cache

我们通过给  administrator  用户加权限查看

修改如下

NL$1 至 NL$10 就是 10 个可以保存凭据的注册表值。这些值都是二进制类型的,并且其中部分是加密的。


通过本地安全策略可以修改保存的数量

MSCACHE 解密

所以,我们要想解密 MSCACHE,要进行以下步骤:

  1. 得到 bootkey

  2. 利用 bootkey 解密  LSA Key

  3. 利用 LSA Key 解密 NLKM Key

  4. 利用 NLKM Key 解密 MSCACHE

各数据位置

数据

位置

算法

Key

MSCACHE

HKLM\SECURITY\Cache

AES-CTS

NLKM Key

NLKM Key

注册表 LSA Secrets 区域

AES

变形后的 LSA Key

LSA Key

HKLM\SECURITY\Policy\PolEKList

AES

变形后的 boot key

bootkey

被拆成了 4  部分,保存在:

  1. HKLM\System\CurrentControlSet\Control\Lsa\JD

  2. HKLM\System\CurrentControlSet\Control\Lsa\Skew1

  3. HKLM\System\CurrentControlSet\Control\Lsa\Data

  4. HKLM\System\CurrentControlSet\Control\Lsa\GBG







通过mimikatz来获取cache

lsadump::cache

这玩意不方便直接利用,需要解密

但是mimikatz提供了修改的功能

mimikatz.exe "lsadump::cache /user:administrator /ntlm:32ed87bdb5fdc5e9cba88547376818d4" "exit"

成功登录,注意看我的虚拟机,我的主dc和辅dc都是关闭的,开启的机器就普通成员机08


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg5ODY2NTg3OQ==&mid=2247484105&idx=1&sn=634db7ebbd87462421684fe0f22f87e8&chksm=c05e5e31f729d727995428b1983d24933a38279eaafb57bc58af4a0af31456c061c6971e99ef#rd
如有侵权请联系:admin#unsafe.sh