问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
关于Kerberos认证的一些攻击手法学习总结
渗透测试
本文主要分享最近学习的关于域内Kerberos认证的一些攻击手法,以自我的理解为主,从原理理解切入到基本工具利用来阐述
Kerberos认证流程 ============ 前言 -- 本文主要分享最近学习的关于域内Kerberos认证的一些攻击手法,以自我的理解为主,从原理理解切入到基本工具利用来阐述,个人的理解分析较为啰嗦,嫌太兀长的可以跳着看就好,还请各位谅解。如有错误,请师傅们提出更正 对于Kerberos认证流程只是简单的描述带过,下面有很多细节没有说明,比如PAC,S4U2SELF(委派),S4U2PROXY(委派)等。详细的解读推荐翻阅daiker师傅写的相关文章 本文主要环境利用的是红日靶场VulnStack - **域控 owa win2008R2 192.168.52.138** - **域主机 sut1 win7 192.168.52.130** - **域外主机 k0uaz win7(可访问到域控) 192.168.52.162**主要涉及主体和角色 --------- - Domain Controller 域控制器,简称DC,一台计算机,实现用户、计算机的统一管理 - Key Distribution Center 秘钥分发中心,简称KDC,默认安装在域控里,包括AS和TGS - Authentication Service 身份验证服务,简称AS,用于KDC对Client认证 - Ticket Grantng Service 票据授予服务,简称TGS,用于KDC向Client和Server分发Session Key(临时秘钥) - Active Directory 活动目录,简称AD,用于存储用户、用户组、域相关的信息。 - Client 客户端,指用户。 - Server 服务端,可能是某台计算机账户,也可能是某个服务。 过程和原理 ----- [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-cb338d0e5491bd71757ac9b6c4d383c7caf77ff8.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-cb338d0e5491bd71757ac9b6c4d383c7caf77ff8.png) 上图中涉及到了三个请求返回过程:Client与KDC的AS,Client与KDC的TGS,Client与Server,详细的请求响应如下 1. AS-REQ:Client向KDC(AS)发起一个认证请求,请求的凭据是Client的NTLM Hash加密的时间戳以及身份信息等 2. AS-REP:AS使用Client NTLM HASH进行解密,若检验正确则返回用KRBTGT HASH加密的TGT票据(再TGS-REQ中发送到TGS并用于换取ST),TGT里面包含PAC 3. TGS-REQ:Client获得TGT缓存在本地(不能解密),可用来向TGS换取访问相应服务的ST票据 4. TGS-REP:TGS使用KRBTGT HASH解密TGT,若结果正确,返回用提供服务的服务器的Server Hash(机器用户HASH)加密的ST(server ticket) 5. AP\_REQ:Client拿着获得的ST去服务器请求资源 6. AP\_REP:Server使用自己的Hash解密ST,若解密正确,则拿着获取的PAC去访问KDC判断Client是否有权限访问。KDC解密PAC后获取用户sid以及所在组的信息,并根据访问控制表(ACL)判断权限。若符合,Server返回资源给Client Kerberos相关安全问题 -------------- [![图片来自dariker师傅的文章](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-3b37ef1a2beff3edc841f789ef770c1e22548d9b.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-3b37ef1a2beff3edc841f789ef770c1e22548d9b.png) Pass The Key(Hash) ================== Pass the Hash ------------- Pass the Hash适用于NTLM认证也适用于Kerberos认证,不仅在域外,域内也可以使用。Kerberos认证中AS-REQ通过Client Hash加密相关信息发送给AS,因此如果我们获取到了Client的NTLM Hash,我们可以通过Pass The Hash横向获取其他主机的权限。 利用 -- 这里我们假设获得了在某台域机器上登录的域管NTLM HASH [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-b4f06f2422db3190abf9740e681338b87c4e55b2.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-b4f06f2422db3190abf9740e681338b87c4e55b2.png) 以下适用于PTH的工具 1. 使用Mimikatz,由于需要注入凭据到lsass中,因此需要本地管理员权限(bypassuac)去开启Sedebug,注入后可以使用该用户凭据访问域内主机 2. 使用wmicexec(py或者exe都有)去pth,不需要管理员权限,适用于直接远程执行命令 3. 使用cme去批量验证pth 4. 等等 这里以Mimikatz举例,hack用户(stu1的本地管理员组内成员,域用户) [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-30ed90a4bd08bbd96f6daeefadd1b82e52b945ea.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-30ed90a4bd08bbd96f6daeefadd1b82e52b945ea.png) 没有权限访问域控共享目录 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-3bbb3b175a7055c93b24d4c892cec35a18bc7b03.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-3bbb3b175a7055c93b24d4c892cec35a18bc7b03.png) mimikatz注入凭据后 `mimikatz "privilege::debug" "sekurlsa::pth /user:a /domain:god.org/rc4:b4ab235f987be3621a4ebd862189fd34"` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-e66fc5ae348b46bef95f548ed21c2352821044ce.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-e66fc5ae348b46bef95f548ed21c2352821044ce.png) Pass the Key ------------ mimikatz资料提示 > ntlm hash is mandatory on XP/2003/Vista/2008 and before 7/2008r2/8/2012 kb2871997 (AES not available or replaceable) ; AES keys can be replaced only on 8.1/2012r2 or 7/2008r2/8/2012 with kb2871997, in this case you can avoid ntlm hash. Pass the Key只能在域中使用,支持Aes加密方式的版本有win8.1/2012r2或者是安装了kb2871997补丁的win7/2008r2/8/2012 利用 -- 获取aes key [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-4f990fa3301efdeda76f1214225f5b28afae58a0.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-4f990fa3301efdeda76f1214225f5b28afae58a0.png) 然后同样使用sekurlsa::pth模块 `mimikatz "privilege::debug" "sekurlsa::pth /user:administrator /domain:god.org /aes256:bf723755bc5f72a377bda41ca58fd925df7ee45df9a026ac5cd320102a3a2e33"` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-c8322d9975f177e4d1480eb6bd3e2bbf02329d16.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-c8322d9975f177e4d1480eb6bd3e2bbf02329d16.png) 由于Win7主机没有打补丁,自然Pass The Key失败。在实战环境中,当不支持rc4加密方式的PTH的时候,可能是在Protected Users组中,这时可以尝试Aes128,Aes256加密方式来PTK Pass The Hash With Remote Desktop(Restricted Admin mode) -------------------------------------------------------- > 2014年,Microsoft发布了KB2871997补丁,它主要囊括了Windows 8.1和Windows Server 2012 R2中增强的安全保护机制。所以,以往的例如:Windows 7,Windows 8,Windows Server 2008R2和Windows Server 2012也可以更新该补丁后获得上述安全保护机制。 > ———————————————————————————————————————————————— > Restricted Admin RDP模式的远程桌面客户端支持: > 在此更新之前,RDP登录是一种交互式登录,只有在用户提供用户名和密码之后才可以访问。以这种方式登录到RDP主机时,会将用户凭据放置在RDP主机的内存中,如果主机受到威胁,它们可能会被窃取。此更新使RDP支持网络登录,其中可以传递用户现有登录令牌以进行RDP访问的身份验证。使用此登录类型可确保RDP服务器上不存储用户的凭据。从而保护凭据 通过上述解释可以理解该模式是为了保护使用RDP登录的用户凭据,通过网络验证的登录方式,RDP服务端不会保存用户的凭据 利用 -- win8.1以及win2012R2以上支持Restricted Admin mode模式,win8.1以及win2012R2默认开启Restricted Admin mode 条件:Client支持Restricted Admin mode模式,Server启用Restricted Admin mode模式 由于手头缺少win2012R2,因此这里使用两台Windows10来进行Pass The Hash With Remote Desktop 首先获取NTLM HASH [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-0120ddd358119becaf9031ccb6de30395307d7f4.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-0120ddd358119becaf9031ccb6de30395307d7f4.png) 利用mimikatz注入NTLM HASH(需先privilege::debug开启debug权限,这里截图截少了) `sekurlsa::pth /user:administrator /domain:192.168.226.137 /ntlm:9c3767903480e04c089090d27123eaf9 "/run:mstsc.exe /restrictedadmin"` /domain指定计算机名或者ip 这里不要选择始终要求凭据 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-4e13a0615058f5edd6a083771972cdbf6d5f2115.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-4e13a0615058f5edd6a083771972cdbf6d5f2115.png) 凭据正确但是没有开启Restricted Admin mode [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-83e31d0a754050cc252fa007cb0750ca3fa5b8f0.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-83e31d0a754050cc252fa007cb0750ca3fa5b8f0.png) 通过注册表开启(0为开启,1为关闭,需要完整管理员权限),然后再次进行RDP连接 `REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-6bf79ed83976270e0d730ce0f8f6a005f5609a99.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-6bf79ed83976270e0d730ce0f8f6a005f5609a99.png) 远程主机开启Restricted Admin mode后,RDP连接成功 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-caaaf34cf01e3040ecd195eee3af465c78ff5b2a.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-caaaf34cf01e3040ecd195eee3af465c78ff5b2a.png) 可以看到注入到内存中的Hash [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-12652817322288344dd8f12fa7b51e6d3a55537e.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-12652817322288344dd8f12fa7b51e6d3a55537e.png) 然后这里我又使用了管理员账户K0uaz,因此该Pass The Hash With Remote Desktop只需要目标的本地管理员权限即可,不一定是sid为500的本地administrator账户 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-60b9f31a52ea25b34623820974f73f55dd49370c.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-60b9f31a52ea25b34623820974f73f55dd49370c.png) 但是如果只是加入Remote Desktop Users,不在Administratros组内,是无法成功的,因为该机制就是针对受限的管理员的 AS-REP Roasting =============== 原理 -- 在AS\_REP中,KDC会返回一个有用户NTLM Hash加密的Session Key(该Sesions Key用于确保客户端和TGS之间的通信安全) [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-57100e5cd90905accadd51887a668de94c6b75e3.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-57100e5cd90905accadd51887a668de94c6b75e3.png) 在RC4\_HMAC加密方式下,我们可以通过穷举明文口令,利用相同加密流程加密明文口令,然后将加密结果对比密文是否相同来判断爆破结果 上图中返回的用户NTLM Hash加密的Session Key密文虽然是通过AES256加密的,但是这里我们同样可以使用**加密降级方式**(下文中Kerberoast突破用户支持AES加密转而返回RC4\_HMAC类型的加密数据使用的方法)指定客户端最高支持加密方式仅为RC4\_HMAC,使AS\_REP中返回的密文的加密方式为RC4\_HMAC,这样我们就可以破解该明文口令了 但是这里需要解决一个问题就是预认证的问题,在AS\_REQ中会生成一个有Client Hash加密的Timestamp发送到KDC,KDC通过解密该密文获得时间戳,如果解密成功并且时间戳在5分钟之内,则预认证成功,KDC通过该方式来检验客户端身份,以此有效防止暴力破解 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-405fbd7f28f8d6445893dd3d2928dce5f264bfd5.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-405fbd7f28f8d6445893dd3d2928dce5f264bfd5.png) [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-50d16624857c3096e8e6af28dba3d0f5c6e3288d.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-50d16624857c3096e8e6af28dba3d0f5c6e3288d.png) 至于为什么默认情况下会发送两次AS\_REQ,从harmj0y的文章中得到的解释是由于客户端提前并不知道支持的加密方式(这里我认为是具体到客户端不知道预认证中Timestamp的加密方式),因此请求获取KDC支持的加密方式 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-74837c6486eff629fbc034845744b0c28977f3e9.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-74837c6486eff629fbc034845744b0c28977f3e9.png) [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-ad89a8c932c7293045545cb632583fa2a83cb66d.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-ad89a8c932c7293045545cb632583fa2a83cb66d.png) 因此关闭预认证,我们就可以进行穷举爆破破解出明文口令 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-8ca97be893eb1da6bdb3ea1817e37b801b5385c0.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-8ca97be893eb1da6bdb3ea1817e37b801b5385c0.png) 关闭预认证后不再有二次的AS\_REQ,唯一一次的AS\_REQ也不会带有NTLM Hash加密Timestamp的密文 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-ad3e43880cbe89d4410bbe835d2414a97d305059.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-ad3e43880cbe89d4410bbe835d2414a97d305059.png) 利用 -- 可以通过LDAP查询具有`Do not require Kerberos preauthentication`属性的域用户 具体的查询条件为`userAccountControl:1.2.840.113556.1.4.803:=4194304` 这里以Rubeus举例 `Rubeus.exe asreproast /nowrap /format:hashcat` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-ed8dcd10d91c3c95ea472728b49a9e0e356a8f02.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-ed8dcd10d91c3c95ea472728b49a9e0e356a8f02.png) hashcat解密 `hashcat -m 18200 hash.txt passwords.dict --force` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-09ec3454840e143db9ef3e5de19c878a30c0bb1b.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-09ec3454840e143db9ef3e5de19c878a30c0bb1b.png) Rubeus asreproast原理分析 --------------------- 通过Wireshark分析流量可以看出该模块原理就是通过LADP查询该属性特征的域用户,然后批量发送AS\_REQ请求包,提取返回包中的NTLM Hash加密部分进行格式化输出适合于Hashcat爆破的形式 ldap查询: [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-010f36d36ef197c80219c99c9d58ff95ebcd5b7d.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-010f36d36ef197c80219c99c9d58ff95ebcd5b7d.png) 指定支持加密类型仅为RC4\_HMAC [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-58e8a2135461c997f76422841cf270c24ae1e53f.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-58e8a2135461c997f76422841cf270c24ae1e53f.png) 返回的密文使用RC4\_HMAC加密(因此可进行穷举爆破) [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5c28dd14e896e38fadf4c1f0467013e22d323a0f.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5c28dd14e896e38fadf4c1f0467013e22d323a0f.png) 黄金票据 ==== 特点 -- 1. 需要与DC通信(不需要与AS进行交互,需要与TGS) 2. 需要krbtgt用户的hash 原理 -- 在 Windows 的kerberos认证过程中,Client将自己的信息发送给 KDC,然后 KDC 使用 Krbtgt 用户的 NTLM-Hash 作为密钥进行加密,生成 TGT。那么如果获取到了 Krbtgt 的 NTLM-Hash 值,不就可以伪造任意的TGT了吗。因为Krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门。 条件 -- 1、域名称 2、域的SID值 3、域的KRBTGT账户密码HASH 4、伪造用户名,可以是任意的(TGT使用期限20分钟之内,域控制器KDC服务不会验证TGT中的用户账户) 当我们获取到krbtgt的Hash的时候,我们就可以用来制作黄金票据 假设我们已经通过dcsync的攻击手法(下文中有解释和实践)获取到了krbtgt的hash [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-765c2519d7ce1d0da53e5451ea896305e8223d67.jpg)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-765c2519d7ce1d0da53e5451ea896305e8223d67.jpg) 条件1:spn扫描获取域名称god.org [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-52ae075ef152a19930658109bd1a7e8f56facd82.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-52ae075ef152a19930658109bd1a7e8f56facd82.png) 条件2:whoami /all获取域用户sid,域的SID去掉最后的一串 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-127665d2a667946857850f108d3dc591ba893814.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-127665d2a667946857850f108d3dc591ba893814.png) 条件3:krbtgt账户Hash `58e91a5ac358d86513ab224312314061` 条件4:伪造用户名 `administrator` 制作黄金票据 ------ 利用mimikatz kerberos::golden伪造tgt > 黄金票默认组: > 域用户SID:S-1-5-21 <DOMAINID> -513 > 域管理员SID:S-1-5-21 <DOMAINID> -512 > 架构管理员SID:S-1-5-21 <DOMAINID> -518 > 企业管理员SID:S-1-5-21 <DOMAINID> -519(只有在森林根域中创建伪造票证时才有效,但为AD森林管理员权限添加使用/sids参数) > 组策略创建者所有者SID:S-1-5-21 <DOMAINID> -520 `mimikatz.exe "kerberos::golden /domain:god.org /sid:S-1-5-21-2952760202-1353902439-2381784089 /user:administrator /krbtgt:58e91a5ac358d86513ab224312314061 /ticket:k0u.kiribi" exit` tip:可添加`/endin:xx /renewmax:xx`修改票据的有效期以及续订票据最长有效期,mimikatz默认都是10年 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5e627a5e6adf0cbd545bd661f22bb02ed37e5905.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5e627a5e6adf0cbd545bd661f22bb02ed37e5905.png) 生成的票据可以到其他域机器上导入,也可以直接使用/ptt将tgt注入内存 首先先清空票据缓存klist purge [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-13a92786be01ccbb7bb74ad47da12eb803e2c410.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-13a92786be01ccbb7bb74ad47da12eb803e2c410.png) 然后通过mimikatz`kerberos::ptt k0u.kiribi`注入到缓存票据中 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-dcade3608d12effc5c1d5833f90f2926c46c93c6.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-dcade3608d12effc5c1d5833f90f2926c46c93c6.png) klist查看票据缓存可以看到伪造的tgt了 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-7a5d69a91425419ffc035618e3ad226907a251d9.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-7a5d69a91425419ffc035618e3ad226907a251d9.png) 这时就获取到了非常高的权限了 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5cf953e15a612babfc7e2f3eacc5718085cdcf92.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5cf953e15a612babfc7e2f3eacc5718085cdcf92.png) klist purge清空票据缓存后 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-0562e526f307b332e14118ccdd80b81fa9b06dc5.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-0562e526f307b332e14118ccdd80b81fa9b06dc5.png) ```php Tips: 普通黄金票据存在局限性,适用于单域内,不适于域森林中 ``` Pass The Ticket =============== Kerberos除了第一步需要Client端的用户NTLM Hash加密验证,后续的操作都是通过票据(Ticket)来验证,因此我们如果拿到了票据或者伪造了票据,我们就可以通过该票据来横向移动,黄金票据和白银票据以及MS14068的利用都可以算做是Pass The Ticket的一种攻击方式 利用 -- ### Mimikatz 通过Mimikatz导出内存中的票据 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-7b8f84b3715ca093cd67c34f25c2459204e7e9f0.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-7b8f84b3715ca093cd67c34f25c2459204e7e9f0.png) (管理员权限开SeDebug)`Mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" exit` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-8283bc3b296657ed317439abfb363eea9aceae80.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-8283bc3b296657ed317439abfb363eea9aceae80.png) 这时,我们抓到了域管的TGT,我们就可以注入域管的TGT到缓存并且使用该TGT来向TGS换取相应的服务凭证ST (不需要管理员权限)此时以god.org\\hack域用户(Stu1本地管理员权限)访问域控的Cifs共享服务是提示没有权限被拒绝的,这里注入域管的TGT到缓存后可成功访问 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-a0f1abb171dfb459c8b18edc4322bdd0596d7101.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-a0f1abb171dfb459c8b18edc4322bdd0596d7101.png) ### Rubeus Rubeus,利用C#实现Kekeo中的部分函数攻击手法等,该工具主要是针对Kerberos的一些攻击方式集成化的利用工具 导出内存中的票据 (管理员权限)`Rubeus.exe dump >test.txt` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-a94217ada2e021bd621fa346d97f756876a81c91.jpg)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-a94217ada2e021bd621fa346d97f756876a81c91.jpg) 箭头指向的就是base64编码后的.kirbi 可以直接通过Rubeus导出base64编码形式的凭据或者转化为文件形式,文件形式可以和Mimikatz`Kerberos::ptt xxx.kirbi`导入票据互相通用 `Rubeus.exe ptt /ticket:base64`(需要处理下导出的base64编码格式,删除多个空格,删除换行,可以通过添加/nowrap参数不换行) [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-34906e80f1380ebfaf355d40290aa4d3b2f3d797.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-34906e80f1380ebfaf355d40290aa4d3b2f3d797.png) [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-65e75927942f729ace602fdccedd8a3d32341ee1.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-65e75927942f729ace602fdccedd8a3d32341ee1.png) 导入后可以通过`Rubeus.exe klist`查看缓存的票据 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-b28e9ccf32d93416038e7fc34d5bd3d7c2e7777e.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-b28e9ccf32d93416038e7fc34d5bd3d7c2e7777e.png) 以域管的高权限票据可访问域控共享服务 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-bb4fd3b5c87e256cab3fa2b8f76934d20214c6c1.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-bb4fd3b5c87e256cab3fa2b8f76934d20214c6c1.png) 也可以使用`/ticket:file.kirbi`的形式 可以通过Powershell调用.net类库的system.io命名空间中的file类中WriteAllBytes方法将base64编码解码后写入文件中 `[IO.File]::WriteAllBytes("Adcontrol.kirbi", [Convert]::FromBase64String("处理后的凭据Base64编码"))` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-d72b9cdf344aaab293a30561e194f9e54469016a.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-d72b9cdf344aaab293a30561e194f9e54469016a.png) 导入`Rubeus ptt /ticket:file.kirbi` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-a5183d70afa526afc663339f5edf7ab9530ac8a6.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-a5183d70afa526afc663339f5edf7ab9530ac8a6.png) ```php Tips: 票据文件注入内存的默认有效时间为10小时 Klist Purge清除缓存后注入的TGT也随着被清除 ``` Kerberoasting ============= 原理 -- 在kerberos认证流程中的TGS\_REP中返回的是Server Hash(Ticket)以及Session Key(Server Session Key),其中最为重要的是通过服务的NTLM Hash为密钥加密生成的ST票据。当认证加密算法为RC4\_HMAC(弱加密类型)时,我们可以通过穷举口令,利用相同的加密过程获得密文,将获得的密文与ST票据中的密文比较,若相同,则说明口令正确,成功爆破获得服务凭据的明文 Tip:服务票据会使用服务账户的哈希进行加密,在Windows中使用服务主体名称(SPN)来确定使用哪个服务帐户的哈希来加密服务票证 (服务主体名称)SPN ----------- 服务主体名称(SPN:ServicePrincipal Names)是服务实例,Kerberos 身份验证使用 SPN 将服务实例与服务登录帐户相关联 SPN的格式为:`serviceclass/host:port/servicename` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-f76d0d8f4ba941e566b1c600d95c77f761fd92dc.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-f76d0d8f4ba941e566b1c600d95c77f761fd92dc.png) SPN是域内一个服务的唯一标示名称,SPN类型分为两种: 1. 一种注册在AD上机器帐户(Computers)下,当一个服务的权限为Local System或Network Service,则SPN注册在机器帐户(Computers)下,比如SMB或者远程注册表服务 2. 另一种注册在域用户帐户(Users)下,当一个服务的权限为一个域用户,则SPN注册在域用户帐户(Users)下,此时访问某个服务,返回的ST票据中加密的服务票据就是服务账户的票据即SPN与服务所对应相关联的账户的凭据 Tips: Setspn -Q \*/\*查询所有的SPN 可以通过LADP将域用户属性servicePrincipalName设置为目标SPN 可以通过LDAP来快速检索哪些域用户拥有servicePrincipalName属性来找到寻找爆破目标(低权限即可) 实现要点 ---- 寻找有价值的SPN : `寻找基于域账户的(最好是高权限)SPN,基于主机的SPN密码复杂随机且30天自动更换一次,因此难以破解` 获得RC4\_HMAC加密形式的ST票据 : `支持RC4_HMAC或启用AES认证加密但是未禁用RC4_HMAC` 利用 -- 首先为域用户`liukaifeng01`关联一个SPN [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-457f578cf9ba4288b5cd0f7e78821347a4faa950.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-457f578cf9ba4288b5cd0f7e78821347a4faa950.png) ### 老方法 用到的工具为`kerberoast` 首先通过遍历SPN(筛选有价值的SPN),然后对获得的所有SPN发起TGS请求获取ST票据缓存到本地(Mimikatz中的kerberos::ask可实现发起单个TGS请求),再通过Mimikatz等工具导出ST凭据,然后通过爆破脚本[tgsrepcrack.py](https://github.com/nidem/kerberoast/blob/master/tgsrepcrack.py)尝试爆破出明文口令 ### 新方法 用到的工具为`Invoke-kerberoast` 较新的方式是一步到位,(首先通过LDAP查询带有ServicePrincipalName属性的域用户)不需要发送TGS请求后通过Mimikatz导出ST凭据了,通过微软提供的类[KerberosRequestorSecurityToken](https://docs.microsoft.com/en-us/dotnet/api/system.identitymodel.tokens.kerberosrequestorsecuritytoken?redirectedfrom=MSDN&view=netframework-4.7.2)直接发起TGS请求,然后再返回的内容中提取加密的ST票据进行格式化,方便使用John和Hashcat来破解 这里举例使用的工具是Rubeus,该工具同样实现了Invoke-kerberoast的功能 `Rubeus kerberoast`(普通域用户权限即可) [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-cc17e74782236ad0cbd69ebc9d5acf11c2d6eef8.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-cc17e74782236ad0cbd69ebc9d5acf11c2d6eef8.png) 如果复制粘贴不方便,可以使用`/outfile:path`指定Hash参数的写入路径 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-e2a79a67c992b01bddc672a64b4a6fdbecdca25f.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-e2a79a67c992b01bddc672a64b4a6fdbecdca25f.png) Rubeus返回的Hash参数对应的值就是hashcat官方指定的RC4\_HMAC加密方式破解的格式 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-bbd6edfa6bd283ee0b987047f741cf9bdfc5623b.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-bbd6edfa6bd283ee0b987047f741cf9bdfc5623b.png) kali中使用hashcat爆破 `hashcat -m 13100 hash.txt passwords.dict --force` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-9d0a1e0685ce11020cbf7f2f249eeafd3035975f.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-9d0a1e0685ce11020cbf7f2f249eeafd3035975f.png) 加密降级突破AES加密类型 ------------- 首先设置用户启用`AES`加密,通过AD用户和计算机管理设置`liukaifeng01`用户启用AES加密[![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-eac34dd7f2b7e0ddf0cc7755a432340c37c70a8a.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-eac34dd7f2b7e0ddf0cc7755a432340c37c70a8a.png) LDAP查看`msDS-SupportedEncryptionTypes`属性 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-d8dd1c4da3c53da3c328ba82777966e92d8d46e7.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-d8dd1c4da3c53da3c328ba82777966e92d8d46e7.png) 这时候再进行Kerberoast时,返回的票据加密类型为AES256 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-1de0132f1418683b98cc8392348c78f241ca9f5d.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-1de0132f1418683b98cc8392348c78f241ca9f5d.png) 抓包查看TGS\_REQ,可以看到客户端向服务端提供了支持的加密算法,包括`RC4`和`AES`加密 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-ba9ba64e9d9329962085ae02cf5951689bfa29cc.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-ba9ba64e9d9329962085ae02cf5951689bfa29cc.png) 通过查看TGS\_REP可以发现返回的ST票据中使用的算法是最高支持的加密类型=>`AES256` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-b55ab3d48f98919f4d7b3a6db0a34511c96994f3.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-b55ab3d48f98919f4d7b3a6db0a34511c96994f3.png) 那这里就可以提出一个猜想,如果我们在TGS\_REQ中提供最高的支持的加密算法是`RC4`,呢么TGS\_REP中返回的加密方式是否也会是`RC4`呢 在Rubeus中已经实现了该方法,并且确实有效 `Rubeus kerberoast /tgtdeleg` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-16f47c7c483b12a1bf34d61c87bcbb2714401275.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-16f47c7c483b12a1bf34d61c87bcbb2714401275.png) TGS\_REQ请求包中支持的加密算法仅为`RC4` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5a619c36343e480c1b28ce129b1bfd0ba58ff806.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5a619c36343e480c1b28ce129b1bfd0ba58ff806.png) 虽然域用户`liukaifeng01`支持的加密方式是`AES`,但是得到的是一个`RC4`加密的票据,这样获得的票据仍然是可以破解的 解决加密降级的办法只有在组策略中的安全策略Kerberos验证中彻底禁用`RC4` 白银票据 ==== 特点 -- 3. 不需要与域控(KDC)交互 4. 需要目标服务的NTLM Hash(获取Server Hash伪造TGT) 原理 -- [![来自倾旋师傅的图](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-ef47201a183d0a37dcb43838937403d50b9bb098.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-ef47201a183d0a37dcb43838937403d50b9bb098.png) 在第三步认证中的Ticket的组成: `Ticket=Server Hash(Server Session Key+Client info+End Time)` 如果我们有了Server Hash的话,我们就可以伪造ST,服务器在没有收到ST之前是不知道Server Sessoin Key的,所以这一切的认证最重要的就是Server Hash,有了Server Hash我们就可以伪造ST来访问指定的服务。这里的Server Hash指的就是机器用户的Hash,机器用户其实就是System用户 条件 -- 1、域名称 2、域的SID值(SID值,注意是去掉最后一个-后面的值) 3、域中的Server服务器账户的NTLM-Hash 4、伪造的用户名,可以是任意用户名. 5、目标服务器上面的kerberos服务 制作白银票据 ------ 这里还是以域控owa举例,通过mimikatz获取机器账户的Hash [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-cb2bfb342b7edd21adb8cf6e7e9ce66f43cd30d6.jpg)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-cb2bfb342b7edd21adb8cf6e7e9ce66f43cd30d6.jpg) 获取hash后,通过mimikatz制作白银票据(部分条件上述黄金票据实践中已经获得),目的服务是cifs 正常情况是普通域用户hack没有权限访问: [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-785d2b6dc63fd890b75f88ac800488f8636119f7.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-785d2b6dc63fd890b75f88ac800488f8636119f7.png) 通过mimikatz制作白银票据并直接导入 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-11c5394b244cd7b930b4100329593098eddb28bb.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-11c5394b244cd7b930b4100329593098eddb28bb.png) 查看当前票据 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-9cfb75ea34c078bcc3970d2e3493792d2c3fc481.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-9cfb75ea34c078bcc3970d2e3493792d2c3fc481.png) 成功访问共享目录 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-cecc3a4e60c7f963a4f406be977a237e5eb683fb.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-cecc3a4e60c7f963a4f406be977a237e5eb683fb.png) 但是这里与正常的加密类型是不同的,Mimikatz的伪造是`RC4`的加密类型,而正常的SPN关联在机器账户下的一般都是`AES`加密,因此对于伪造访问服务CIFS的ST票据而言,白银票据的流量也比较容易识别 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-e6f2bc7a89726154837fe19c629c66ad75d0f7ec.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-e6f2bc7a89726154837fe19c629c66ad75d0f7ec.png) 常见的伪造服务类型如下 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-f240da6aba14ae3b282cf53508c7c6818d77cb18.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-f240da6aba14ae3b282cf53508c7c6818d77cb18.png) ```php Tips: 开启PAC验证可防御白银票据(Server发送PAC的数字签名给KDC校验) ``` 用户名枚举和口令暴力破解 ============ 三种情况 ---- ### 存在用户 存在用户描述:`error_code:eRR-PREAUTH-REQUIRED` 密码错误描述:`error_code:eRR-PREAUTH-FAILED` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-d73c3165db8f2493de4ee670ee7c3d64115e8b61.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-d73c3165db8f2493de4ee670ee7c3d64115e8b61.png) ### 不存在的用户 描述:`error_code:eRR-C-PRINCIPALL-UNKNOWN` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-8cc8a1d7126308df4ba64416a12ab9d929c9e3a3.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-8cc8a1d7126308df4ba64416a12ab9d929c9e3a3.png) kerbrute -------- ### 使用场景 不在域内的情况下且无法通过LDAP或者SAMR协议去获取域内用户(如果掌握域内用户名以及密码,域外也可通过LDAP与域控交互获取信息) 若攻击主机在域外,需要主机能与域控直接交互 不会有像LDAP暴力破解产生的日志(4625 - An account failed to log on) ### 主要原理 发送构造的AE-REQ请求包后,通过返回的包的区别来判断用户是否存在以及密码是否正确 ### 用户名枚举 域内 `kerbrute_windows_amd64.exe userenum -d god.org username.txt` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-909a060a9f477fa928cc8d34c7a00a4ad05b2311.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-909a060a9f477fa928cc8d34c7a00a4ad05b2311.png) 域外 `kerbrute_windows_amd64.exe userenum --dc 192.168.52.138 -d god.org username.txt` 需指定Dc的ip地址 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-2ad6b469ac07bf6cf3b435ff0eb6d0322bbf8ba5.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-2ad6b469ac07bf6cf3b435ff0eb6d0322bbf8ba5.png) ### 密码喷洒 指定密码,遍历用户名 `kerbrute_windows_amd64.exe passwordspray -d god.org username.txt Abc123!` 第一个包发送用户名[![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-c7c7864ea438a1fd5bca1bcc87ca493206beaf72.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-c7c7864ea438a1fd5bca1bcc87ca493206beaf72.png) DC返回用户名正确后发送第二个AS-REQ,其中包含了密码的NTLM HASH [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-8d98585731af2bc19879a1e94159eb5d63e2e187.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-8d98585731af2bc19879a1e94159eb5d63e2e187.png) pyKerbrute ---------- 3gstudent师傅实现的Python版本的kerbrute,添加了两个功能 ◼增加对TCP协议的支持 ◼增加对NTLM hash的验证 ### 用户名枚举 EnumADUser.py主要实现的就是发一个As-REQ结构的包修改CnameString即可(固定sname指向krbtgt) [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-15c1f2e035d606841d22c0860f886e5798879b97.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-15c1f2e035d606841d22c0860f886e5798879b97.png) EnumADUser.py : `EnumADUser.py 192.168.52.138 god.org user.txt tcp` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5a2fe656cc4b63ab3b577bdc533e3c25e62c0aaf.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5a2fe656cc4b63ab3b577bdc533e3c25e62c0aaf.png) 与kerbrute发送的数据包稍有区别[![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-99dc8f0cc7f2d847f319a163b4b113aeca79ee85.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-99dc8f0cc7f2d847f319a163b4b113aeca79ee85.png) ### 密码喷洒 首先pyKerbrute分成了两种模式,clearpassword和ntlmhash classpassword:实现了将明文加密成NTLM Hash然后通过RC4-HMAC加密算法加密时间戳,然后也可以通过ntlmhash模块来密码喷洒 ntlmhash:直接通过RC4-HMAC-MD5加密算法加密时间戳 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-d1634c41177b4f376398f6ec6c71da3722b89157.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-d1634c41177b4f376398f6ec6c71da3722b89157.png) ADPwdSpray.py : `ADPwdSpray.py 192.168.52.138 god.org username.txt clearpassword Abc123! udp` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-0370454bf3cbf8533b7b55704e4ef5e2d8c88a58.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-0370454bf3cbf8533b7b55704e4ef5e2d8c88a58.png) 与kerbrute发送的数据包在支持的加密算法上有较大区别,不如kerbrute隐秘 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-bac891918d34bf22e612ce745e4b0f6fa8b942e7.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-bac891918d34bf22e612ce745e4b0f6fa8b942e7.png) pyKerbrute这里就发送了一个包,没有发送判断用户名是否存在,直接请求认证,且加密算法指定了RC4-HMAC-MD5,kerbrute支持多种加密方法 稍微看了下Kerbrute的代码,发现实现的方法NewWithPassword来自[gokrb5](https://github.com/jcmturner/gokrb5)这个库,该库便利了用于客户端与服务端的Kerberos相关认证,而且库中实现了众多的加密算法 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-709406834efb6bbe22b002f1b0a34c48f2c8a0c0.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-709406834efb6bbe22b002f1b0a34c48f2c8a0c0.png) Kerberos pre-auth bruteforcing的检测 --------------------------------- Kerbrute使用Kerberos pre-auth协议,不会产生日志(4625 - An account failed to log on) 但是会产生以下日志: ◼口令验证成功时产生日志(4768 - A Kerberos authentication ticket (TGT) was requested) ◼口令验证失败时产生日志(4771 - Kerberos pre-authentication failed) 我自己本地域控查看日志发现,存在4768,但是用户正确,密码错误并不会爆出4771,没有任何提示 ### 成功 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-8a992b6e4fc108affb0033d25c2805526e2b8f2e.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-8a992b6e4fc108affb0033d25c2805526e2b8f2e.png) ### 失败 空 ### 解决 通过查阅资料,找到了修改登录策略的地方,具体可查看[Audit Kerberos Authentication Service](https://www.manageengine.com/products/active-directory-audit/how-to/audit-kerberos-authentication-events.html) [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-1189ecaef03483285b03bb77747e96a8d0e1309f.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-1189ecaef03483285b03bb77747e96a8d0e1309f.png) 修改审核策略后可捕获到4771类型: [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-7836063694719b6219fc44040c21f2e90d103dcd.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-7836063694719b6219fc44040c21f2e90d103dcd.png) [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5990b952b81f8cff3bf24db9f2a27c5514228c11.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5990b952b81f8cff3bf24db9f2a27c5514228c11.png) [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-e6ad26612017542b6046101c3583aba1790588f8.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-e6ad26612017542b6046101c3583aba1790588f8.png) Dcsync攻击 ======== DCSync攻击原理 ---------- 利用目录复制服务远程协议(DRSR)协议从域控制器获取敏感信息 将当前主机伪装成域控制器(DC),并通过发出请求说服真实的DC将其数据库与该主机伪装的恶意DC同步 利用条件 ---- 需要具备如下扩展权限对应的DACL [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-495cc3d168c62f9b8701b369fa2c7e497abf2333.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-495cc3d168c62f9b8701b369fa2c7e497abf2333.png) 根据3gstudent师傅的文章总结如下的组内用户具有上述权限 ◼Administrators组内的用户 ◼Domain Admins组内的用户 ◼Enterprise Admins组内的用户 ◼域控制器的计算机帐户 实践 -- 这里指的Administrator组内的用户不是指域机器上的本地Administrators,而是域控制器上的本地Administrators组。这里以红日靶场一举Administrators组内用户的例子 比如`likaifeng01`这个用户,通过域控查看工具,或者终端DOS命令查看`liukaifeng01`所在的组 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-12dbaf96f69fa6f48e0e89ccf37318b5d7caea97.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-12dbaf96f69fa6f48e0e89ccf37318b5d7caea97.png) 该用户是域控本地管理员组成员,但不是域管成员 通过Powerview的Get-DomainObjectAcl来获取该成员的ACL控制列表查看上述三项权限 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5eee2e0e2c17230852b4369b2d65bb4279839608.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5eee2e0e2c17230852b4369b2d65bb4279839608.png) 1. DS-Replication-Get-Changes-In-Filtered-Set [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-b95b22969c20553cefabeac5c5ac62e57b1720a1.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-b95b22969c20553cefabeac5c5ac62e57b1720a1.png) 2. DS-Replication-Get-Changes [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-b5b61b1e999e789d8d2a5c7a4de84ae9911311fe.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-b5b61b1e999e789d8d2a5c7a4de84ae9911311fe.png) 3. DS-Replication-Get-Changes-All [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-3bad35043fb0277e9efb47969f937d5f5a14b37a.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-3bad35043fb0277e9efb47969f937d5f5a14b37a.png) 满足上述三项权限,通过mimikatz的dcsync功能来导出Hash [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5e023ae928c4ce6eb542e1ca2cb3328ab6d24224.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5e023ae928c4ce6eb542e1ca2cb3328ab6d24224.png) 也可以通过[PowerView](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)来直接为普通域用户一次性加上上述的三条特权,就可以具有执行Dcsync攻击的权限了,可以作为一种权限维持的方法 首先添加一个普通域用户`hack`,利用`hack`直接Dcsync会失败 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-34109e5f240818d42c08923e6a9aa68da693b768.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-34109e5f240818d42c08923e6a9aa68da693b768.png) 以管理员权限通过PowerView给域用户hack加上三个扩展特权 `Add-DomainObjectAcl -TargetIdentity "DC=god,DC=org" -PrincipalIdentity hack -Rights DCSync -Verbose` 然后通过ADfind.exe或者Get-DomainObjectAcl查看用户拥有的特权 `AdFind.exe -sc getacls -sddlfilter ;;;;;god\hack -recmute` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-a206a8d716a5b13907055db6f375d27dcda9ea12.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-a206a8d716a5b13907055db6f375d27dcda9ea12.png) `Get-ObjectAcl -Identity "dc=god,dc=org" -ResolveGUIDs | ? {$_.SecurityIdentifier -match "S-1-5-21-2952760202-1353902439-2381784089-1111"}` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-cfd241a2f70ee970c91e6b59683482f32d48964a.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-cfd241a2f70ee970c91e6b59683482f32d48964a.png) 图截不全,上面已经证明hack用户有这三个权限后,再次通过mimikatz来调用dcsync模块,可获取全部的Hash [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-1315abe566fe3c45e18380756df5b79ff5eb79b0.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-1315abe566fe3c45e18380756df5b79ff5eb79b0.png) 然后删除该用户的三个扩展特权可以用如下命令 `Remove-DomainObjectAcl -TargetIdentity "DC=god,DC=org" -PrincipalIdentity hack -Rights DCSync -Verbose` 删除后再次使用Dcsync模块,已不能获取 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-c29723672ea43383afcfdfd9001c520ea37215cc.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-c29723672ea43383afcfdfd9001c520ea37215cc.png) ```php Tips Dcsync攻击可以作为权限维持的方式=>拿到高权限后可以通过Powerview中的Add-DomainObjectAcl给普通用户添加上述三个特权,使普通用户仍然可以通过Dcsync获取所有Hash ``` 工具地址 ---- [kerbrute](https://github.com/ropnop/kerbrute/releases) [pyKerbrute](https://github.com/3gstudent/pyKerbrute) [Rubeus](https://github.com/GhostPack/Rubeus) [kerberoast](https://github.com/nidem/kerberoast/) [Invoke-Kerberoast](https://github.com/EmpireProject/Empire/commit/6ee7e036607a62b0192daed46d3711afc65c3921) 学习参考链接 ====== 上文学习总结自3gstudent文章,倾旋博客,unknowsec博客,car7n博客,Muxueo博客,harmj0y博客,安全客等等 当时看的有点太杂了,整理完笔记后发现很多粗看的文章都没记下来文章链接 [渗透技巧——通过Kerberos pre-auth进行用户枚举和口令爆破](https://www.4hou.com/posts/N5om) [Kerberos的黄金票据详解](https://www.cnblogs.com/backlion/p/8127868.html) [Kerberos的白银票据详解](https://www.cnblogs.com/backlion/p/8119013.html) [彻底理解Windows认证 – 议题解读](https://www.secpulse.com/archives/94848.html) [手把手教你入门内网渗透之二](https://www.anquanke.com/post/id/222269) [Kerberos](https://www.cnblogs.com/car7n/p/14789310.html) [Pass the Hash with Remote Desktop(Restricted Admin mode)](https://3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Pass-the-Hash-with-Remote-Desktop(Restricted-Admin-mode)) [【技术分享】Kerberoasting:一种Kerberos活动目录攻击方法](https://www.anquanke.com/post/id/87050) [域渗透——Kerberoasting](https://www.4hou.com/posts/G9AJ) [高级域渗透技术之再谈Kerberoast攻击](https://www.4hou.com/posts/6m99) [Roasting AS-REPs](https://www.harmj0y.net/blog/activedirectory/roasting-as-reps/) 关于PAC ===== 对于PAC有疑惑的可以看下面的下四篇文章 [Windows内网协议学习Kerberos篇之PAC](https://www.anquanke.com/post/id/192810) [了解 Microsoft Kerberos PAC 验证](https://docs.microsoft.com/zh-cn/archive/blogs/openspecification/understanding-microsoft-kerberos-pac-validation) [PAC在Kerberos认证协议中的作用](https://docs.microsoft.com/zh-cn/archive/blogs/apgceps/packerberos-2) [什么是 Kerberos PAC](https://stealthbits.com/blog/what-is-the-kerberos-pac/)
发表于 2021-09-07 10:24:16
阅读 ( 8093 )
分类:
内网渗透
2 推荐
收藏
0 条评论
请先
登录
后评论
K0u_az
5 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!