Анатомия атак типа «Pass the Hash»

OSzone.net » Microsoft » Информационная безопасность » Анатомия атак типа «Pass the Hash»
Автор: Крис Сандерс
Иcточник: www.winsecurity.ru
Опубликована: 14.03.2011

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

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

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

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

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

*
Увеличить

Рисунок 1: Нормальная попытка соединения на базе аутентификации

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

*
Увеличить

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

Использование Metasploit для «Pass the Hash»

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

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

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

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

*
Увеличить

Рисунок 3: Запуск консоли Metasploit

Metasploit – настоящий Фреймворк, состоящий из различных модулей, используя которые он решает свои задачи. В нашем случае мы воспользуемся модулем psexec. Psexec – это обычный инструмент (используется не только в Metasploit), который нужен для удаленного запуска процессов в системе и перенаправления результатов работы этих процессов обратно в систему, через которую вы работаете. Для работы с модулем введите use windows\smb\psexec и нажмите Enter. Состояние командной оболочки, которой вы пользуетесь, должно отразить использование этого модуля.

*

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

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

*
Увеличить

Рисунок 5: Установка функциональной части для обратной TCP-оболочки

Для работы этого модуля и требуемой функциональности нужно настроить некоторые опции. Для этого введите show options и нажмите Enter.

*

Рисунок 6: Настраиваемые опции для данного модуля и требуемой функциональности

Для установки нужных нам опций воспользуемся синтаксисом 'set [название опции] [значение]'. Нужно установить следующие опции:

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

*
Увеличить

Рисунок 7: Опции атаки настроены

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

*
Увеличить

Рисунок 8: Успешная атака дает нам командный процессор Windows

Защита против «Pass the Hash»

Атаки «Passing the hash» трудно обнаруживать и предотвращать из-за самой природы процесса авторизации. Сделать тут можно совсем немного:

Заключение

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


Ссылка: http://www.oszone.net/14579/Pass-the-Hash