NTLM-хеши

Атаки с использованием NTLM (Path-the-Hash) и netNTLM (SMB Relay), обнаружение NTLM Relay

Что такое NTLM

NTLM (NT LAN Manager) — это протокол аутентификации, разработанный Microsoft для проверки подлинности пользователей в Windows-средах. Он используется для подтверждения личности пользователей при доступе к сетевым ресурсам, таким как файловые серверы, принтеры или другие службы. NTLM считается менее безопасным по сравнению с Kerberos.

Если обратиться к сетевому ресурсу по доменному имени, то для авторизации будут использоваться билеты Kerberos.

При обращении по IP, то NTLM.

NTLM состоит из нескольких версий:

  • LM-хеш (LAN Manager): устаревший и небезопасный хеш, разработанный для совместимости с очень старыми системами. Использует алгоритм DES и имеет множество уязвимостей.

  • NTLM-хеш: более современный хеш, использующий алгоритм MD4. Хотя он безопаснее LM, он всё ещё уязвим к атакам.

  • NTLMv2: улучшенная версия, которая включает защиту от replay-атак и использует HMAC-MD5 для создания хешей. Это наиболее безопасная версия протокола

Downgrade-атаки

Downgrade-атака — это тип атаки, при которой злоумышленник заставляет систему или протокол использовать менее безопасную версию или алгоритм, чем те, которые поддерживаются по умолчанию. Цель такой атаки — эксплуатировать уязвимости в устаревших или менее защищённых версиях протоколов, которые легче атаковать.

Например, заставляет клиента использовать NTLMv1 вместо NTLMv2.

Downgrade-атаки становятся возможными из-за обратной совместимости. Многие системы поддерживают устаревшие версии протоколов для совместимости с более старыми клиентами или серверами.

Пример downgrade-атаки на NTLM

  1. Злоумышленник перехватывает трафик между клиентом и сервером.

  2. Он изменяет запрос клиента, указывая, что поддерживается только NTLMv1.

  3. Сервер, видя, что клиент "поддерживает" только NTLMv1, соглашается на эту версию.

  4. Атакующий получает NTLMv1 хеш, уязвимый к атакам, таким как brute force и rainbow tables

В домене групповыми политиками можно запретить использовать NTLMv1.

Где хранятся NTLM-хеши

NTLM-хеши хранятся в нескольких местах в зависимости от конфигурации системы:

  1. SAM (Security Account Manager):

    • База данных на локальных машинах, где хранятся хеши паролей локальных пользователей.

    • SAM защищён с помощью системного ключа (Syskey), но может быть извлечён с помощью инструментов, таких как Mimikatz.

  2. LSASS (Local Security Authority Subsystem Service):

    • Процесс, который хранит хеши в памяти.

    • Популярная цель для атак, так как злоумышленники могут извлекать хеши из памяти.

Процесс LSASS и его секреты
  1. Active Directory:

    • В доменных средах хеши паролей хранятся в Active Directory в файле NTDS.dit.

    • Хеши могут быть извлечены с помощью атак, таких как DCSync.

Атаки c использованием NTLM-хешей

  • Обычные NTLM-хеши используются для атак Pass-the-Hash, так как они эквивалентны паролям.

  • Сетевые хеши (NetNTLM) не могут быть использованы для PtH, но они уязвимы к атакам, таким как NTLM Relay.

Обычные NTLM-хеши и Pass-the-Hash (PtH)

Под обычными NTLM-хешами я понимаю хеши паролей, которые хранятся в локальных или доменных системах.

Pass the Hash (PtH) — это атака, при которой злоумышленник использует захваченный локальный NTLM-хеш для аутентификации на удалённой системе без знания фактического пароля. Это возможно, потому что NTLM-аутентификация основана на хешах, а не на самих паролях.

  1. Извлечение хеша:

    • Злоумышленник получает NTLM-хеш с помощью инструментов, таких как Mimikatz, или извлекает его из памяти (LSASS) или базы данных (SAM).

  2. Использование хеша для аутентификации:

    • Злоумышленник использует хеш для аутентификации на другой системе, имитируя легитимного пользователя.

    • Например, с помощью инструментов, таких как Impacket, Crack Map Exec.

  3. Получение доступа:

    • Если аутентификация успешна, злоумышленник получает доступ к системе с правами пользователя, чей хеш был использован.

