Pentesting Active Directory: Access Control (PART 2) | Перевод: THREAD
Введение
Аутентификация Active Directory (AD) - это система на базе Windows, которая позволяет организациям аутентифицировать и авторизировать пользователей, конечные устройства и службы в среде AD. Аутентификация AD обеспечивает централизованный контроль над конфигурациями пользователей и устройств, а также упрощенное управление пользователями и правами с помощью групповой политики AD. Она также обеспечивает функцию единого входа (SSO), позволяя пользователям проходить аутентификацию один раз и затем получать доступ к любому авторизованному корпоративному ресурсу в домене.
Аутентификация AD пришла на смену легко эксплуатируемым протоколам LAN Manager (LM) и NT LAN Manager (NTLM), которые использовались в ранних версиях операционных систем Windows. В LM использовалась хрупкая криптографическая схема, которая легко взламывалась современными процессорами, а NTLM был усовершенствован за счет более сильной криптографии, но не имел служб взаимной аутентификации и проверки подлинности смарт-карт.
Аутентификация AD поддерживает два стандарта: Kerberos и Lightweight Directory Access Protocol (LDAP).
Контроль доступа в Active Directory
Протокол Kerberos
При аутентификации AD на основе Kerberos пользователи входят в систему один раз, чтобы получить доступ к ресурсам предприятия. Вместо передачи учетных данных по сети, как это было в случае с LM и NTLM, система Kerberos генерирует сеансовый ключ для пользователя и маркер, содержащий политики и права доступа пользователя. Сначала пользователь должен пройти аутентификацию в центре распределения ключей (KDC), который представляет собой доверенную третью сторону, состоящую из сервера аутентификации (AS) и сервера выдачи билетов (TGS). AS шифрует учетные данные пользователя и отправляет ему билет на предоставление билета (TGT). Затем пользователь передает TGT в TGS вместе с запросом на авторизацию для доступа к целевому ресурсу на сервере. TGS выдает клиенту маркер, который зашифрован ключом, общим для целевого сервера и TGS. Наконец, клиент передает маркер целевому серверу, который расшифровывает его, чтобы предоставить клиенту доступ к ресурсам на ограниченное время.
Протокол Lightweight Directory Access
LDAP - это кроссплатформенный протокол с открытым исходным кодом, который предоставляет службы аутентификации AD. Существует два варианта аутентификации на основе LDAP в AD: простая аутентификация, которая использует учетные данные для создания запроса к серверу, и простая аутентификация и уровень безопасности (SASL), которая использует другие службы аутентификации, такие как Kerberos, для подключения к серверу LDAP. Помимо Kerberos и LDAP, AD использует несколько других методов аутентификации, о которых будет информация ниже.
Методы аутентификации
LAN Manager (LM) Hash
LM-хэш - это старый и менее безопасный метод хэширования, использовавшийся в операционных системах Windows до Windows NT. Он считается слабым из-за того, что не учитывает регистр и ограничивается 14 символами или менее, которые разбиваются на две части по 7 символов, хэшируются отдельно и объединяются. Эта уязвимость делает хэши LM восприимчивыми к атакам методом грубой силы и с использованием радужных таблиц. Хотя современные системы Windows больше не используют LM-хэши по умолчанию, они все еще могут присутствовать в некоторых устаревших системах.
NT LAN Manager (NTLM) Hash
Хеширование NTLM является усовершенствованием LM и было представлено в Windows NT. Этот метод хеширования чувствителен к регистру и поддерживает пароли длиной до 128 символов. Хотя NTLM более безопасен, чем LM, он все же имеет некоторые уязвимости, например, подверженность атакам типа "передай хэш", которые позволяют злоумышленнику выдать себя за пользователя, не зная его пароля в открытом тексте.
NT LAN Manager version 1 (NTLMv1)
NTLMv1 - это протокол аутентификации, использующий механизм "вызов-ответ". Когда клиент пытается получить доступ к ресурсу, сервер отправляет вызов (случайное 8-байтовое число). Клиент шифрует этот вызов с помощью хэша NTLM и отправляет ответ обратно на сервер. Затем сервер проверяет ответ, сравнивая его с хэшем пароля пользователя. Хотя NTLMv1 является улучшением по сравнению с LM и NTLM, он по-прежнему уязвим для различных атак, включая атаки типа "человек посередине" и ретрансляции.
NT LAN Manager version 2 (NTLMv2)
NTLMv2 является обновленной версией протокола аутентификации NTLMv1 и был представлен в Windows NT 4.0 SP4. Он повышает безопасность, добавляя в процесс аутентификации вызов клиента и временную метку сервера. Это дополнение помогает защититься от атак типа "человек посередине" и ретрансляции. Однако NTLMv2 все еще подвержен атакам с передачей хэша и считается менее безопасным, чем Kerberos.
Сравнение Hash
В таблице ниже приведено сравнение этих хэшей и протоколов и подчеркнуто, что, хотя Kerberos и не идеален, он часто является предпочтительным протоколом аутентификации, когда это возможно.
Пользователи домена AD
Пользователи домена, в отличие от локальных пользователей, имеют доступ к различным ресурсам домена, таким как файловые серверы, принтеры и узлы интрасети, на основании привилегий, назначенных их учетной записи пользователя или группе, в которую они входят. В отличие от локальных пользователей, учетные записи пользователей домена могут входить в систему на любом узле в домене. Для получения дополнительной информации о различных типах учетных записей Active Directory вы можете изучить различные ресурсы в Интернете. Одна из учетных записей, которая заслуживает особого внимания, - это KRBTGT (Kerberos Ticket-Granting Ticket).
Учетная запись KRBTGT - это локальная учетная запись, интегрированная в инфраструктуру Active Directory. Она служит служебной учетной записью для службы распределения ключей, которая отвечает за аутентификацию и предоставление доступа к ресурсам домена. Однако учетная запись KRBTGT часто становится мишенью злоумышленников из-за возможности предоставления им неограниченного доступа к домену в случае компрометации.
Злоумышленники могут использовать учетную запись KRBTGT для повышения привилегий и постоянного доступа, используя такие методы, как атака Golden Ticket. При атаке Golden Ticket злоумышленник получает доступ к хэшу учетной записи KRBTGT, что позволяет ему создавать поддельные билеты Kerberos. Эти билеты дают злоумышленнику доступ к любому ресурсу в домене, фактически предоставляя ему полный контроль.
Чтобы защитить учетную запись KRBTGT и домен Active Directory от подобных атак, необходимо применять надежные меры безопасности, такие как:
- Регулярно обновляйте пароль учетной записи KRBTGT, следя за тем, чтобы он был сложным и не поддавался угадыванию.
- Использование систем мониторинга и обнаружения вторжений для выявления любых необычных действий или попыток доступа, связанных с учетной записью KRBTGT.
- Реализация принципа наименьших привилегий, предоставляя пользователям и группам только те разрешения, которые необходимы для выполнения их задач.
- Внедрение политик надежных паролей и многофакторной аутентификации (MFA) во всем домене.
- Проведение регулярных аудитов безопасности и оценок уязвимостей для выявления и устранения потенциальных рисков безопасности.
Эксплойт KRBTGT - The Golden Ticket attack
- Первоначальный компромисс: сначала злоумышленники закрепились в сети, обычно используя уязвимость или фишинговые методы для получения достоверных учетных данных.
- Повышение привилегий: Попав внутрь, злоумышленники пытаются повысить свои привилегии, нацеливаясь на учетные записи с более высоким уровнем доступа, например администраторов домена.
- Извлечение хэша KRBTGT: Получив привилегии администратора домена, злоумышленники могут получить доступ к базе данных Active Directory (файл NTDS.DIT) и извлечь NTLM-хэш учетной записи KRBTGT.
- Доступ к контроллеру домена Active Directory: Получив привилегии администратора домена, злоумышленники могут получить доступ к контроллеру домена, на котором находится база данных Active Directory (файл NTDS.DIT), содержащая информацию об учетной записи KRBTGT.
Как получить доступ к контроллеру домена (DC) с помощью ntdsutil
- Войдите в контроллер домена под учетной записью с административными привилегиями.
- Откройте Командную строку (щелкните правой кнопкой мыши на Командной строке и выберите "Запуск от имени администратора").
- Введите
ntdsutilв командной строке и нажмите Enter. - После в ntdsutil введите
snapshotи нажмите Enter. - Затем введите
activate instance ntdsи нажмите Enter. - Теперь создайте моментальный снимок, введя
createи нажав Enter. Вы должны увидеть сообщение об успешном создании моментального снимка. - Чтобы перечислить доступные снимки, введите
list allи нажмите Enter. Обратите внимание на GUID только что созданного моментального снимка. - Выйдите из snapshot и ntdsutil, набрав
quitи нажав Enter. - После всех действий - смонтируйте моментальный снимок, выполнив следующую команду в поднятой командной строке:
ntdsutil snapshot "mount {<Snapshot_GUID>}"
Замените <Snapshot_GUID> на GUID, который вы отметили.
- Вы увидите сообщение об успешном монтировании моментального снимка и путь к смонтированному снимку. Перейдите в каталог смонтированного моментального снимка, где вы сможете получить доступ к файлу NTDS.DIT, не влияя на работу контроллера домена.
- Скопируйте файл NTDS.DIT и ветку реестра SYSTEM (расположенную в %SystemRoot%\System32\config) в безопасное место для дальнейшего анализа.
- После завершения копирования файлов отмонтируйте моментальный снимок, выполнив следующую команду в поднятой командной строке:
ntdsutil snapshot "unmount {<Snapshot_GUID>}"
Замените <Snapshot_GUID> на GUID, который вы отметили.
- Извлечение NTLM-хэша учетной записи KRBTGT: Имея в руках файл NTDS.DIT, злоумышленники могут использовать такой инструмент, как Mimikatz, популярный инструмент для пост-эксплойтов, чтобы разобрать этот файл и извлечь NTLM-хэш учетной записи KRBTGT.
Когда у вас есть оба файла (NTDS.dit и SYSTEM), вы можете использовать инструмент Mimikatz для извлечения NTLM-хэша учетной записи KRBTGT. Загрузите и запустите Mimikatz на системе, где вы можете безопасно работать с файлами.
В Mimikatz используйте следующие команды, чтобы извлечь NTLM-хэш учетной записи KRBTGT:
Загрузите необходимый модуль Mimikatz
privilege::debug
Разберите ветку реестра SYSTEM, чтобы получить ключ загрузки
lsadump::lsa /inject /system:<path_to_SYSTEM_hive>
Разберите файл NTDS.dit с загрузочным ключом, чтобы получить хэш KRBTGT
lsadump::lsa /inject /ntds:<path_to_NTDS_dit> /system:<path_to_SYSTEM_hive>
Замените <path_to_NTDS_dit> и <path_to_SYSTEM_hive> на правильные пути к файлам в вашей системе.
После выполнения этих команд Mimikatz выведет информацию обо всех учетных записях в базе данных Active Directory, включая учетную запись KRBTGT. Найдите NTLM-хэш учетной записи KRBTGT в выходных данных.
Создание поддельных билетов Kerberos: Используя извлеченный хэш KRBTGT, злоумышленники могут генерировать поддельные билеты Kerberos, известные как "The Golden Tickets" (золотые билеты). Эти билеты предоставляют злоумышленнику доступ к любому ресурсу в домене, по сути, обеспечивая ему полный контроль.
Сохранение постоянства: Атака по "золотому билету" позволяет злоумышленникам сохранять постоянство в сети, даже если пароли были сброшены или первоначальная точка доступа злоумышленников была обнаружена и удалена.
Локальные аккаунты
Когда речь идет о системах на базе Windows, локальные учетные записи пользователей хранятся непосредственно на сервере или рабочей станции. Этим учетным записям можно назначать права как индивидуально, так и через членство в группах, но важно отметить, что эти права будут применяться только к данному конкретному узлу и не будут распространяться на другие системы в домене. Несмотря на то что локальные учетные записи пользователей считаются принципами безопасности, они могут управлять доступом и защищать ресурсы только на отдельном узле.
При установке Windows по умолчанию создается несколько учетных записей локальных пользователей, в том числе:
- Учетная запись администратора, которая создается первой и имеет SID S-1-5-domain-500. Эта учетная запись имеет полный контроль над большинством ресурсов системы, и хотя ее нельзя удалить или заблокировать, ее можно отключить или переименовать. В Windows 10 и Server 2016 при настройке отключается встроенная учетная запись администратора и создается другая локальная учетная запись в группе администраторов.
- Учетная запись «Гость», которая по умолчанию отключена. Эта учетная запись предназначена для предоставления временного доступа пользователям, не имеющим зарегистрированной учетной записи на компьютере, но из-за риска безопасности анонимного доступа рекомендуется оставить эту учетную запись отключенной.
- Учетная запись SYSTEM, или NT AUTHORITY\SYSTEM, - это учетная запись, установленная по умолчанию и используемая операционной системой для выполнения внутренних функций. В отличие от учетной записи Root в Linux, эта учетная запись является служебной и не работает в том же контексте, что и обычный пользователь. Многие процессы и службы работают в контексте SYSTEM, и хотя у нее нет профиля, она имеет права на почти все на хосте и не может быть добавлена ни в какие группы. По умолчанию он имеет права полного контроля над всеми файлами в системе Windows.
- Учетная запись Network Service, которая представляет собой предопределенную локальную учетную запись, используемую диспетчером управления службами для запуска служб Windows. Эта учетная запись предоставляет учетные данные удаленным службам, когда служба запущена в ее контексте.
- Учетная запись Local Service, которая является еще одной предопределенной локальной учетной записью, используемой диспетчером управления службами для запуска служб Windows. Эта учетная запись настроена с минимальными привилегиями и представляет анонимные учетные данные в сети.
Оригинальная статья | Перевод THREAD