zoukankan      html  css  js  c++  java
  • 【域渗透】AS-REPRoasting攻击

    一般kerberos请求当中中AS-REQ 的 cname 字段处写上用户名,还需要在AS-REQ的padta字段中填写一段数据,这段是由用户(administrator)hash作为加密算法的密钥,加密时间戳加密后的数据。在kerberos设计中,padata这个字段的值是可选的,如果不填写padata,意思就是想让KDC不经过认证将这个账户(administrator)的TGT返回,即使没有提供账户密码,默认情况下是需要提供认证后返回TGT,当设置了如下图所示属性,不需要提供认证也会返回TGT,但是不知道账户密码的情况下,是无法解密AS-REP里面与TGT相关的session key所以也没办法利用。

    第一部分为TGT,第二部分为encpart(session key)

    但是可以通过离线爆破去解决这个问题,向域控制器的88端口发送AS_REQ请求,会返回使用用户hash加密session-key,通过离线暴力破解 enc-part 可还原明文密码。

    查找设置了(不要求kerberos预认证的用户)可以通过ldap过滤查找userAccountControl:1.2.840.113556.1.4.803:=4194304,powerview已实现。

    Import-Module .powerview.ps1
    Get-DomainUser -PreauthNotRequired -Properties distinguishedname -Verbose

    通过工具获取到 hash( RC4-HMAC AS-REP),然后进行离线爆破github:https://github.com/HarmJ0y/ASREPRoast

    Import-Module .ASREPRoast.ps1
    Get-ASREPHash -UserName join -Domain redteam.com -Server DCIP | Out-File -Encoding ASCII hash.txt

    然后使用hashcat对获取到的HASH进行爆破,注意一点就是需要将上面获取到的hash,改为hashcat能识别的格式,在$krb5asrep后面添加$23进行拼接, 然后使用该命令进行爆破

    hashcat -m 18200 hash.txt pass.txt --force

    针对域外机器想要利用的话可以通过kerberos枚举的方式进行利用,后续利用方式与上述一样不再测试

    如果 KDC 给出的是 KRB_ERROR 响应,且 error-code 为 UNKNOWN_PRINCIPLE,则说明账号不存在

    如果 KDC 给出的是 KRB_ERROR 响应,且 error-code 为 PREAUTH-REQUIRED,则说明目标账号是存在的,但是因为我们没有提供 authenticator,所以导致出现了错误

    如果 KDC 给出的是 KRB_ERROR 响应,且 error-code 为 CLIENT_REVOKED,则说明账号存在,但是账号被禁用了

    如果 KDC 给出的是 AS-REP 响应,则说明账号存在,并且账号关闭了 pre authentication,此时我们应该可以直接从 AS-REP 响应中获取到这个账号的 TGT

    参考文章:

    https://attack.mitre.org/techniques/T1558/004/

    http://www.harmj0y.net/blog/activedirectory/roasting-as-reps/

  • 相关阅读:
    ElasticSearch常见经典面试题
    系统剖析Android中的内存泄漏
    Android Studio在导入eclipse的项目时一直卡在gradle:Configure project
    记录Android Studio项目提交到github上的出错处理
    如何将Android Studio项目提交(更新)到github
    MOB 短信验证
    mob免费短信验证码安卓SDK调用方法
    Git的安装与使用
    svn代码提交注意事项
    Fragment详解之三——管理Fragment(1)
  • 原文地址:https://www.cnblogs.com/websecyw/p/15246688.html
Copyright © 2011-2022 走看看