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

SPN扫描

作者头像
信安本原
发布于 2020-03-09 10:47:10
发布于 2020-03-09 10:47:10
1.6K0
举报
文章被收录于专栏:信安本原信安本原

0x01介绍

Kerberos是一种支持票证身份验证的安全协议。如果客户端计算机身份验证请求包含有效的用户凭据和服务主体名称 (SPN),则 Kerberos 身份验证服务器将授予一个票证以响应该请求。然后,客户端计算机使用该票证来访问网络资源。在内部网络中,SPN扫描通过查询向域控制器执行服务发现。可以帮助我们识别正在运行重要服务的主机,如终端、交换机、微软SQL等,并隐藏他们。此外,SPN的识别也是kerberoasting攻击的第一步。

0x02关于spn

服务主体名称(SPN:Service Principal Names)是服务实例,可以将其理解为一个服务(比如 HTTP、MSSQL)的唯一标识符,服务在加入域中时是自动注册的。

如果在整个林或域中的计算机上安装多个服务实例,则每个实例都必须具有自己的 SPN。如果客户端可能使用多个名称进行身份验证,则给定服务实例可以具有多个 SPN。SPN 始终包含运行服务实例的主机的名称,因此服务实例可以为其主机名称或别名注册 SPN。

如果用一句话来说明的话就是SPN是服务器上所运行服务的唯一标识,每个使用Kerberos的服务都需要一个SPN,如果想使用 Kerberos 协议来认证服务,那么必须正确配置 SPN。

SPN分为两种,一种注册在AD上机器帐户(Computers)下,另一种注册在域用户帐户(Users)下

  • 当一个服务的权限为Local System或Network Service,则SPN注册在机器帐户(Computers)下
  • 当一个服务的权限为一个域用户,则SPN注册在域用户帐户(Users)下。

SPN格式为

代码语言:txt
AI代码解释
复制
serviceclass/host:port servicename

微软官方也给出了详细的解释和语法规则

有兴趣的可以详细阅读一下:

https://social.technet.microsoft.com/wiki/contents/articles/717.service-principal-names-spn-setspn-syntax.aspx

在查询SPN的时候,会向域控制器发起LDAP查询,这是正常Kerberos票据行为的一部分,所以这个操作很难被检测出来。

0x03实验

这里我们准备了两个靶机来让大家了解SPN查询的详细内容,以下是详细的靶机情况,通过3389即可连接

代码语言:txt
AI代码解释
复制
Win08_dc_dns192.168.5.70Administrator    secquan.org666
Win7192.168.5.116ZHUJIAN\win7    secquan.org666

我们可以通过以下命令来查询当前域下的所有SPN

代码语言:txt
AI代码解释
复制
setspn –q */*

查看ZHUJIAN域的所有SPN

代码语言:txt
AI代码解释
复制
setspn –T zhujian –q */*

与刚刚的内容肯定是一样的,因为win7这台机子只在zhujian这一个域中。

其中以CN开头的,每一行都代表一个账户

这两个为机器账户

下面这个为域用户账户

我们也可以根据微软的官方文档去自己注册SPN,这里我们还是尽可能的去模拟一下真实的情况,我们在win7上安装一下MSSQL,然后再去看内容是否有变化

MSSQL的安装包已经在win7中的桌面提供了,直接安装即可。

双击时会遇到这种情况,这是因为当前是域用户不是此机器的管理员权限

这里我们使用以下的账号密码来进行验证

代码语言:txt
AI代码解释
复制
账号:SECQUAN_WIN7-PC\secquan_win7密码:secquan.org666

接下来就是正常的安装,不详细展开了,我们这里的目的是只要安装好就可以了

注:这里如果遇到不能正常运行安装的情况,请直接切换用户进行安装,安装之后再切换回域用户,如果因为硬盘不足的原因,请手动扩充

安装好之后,请切换到域用户

我们运行命令

