域渗透——Kerberoasting
Kerberoasting是域渗透中经常使用的一项技术,本文将参考公开的资料,结合自己的理解,详细介绍Kerberoasting的原理和实现,以及一个后门利用的方法,最后给出防御建议。
参考资料:
http://www.harmj0y.net/blog/powershell/kerberoasting-without-mimikatz/ 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=183https://blog.netspi.com/faster-domain-escalation-using-ldap/ https://social.technet.microsoft.com/wiki/contents/articles/717.service-principal-names-spns-setspn-syntax-setspn-exe.aspx
0x01 简介
本文将要介绍以下内容:
· Kerberoasting相关概念。
· Kerberoasting的原理。
· Kerberoasting的实现。
· Kerberoasting的后门利用。
· Kerberoasting的防御。
0x02 基本概念
SPN
官方文档:
https://docs.microsoft.com/en-us/windows/desktop/AD/service-principal-names
全称Service Principal Names。
SPN是服务器上所运行服务的唯一标识,每个使用Kerberos的服务都需要一个SPN。
SPN分为两种,一种注册在AD上机器帐户(Computers)下,另一种注册在域用户帐户(Users)下。
当一个服务的权限为Local System或Network Service,则SPN注册在机器帐户(Computers)下。
当一个服务的权限为一个域用户,则SPN注册在域用户帐户(Users)下。
SPN的格式
serviceclass/host:port/servicename
说明:
· serviceclass可以理解为服务的名称,常见的有www, ldap, SMTP, DNS, HOST等。
· host有两种形式,FQDN和NetBIOS名,例如server01.test.com和server01。
· 如果服务运行在默认端口上,则端口号(port)可以省略。
查询SPN
对域控制器发起LDAP查询,这是正常kerberos票据行为的一部分,因此查询SPN的操作很难被检测。
(1) 使用SetSPN
Win7和Windows Server2008自带的工具。
查看当前域内的所有SPN:
setspn.exe -q */*
查看test域内的所有SPN:
setspn.exe -T test -q */*
输出结果实例:
CN=DC1,OU=Domain Controllers,DC=test,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.test.com/ForestDnsZones.test.com
ldap/DC1.test.com/DomainDnsZones.test.com
Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/DC1.test.com
DNS/DC1.test.com
GC/DC1.test.com/test.com
RestrictedKrbHost/DC1.test.com
RestrictedKrbHost/DC1
HOST/DC1/TEST
HOST/DC1.test.com/TEST
HOST/DC1
HOST/DC1.test.com
HOST/DC1.test.com/test.com
E3514235-4B06-11D1-AB04-00C04FC2DCD2/0f33253b-2314-40f0-b665-f4317b13e6b9/test.com
ldap/DC1/TEST
ldap/0f33253b-2314-40f0-b665-f4317b13e6b9._msdcs.test.com
ldap/DC1.test.com/TEST
ldap/DC1
ldap/DC1.test.com
ldap/DC1.test.com/test.com
CN=krbtgt,CN=Users,DC=test,DC=com
kadmin/changepw
CN=COMPUTER01,CN=Computers,DC=test,DC=com
RestrictedKrbHost/COMPUTER01
HOST/COMPUTER01
RestrictedKrbHost/COMPUTER01.test.com
HOST/COMPUTER01.test.com
CN=MSSQL Service Admin,CN=Users,DC=test,DC=com
MSSQLSvc/DC1.test.com
以CN开头的每一行代表一个帐户,其下的信息是与该帐户相关联的SPN。
对于上面的输出数据,机器帐户(Computers)为:
· CN=DC1,OU=Domain Controllers,DC=test,DC=com
· CN=COMPUTER01,CN=Computers,DC=test,DC=com
域用户帐户(Users)为:
· CN=krbtgt,CN=Users,DC=test,DC=com
Kerberoasting是域渗透中经常使用的一项技术,本文将参考公开的资料,结合自己的理解,详细介绍Kerberoasting的原理和实现,以及一个后门利用的方法,最后给出防御建议。
参考资料:
http://www.harmj0y.net/blog/powershell/kerberoasting-without-mimikatz/ 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=183https://blog.netspi.com/faster-domain-escalation-using-ldap/ https://social.technet.microsoft.com/wiki/contents/articles/717.service-principal-names-spns-setspn-syntax-setspn-exe.aspx
0x01 简介
本文将要介绍以下内容:
· Kerberoasting相关概念。
· Kerberoasting的原理。
· Kerberoasting的实现。
· Kerberoasting的后门利用。
· Kerberoasting的防御。
0x02 基本概念
SPN
内容来自无奈安全网
官方文档:
https://docs.microsoft.com/en-us/windows/desktop/AD/service-principal-names
全称Service Principal Names。
SPN是服务器上所运行服务的唯一标识,每个使用Kerberos的服务都需要一个SPN。
SPN分为两种,一种注册在AD上机器帐户(Computers)下,另一种注册在域用户帐户(Users)下。
当一个服务的权限为Local System或Network Service,则SPN注册在机器帐户(Computers)下。
当一个服务的权限为一个域用户,则SPN注册在域用户帐户(Users)下。
SPN的格式
serviceclass/host:port/servicename
说明:
· serviceclass可以理解为服务的名称,常见的有www, ldap, SMTP, DNS, HOST等。
· host有两种形式,FQDN和NetBIOS名,例如server01.test.com和server01。
· 如果服务运行在默认端口上,则端口号(port)可以省略。
查询SPN
对域控制器发起LDAP查询,这是正常kerberos票据行为的一部分,因此查询SPN的操作很难被检测。
(1) 使用SetSPN
Win7和Windows Server2008自带的工具。
查看当前域内的所有SPN:
setspn.exe -q */*
查看test域内的所有SPN:
setspn.exe -T test -q */*
输出结果实例:
CN=DC1,OU=Domain Controllers,DC=test,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.test.com/ForestDnsZones.test.com
ldap/DC1.test.com/DomainDnsZones.test.com
Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/DC1.test.com
DNS/DC1.test.com
GC/DC1.test.com/test.com
RestrictedKrbHost/DC1.test.com
RestrictedKrbHost/DC1
HOST/DC1/TEST
HOST/DC1.test.com/TEST
HOST/DC1
HOST/DC1.test.com
HOST/DC1.test.com/test.com
E3514235-4B06-11D1-AB04-00C04FC2DCD2/0f33253b-2314-40f0-b665-f4317b13e6b9/test.com
ldap/DC1/TEST
ldap/0f33253b-2314-40f0-b665-f4317b13e6b9._msdcs.test.com
ldap/DC1.test.com/TEST
ldap/DC1
ldap/DC1.test.com www.wnhack.com
ldap/DC1.test.com/test.com
CN=krbtgt,CN=Users,DC=test,DC=com
kadmin/changepw
CN=COMPUTER01,CN=Computers,DC=test,DC=com
RestrictedKrbHost/COMPUTER01
HOST/COMPUTER01
RestrictedKrbHost/COMPUTER01.test.com
HOST/COMPUTER01.test.com
CN=MSSQL Service Admin,CN=Users,DC=test,DC=com
MSSQLSvc/DC1.test.com
以CN开头的每一行代表一个帐户,其下的信息是与该帐户相关联的SPN。
对于上面的输出数据,机器帐户(Computers)为:
· CN=DC1,OU=Domain Controllers,DC=test,DC=com
· CN=COMPUTER01,CN=Computers,DC=test,DC=com
域用户帐户(Users)为:
· CN=krbtgt,CN=Users,DC=test,DC=com
内容来自无奈安全网
本文来自无奈人生安全网