提交需求
*
*

*
*
*
立即提交
点击”立即提交”,表明我理解并同意 《美创科技隐私条款》

logo

    产品与服务
    解决方案
    技术支持
    合作发展
    关于美创

    申请试用
      安全实验室 | 内网渗透—SPN与Kerberoast攻击
      发布时间:2020-12-10 阅读次数: 351 次

      相信大家通过对前几篇的内网渗透文章的阅读已经具备一定的渗透经验了,那么本期美创安全实验室将给大家带来关于内网渗透的进阶技巧,SPN与Kerberoast攻击,话不多说直接开始。


      01、什么是SPN


      相信大家可能对SPN这个概念有些模糊,在开始之前我们先来简单了解一下什么是SPN?


      SPN(ServicePrincipal Names)又名服务主体名称,是服务实例的唯一标识符,所谓的服务实例就类似于HTTP、SMB、MySQL等服务。说到这可能有些同学还是不清楚,SPN跟我们要讲的Kerberoast攻击到底有什么关系,别急,他们之间确实存在关系。


      说到Kerberos认证,我们在前几期文章中也详细分析过了,是内网中常见的一种认证手段。Kerberos认证过程需要使用SPN将服务实例与服务登录账户相关联,也就是说如果想使用 Kerberos 协议来认证服务,那么必须正确配置SPN。


      SPN分为两种类型:


      一种是注册在活动目录的机器账户(Computers)下,当一个服务的权限为 Local System 或 Network Service,则SPN注册在机器账户(Computers)下。


      一种是注册在活动目录的域用户账户(Users)下,当一个服务的权限为一个域用户,则SPN注册在域用户账户(Users)下。


      02、什么是Kerberoast攻击


      简单直白的说,Kerberoast攻击就是攻击者为了获取目标服务的访问权限,而设法破解Kerberos服务票据并重写它们的过程。这是红队当中非常常见的一种攻击手法,因为它不需要与服务目标服务进行任何交互,并且可以使用合法的活动目录访问来请求和导出可以离线破解的服务票据,以获取到最终的明文密码。


      之所以出现这种情况,是因为服务票据使用服务账户的散列(NTLM)进行加密,所以任何域用户都可以从服务转储散列,而无需将shell引入运行该服务的系统中。攻击者通常会选择那些可能设置了弱密码,破解成功率较高的票据来尝试破解。一旦攻击者成功破解出了票据,他们有时不仅仅获取的只是服务访问权限,如果服务被配置为在高权限下运行,那么整个域都将可能被攻击者拿下。


      一般来说Kerberoast攻击涉及以下几个步骤:


      SPN发现


      请求服务票据


      导出服务票据


      破解服务票据


      接下来我们进行一次模拟实验,依次完成以上步骤。


      03、Kerberoast攻击实验



      网络环境:


      内网目标机:192.168.210.102(Win10 处于HZMC域下)

      内网域控机:192.168.210.38(Win Server 2012)

      攻击机:192.168.20.35


      开始攻击:


      1. SPN发现


      攻击者在内网目标机上执行以下命令即可检索用户账户和服务之间的映射。利用SetSPN文件(Windows本地的二进制文件)还可以添加、删除SPN注册。

      Setspn -T <域名> -Q */*





      2. 请求服务票据


      攻击者在内网目标机上利用PoweShell脚本来实现特定的SPN请求服务票据,执行以下命令即可。其中<服务名称>指的是第一步中所列出的SPN服务,例如我们使用kadmin/changepw来作为测试,那么我们在最后需要加上kadmin/changepw即可。


      Add-Type -AssemblyName System.IdentityModel

      New-ObjectSystem.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "<服务名称>"





      3. 导出服务票据


      攻击者在请求完对应的服务票据后,可以利用Mimikatz来将票据进行导出,除了Mimikatz外还有一些其他的工具也可以实现这个目的,例如PowerShell、Empire等,如果是要使用Mimikatz的话需要执行以下命令即可。

      mimikatz # kerberos::list /export






      可以看到我们所需要的票据kadmin/changepw已经被成功导出。


      4. 爆破服务票据


      接下来攻击者为了避免爆破动静太大会引起防守人员警觉,可以将刚刚导出的票据复制到攻击机上,执行爆破。所依赖的爆破脚本可以采用一个开源的脚本来实现:


      https://github.com/nidem/kerberoast


      执行该脚本目录下的tgsrepcrack.py在构造一份用来爆破的密码字典,执行爆破即可。可以看到如果成功破解了kerberos票据会把域账户的明文密码显示出来。



      免费试用
      服务热线

      马上咨询

      400-811-3777

      回到顶部