26 апреля, 2024

Как перехватывать и дешифровать пароли Windows по локальной сети

Содержание:

Хэши, содержащие пароли входа, передаются между компьютерами Windows в локальных Wi-Fi сетях. Перехватив и дешифровав эти хэши с помощью программ Responder и John the Ripper, мы можем узнать учетные данные пользователей, которые потом можно использовать для получения физического доступа к их компьютеру.

Как такая атака реализуется

При взаимодействии с другими устройствами в локальной сети и для разрешения имен хостов этих устройств Windows использует протокол Link-Local Multicast Name Resolution. Любой клиент в локальной сети может взаимодействовать с протоколом LLMNR, чтобы помочь Windows в разрешении имени хоста другого устройства в этой сети.

Уязвимость заключается в готовности Windows принимать запросы от любого устройства в такой сети, даже если такой запрос некорректен. В протокол LLMNR не включена проверка входящих данных, что создает благоприятные условия для ее использования хакерами.

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

Хэши NTLM, используемые LLMNR, очень ценны для хакеров.

Что такое NTLMv2

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

NTLM версии 2 (NTLMv2), введенная в операционные системы Windows в конце 90-х годов, повышает безопасность NTLM против большого количества спуффинговых атак и брутфорс-атак за счет повышения криптостойкости алгоритма хеширования.

К сожалению, алгоритм хеширования HMAC-MD5, используемый NTLMv2, по-прежнему очень уязвим против брутфорс-атак, позволяя осуществлять десятки миллионов попыток ввода пароля в минуту — такие атаки можно выполнять даже с использованием устаревшего железа и Raspberry Pi.

Шаг 1. Установка и использование Responder

Для начала атаки нужно получить NTLMv2-хэш с целевого компьютера. Это можно сделать с помощью Responder — инструмента командной строки, написанного SpiderLabs и Laurent Gaffie. Он способен анализировать и изменять ответы LLMNR и mDNS. Responder используется для взаимодействия с компьютерами Windows в локальной сети и перехвата NTLMv2-хэшей, передаваемых с целевого устройства.

Читать также:  Взлом Bluetooth. Часть 3 (разведка)

Его можно найти в репозиториях Kali Linux. Перед установкой последней версии Responder сначала воспользуйтесь командой apt-get update. Для установки используйте последовательно одну за другой вот эти команды:

apt-get update
 apt-get install responder

Когда установка завершится, можно воспользоваться аргументом —help, чтобы просмотреть все доступные опции Responder’а.

Запустите Responder этой командой:

responder -I wlan0

Если для подключения к целевой беспроводной сети используется встроенная беспроводная карта, то именно «wlan0», скорее всего, будет именем используемого интерфейса. Аргумент -I является единственным обязательным аргументом для использования Responder. Имя интерфейса можно найти с помощью команды ifconfig.

Терминал Responder’а перейдет в состояние «прослушивания», в котором он будет отвечать на LLMNR-запросы, проходящие в локальной сети. Когда он обнаружит NTLMv2-хэш, принадлежащий целевому Windows-компьютеру, Responder выведет этот хэш в терминале.

Весь хэш (выделен на скриншоте красным) нужно сохранить локально. Это можно сделать с помощью nano и сохранить в файл с именем hash.txt.

nano hash.txt

Чтобы сохранить изменения и выйти нажмите Ctrl + X, затем Y, затем Enter.

Шаг 2. Установка John the Ripper

Брутфорс полученного хэша будет последним испытанием этой атаки, и для его выполнения мы будем использовать John the Ripper. Он осуществляет перебор паролей с использованием CPU. В настоящее время он доступен в большинстве популярных дистрибутивов Linux, таких как Kali Linux и ParretSec.

Основной целью John the Ripper является обнаружение слабых паролей путем проведения различных брутфорс-атак против обычных алгоритмов хэширования и шифрования, для таких объектов, как защищенные паролем ZIP-файлы, приватные SSH-ключи PuTTY, зашифрованные базы данных паролей Firefox, «связки ключей» macOS (keychains), хэши Windows NTLMv2 и многие другие.

John the Ripper (в консоли называемый просто john) можно установить с помощью этой команды:

apt-get install john

John the Ripper поддерживает широкий спектр алгоритмов хэширования и шифрования. Аргументы -test и -format можно использовать для проведения замеров скорости взлома, с которой может работать John, для того, чтобы определить, какое количество NTLMv2-паролей в секунду может сгенерировать и попробовать компьютер во время брутфорс-атаки.

john -test -format:netntlmv2

