Очень часто встречаю, что люди путают разные типы хэшей и думают, что 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.
Алгоритм работы:
Приводим пароль к верхнему регистру
Если пароль длинее 14 байтов, то он обрезается до 14 байтов. Если короче, то дополняется нулями.
Получившийся пароль делим на 2 части по 7 байтов.
После каждый 7 битов вставляется ноль и получаем 2 8-байтовых строки
Эти 2 8-байтовых строки далее используются для шифрования строки
KGS!+#$%
при помощи алгоритма DESКонкатенируем полученные значения и получаем 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
Как я уже упомянал, мы можем произвести атаку Pass-The-Hash.
Ловим Net-NTLMv2
Все что нам нужно - запустить Responder или Inveigh и ловить отстуки с хэшами
sudo responder -I eth0 -v
Краткий вывод
LM-хэши и NT-хэши - это хэши паролей для хранения их в Windows. Храняться в SAM или NTDS.dit. Могут быть крякнуты для получения пароля в открытом виде, а NT хэш еще и использован для атаки Pass-The-Hash.
NTLMv1/v2 - это протоколы, используемые для сетевой аутентификации в средах Windows. Они используют NT-хэш в алгоритме, что означает, что его можно использовать для восстановления пароля с помощью атак методом перебора. Получить их можно, допустим, проведя атаку LLMNR Poisoning, то есть проведя атаку, где потребуется взаимодействие по сети. Стоить уточнить, что их можно релеить, что добавляет нам еще 1 вектор атаки.
olegtsss
"Но если нам удается перехватить их… мы не можем провести атаку Pass-The-Hash… Мы можем… попробовать получить пароль в плейн тексте или релеить." Не понятно, в начале вы говорите, что Pass-The-Hash не пройдет, потом, что релеить можно?
whoam1ns3 Автор
Когда мы релеим, мы все делаем во время процесса аутентификации, нам не нужно проводить атаку Pass-The-Hash.
Описание ниже взято из данной статьи
olegtsss
Понятно, спасибо. Сложно выражены мысли, приходится перечитывать раз за разом, чтобы уловить сутью