专栏首页FreeBufSPN服务主体名称发现详解

SPN服务主体名称发现详解

Kerberos是一种支持票证身份验证的安全协议。如果客户端计算机身份验证请求包含有效的用户凭据和服务主体名称 (SPN),则 Kerberos 身份验证服务器将授予一个票证以响应该请求。然后,客户端计算机使用该票证来访问网络资源。在内部网络中,SPN扫描通过 查询向域控制器执行服务发现。这对于红队而言,可以帮助他们识别正在运行重要服务的主机,如终端、交换机、微软SQL等,并隐藏他们。此外,SPN的识别也是kerberoasting攻击的第一步。

Tim Medin在他的Kerberos攻击演讲中很好地解释了SPN。Sean Metcalf还提供了一些有关SPN的资源,其中包括有关Active Directory服务主体名称的系列资源,可在本文结尾处找到。

SetSPN

SetSPN是一个本地windows二进制文件,可用于检索用户帐户和服务之间的映射。该实用程序可以添加,删除或查看SPN注册。

setspn -T pentestlab -Q */*

由于用户已经选择了密码,因此绑定到域用户帐户而不是计算机帐户的服务更可能被配置为弱密码,而对用户有规范名称的服务应该会成为Kerberoasting攻击的针对目标。以下SPN列表中, PENTESTLAB_001服务与用户帐户相关联。

GetUserSPNs

Tim Medin开发了一个PowerShell脚本,它是kerberoast工具包的一部分,可以帮助我们查询活动目录,以发现仅与用户帐户相关联的服务。

powershell_import /root/Desktop/GetUserSPNs.ps1

还有一个VBS脚本也是该工具的一部分,可以为我们提供相同的信息。该脚本可以通过使用本机Windows二进制cscript从Windows命令提示符执行。

cscript.exe GetUserSPNs.vbs

PowerShell AD Recon

除了Tim Medin开发的工具外,Sean Metcalf也开发了各种PowerShell脚本来执行Kerberos侦察。这些脚本是PowerShell AD Recon存储库的一部分,可以在Active Directory中查询服务,例如Exchange,Microsoft SQL,Terminal等。Sean将每个脚本绑定到一个特定的服务,具体取决于你想要发现的SPN。以下脚本将标识网络上的所有Microsoft SQL实例。

powershell_import /root/Discover-PSMSSQLServers.ps1
powershell_execute Discover-PSMSSQLServers

还可以使用PSMSExchangeServers脚本来查找Microsoft Exchange服务器。

powershell_import /root/Discover-PSMSExchangeServers.ps1
powershell_execute Discover-PSMSExchangeServers

枚举服务帐户很重要,因为这些帐户可能配置了弱密码。PasswordLastSet和LastLogon属性,可以为我们提供那些较有可能会设置弱密码的服务指示。

powershell_import /root/Find-PSServiceAccounts.ps1
powershell_execute Find-PSServiceAccounts

Empire

PowerShell Empire还有一个可显示域帐户的服务主体名称(SPN)的模块。

usemodule situational_awareness/network/get_spn

这些服务将以下列格式呈现。

PowerShellery

Scott Sutherland在将Get-SPN模块实现到Empire之前,已经创建了多个Powershell脚本作为PowerShellery的一部分,可以为各种服务收集SPN。其中一些需要PowerShell v2.0的环境,还有一些则需要PowerShell v3.0环境。

Get-SPN -type service -search "*"

结果我们也可以将其转换为表格的形式,以便于我们的浏览。

Get-SPN -type service -search "*" -List yes | Format-Table

这里我再告诉大家一个脚本,可以为我们获取UserSID,服务和实际用户。

Import-Module .\Get-DomainSpn.psm1
Get-DomainSpn

Impacket

服务主体名称(SPN)也可以从未加入域的系统中发现,impacket工具包下的python版GetUserSPNs可以为我们做到这点。但是,无法使用基于token的身份验证,因此与Active Directory进行通信需要获取有效的域凭证。

./GetUserSPNs.py -dc-ip 10.0.0.1 pentestlab.local/test

相关资源

https://adsecurity.org/?p=230

https://adsecurity.org/?p=1508

http://adsecurity.org/?page_id=183

https://github.com/nullbind/Powershellery

https://github.com/PyroTek3/PowerShell-AD-Recon

*参考来源:pentestlab,FB小编 secist 编译,转载请注明来自FreeBuf.COM

本文分享自微信公众号 - FreeBuf(freebuf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SPN扫描

    Kerberos是一种支持票证身份验证的安全协议。如果客户端计算机身份验证请求包含有效的用户凭据和服务主体名称 (SPN),则 Kerberos 身份验证服务器...

    信安本原
  • 内网渗透 | SPN 与 Kerberoast 攻击讲解

    内网渗透 | Kerberos 协议与 Kerberos 认证原理 内网渗透 | Kerberos 协议相关安全问题分析与利用

    HACK学习
  • 域控信息查看与操作一览表

    描述:Nltest是内置于 Windows Server 2008 和 Windows Server 2008 R2 的命令行工具。 如果您有 AD DS 或 ...

    WeiyiGeek
  • 红队技巧-域渗透的协议利用

    哈希传递(pth)攻击是指攻击者可以通过捕获密码的hash值(对应着密码的值),然后简单地将其传递来进行身份验证,以此来横向访问其他网络系统,攻击者无须通过解密...

    辞令
  • 红队技巧-域渗透的协议利用

    哈希传递(pth)攻击是指攻击者可以通过捕获密码的hash值(对应着密码的值),然后简单地将其传递来进行身份验证,以此来横向访问其他网络系统,攻击者无须通过解密...

    Gamma实验室
  • 域渗透技巧

    由于每台服务器都需要注册用于Kerberos身份验证服务的SPN,因此这为在不进行大规模端口扫描的情况下收集有关内网域环境的信息提供了一个更加隐蔽的方法。

    Gamma实验室
  • 网藤能力中心 | 深入Exchange Server在网络渗透下的利用方法

    在渗透测试中,往往会遇到企业内网环境中使用的一些常用组件,这些组件对内或对外提供了服务与接口,也给渗透测试人员与黑客提供了新的可尝试的攻击面,合理的利用组件服务...

    FB客服
  • 内网渗透 | 内网中的信息收集

    下文仅限于域内的信息收集,均不会涉及域内认证原理等概念,后面会对windows认证方式单独写一篇总结。

    HACK学习
  • 我所了解的内网渗透 - 内网渗透知识大总结

    一般想知道哪一台是域控知道自己内网的DNS就可以了,一般域控安装都有安装DNS有些不止一台,其次是通过扫描获取开放端口为389机器或者使用NLTEST命令查看。...

    HACK学习
  • Windows 系统信息收集姿势

    很多新入门的同学在在拿下一台服务器权限后经常会出现不知道做什么的问题,往往就会不管三七二十一提权 exp 一顿砸,在宕机的边缘疯狂试探。

    信安之路
  • Kerberoasting攻击

    当发布Windows 2000和Active Directory时,微软打算在 Windows NT 和Windows 95 上也支持Active Direct...

    信安本原
  • 记一次编写域账号弱口令审计工具

    为了进行相关安全方面的认证,需要对公司域环境内员工账号的密码进行审计,作为一名刚从事信息安全的人员,尝试在本身拥有的权限以内,在不影响其他员工日常工作、不影响服...

    FB客服
  • 域内信息搜集的另类玩法- 信息搜集篇 - 渗透红队笔记

    nltest在windows03以下不是内置的,在windwos03以后的机器都内置有。

    渗透攻击红队
  • [WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)

    在采用TLS/SSL实现Transport安全的情况下,客户端对服务证书实施认证。但是在默认情况下,这种认证仅仅是确保服务证书的合法性(通过数字签名确保证书确实...

    蒋金楠
  • 敞开的地狱之门:Kerberos协议的滥用

    作者 Rabbit_Run 微软的活动目录默认使用Kerberos处理认证请求。在BlackHat 2014上神器Mimikatz的作者剖析了微软实现的Kerb...

    FB客服
  • 实战 | 从外围打点到内网渗透拿下域控

    小弟不才,学了点内网知识就想练练手,社工一个fofa会员就跑了一手jboss的站,跑完之后无聊的时候就拿拿shell,看看有没有域环境熟悉下dos命令。

    HACK学习
  • 一次小型 APT 持久潜伏内网域渗透(上)

    大家好,这里是 渗透攻击红队 的第 62 篇文章,本公众号会记录一些红队攻击的案例,不定时更新

    渗透攻击红队
  • CDP私有云基础版用户身份认证概述

    对于任何计算环境来讲,身份验证是最基本的安全要求。简单来说,用户和服务必须先向系统证明其身份(身份验证),然后才能在授权范围内使用系统功能。身份验证和授权携手并...

    大数据杂货铺
  • Cloudera安全认证概述

    身份验证是任何计算环境的基本安全要求。简单来说,用户和服务必须先向系统证明其身份(身份验证),然后才能在授权范围内使用系统功能。身份验证和授权携手并进,以保护系...

    大数据杂货铺

扫码关注云+社区

领取腾讯云代金券