域渗透-SPN
SPN:服务主体名称
SPN是使用kerberos协议的网络的服务的唯一标识符,每一个使用kerberos的服务都要有一个SPN。
当用户要访问某个服务:
首先向域控查询服务的SPN,得到SPN后与KDC进行通信,将TGT给KDC,KDC的TGS验证TGT的合法性,验证无误后TGS就发一个可以访问对应服务SPN的ST票据给用户,并返回服务的地址。用户可以使用ST票据去访问对应服务。
从上诉流程可见,通过向域控查询SPN(ldap查询)有助于渗透人员发现服务的主机。SPN识别是kerberoasting 攻击的第一步。
查看当前域内SPN命令:
setspn.exe -q */*
查看xx域内SPN命令
setspn.exe -T xx -q */*
SPN类型
1.注册在AD的机器账户下(Computers)
当服务的权限是Local System、Network Service时,SPN注册在AD的机器账户(Computer)下。域中的每个机器都会注册两个SPN:HOST/主机名、HOST/主机名.qsdomain.test
2。注册在AD的域账户下(Users),当一个服务权限为一个域用户,则SPN注册在Users下
SPN的格式:serviceclass/host:port/servicename
serviceclass:必需,服务名称
host:必需,主机名,两种表示hostname.qsdomain.test和hostname
port、servicename:非必需
注册SPN
在windows域内,普通的机器账号有权注册SPN,但是普通的域账号没有权限注册SPN
解决:在DC上给指定的域用户授予注册SPN的权限(“Read servicePrincipalName” 和 “Write serverPrincipalName” )、setspn手动注册
setspn是windows的一个二进制文件,可以查看、添加、删除SPN
setspn的命令
setspn -s <SPN> <account>#注册SPN
setspn -d <SPN> <account>#删除SPN
setspn -a <SPN> <account>#添加SPN
setSPN -L username/hostname#查看指定用户/主机注册的SPN
setspn.exe -q */*#查看当前域内SPN
setspn.exe -T xx -q */*#查看xx域内SPN
setspn -X#查找重复的SPN
普通的域账户没有注册SPN的权限:
一样的SPN不能注册到不同的账户上,需更改SPN格式(如改端口)
标签:exe,服务,SPN,xx,setspn,注册 From: https://www.cnblogs.com/q1stop/p/17935707.html