NTLM-хеши являются эквивалентом паролей в системе. Они используются для проверки подлинности, и сервер не требует знания фактического пароля. Протокол NTLM не включает механизмы защиты от повторного использования хешей.

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

Сетевые хеши, Responder и Relay (почему тут не получится сделать PtH)

Что такое сетевые хеши (NetNTLM)?

Сетевые хеши (NetNTLM) — это хеши, которые используются в процессе аутентификации по протоколу NTLM в сетевых запросах. Они создаются на основе:

  • Хеша пароля пользователя.

  • Случайного значения (challenge), отправленного сервером.

NetNTLM-хеши не являются эквивалентом пароля и не могут быть напрямую использованы для аутентификации, как обычные NTLM-хеши.


Что такое Responder?

Responder — это инструмент, который используется для перехвата NetNTLM-хешей. Он работает, имитируя сетевые службы (например, SMB, HTTP, FTP) и заставляя клиентов отправлять свои NetNTLM-хеши в ответ на фишинговые запросы или в результате MiTM-атак.


Как работает Responder?

  1. Подделка сетевых служб:

    • Responder запускается в сети и начинает отвечать на запросы, например, на запросы SMB или HTTP.

  2. Фишинг NetNTLM-хешей:

    • Когда клиент пытается подключиться к поддельной службе, Responder отправляет challenge и получает NetNTLM-хеш в ответ.

  3. Перехват хеша:

    • Злоумышленник получает NetNTLM-хеш, который может быть использован для дальнейших атак, таких как brute force или relay.


Что такое NTLM Relay?

NTLM Relay — это атака, при которой злоумышленник перехватывает NetNTLM-хеш и перенаправляет его на другой сервер для аутентификации. В отличие от PtH, здесь используется не обычный NTLM-хеш, а NetNTLM-хеш.


Почему нельзя сделать PtH с NetNTLM-хешами?

  • NetNTLM-хеши не являются эквивалентом пароля:

    • Они создаются на основе хеша пароля и случайного значения (challenge), отправленного сервером.

    • Без знания challenge невозможно восстановить исходный NTLM-хеш.

  • Одноразовость:

    • NetNTLM-хеши используются только для одного сеанса аутентификации и не могут быть повторно использованы для аутентификации на других системах.


Как работает NTLM Relay?

  1. Перехват NetNTLM-хеша:

    • Злоумышленник перехватывает NetNTLM-хеш с помощью инструментов, таких как Responder.

  2. Перенаправление хеша:

    • Злоумышленник перенаправляет хеш на другой сервер, который принимает NTLM-аутентификацию.

  3. Аутентификация на целевом сервере:

    • Если аутентификация успешна, злоумышленник получает доступ к целевому серверу.

Классическим методом защиты от Relay-атак является включение подписи пакетов SMB (SMB Signing)

Обнаружение NTLM Relay

Обнаружение Relay-атак является нетривиальной задачей и подразумевает коррелирование событий из нескольких источников данных.

Один из способов - это сопоставление IP-адреса и имени узла в событии 4624 (успешная авторизация) на узле, куда происходит перенаправление аутентификации. Назовем его атакуемый узел. Узлом источником назовем тот узел, который попался на уловку Responder и направил NTLM-хеш атакующему узлу. Например, он имеет имя ws-1743 и IP 10.0.0.1 Атакующий узел тут - это тот, кто осуществил атаку MiTM, находится между источником и атакуемым. Имеет имя kali и IP 10.0.0.2

Так вот, в событии 4624 на атакуемом узле в поле IPAddress будет IP атакующего (10.0.0.2), а имя узла источника (ws-1743), то есть будет несоответсвие информации, откуда произошла авторизация.

Такое несоответсвтие также актуально при авторизации на третьем узле через туннель. Но там наоборот имя узле будет атакующего, а IP - того узла, где проброшен туннель. Или если авторизация произошла через балансировщик - в этом случае такое правило может порождать ложные срабатывания.

Last updated

Was this helpful?