githubEdit

NTLM-хеши

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

Что такое NTLM

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

circle-info

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

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

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

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

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

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

chevron-rightDowngrade-атакиhashtag

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 и его секретыchevron-right
  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 не включает механизмы защиты от повторного использования хешей.

circle-info

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

Сетевые хеши, 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), то есть будет несоответсвие информации, откуда произошла авторизация.

circle-info

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

Last updated

Was this helpful?