前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SPN信息扫描

SPN信息扫描

原创
作者头像
一只特立独行的兔先生
发布2024-02-12 08:38:13
1330
发布2024-02-12 08:38:13
举报

Windows域环境是基于微软的活动目录服务的(Microsoft Active Directory),它将物理位置分散,所属部门不同的用户在网络系统环境中进行分组,集中统一资源,有效对资源访问控制权限细粒化分配,提高了网络环境的安全性和对网络中资源统一分配管理的便利性。域环境中运行着大量应用包含多种资源,为了方便对资源的合理分组分类再分配给用户使用,微软对域内的每种资源分配了不同的服务主体名称(Service Principal Name)简称SPN。

1.概念介绍

在使用Kerberos身份验证的网络中,必须在内置计算机帐户(如NetworkService或LocalSystem)或用户帐户下为服务器注册SPN。对于内置帐户,SPN将自动进行注册。但是,如果在域用户帐户下运行服务,则必须为要使用的帐户手动注册SPN。因为域环境中每台服务器都需要在Kerberos身份验证服务注册SPN,所以我们可以直接向域控制器进行查询我们需要的服务的SPN,就可以找到我们需要使用的服务资源在哪台机器上。Kerberos身份验证使用SPN将服务实例与服务登录帐户相关联。如果在整个域中的计算机上安装多个服务实例,则每个实例都必须具有自己的SPN。如果客户端可能使用多个名称进行身份验证,则给定的服务实例可以具有多个SPN。例如,SPN总是包含运行服务实例的主机名称,所以服务实例可以为其主机的每个名称或别名注册一个SPN。

在Kerberos的协议中,当用户输入自己的账号密码登录Active Directory中时,域控制器会对账号密码进行身份验证,当身份验证通过后KDC会将服务授权的票据(TGT)颁发给用户作为用户访问资源时验证身份的凭证。

当用户需要访问例如MSSQL服务时,系统会以当前用户身份向域控制器查询SPN为MSSQL的记录。找到该SPN的记录后,用户会再次于KDC通信,将KDC颁发的TGT发送给KDC作为身份验证凭据,还会将需要访问资源的SPN发送给KDC,KDC中的身份验证服务(AS)对TGT解密校验无误后,TGS将一张允许访问该SPN对应的服务的Ticket和该SPN对应服务地址发送给用户,用户使用该Ticket成功访问到MSSQL服务资源。

2.获取SPN方法

我们可以使用以下但不限于这些方法:如使用Windows自带的setspn.exe获取SPN信息、Linux跨Windows的python场景使用Impacket获取SPN信息、通过LDAP获取SPN信息、高版本Windows的Powershell获取SPN信息、低版本Windows可以使用第三方VBS脚本获取SPN信息,利用常用的C2 Empire自带的模块进行获取SPN信息。

1)SetSPN.exe是一个本地Windows二进制文件,可用于检索用户帐户和服务之间的映射。该应用程序可以添加、删除或查看SPN注册信息,输入“setspn -t dm.org -q */*”命令获取该域中所有SPN信息。也可以输入setspn.exe –l dm1命令获取指定用户账户的所有SPN信息。

2)可以在Windows中导入AD模块GET-SPN.psm1,利用Powershell获取SPN信息。

  • 导入模块
代码语言:powershell
复制
import-module .\Microsoft.ActiveDirectory.Management.dll
Import-Module.\Get-SPN.psm1

  • 获取MSSQL服务对应的账号
代码语言:powershell
复制
Get-SPN -type service -search "MSSQLSvc*" -List yes| Format-Table

  • 非域内获取以域管理员注册的服务
代码语言:powershell
复制
Get-SPN  -type group -search "Domain Admins" -List yes -DomainController 192.168.3.23 -Credential dm1 | Format-Table –Autosize

3.利用LDAP手动查询的方式获取SPN信息

如果当前环境在域内,并且需要将工具落地在目标环境的情况下,常见的渗透自动化利用工具可能会被终端安全软件检测到或因为固有的流量特征被流量分析工具检测到,我们可以使用如adfind等工具,进行手动查询指定SPN信息,输入以下命令。使用"Adfind.exe -f "ServicePrincipalName=MSSQLSvc*""命令获取所有MSSQL服务绑定的账号。


我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.概念介绍
  • 2.获取SPN方法
  • 3.利用LDAP手动查询的方式获取SPN信息
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档