Очень часто встречаю, что люди путают разные типы хэшей и думают, что NTLM и NTLMv1/v2 это одно и тоже, а NTLMv1/v2 и Net-NTLMv1/v2 разные типы. Данная статья заметка предназначена для того, что бы разобраться со всем этим.

Если хочешь побыстрее и кратко, то читай тут

NTLMv1/v2 и Net-NTLMv1/v2 одно и то же?

Тут не будет списка различий между Net-NTLMv1/v2 и NTLMv1/v2, ведь это одно и то же! Да, NTLMv1/v2 это всего лишь сокращение для Net-NTLMv1/v2.

Смотрим подробнее

LM хэши, как и NT хэши пользователей хранятся в SAM или в NTDS.dit на контроллере доменов.

Файл ntds. dit представляет собой базу данных, в которой хранится информация Active Directory, такая как сведения о пользователях, группах и членстве в группах. База также включает хеши паролей для всех пользователей в домене. Source

Если вы сдампите хэши, вы увидите примерно такую картину -<username>:<rid> <LM>:<NT>:::.
Пример: JohnDoe:503:aad3c435b514a4eeaad3b935b51304fe:c46b9e588fa0d112de6f59fd6d58eae3:::

LM

LM - старый алгоритм, который не используется, начиная с Windows Vista/Server 2008. Из за особенностей алгоритма, он не является криптостойким, именно поэтому появился NT.

Алгоритм работы:

  1. Приводим пароль к верхнему регистру

  2. Если пароль длинее 14 байтов, то он обрезается до 14 байтов. Если короче, то дополняется нулями.

  3. Получившийся пароль делим на 2 части по 7 байтов.

  4. После каждый 7 битов вставляется ноль и получаем 2 8-байтовых строки

  5. Эти 2 8-байтовых строки далее используются для шифрования строки KGS!+#$% при помощи алгоритма DES

  6. Конкатенируем полученные значения и получаем LM хэшик

NTLM (NT)

NT - немного сложнее и он используется в современных Windows системах. Этот хэш наиболее интересен для хакера пентестера, ведь с этим хэшом можно провести атаку Pass-The-Hash.

Обычно люди называют его NTLM хэшем, что вводит в заблуждение, потому что в одном месте его называют NT, а в другом NTLM хэш. Оба варианта используются в учебных материалах и, обычно, подразумевается одно и тоже, НО правильнее NT.

Алгоритм: Пароль пользователя -> UTF16-LE (LE - Little Endian) -> MD4.

(Net-)NTLMv1/v2

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

Но если нам удается перехватить их, допустим, через атаку LLMNR Poisoning, мы не можем провести атаку Pass-The-Hash (логично, не правда ли?). Мы можем попытаться его сбрутить и попробовать получить пароль в плейн тексте или релеить.

Структура: <username>::<hostname>:<response>:<response>:<challenge>
Пример:

admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:5c7830315c7830310000000000000b45c67103d07d7b95acd12ffa11230e0000000052920b85f78d013c31cdb3b92f5d765c783030

Дампим NTLM хэши

Есть много способов, как получить ntlm хэши пользователей, один из способов ниже

lsadump::lsa /inject /user:Administrator

Подробнее

Дамп в mimikatz
Дамп в mimikatz

Как я уже упомянал, мы можем произвести атаку Pass-The-Hash.

Pass-The-Has
Pass-The-Has

Ловим Net-NTLMv2

Все что нам нужно - запустить Responder или Inveigh и ловить отстуки с хэшами

sudo responder -I eth0 -v
Responder output
Responder output

Краткий вывод

LM-хэши и NT-хэши - это хэши паролей для хранения их в Windows. Храняться в SAM или NTDS.dit. Могут быть крякнуты для получения пароля в открытом виде, а NT хэш еще и использован для атаки Pass-The-Hash.

NTLMv1/v2 - это протоколы, используемые для сетевой аутентификации в средах Windows. Они используют NT-хэш в алгоритме, что означает, что его можно использовать для восстановления пароля с помощью атак методом перебора. Получить их можно, допустим, проведя атаку LLMNR Poisoning, то есть проведя атаку, где потребуется взаимодействие по сети. Стоить уточнить, что их можно релеить, что добавляет нам еще 1 вектор атаки.

Комментарии (3)


  1. olegtsss
    26.03.2022 18:34

    "Но если нам удается перехватить их… мы не можем провести атаку Pass-The-Hash… Мы можем… попробовать получить пароль в плейн тексте или релеить." Не понятно, в начале вы говорите, что Pass-The-Hash не пройдет, потом, что релеить можно?


    1. whoam1ns3 Автор
      26.03.2022 23:14

      Когда мы релеим, мы все делаем во время процесса аутентификации, нам не нужно проводить атаку Pass-The-Hash.

      Описание ниже взято из данной статьи

      При атаках SMB Relay нарушитель внедряется как бы между клиентом и сервером. Он выбирает сервер, на котором желает аутентифицироваться и ждет кого-либо, кто попытается зайти на его машину. Именно при такой ситуации автоматические сканеры уязвимостей и административные скрипты становятся эффективным оружием в руках пен-тестеров. Когда автоматизированный процесс подключается к нарушителю, нарушитель передает информацию о попытке аутентификации целевому сетевому узлу (вероятно, серверу). Этот хост генерирует запрос и отправляет его нарушителю. Нарушитель отправляет этот запрос хосту, от имени которого к нему обращался автоматизированный процесс. Этот хост шифрует запрос с помощью корректного хэша и отправляет обратно нарушителю, после чего нарушитель передает ответ целевому хосту и аутентифицируется.


      1. olegtsss
        27.03.2022 08:10

        Понятно, спасибо. Сложно выражены мысли, приходится перечитывать раз за разом, чтобы уловить сутью