Анализ атаки Pass the Hash

Опубликовано: 9 Апреля, 2023

Введение

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

Что, если я скажу вам, что при определенных обстоятельствах мне даже не нужно взламывать ваши пароли, чтобы получить доступ к системе, как если бы я использовал ваше имя пользователя и пароль? Нет, это не относится к какому-то специально разработанному эксплойту 0-day или обману, заставляющему вас щелкнуть по странной ссылке в фишинговом электронном письме. На самом деле это делается очень просто с помощью техники Pass the Hash (нет, эта статья не о приготовлении особых пирожных). В этой статье мы рассмотрим, как работает этот метод, и я продемонстрирую процесс, который можно использовать для получения украденных хэшей паролей и их успешного использования без необходимости взлома их скрытого содержимого. Как всегда, я расскажу о некоторых методах обнаружения и защиты о том, как вы можете не стать жертвой этой атаки.

Хэши на уровне пакетов

Всякий раз, когда вы создаете пароль для учетной записи в Windows, он преобразует этот пароль в хэш. Хэш — это результат криптографической функции, которая берет строку данных произвольного размера, выполняет над ней математическую функцию шифрования и возвращает строку фиксированного размера. Конечным результатом является то, что вместо пароля «PassWord123» у вас есть хэш-строка «94354877D5B87105D7FEC0F3BF500B33». Это имеет смысл по нескольким причинам. Во-первых, это означает, что ваш пароль не хранится на вашем локальном жестком диске в виде открытого текста, где любой может получить к нему доступ, а во-вторых, ваш пароль не передается по сети в виде открытого текста, когда вы аутентификация на другом устройстве (например, на контроллере домена). Я не собираюсь перефразировать (каламбур) в этой статье, как создаются хэши, но если вы хотите просмотреть, как работает этот процесс, вы можете просмотреть мою предыдущую статью о взломе паролей Windows здесь.

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

Изображение 23513
Рисунок 1: Обычная попытка подключения на основе аутентификации

Теперь рассмотрим альтернативный сценарий. Что если, когда мы вручную устанавливаем соединение с хостом, у которого есть ресурс, к которому мы хотели бы получить доступ, но вместо того, чтобы передавать ему наше непривилегированное имя пользователя и пароль, мы передаем ему имя пользователя администратора и хэш администратора, который мы украли? Что мы сделали, так это получили административный доступ к этому хосту. Помните, что все, о чем заботится хост, — это получение хэша, соответствующего тому, что он ожидает. Это означает, что вам не нужно выполнять одностороннюю функцию хеширования пароля, вам просто нужно предоставить хэш, который является основой для этой атаки.

Изображение 23514
Рисунок 2: Передача хэша напрямую целевому хосту

Использование Metasploit для передачи хэша

Теперь, когда мы рассмотрели теорию атаки, пришло время ее выполнить. В этом упражнении мы будем передавать украденный хэш пользователя с правами администратора в систему-жертву. Для выполнения этой атаки нам понадобятся две вещи. Во-первых, нам понадобится украденный хеш административного пользователя. Существует несколько различных методов получения хэшей паролей, некоторые из наиболее популярных из которых обсуждаются здесь. Вместе с нашим украденным хешем нам понадобится копия Metasploit, инструмента, который мы будем использовать для проведения атаки.

Metasploit — это свободно распространяемая среда тестирования на проникновение, разработанная HD Moore, в настоящее время работающая в Rapid7. Доступны тысячи статей и учебных курсов по Metasploit, и, хотя мы используем его для очень специфической атаки, он способен использовать самые разные векторы эксплуатации. Вы можете получить Metasploit отсюда.

Кроме того, вы можете загрузить и использовать Backtrack 4. BT4 — это дистрибутив Linux live-CD, разработанный специально для взлома и тестирования на проникновение, который поставляется с множеством предустановленных и предварительно скомпилированных инструментов, одним из которых является Metasploit. Вы можете скачать BT4 отсюда. Затем вы найдете Metasploit в папке /pentest/exploit/framework3. Примеры скриншотов, используемые в остальной части этой статьи, взяты из BT4.

С нашим украденным хэшем и Metasploit в руках мы начинаем подготовку атаки. Чтобы начать, вы должны сначала запустить консоль Metasploit. В BT4 вы можете сделать это, перейдя в папку /pentest/exploit/framework3 и набрав./msfconsole.

Изображение 23515
Рисунок 3: Запуск консоли Metasploit

Metasploit — это настоящий фреймворк, поскольку он зависит от использования различных модулей для выполнения своих действий. В этом случае мы будем использовать модуль psexec. Psexec — это очень распространенный инструмент (не специфичный для Metasploit), который используется для удаленного выполнения процессов в системах и перенаправления вывода этих процессов обратно в систему, которую вы используете. Чтобы использовать этот модуль, введите use windowssmbpsexec и нажмите Enter. Приглашение оболочки, которое вы используете, должно измениться, чтобы отразить использование этого модуля.

