(七)SPN在域环境重点应用

[复制链接]
发表于 2025-9-10 15:32:46 | 显示全部楼层 |阅读模式
kerberos原理解析
  1. 一、核心术语
  2. 1、KDC:key distributed center ,整个安全认证过程的票据生成管理服务,其中包含两个服务,AS和TGS
  3. 2、AS:Authentication service,认证服务,为client生成TGT的服务
  4. 3、TGS:Ticket granting service,ticket生成服务,为client生成某个服务的ticket
  5. 4、TGT:Ticket-granting ticket ,用于获取ticket的票据
  6. 5、AD:Account database,存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT
复制代码

截图202509100732436521.png
二、认证流程
        总体认证流程分为三步,client到AS;client到TGS;client到server
1、client向kerberos服务请求,希望获取访问server的权限。kerberos得到了这个消息,首先得判断client是否是可信赖的,也就是白名单黑名单的说法。这就是AS服务完成的工作,通过在AD中存储黑名单和白名单来区分client。成功后,返回AS返回TGT给client。
2、client得到了TGT后,继续向kerberos请求,希望获取访问server的权限。kerberos又得到了这个消息,这时候通过client消息中的TGT,判断出了client拥有了这个权限,给了client访问server的权限ticket。
3、client得到ticket后,终于可以成功访问server。这个ticket只是针对这个server,其他server需要像TGS申请。
        整个过程的通信都是加密的,这里设计到两层加密,因为所有的认证都是通过client,也就是说kerberos没有和server直接交互,这样的原因是kerberos并不知道server的状态,也无法保证同时和server,client之间通信的顺序,由client转发可以让client保证流程顺序。
第一层加密,kerberos对发给server数据的加密,防止client得到这些信息篡改。
第二层加密,kerberos对发给client数据的加密,防止其他网络监听者得到这些信息。

SPN在域环境中的应用
1、SPN概述(域服务认证体系)用于定位服务服务主体名称(SPN)是Kerberos客户端用于唯一标识给特定Kerberos目标计算机的服务实例名称。Kerberos身份验证使用SPN将服务实例与服务登录帐户相关联。如果在整个林中的计算机上安装多个服务实例,则每个实例都必须具有自己的SPN。如果客户端可能使用多个名称进行身份验证,则给定的服务实例可以具有多个SPN。例如,SPN总是包含运行服务实例的主机名称,所以服务实例可以为其主机的每个名称或别名注册一个SPN。



2、SPN扫描
SPN格式:
SPN = serviceclass / hostname [:port] [/ servicename]

  • Serviceclass:服务组件名称
  • Hostname:以/ 分隔开,是计算机的FQDN(全限定域名,计算机名和域名)
  • Port:以:分隔开,是该服务监听的端口号
  • Servicename:一个字符串,可以是服务的专有名称(DN),objectGuid,Internet主机名或全限定域名常见的SPN服务,如MSSQL


MSSQLSvc/DC.bihuo.com:1433
MSSQLSvc/192.168.26.1:1433


3、SPN扫描
spn扫描也可以叫扫描Kerberos服务实例名称,在Active Directory环境中发现服务的最佳方法是通过“SPN扫描”。通过请求特定SPN类型的服务主体名称来查找服务,SPN扫描攻击者通过网络端口扫描的主要好处是SPN扫描不需要连接到网络上的每个IP来检查服务端口(不会触发ips,ids产生警告日志)。SPN查询是Kerberos票据行为的一部分


1) Setspn -T domain(域名) -q */* 扫描所有spn服务名称


  1. setspn -T bihuo.cn -q */*
复制代码

截图202509100828386162.png

2) PowerShell-AD-Recon 该工具包提供了一些探测指定SPN的脚本,例如Exchange,Microsoft
SQLServer,Terminal等。
import-module .\Discover-PSInterestingServices.ps1
discover-psinterestingservices

使用脚本:
截图202509100833113859.png

2、SPN扫描
3)GetUserSPNs是Kerberoast工具集中的一个powershell脚本,用来查询域内以用户注册的SPN
  1. import-module.\GetUserSPNs.sp1
复制代码

截图202509100846045675.png

4)Powerview.ps1PowerView相对于上面几种是根据不同用户的objectsid来返回spn服务,返回的
信息更加详细
  1. get-netuser -SPN
复制代码

截图202509100848117397.png


5) PowerShellery下有各种各样针对服务SPN探测的脚本。在(Powershellery-master\Stable
ish\Get-SPN)其中一些需要PowerShell v2.0的环境,还有一些则需要PowerShell v3.0环境。
1.Get-SPN -type service -search "*" 查询所有服务
  1. 1.Get-SPN -type service -search "*" 查询所有服务
复制代码
截图202509120320109116.png

  1. 2.Get-SPN -type service -search "*" -List yes | Format-Table 格式化显示
复制代码

截图202509120322411377.png



必火网络安全培训,北京实地培训,月月有开班,零基础入门,四个月打造渗透高手。
详情请加微信:nvhack/153-2000-4362,手机微信同号。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|女黑客安全网 |网站地图 | 津ICP备17008032号-3

GMT+8, 2025-11-8 14:10 , Processed in 0.096820 second(s), 27 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表