代码语言:txt
AI代码解释
复制
setspn –q */*

可以发现在SECQUAN_WIN7-PC上多了一个服务

这个正是MSSQL所对应的SPN

这样就可以帮助我们快速获得域内的一些服务

常见的几种spn实例名称还有

代码语言:txt
AI代码解释
复制
AcronisAgent:针对Acronis备份和数据恢复软件AdtServer:带有ACS的Microsoft System Center Operations Manager(2007/2012)管理服务器afpserver:Apple归档协议AgpmServer:Microsoft高级组策略管理(AGPM)aradminsvc - 任务主角色服务器arssvc - 任务主角色服务器bocms:商业化CMSBOSSO:商业对象CESREMOTE:与VMWare上的Citrix VDI解决方案有关,许多VDI工作站都有这个SPN。cifs:通用Internet文件系统CmRcService:Microsoft系统中心配置管理器(SCCM)远程控制CUSESSIONKEYSVR:CiscoUnity VOIP系统cvs:CVS库Dfsr *:分布式文件系统DNS:域名服务器E3514235-4B06-11D1-AB04-00C04FC2DCD2:NTDS DC RPC复制E3514235-4B06-11D1-AB04-00C04FC2DCD2-ADAM:ADAM实例EDVR:ExacqVision服务exchangeAB:Exchange通讯簿服务(通常是支持NSPI的域控制器,也通常是所有的GC)exchangeMDB:RPC客户端访问服务器角色exchangeRFR:交换通讯簿服务fcsvr:Apple FinalCut ServerFileRepService:WSFileRepService.exeFIMService:MicrosoftForefront标识管理器(FIM)ftp:文件传输协议GC:域控制器全局编录服务HDFS:Hadoop(Ambari)host:主机服务代表主机。HOSTSPN用于在创建服务票据时访问由Kerberos协议使用长期密钥的主机帐户。http:支持Kerberos身份验证的http网络服务的SPNHyper-V副本服务:MicrosoftHyper-V的副本服务IMAP:Internet消息访问协议IMAP4:Internet消息访问协议版本4ipp:Internet打印协议iSCSITarget:iSCSI 配置kadmin:Kerberosldap:LDAP服务,如域控制器或ADAM实例。Magfs:MaginaticsMagFSmapred:ClouderaMicrosoft虚拟控制台服务:HyperV主机Microsoft虚拟系统迁移服务:P2V支持(Hyper-V)mongod:MongoDBEnterprisemongos:MongoDBEnterpriseMSClusterVirtualServer:Windows群集服务器MSOLAPSvc:SQLServer分析服务MSOLAPSvc.3:SQLServer分析服务MSOLAPDisco.3:SQLServer分析服务MSOMHSvc:Microsoft系统中心运营经理(2007/2012)管理服务器MSOMSdkSvc:MicrosoftSystem Center Operations Manager(2007/2012)管理服务器MSServerCluster:Windows群集服务器MSServerClusterMgmtAPI:此群集API需要此SPN才能通过使用Kerberos向服务器进行身份验证MSSQL:Microsoft SQLServerMSSQLSvc:MicrosoftSQL ServerMSSQL $ ADOBECONNECT:支持Adobe Connect的Microsoft SQL ServerMSSQL $ BIZTALK:MicrosoftSQL Server支持Microsoft Biztalk服务器MSSQL $ BUSINESSOBJECTS:支持Business Objects的Microsoft SQL ServerMSSQL $ DB01NETIQ:支持NetIQ的Microsoft SQL Servernfs:网络文件系统NPPolicyEvaluator:戴尔Quest审计员NPRepository 4(CHANGEAUDITOR):戴尔Quest Change AuditorNPRepository4(CAAD):戴尔Quest审核员NPRepository4(默认):戴尔任务审计员NtFrs *:NT文件复制服务oracle:OracleKerberos身份验证pcast:苹果播客制作人PCNSCLNT:自动密码同步解决方案(MIIS 2003&FIM)POP:邮箱协议POP3:邮箱协议版本3PVSSoap:Citrix ProvisioningServices(7.1)RestrictedKrbHost:使用服务类字符串等于“RestrictedKrbHost”的 SPN的服务类,其服务凭单使用计算机帐户密钥并共享会话密钥。RPC:远程过程调用服务SAP:SAP /SAPService <SID>SAS:SAS服务器SCVMM:System Center虚拟机管理器secshd:IBMInfoSpheresip:会话启动协议SMTP:简单邮件传输协议SMTPSVC:简单邮件传输协议SoftGrid:  Microsoft应用程序虚拟化(App-V)以前的“SoftGrid”STS:VMWare SSO服务SQLAgent $ DB01NETIQ:NetIQ的SQL服务tapinego:与路由应用程序相关联,例如Microsoft防火墙(ISA,TMG等)TERMSRV:Microsoft远程桌面协议服务,又名终端服务。tnetd:JuniperKerberos身份验证 “Tnetd是一个守护进程,用于路由引擎和数据包转发引擎等不同组件之间的内部通信”vmrc:Microsoft VirtualServer 2005vnc:VNC服务器V**:虚拟专用网络VProRecovery Backup Exec系统恢复代理7.0VProRecovery Backup Exec系统恢复代理8.0VProRecovery Backup Exec系统恢复代理9.0VProRecovery诺顿克隆代理12.0VProRecovery诺顿克隆代理14.0 VProRecovery诺顿克隆代理15.0VProRecovery Symantec系统恢复代理10.0VProRecovery Symantec系统恢复代理11.0VProRecovery Symantec系统恢复代理14.0vssrvc:微软虚拟服务器(2005)WSMAN:Windows远程管理(基于WS-Management标准)服务xmpp / XMPP:可扩展消息和呈现协议(Jabber)xgrid:苹果的分布式(网格)计算/ Mac OS X 10.6服务器管理YARN:ClouderaMapReduce

至于更多的SPN值,请自己去尝试和搜集

最后,我们再提供一个探测MSSQL服务的ps脚本,类似的脚本也还有很多,大家可以去GitHub上进行搜集和更改

代码语言:txt
AI代码解释
复制
https://github.com/PyroTek3/PowerShell-AD-Recon/blob/master/Discover-PSMSSQLServers
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无心的梦呓 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SPN信息扫描
在使用Kerberos身份验证的网络中,必须在内置计算机帐户(如NetworkService或LocalSystem)或用户帐户下为服务器注册SPN。对于内置帐户,SPN将自动进行注册。但是,如果在域用户帐户下运行服务,则必须为要使用的帐户手动注册SPN。因为域环境中每台服务器都需要在Kerberos身份验证服务注册SPN,所以我们可以直接向域控制器进行查询我们需要的服务的SPN,就可以找到我们需要使用的服务资源在哪台机器上。Kerberos身份验证使用SPN将服务实例与服务登录帐户相关联。如果在整个域中的计算机上安装多个服务实例,则每个实例都必须具有自己的SPN。如果客户端可能使用多个名称进行身份验证,则给定的服务实例可以具有多个SPN。例如,SPN总是包含运行服务实例的主机名称,所以服务实例可以为其主机的每个名称或别名注册一个SPN。
一只特立独行的兔先生
2024/02/12
2860
Kerberoasting攻击
当发布Windows 2000和Active Directory时,微软打算在 Windows NT 和Windows 95 上也支持Active Directory,这意味着不仅会产生各种各样的安全问题也会导致更多不安全的配置方式。同时,也意味着,微软要保证在多个不同版本的 Windows 客户端上均支持Kerberos协议。要实现这个想法的一个简单的办法就是在Kerberos协议中使用RC4加密算法,并将NTLM密码哈希作为该加密算法的私钥,该私钥可用于加密或签名Kerberos票证。因此,对于攻击者来说,一旦发现了 NTLM 密码哈希,就可以随意使用,包括重新拿回Active Directory域权限(比如:黄金票证和白银票证攻击)。
信安本原
2020/03/10
1.5K0
Kerberoasting攻击
内网渗透 | 域渗透之SPN服务主体名称
SPN(ServicePrincipal Names)服务主体名称,是服务实例(比如:HTTP、SMB、MySQL等服务)的唯一标识符。
谢公子
2022/01/19
2.1K0
内网渗透 | 域渗透之SPN服务主体名称
【内网安全】横向移动&Kerberos攻击&SPN扫描&WinRM&WinRS&RDP
IPC,WMI,SMB,PTH,PTK,PTT,SPN,WinRM,WinRS,RDP,Plink,DCOM,SSH;Exchange,LLMNR投毒,Kerberos_TGS,GPO&DACL,域控提权漏洞,约束委派,数据库攻防,系统补丁下发执行,EDR定向下发执行等。
没事就要多学习
2024/07/18
1570
【内网安全】横向移动&Kerberos攻击&SPN扫描&WinRM&WinRS&RDP
SPN服务主体名称发现详解
Kerberos是一种支持票证身份验证的安全协议。如果客户端计算机身份验证请求包含有效的用户凭据和服务主体名称 (SPN),则 Kerberos 身份验证服务器将授予一个票证以响应该请求。然后,客户端计算机使用该票证来访问网络资源。在内部网络中,SPN扫描通过 查询向域控制器执行服务发现。这对于红队而言,可以帮助他们识别正在运行重要服务的主机,如终端、交换机、微软SQL等,并隐藏他们。此外,SPN的识别也是kerberoasting攻击的第一步。
FB客服
2018/07/30
2.9K0
SPN服务主体名称发现详解
内网渗透 | SPN 与 Kerberoast 攻击讲解
内网渗透 | Kerberos 协议与 Kerberos 认证原理 内网渗透 | Kerberos 协议相关安全问题分析与利用
HACK学习
2021/07/21
4.1K0
SPN服务主体名称详解
SPN(ServicePrincipal Names,服务主体名称)是服务实例的唯一标识符,当域内存在大量的服务器,管理员为了方便管理会对服务器进行标识,那么管理员标识所使用的方法就是SPN。
一只特立独行的兔先生
2024/02/09
6790
SPN服务主体名称详解
域渗透技巧
由于每台服务器都需要注册用于Kerberos身份验证服务的SPN,因此这为在不进行大规模端口扫描的情况下收集有关内网域环境的信息提供了一个更加隐蔽的方法。
Gamma实验室
2021/07/23
1.3K0
域渗透技巧
Kerbroes协议之TGS_REQ & TGS_REP
2.AS检查客户端是否在其数据库中,在就会拿出相应用户id对应的hash来当作加密密钥。
黑白天安全
2021/03/16
1.2K0
Kerbroes协议之TGS_REQ & TGS_REP
红队技巧-域渗透的协议利用
哈希传递(pth)攻击是指攻击者可以通过捕获密码的hash值(对应着密码的值),然后简单地将其传递来进行身份验证,以此来横向访问其他网络系统,攻击者无须通过解密hash值来获取明文密码,因为对于每个Session hash值都是固定的,除非密码被修改了(需要刷新缓存才能生效),所以pth可以利用身份验证协议来进行攻击,攻击者通常通过抓取系统的活动内存和其他技术来获取哈希。
Gamma实验室
2021/07/01
1.6K0
我所了解的内网渗透 - 内网渗透知识大总结
一般想知道哪一台是域控知道自己内网的DNS就可以了,一般域控安装都有安装DNS有些不止一台,其次是通过扫描获取开放端口为389机器或者使用NLTEST命令查看。最后就是各种网络查看查看域控是哪台主机
HACK学习
2019/08/06
4.4K0
我所了解的内网渗透 - 内网渗透知识大总结
本地帐户和活动目录帐户
本地帐户Local Accounts存储在本地的服务器上。这些帐户可以在本地服务器上分配权限,但只能在该服务器上分配。默认的本地帐户是内置帐户(如administrator、guest等),在安装Windows时自动创建。Windows安装后,无法删除默认的本地帐户。此外,默认的本地帐户不提供对网络资源的访问。默认的本地帐户用于根据分配给该帐户的权限来管理对本地服务器资源的访问。默认的本地帐户和后期创建的本地帐户都位于“用户”文件夹中。
谢公子
2023/09/01
2.1K0
本地帐户和活动目录帐户
Domain Escalation: Unconstrained Delegation
在Windows 2000之后微软引入了一个选项,用户可以通过Kerberos在一个系统上进行身份验证,并在另一个系统上工作,这种技术主要通过委派机制来实现,无约束委派通过TGT转发技术实现,而这也是我们将本文中讨论的内容
Al1ex
2022/09/07
8640
Domain Escalation: Unconstrained Delegation
【深度分析】关于SPN不正确导致SQL数据库连接失败
连接SQL Server数据库时发生报错“The target principal name is incorrect. Cannot generate SSPI context”,无法连接,可能是由于AD域中记录了错误的SPN,导致无法进行身份验证而连接失败。下文通过简述Kerberos认证过程、SPN的组成,引出由SPN错误引发报错的解决方法。
腾讯蓝鲸助手
2024/08/13
2620
域渗透之委派攻击详解(非约束委派/约束委派/资源委派)
大家好,这里是 渗透攻击红队 的第 77 篇文章,本公众号会记录一些红队攻击的案例,不定时更新!请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关!
渗透攻击红队
2021/11/10
11.6K1
没有 SPN 的 Kerberoasting
服务主体名称 (SPN) 是 Active Directory (AD) 数据库中的记录,显示哪些服务注册到哪些帐户:
Khan安全团队
2022/01/04
1.4K0
Kerberoasting
服务主题名称( SPN: Service Principal Names) 是服务实例, 可以将其理解为一个服务(比如HTTTP、MSSQL)的唯一标识符,服务在加入域中时是自动注册的。
Nayon
2023/04/17
4780
Kerberoasting
kerberos认证下的一些攻击手法
Kerberos黄金票据是有效的TGT Kerberos票据,因为它是由域Kerberos帐户(KRBTGT)加密和签名的。TGT仅用于向域控制器上的KDC服务证明用户已被其他域控制器认证。TGT被KRBTGT密码散列加密并且可以被域中的任何KDC服务解密的。
黑白天安全
2021/04/07
3.3K0
kerberos认证下的一些攻击手法
Cloudera安全认证概述
身份验证是任何计算环境的基本安全要求。简单来说,用户和服务必须先向系统证明其身份(身份验证),然后才能在授权范围内使用系统功能。身份验证和授权携手并进,以保护系统资源。授权使用多种方式处理,从访问控制列表(ACL)到HDFS扩展ACL,再到使用Ranger的基于角色的访问控制(RBAC)。
大数据杂货铺
2020/02/11
3.1K0
Cloudera安全认证概述
Active Directory中获取域管理员权限的攻击方法
攻击者可以通过多种方式获得 Active Directory 中的域管理员权限。这篇文章旨在描述一些当前使用的比较流行的。此处描述的技术“假设破坏”,即攻击者已经在内部系统上站稳脚跟并获得了域用户凭据(也称为后利用)。
Khan安全团队
2022/01/24
5.6K0
相关推荐
SPN信息扫描
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档