购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1.4 SPN

SPN(Service Principal Name,服务主体名称)是服务实例的唯一标识符。当域内存在大量的服务器时,管理员为了方便管理会对服务器进行标识,那么管理员进行标识所使用的方法就是SPN。

1.SPN类型

如图1-28所示,SPN分为以下两种类型,一种注册在活动目录的机器账户Computers下,另一种注册在活动目录的域账号Users下。

图1-28 SPN类型

(1)注册在活动目录的机器账户(CN=Computers)下

当某一个服务的权限为Local System或者Network service时,SPN会注册在机器账户下,同时所加入域的每台机器都会自动注册两个SPN,即“Host/主机名”和“Host/主机名.DC名”,如图1-29所示。

(2)注册在活动目录的域账号(CN=Users)下

当某一个服务的权限为一个域用户时,SPN会注册在活动目录的域账号下,如图1-30所示。

图1-29 注册在活动目录的机器账户下

图1-30 注册在活动目录的域账号下

2.SPN格式定义

以下为SPN格式定义,其中serviceclass服务类和host主机名为必要参数,port、servername、Domain user为可选参数。

❑serviceclass:服务类,如LDAP、MSSQL等。

❑host:主机名,可以是FQDN(完全限定域名)、NetBIOS名这两种形式的任意一种。

❑port:服务的端口号,如果使用的是默认端口,则可以省略。

❑servername:服务的专有名称、主机名、FQDN,是一个可选参数。

❑Domain user:域中的用户。

3.SPN服务实例名称

表1-2列举了一些常见的SPN服务实例名称。

表1-2 SPN服务实例名称

4.SPN服务注册

假设需要请求server1的HTTP服务并且想经过Kerberos协议的认证,那么就需要为server1注册一个SPN。为server1注册SPN之后,Kerberos就会将服务器实例和服务登录账号关联。在SPN服务注册方面,使用本地Windows自带的一个二进制的文件—Set SPN进行注册。操作流程如下。

1)以域管理员的身份登录域控制器,如图1-31所示。

2)打开PowerShell管理命令行,如图1-32所示。

图1-31 以域管理员的身份登录域控制器

图1-32 打开PowerShell管理命令行

3)以z3用户的身份进行SPN服务的注册(假设“z3”是一个HTTP服务的登录账号),如图1-33所示。

图1-33 以z3用户的身份进行SPN服务注册

4)通过“setspn-T”命令查看验证注册状态,如图1-34所示。

图1-34 通过“setspn-T”命令验证注册状态

注意

注册SPN服务主体时,需要域管理员的权限,以普通域账户进行SPN注册会提示权限不够,如图1-35所示。

图1-35 普通域账户进行SPN注册

5.SPN服务主体配置

一般情况下,都是通过setspn的方式对SPN进行手动注册,但手动注册的SPN存在一些丢失的情况。解决SPN丢失问题,最好的办法是让一些服务的启动域账号拥有自动注册SPN的权限,那么就需要在域控制器上对其开放读写SPN的权限,操作流程如下。

1)在域控制器上选择“Active Directory用户和计算机”选项,路径为“开始→所有程序→管理工具→Active Directory用户和计算机”,如图1-36所示。

图1-36 选择“Active Directory用户和计算机”选项

2)在“Computers”中找到一个计算机账户,右击该账户并选择“属性”,如图1-37所示。

图1-37 选择计算机账户的属性

3)在“属性”中选择“安全”选项卡,并点击“高级”按钮,如图1-38所示。

图1-38 配置“属性”的“安全”选项卡

4)选择要添加的网络控制器计算账户或组,单击“编辑”,在“属性”中选择“读取servicePrincipalName”“写入servicePrincipalName”两项,如图1-39所示。

图1-39 设置读取和写入servicePrincipalName权限

5)点击“确定”即可确认当前权限,如图1-40所示。

图1-40 确认当前权限

6.SPN服务查询

在内网域环境中进行信息收集的最好方式就是SPN扫描。对于红队来讲,通过SPN扫描进行信息收集比端口扫描的方式更加隐蔽。因为SPN扫描实际上就是对LDAP中存储的内容进行查询,并不会对网络上的每个IP进行端口扫描。而对域控制器发起的LDAP查询也是一种正常的Kerberos票据行为,其查询操作很难被检测出来,由此可以规避因端口扫描而带来的风险,提高红队自身的隐蔽性。以下列举了通过Setspn命令进行信息收集的常见用法。

1)查看当前域内的所有SPN。

2)查看指定用户或者主机名注册的SPN。

3)查找本域内重复的SPN。

4)删除指定用户或者主机名。 lK66gJdq6Sy3LvPK1FCnwnXVyNl5htngVWrpLXygqzS9c8VsgPQqUrMut3IvGhUW

点击中间区域
呼出菜单
上一章
目录
下一章
×