内网学习之SPN

SPN简介

SPN(Server Principal Names)服务主体名称,是服务实例的唯一标识符(例如:HTTP、SMB、Mysql等)。Kerberos身份验证使用SPN将服务实例与服务登录账户想关联。如果在整个林或者域中的计算机上安装多个服务实例,则每个实例都有必须具有自己的SPN,如果客户端可能使用多个名称进行身份验证,则给定服务实例可以具有多个SPN。SPN始终包含运行服务实例的主机的名称,因此服务实例可以为其主机的每个名称或别名注册SPN

如果想使用Kerberos协议来认证服务,那么必须正确配置SPN

当计算机加入域时,主 SPN 会自动添加到域的计算机账号的ServicePrincipalName 属性中。在安装新的服务后,SPN 也会被记录在计算机账号的相应属性中。

SPN分为两种类型:
1)注册在活动目录的机器账户(computer)下,当一个服务的权限为Local System 或 NetworkServer,则SPN注册在机器账户(Computers)下。
2)一种是注册在活动目录的域用户账户下,当一个服务的权限为一个域用户,则SPN注册在域用户账户下。

LADP协议

想要理解SPN就不得不先说明一下LDAP(Lightweight DirectoryAccessProtocol)[轻量级目录访问协议]

简单来说LDAP是一个协议,这个协议约定了Client(客户机)和Server(服务器)之间的信息交付格式,使用的端口号,认证方式等内容。而LDAP协议的实现,有着众多版本,例如微软的AD是在LDAP在Windows上的实现。

LDAP协议能解决什么问题?
用户服务:管理用户的域账号、用户信息、企业通信录(与电子邮箱系统集成)、用户组管理、用户身份认证、用户授权管理。按需实施管理策略等。
在Windows下,有组策略管理器,如果启用域账户认证,那么这些组策略可以统一管理,方便的限制用户的权限。
计算机管理:管理服务器及客户端计算机账户、所有服务器及客户端计算机加入域管理并按需实施组策略,甚至可以控制计算机禁止修改壁纸。
资源管理:管理打印机、文件共享服务、。网络资源等实施组策略。

SPN格式

在SPN的语法中存在四种元素,两个必须元素和两个额外元素
其中 为必须元素

/:/

<service class>:标识服务类的字符串
<host>:服务所在的主机名称
<port>:服务端口
<service name>:服务名称

SPN的利用

简单来说,SPN的利用就在于针对域内进行信息搜集,通过刚才SPN格式的介绍,可以看到,通过搜集setspn命令发现域内存在的SPN,可以大概的清楚域内的服务器结构,在不进行扫描的时候简单的进行域内情况的探测。

常用命令
setspn -Q */*   查看当前域内所有的spn
setspn -T o3rr0r.first -q */*  查看指定域o3rr0r.first注册的spn
setspn -X  查找本域内重复的spn
setspn -L username/hostname  查找指定用户/主机名注册的spn
setspn -U -A VNC/DC1.test.com Administrator  在指定账户或主机名下注册spn(需要域管理员权限)

setspn -D MSSQLSvc/WIN-dc.o3rr0r.com:hello Administrator  删除指定spn (需要域管理员权限)

setspn -A work/WIN-WORK.o3rr0r.first WIN-WORK  创建新的SPN
posted @ 2022-05-19 08:49  vir-k  阅读(696)  评论(0编辑  收藏  举报