Изображение 23516
Рисунок 4: Использование модуля psexec

Затем мы должны установить полезную нагрузку, которую мы доставляем. Metasploit откроет очень простое соединение с нашей жертвой, поэтому, как только имя пользователя и хеш предоставят нам надлежащую аутентификацию, полезная нагрузка определит, что выполняется с использованием psexec. В этом случае у нас есть всевозможные злые намерения для этой жертвы, поэтому вместо того, чтобы просто открыть одну конкретную программу, мы хотим запустить командную оболочку, которую мы можем использовать для выполнения множества неприятных команд. Один из наиболее эффективных способов сделать это — использовать обратную оболочку TCP. Это полезная нагрузка, которая будет выполнять экземпляр cmd.exe и передавать его обратно через наше соединение, чтобы мы могли получить к нему удаленный доступ. Чтобы использовать этот тип полезной нагрузки, установите payload windows/shell_reverse_tcp.

Изображение 23517
Рисунок 5: Установка полезной нагрузки для обратной TCP-оболочки

Чтобы использовать этот модуль и полезную нагрузку, нам нужно настроить несколько параметров. Чтобы увидеть эти параметры, вы можете ввести параметры показа и нажать Enter.

Изображение 23518
Рисунок 6: Настраиваемые параметры с учетом текущего модуля и полезной нагрузки

Чтобы установить параметры, которые нам нужны для работы, мы будем использовать синтаксис «установить [имя параметра] [значение]». Должны быть установлены следующие значения:

  • RHOST — IP-адрес жертвы
  • SMBPass — украденный хэш жертвы
  • SMBUser — имя пользователя жертвы
  • LHOST — IP-адрес вашей атакующей машины.

В большинстве случаев необходимо настроить только эти четыре параметра, а для всех остальных параметров можно оставить значения по умолчанию. Когда вы настроите все эти параметры, выходные данные параметров должны выглядеть так, как показано на рис. 7.

Изображение 23519
Рисунок 7: Завершенная настройка параметров для этой атаки

На этом вся подготовка должна быть завершена, и мы можем провести атаку. Чтобы сделать это, просто введите эксплойт и нажмите Enter. В случае успеха вы должны увидеть что-то похожее на вывод, показанный на рис. 8, который представляет собой удобную командную оболочку Windows. На данный момент у нас теперь есть административный контроль над машиной, не зная пароля пользователя-администратора.

Изображение 23520
Рисунок 8: Успешный эксплойт дает нам командную оболочку Windows

Защита от передачи хэша

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

  • Мониторинг системы обнаружения вторжений. С точки зрения IDS вы, скорее всего, не сможете поймать злоумышленника, выполняющего саму атаку pass the hash, потому что обычно она выглядит как обычная последовательность проверки подлинности. Однако вы можете успешно поймать злоумышленника, основываясь на действиях, которые он выполняет после получения доступа. Например, в нашем примерном сценарии вы, вероятно, не увидите предупреждение IDS о передаче хэша на компьютер-жертву, но вы, вероятно, увидите предупреждение, когда psexec создаст оболочку и отправит ее обратно по сети. Это позволит вам обнаружить атаку, когда она произойдет, и соответствующим образом отреагировать на инцидент.
  • Изоляция конфиденциальных систем. Все машины, которые считаются содержащими конфиденциальные данные, должны быть изолированы в сети. Используя соответствующую конфигурацию маршрутизатора и брандмауэра, вы можете ограничить доступ к конфиденциальным компьютерам только доверенными узлами. Это предотвратит попытки пользователей на разных машинах использовать метод хеширования для получения доступа к конфиденциальной системе.
  • Двухфакторная аутентификация. Использование паролей как единственного метода аутентификации уходит в прошлое, и на то есть веские причины. Чтобы аутентификация пользователя считалась хорошей, она должна состоять из двух из трех возможных факторов. Этими факторами являются что-то, что вы знаете (пароль), что-то, что у вас есть (смарт-карта, токен), и что-то, чем вы являетесь (отпечаток пальца, сетчатка глаза). Комбинация любого из этих двух способов не позволит пользователю пройти аутентификацию в системе только с помощью пароля или украденного хэша.
  • Ограничить административный доступ. Чем больше учетных записей пользователей имеют административный доступ в сети, тем выше вероятность того, что их хэши будут украдены и использованы для доступа к машинам на привилегированном уровне. Вы всегда должны проводить регулярные аудиты, чтобы определить, действительно ли каждому пользователю, имеющему доступ на административном уровне, это нужно для ограничения поверхности атаки.

Заворачивать

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