88tcp/udp - Pentesting Kerberos
Reading time: 6 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Основна інформація
Kerberos працює за принципом аутентифікації користувачів без безпосереднього керування їх доступом до ресурсів. Це важлива відмінність, оскільки підкреслює роль протоколу в рамках безпеки.
У середовищах, таких як Active Directory, Kerberos відіграє ключову роль у встановленні особи користувачів шляхом перевірки їхніх секретних паролів. Цей процес гарантує підтвердження особи кожного користувача перед взаємодією з мережевими ресурсами. Однак Kerberos не поширює свою функціональність на оцінку чи примус виконання прав доступу користувача до конкретних ресурсів чи сервісів. Натомість він забезпечує безпечний спосіб аутентифікації користувачів, що є критично важливим першим кроком у процесі забезпечення безпеки.
Після аутентифікації за допомогою Kerberos прийняття рішень щодо доступу до ресурсів делегується окремим сервісам у мережі. Ці сервіси відповідають за оцінку прав та дозволів аутентифікованого користувача на основі інформації, наданої Kerberos про привілеї користувача. Така архітектура забезпечує розподіл відповідальностей між аутентифікацією особи користувачів і керуванням їхніми правами доступу, що дає змогу гнучкішому та безпечнішому підходу до управління ресурсами в розподілених мережах.
Default Port: 88/tcp/udp
PORT STATE SERVICE
88/tcp open kerberos-sec
Щоб навчитися зловживати Kerberos, прочитайте допис про Active Directory.
Середовища тільки з Kerberos: підготовка клієнта та усунення неполадок
Коли NTLM вимкнено на сервісах домену (SMB/WinRM/etc.), ви маєте автентифікуватися за допомогою Kerberos. Типові підводні камені та робочий процес:
- Синхронізація часу обов'язкова. Якщо годинник вашого хоста відхиляється більш ніж на кілька хвилин, ви побачите
KRB_AP_ERR_SKEW
і весь Kerberos auth зазнає невдачі. Синхронізуйте час із DC:
# quick one-shot sync (requires sudo)
sudo ntpdate <dc.fqdn> || sudo chronyd -q 'server <dc.fqdn> iburst'
- Згенеруйте дійсний krb5.conf для цільового realm/domain.
netexec
(CME fork) може вивести його для вас під час тестування SMB:
# Generate krb5.conf and install it
netexec smb <dc.fqdn> -u <user> -p '<pass>' -k --generate-krb5-file krb5.conf
sudo cp krb5.conf /etc/krb5.conf
- Отримати TGT та перевірити ccache:
kinit <user>
klist
- Використовуйте Kerberos з інструментами SMB (без відправки passwords, використовує ваш ccache):
# netexec / CME
netexec smb <dc.fqdn> -k # lists shares, runs modules using Kerberos
# impacket examples also support -k / --no-pass to use the ccache
smbclient --kerberos //<dc.fqdn>/IPC$
- GSSAPI SSH єдиний вхід (OpenSSH до Windows OpenSSH server):
# Ensure krb5.conf is correct and you have a TGT (kinit)
# Use the FQDN that matches the host SPN. Wrong names cause: "Server not found in Kerberos database"
ssh -o GSSAPIAuthentication=yes <user>@<host.fqdn>
Поради:
- Переконайтеся, що ваш файл
/etc/hosts
вирішує точний FQDN, до якого ви будете підключатися через SSH/SMB, і що цей запис розміщений перед будь-якими bare domain entries, якщо ви перевизначаєте DNS. Невідповідність SPN ламає GSSAPI. - Якщо NTLM вимкнено на SMB, ви можете бачити
STATUS_NOT_SUPPORTED
при спробах NTLM; додайте-k
, щоб примусити Kerberos.
Більше
Shodan
port:88 kerberos
MS14-068
The MS14-068 flaw permits an attacker to tamper with a legitimate user's Kerberos login token to falsely claim elevated privileges, such as being a Domain Admin. This counterfeit claim is mistakenly validated by the Domain Controller, enabling unauthorized access to network resources across the Active Directory forest.
Other exploits: https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek
Посилання
- NetExec (CME) wiki – Kerberos and krb5.conf generation
- OpenSSH GSSAPIAuthentication
- MIT Kerberos – Using Kerberos on UNIX
- 0xdf – HTB: TheFrizz
HackTricks Automatic Commands
Protocol_Name: Kerberos #Protocol Abbreviation if there is one.
Port_Number: 88 #Comma separated if there is more than one.
Protocol_Description: AD Domain Authentication #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for Kerberos
Note: |
Kerberos operates on a principle where it authenticates users without directly managing their access to resources. This is an important distinction because it underlines the protocol's role in security frameworks.
In environments like **Active Directory**, Kerberos is instrumental in establishing the identity of users by validating their secret passwords. This process ensures that each user's identity is confirmed before they interact with network resources. However, Kerberos does not extend its functionality to evaluate or enforce the permissions a user has over specific resources or services. Instead, it provides a secure way of authenticating users, which is a critical first step in the security process.
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-kerberos-88/index.html
Entry_2:
Name: Pre-Creds
Description: Brute Force to get Usernames
Command: nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm="{Domain_Name}",userdb={Big_Userlist} {IP}
Entry_3:
Name: With Usernames
Description: Brute Force with Usernames and Passwords
Note: consider git clone https://github.com/ropnop/kerbrute.git ./kerbrute -h
Entry_4:
Name: With Creds
Description: Attempt to get a list of user service principal names
Command: GetUserSPNs.py -request -dc-ip {IP} active.htb/svc_tgs
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.