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格式为

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即可连接

Win08_dc_dns
192.168.5.70
zhujian.com Win7
192.168.5.116

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

setspn –q */*

查看ZHUJIAN域的所有SPN

···

setspn –T zhujian –q /

···

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

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

这两个为机器账户

下面这个为域用户账户

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

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

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

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

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

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

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

我们运行命令

···

setspn –q /

···

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

这个正是MSSQL所对应的SPN

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

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

···

AcronisAgent:针对Acronis备份和数据恢复软件

AdtServer:带有ACS的Microsoft System Center Operations Manager(2007/2012)管理服务器

afpserver:Apple归档协议

AgpmServer:Microsoft高级组策略管理(AGPM)

aradminsvc - 任务主角色服务器

arssvc - 任务主角色服务器

bocms:商业化CMS

BOSSO:商业对象

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 Server

FileRepService:WSFileRepService.exe

FIMService:MicrosoftForefront标识管理器(FIM)

ftp:文件传输协议

GC:域控制器全局编录服务

HDFS:Hadoop(Ambari)

host:主机服务代表主机。HOSTSPN用于在创建服务票据时访问由Kerberos协议使用长期密钥的主机帐户。

http:支持Kerberos身份验证的http网络服务的SPN

Hyper-V副本服务:MicrosoftHyper-V的副本服务

IMAP:Internet消息访问协议

IMAP4:Internet消息访问协议版本4

ipp:Internet打印协议

iSCSITarget:iSCSI 配置

kadmin:Kerberos

ldap:LDAP服务,如域控制器或ADAM实例。

Magfs:MaginaticsMagFS

mapred:Cloudera

Microsoft虚拟控制台服务:HyperV主机

Microsoft虚拟系统迁移服务:P2V支持(Hyper-V)

mongod:MongoDBEnterprise

mongos:MongoDBEnterprise

MSClusterVirtualServer: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 SQLServer

MSSQLSvc:MicrosoftSQL Server

MSSQL $ ADOBECONNECT:支持Adobe Connect的Microsoft SQL Server

MSSQL $ BIZTALK:MicrosoftSQL Server支持Microsoft Biztalk服务器

MSSQL $ BUSINESSOBJECTS:支持Business Objects的Microsoft SQL Server

MSSQL $ DB01NETIQ:支持NetIQ的Microsoft SQL Server

nfs:网络文件系统

NPPolicyEvaluator:戴尔Quest审计员

NPRepository 4(CHANGEAUDITOR):戴尔Quest Change Auditor

NPRepository4(CAAD):戴尔Quest审核员

NPRepository4(默认):戴尔任务审计员

NtFrs *:NT文件复制服务

oracle:OracleKerberos身份验证

pcast:苹果播客制作人

PCNSCLNT:自动密码同步解决方案(MIIS 2003&FIM)

POP:邮箱协议

POP3:邮箱协议版本3

PVSSoap:Citrix ProvisioningServices(7.1)

RestrictedKrbHost:使用服务类字符串等于“RestrictedKrbHost”的 SPN的服务类,其服务凭单使用计算机帐户密钥并共享会话密钥。

RPC:远程过程调用服务

SAP:SAP /SAPService

SAS:SAS服务器

SCVMM:System Center虚拟机管理器

secshd:IBMInfoSphere

sip:会话启动协议

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 2005

vnc:VNC服务器

VPN:虚拟专用网络

VProRecovery Backup Exec系统恢复代理7.0

VProRecovery Backup Exec系统恢复代理8.0

VProRecovery Backup Exec系统恢复代理9.0

VProRecovery诺顿克隆代理12.0

VProRecovery诺顿

克隆代理14.0 VProRecovery诺顿克隆代理15.0

VProRecovery Symantec系统恢复代理10.0

VProRecovery Symantec系统恢复代理11.0

VProRecovery Symantec系统恢复代理14.0

vssrvc:微软虚拟服务器(2005)

WSMAN:Windows远程管理(基于WS-Management标准)服务

xmpp / XMPP:可扩展消息和呈现协议(Jabber)

xgrid:苹果的分布式(网格)计算/ Mac OS X 10.6服务器管理

YARN:ClouderaMapReduce

···

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

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

···

https://github.com/PyroTek3/PowerShell-AD-Recon/blob/master/Discover-PSMSSQLServers

···

文章首发公众号:无心的梦呓(wuxinmengyi)

这是一个记录红队学习、信安笔记,个人成长的公众号

扫码关注即可

SPN扫描的更多相关文章

  1. SPN扫描利用

    一.利用环境: 在内网渗透的信息收集中,机器服务探测一般都是通过端口扫描去做的,但是有些环境不允许这些操作.通过利用 SPN 扫描可快速定位开启了关键服务的机器,这样就不需要去扫对应服务的端口,有效规 ...

  2. 内网探测之SPN服务扫描及相关利用

    在写下一个大块之前,补充一些小知识点,也没啥新东西 0x01简介 如果常规扫描服务,结果不理想,非常GG,可以考虑使用SPN进行服务扫描,这是为了借助Kerberos的正常查询行为(向域控发起LDAP ...

  3. kerberos中的spn详解

    0x01 SPN定义    服务主体名称(SPN)是Kerberos客户端用于唯一标识给特定Kerberos目标计算机的服务实例名称.Kerberos身份验证使用SPN将服务实例与服务登录帐户相关联. ...

  4. 域渗透-Kerberos协议中spn的应用

    0x01 关于SPN 服务主体名称(SPN)是Kerberos客户端用于唯一标识给特定Kerberos目标计算机的服务实例名称. 服务主体名称是服务实例(可以理解为一个服务,比如 HTTP.MSSQL ...

  5. 域渗透:SPN(ServicePrincipal Names)的利用

    SPN 简介:服务主体名称(SPN:ServicePrincipal Names)是服务实例(可以理解为一个服务,比如 HTTP.MSSQL)的唯一标识符.Kerberos 身份验证使用 SPN 将服 ...

  6. SPN在域环境中的应用

    0X01 SPN    服务主体名称(SPN)是Kerberos客户端用于唯一标识给特定Kerberos目标计算机的服务实例名称.Kerberos身份验证使用SPN将服务实例与服务登录帐户相关联.如果 ...

  7. Active Directory中获取域管理员权限的攻击方法

    Active Directory中获取域管理员权限的攻击方法         译:by  backlion 0x00 前言 攻击者可以通过多种方式在Active Directory中获得域管理员权限, ...

  8. Kerberoasting攻击

    前面我们介绍了<Windows本地认证>.<Windows网络认证>.<Windows域认证>和<SPN扫描>,这次继续讲解域内相关的东西. 0x01介 ...

  9. 域渗透基础之Kerberos认证协议

     本来昨晚就该总结整理,又拖到今天早上..6点起来赶可还行 0x01 Kerberos前言 Kerberos 是一种由 MIT(麻省理工大学)提出的一种网络身份验证协议.它旨在通过使用密钥加密技术为客 ...

随机推荐

  1. c++采集windows操作系统名称

    WINAPI windows通过c++获取操作系统主要分两种: 1. windows是8.1版本以下版本:获取操作系统可以通过windows提供的api中GetVersionEx函数来获取 2. wi ...

  2. Springboot源码分析之@Transactional

    摘要: 对SpringBoot有多了解,其实就是看你对Spring Framework有多熟悉~ 比如SpringBoot大量的模块装配的设计模式,其实它属于Spring Framework提供的能力 ...

  3. 设计模式(C#)——02简单工厂模式

    推荐阅读:  我的CSDN  我的博客园  QQ群:704621321       工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来.通俗来说,你只关心怎么用,不用关心怎么做 ...

  4. python多进程通信实例分析

    操作系统会为每一个创建的进程分配一个独立的地址空间,不同进程的地址空间是完全隔离的,因此如果不加其他的措施,他们完全感觉不到彼此的存在.那么进程之间怎么进行通信?他们之间的关联是怎样的?实现原理是什么 ...

  5. nsq源码分析

    nsq的源码比较简单,值得一读,特别是golang开发人员,下面重点介绍nsqd,看完这篇文章希望你能对消息队列的原理和实现有一定的了解. nsqd是一个守护进程,负责接收,排队,投递消息给客户端,并 ...

  6. babel-loader与babel-core的版本对应关系

    babel-loader 8.x对应babel-core 7.xbabel-loader 7.x对应babel-core 6.x如何解决1. 卸载旧的babel-corenpm un babel-co ...

  7. 牛客多校第二场B discount 基环内向树

    题意: 有n种商品,每种商品有一个价格 p[i] . 每种商品都有2种打折方式: 1. 给你优惠 d[i] 元. 2. 免费送你第 f[i] 种饮料. 现在求每种饮料至少一瓶的最小花费. dp[i][ ...

  8. 基于GitLab+Jenkins的DevOps赋能实践

    随着微服务.中台架构的兴起,DevOps也变得非常关键,毕竟是一些基础设施层面的建设,如果搞好了对后面的研发工作会有很大的效率提升.关于DevOps本身的概念,网上已经非常多了,在园子里随便搜索一些都 ...

  9. Linux入门基础之一

    Linux 入门基础 一.Linux 系统安装 安装方法网上很多,请自行百度 二.Linux 基本操作 2.1.GNOME图形界面基本操作 操作类似于Windows系统操作 打开每一个文件夹都会打开一 ...

  10. PHPOffice 导入

    1.因为Phpexecel已经停止维护,所以要使用心得phpoffice; 2.注意引入 use PhpOffice\PhpSpreadsheet\Helper\Sample; use PhpOffi ...