Чтобы просмотреть все данные по бенчмаркам для всех доступных алгоритмов хэширования, поддерживаемых John the Ripper, просто воспользуйтесь аргументом -test без дополнительных опций.

john -test

Шаг 3. Брутфорс NTLMv2-хэшей с помощью John the Ripper

Есть два способа выполнить брутфорс — быстрый и медленный. Каждый способ имеет свои преимущества и недостатки, но полезно знать, как каждый из них работает.

Читать также:  Как получить полную анонимность с помощью Tor, Whonix и PIA VPN

Вариант 1. Использование вордлистов и словарей (быстрый способ)

Атака с использованием вордлиста для подбора NTLMv2-хэшей, скорее всего, пройдет очень быстро. Мы обнаружили, что John смог обработать более 10 000 000 паролей менее чем за 20 секунд. Это связано с тем, что NTLMv2 использует слабый алгоритм хэширования, который не в состоянии обеспечить разумную степень безопасности. Даже используя старые процессоры Intel, John способен обрабатывать миллионы паролей за короткий промежуток времени.

Чтобы указать желаемый вордлист для брутфорс-атаки, используйте аргумент -wordlist.

john -wordlist: passwords.txt hash.txt

Когда хэш будет успешно взломан, он появится в терминале рядом с именем пользователя, связанным с этим хэшем. На нашей виртуальной машине Windows 10 пароль — nullbyte, а IEUser — это имя пользователя (логин).

В качестве альтернативы хэш всегда можно просмотреть еще раз, воспользовавшись аргументом —show с указанием пути к файлу, содержащему хэш.

Вариант 2. Использование для взлома хэша режима маски (медленный способ)

Читателям, у которых есть специальное железо для брутфорса или Raspberry Pi, которые способны работать в течение нескольких дней (или недель) без перерыва, режим маски (Mask Mode) у John’а может предложить комплексное решение.

Режим маски позволяет проводить более полный и тщательный брутфорс всех возможных символов в пароле. Например, «Password23», скорее всего, будет найден в большинстве вордлистов, а вот «Pzzw1rD» скорее всего, не будет. Используя режим маски, Джон может пробовать каждый возможный символ от A до Z и цифру от 0 до 9.

По умолчанию у Джона есть предопределенные наборы символов. Вот эти наборы:

? l = abcdefghijklmnopqrstuvwxyz
 ? u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
 ? d = 0123456789

Аналитика паролей, основанная на попавших в паблик базах данных, говорит нам, что большинство паролей будут от шести до восьми символов и в основном состоят из строчных букв. Это правило может быть представлено с использованием аргумента -mask и параметра ?l, как показано в приведенной ниже команде.

john -mask=?l?l?l?l?l?l?l?l hash.txt

Каждый «?l» представляет собой один символ в пароле. «l» здесь буквально означает «строчный регистр». Маска, содержащая только прописные буквы, вместо этого использует «?u».

john -mask=?u?u?u?u?u?u?u?u?u hash.txt

Также возможно комбинирование наборов символов.

John -mask=?u?l?l?l?l?l?l?l hash.txt

Как упоминалось ранее, большинство паролей — длиной от шести до восьми символов. Чтобы сэкономить время при выполнении брутфорса можно принудительно установить минимальную длину с помощью аргумента -min-len.

john -mask=?u?l?l?l?l?l?l?l -min-len=6 hash.txt

Чтобы добавить цифры в конце паролей, можно использовать параметр ?d.

john -mask=?u?l?l?l?l?l?d?d -min-len=6 hash.txt

Чтобы просмотреть прогресс John’а, пока идет брутфорс, можно нажать на стрелку вниз на клавиатуре для вывода в консоль информации о деталях перебора.

Читать также:  Как из системы жертвы сделать точку опоры для захвата каждого компьютера в сети

Те, кто хочет ускорить выполнение брутфорс атак, могут посмотреть наши материалы по использованию Hashcat или почитать на Stackoverflow о брутфорсе с помощью GPU.

Как защититься от Responder и брутфорс-атак

Предотвращение этих типов атак не очень-то легкое дело, и есть всего пара надежных способов, которые вы можете применить:

  • Используйте более сильный пароль. Слабый алгоритм хэширования, используемый NTLMv2, означает, что пароли длиной до 16 символов будут не слишком большой проблемой для хакеров, особенно если они используют специализированное железо. Необходимо использовать длинные сложные пароли.
  • Отключите протоколы LLMNR и NBT-NT. Протоколы Windows буквально напрашиваются на то, чтобы их скомпрометировали. При возможности отключите LLMNR и NBT-NS.

Добавить комментарий