
Kerberos域认证(域环境)
Windows提供了为企业管理资产、服务、网络对象进行组织化的管理,这非常符合企业架构的管理模式。而承载这些管理机制的就是活动目录服务。如果要搭建一个域,就需要安装活动目录服务,当然,这个不在我们的讨论范围。
活动目录服务以域名来划分域的边界,域外就不属于管理范围了,也就是说,一个域对应一个域名,域之间也可以相互信任。Active Directory存储了有关网络对象的信息,并且让管理员和用 户能够轻松地查找和使用这些信息。Active Directory使用了一种 结构化的数据存储方式,并以此作为基础对目录信息进行合乎逻辑的分层组织。
1.哈希传递需要被认证的主机能够访问到服务器(废话)
2.哈希传递需要被传递认证的用户名
3.哈希传递需要被传递认证用户的NTLM Hash
Kerberos域攻击手段
域外用户枚举:当我们不在域内时,可以通过kerberos中的AS_REQ工作原理来进行枚举域内账号。
hash传递攻击(PTH):哈希传递(pth)攻击是指攻击者可以通过捕获密码的hash值(对应着密码的值),然后简单地将其传递来进行身份验证,以此来横向访问其他网络系统
密码喷洒攻击(Password Spraying)∶确定域策略后,设置密码次数使用工具对应的协议爆破密码
黄金票据:获得域控权限后用来做"钥匙"后门
AS-REP Roasting攻击:是一种对"特定设置"用户账号,进行离线破解的攻击方式
SPN: SPN全程Service Principal Names,是服务器上所运行服务的唯一标识,每个使用kerberos认证的服务都需要一个SPN
Kerberosast攻击:这种攻击方法主要利用了TGT_REP阶段使用对方NTLMHash返回的加密数据,通过碰撞加密数据破解用户密码(利用条件苛刻)
白银票据:获取某域账号HASH之后,伪造服务票据ST。通过伪造的TGS,可以直接发送给Server,访问指定的某个服务,来进行攻击。此过程无需KDC(如果域控服务器进行了相应的KDC签名效验,那么白银票据无用)
委派攻击
下面就面试与hvv常问的两个票据——黄金与白银,进行详细的解说
票据攻击
黄金票据(Golden Tickets)
在Kerberos认证中,Client通过AS(身份认证服务)认证后,AS会给Client一个Session key_AS和TGT,而Session key_AS并不会保存在KDC中,krbtgt的NTLM Hash又是固定的,所以只要得到krbtgt的NTLMHash(也就是KDC hash),就可以伪造TGT和Session key_AS来进入下一步Client与TGS的交互。而已有了金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。因为krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门(当然也可以当做提权的手段使用)
黄金票据特点:黄金票据(Golden Tickets)
1.由于在域控制器上由KDC服务生成的域设置了Kerberos策略,如果提供票据,则系统信任票据的有效性。这意味着,即使域策略声明Kerberos登录票据(TGT)只有10小时有效,如果票据声明有效期为10 年,那么也会信任票据的有效性期为10年。
2.该KRBTGT帐户密码从不更改*和直到KRBTGT密码被更改(两次),攻击者可以创建黄金票据。请注意,即使伪造用户更改其密码,创建用于模拟用户的Golden Ticket仍然存在。
3.在AS-REP阶段,由于返回的认购,这就造成了黄全票据攻击拥有krbtgt 的 hash 就可以自己制作一个TGT认购权证,这就造成了黄金票据攻击伪造黄金票据的前提:要伪造的域用户(这里我们一般填写域管理员账户)·域名·域的SID值(就是域成员SID值去掉最后的)·krbtgt账号的哈希值或AES-256值
4.它绕过了SmartCard身份验证要求,因为它绕过了DC在创建TGT之前执行的常规验证。
5.这个精心创建的TGT要求攻击者拥有Active Directory域的KRBTGT密码哈希值(通常从域控制器转储)。
6..它绕过了SmartCard身份验证要求,因为它绕过了DC在创建TGT之前执行的常规验证。
7.在主机上都可以生成和使用黄金票据(TGT),即使没有加入域也是如此。只要网络可以访问域。
7.在主机上都可以生成和使用黄金票据(TGT),即使没有加入域也是如此。只要网络可以访问域。
8.用于从AD森林中的DC获取有效的TGS票据,并提供一个坚持在一切域访问所有的主机的好办法。
黄金票据(Silver Tickets)漏洞分析
从攻击面来看,获取krbtgt用户的hash后,可以在域中 进行持久性的隐藏,并且日志无法溯源,但是需要拿到DC权限,使用黄金票据能够在一个域环境中长时间控制整个域从防御角度来看,需要经常 更新krbtgt的密码 ,才能够使得原有的票据失效。最根本的办法是 不允许域管账户登录其他服务器
白银票据(Silver Tickets)
如果说黄金票据是伪造的TGT,那么白银票据就是伪造的ST。在Kerberos认证的第三大步,Client带着ST和Authenticator3向域上的某个服务进行请求,Server接收到Client的请求之后,通过自己的MasterKey 解密ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证成功就让 Client 访问server上的指定服务了。所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,但是伪造的门票只对部分服务起作用
白银票据特点:
1.黄金票据是伪造TGT并且有效的获得任何Kerberos服务,而白银票据是伪造TGS。这意味着白银票据仅限于特定服务器上的任何服务。
2.大多数服务不验证PAC(通过将PAC校验和发送到域控制器进行PAC验证),因此使用服务帐户密码哈希生成的有效TGS可以完全伪造PAC
3.攻击者需要服务帐户密码哈希值
4.TGS是伪造的,所以没有和TGT通信,意味着DC从验证过
5.任何事件日志都在目标服务器上
白银票据(Silver Tickets)漏洞分析
从攻击面来看,伪造白银票据的难度比伪造黄金票据的难度较小,因为一个域中的服务器如果对外的话,非常容易被入侵, 并且容易被转储Server。从防御角度来看, 需要开启PAC认证但这会降低认证效率,增加DC的负担,最根本的还是要加固服务器本身对外的服务
Token (攻击)窃取
Windows Access Token
Windows Token其实叫Access Token(访问令牌),它是一个描述进程或者线程安全上下文的一个对象。不同的用户登录计算机后, 都会生成一个Access Token(Token里面包含登录进程返回的SID和由本地安全策略分配给用户和用户的安全组的特权列表),这个Token在用户创建进程或者线程 时会被使用,不断的拷贝,这也就解释了A用户创建一个进程而该进程没有B用户的权限。
Access Token种类:
主令牌:是由windows内核创建并分配给进程的默认访问令牌,每一个进程有一个主令牌,它描述了与当前进程相关的用户帐户的安全上下文(交互会话登录)模拟令牌:线程能够在与拥有它的进程的上下文不同的安全上下文里执行;当在一个客户的安全上下文里运行时,服务在某种程度上“是”客户。服务的一个线程使用代表客户资格的访问令牌来访问该客户有权访问的对象(非交互登录)Windows Access Token令牌假冒我们通过提权等方法获得System权限后,如果我们利⽤mimikatz不能获得Administrator⽤户的密码,那么攻击者可以通过令牌窃取进⾏降权,从而获得Administrator⽤户的shell, 以Administrator⽤户的身份启动某些服务 ( 某些服务只能通过administrator⽤户启动 )
Windows Access Token攻击方式:
1.Metaspolit在token 窃取中的应用;拿到了system权限
2.Windows平台下incognito的应用
3.CobaltStrike中的token窃取
4.Invoke-TokenManipulation.ps1用法
5.利用token拿下trust installer 权限
Windows Access Token – SID (Security Identifiers)安全标识符:安全标识符是一个唯一的字符串,它可以代表一个账户、一个用户 组、或者是一次登录。通常它还有一个SID固定列表,例如 Everyone这种已经内置的账户,默认拥有固定的SID。
参考笔记
附上参考博客地址:
倾旋师傅:https://payloads.online/
橘子师傅:https://0range-x.github.io/
还有CSDN上其他师傅的文章......
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)