Недавно мне потребовалось расшифровать Kerberos для более глубокого исследования работы протокола.
Чем же хорош Kerberos? Все мы помним, что он защищает своих клиентов, шифруя все и вся. Например:
- Поля в AS-REP шифруются с использованием нескольких ключей: TGT-билет шифруется на ключе учётной записи krbtgt, а сессионный ключ на ключе, который вычисляется из пароля
- в TGS-REP пакете поля шифруются с участием нескольких ключей:
ключ сервиса, ключ krbtgt и сессионного ключа пользователя.
🟦Если вы попробуете послушать сетевой трафик с помощью Wireshark во время обмена Krb-пакетами, то обнаружите внутри пакетов поля
enc-part (encrypted part?) или enc-authorization-data, в которых зашиты все интересности. 🟦Оказывается, Wireshark умеет дешифровать эти поля, как это заметил Clement Notin в своем посте Decrypt Kerberos/NTLM “encrypted stub data” in Wireshark на medium. Нужно приготовить keytab файл (файл для хранения Kerberos ключей, чаще используется в Linux) и выставить некоторые настройки:
1️⃣ Получаем ключи пользователя/компьютера/krbtgt/через dcsync, используя impacket:
secretsdump.py "DOMAIN/admin:passwd"@192.168.6.1 -just-dc-user krbtgt
secretsdump.py "DOMAIN/admin:passwd"@192.168.6.1 -just-dc-user user
secretsdump.py "DOMAIN/admin:passwd"@192.168.6.1 -just-dc-user server$
2️⃣ Готовим keytab-файл с помощью скрипта keytab.py , который написал Dirk-jan:На 112-строке исправляем кортеж
keys, добавляя собственные ключи:keys = [В моем случае это AES-256-ключи, поэтому keytype будет 18 (для AES-128 и RC4 используется 17 и 23 соответственно)
(18, '66ec115dcac0b861309080689dd92474a7a0def111e7977be4847eee00688a21'),
(18, '9a5f19e1ebe06c8f900669a0c6ebdfee91bf49e9cf99133439aad45c5e4c0a74'),
(18, '3209fa3b453a2a05b4345daa775d57ba704a73e06239544599d4d35df95d5aaa')
]
Генерируем файл keytab с помощью скрипта:
python keytab.py keys.bin
3️⃣Забираем файл keys.bin на машину с Wireshark. Идем в настройки
Preferences > Protocols > KRB5 > там ставим галку "Try to decrypt Kerberos blobs" и указываем путь до файла C:\Users\user\Desktop\keys.bin. Применяем настройки🟦 Помимо Kerberos, Wireshark будет декодировать пакеты DCE/RPC, LDAP и NTLMSSP blob'ы, что очень удобно для самостоятельного исследования протоколов. Добавляю метод в копилку лайфхаков
#kerberos #tips