Хакеры давно используют документы MS Office как контейнеры для доставки пейлоада. Однако написание макросов и поиск уязвимостей в самих офисных программах — не единственные способы заставить их работать так, как нам нужно. В этой статье мы рассмотрим нетривиальный прием, заставляющий атакуемый компьютер c Windows передать нам по сети учетные данные пользователя при открытии файла .docx.
 

SMB

SMB — это сетевой протокол, который служит в основном для доступа к данным на удаленном компьютере. Говоря проще, когда ты пытаешься залезть на шару, то как раз им и пользуешься. Выпущен он был в далеком 1983 году, но лишь со времен Windows 2000 стал походить на тот, каким мы его знаем сейчас (например, работать на 445-м порте).

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

В рамках данной статьи мы рассматриваем конкретно SMBv2. Нам необходимо знать, что существует механизм защиты Microsoft SMB Protocol. Он основан на двух методах контроля доступа: share-level и user-level.

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

Метод user-level также берет за основу логин и пароль. Отличие заключается в том, что в этом случае системный администратор задает список доступа, то есть явно указывает, каким пользователям и группам предоставить доступ к ресурсу. Нам интересен и тот и другой метод, так как в обоих случаях способ аутентификации остается неизменным — NTLMv2.

 

NTLMv2

Нас интересует именно NTLMv2, так как SMBv2, который мы будем рассматривать, использует его. Эта версия протокола сетевой аутентификации появилась во времена Windows NT 4.0 SP4 и с небольшими изменениями дожила до наших дней в составе Windows 10. В NTLMv2 используется одноименный тип рукопожатий (NTLMv2 handshake), считающийся более безопасным, чем устаревшие LM и NTLM первой версии.

Работает все следующим образом. При открытии документа со ссылкой на сетевую шару клиент (которым в нашем случае будет компьютер жертвы) передает этому серверу команду на получение контента. Для этого он отсылает ему имя пользователя и имя домена, на что сервер запускает процедуру авторизации по типу «запрос/ответ».

Он отправляет клиенту однократно используемое рандомное число — server nonce. В ответ клиент отсылает новый запрос, который содержит другое псевдослучайное число — client nonce и метку времени.

Запросы клиента и сервера объединяются в общий секрет (session nonce), из которого на стороне сервера вычисляется хеш сессии HMAC-MD5 или HMAC-SHA-256 (в зависимости от версии SMB и настроек безопасности).

На стороне клиента хеш сессии шифруется тремя ключами DES, генерируемыми из дополненного нулями и разделенного на три блока NT-хеша пользовательского пароля. Это и есть итоговый NTLMv2-ответ, который отправляется серверу.

Сервер объединяет NTLMv2-ответ со своим запросом и вычисляет от него новый хеш HMAC-MD5 или HMAC-SHA-256.

На финальном этапе контроллер домена получает хешированный NTLMv2-ответ вместе с запросами клиента и сервера. Он считывает из своей базы NT-хеш пользовательского пароля и расшифровывает полученный клиентский ответ. Если удачно — серверу возвращается ответ об успешной аутентификации.

Поясню для заядлых брутфорсеров: множество хешей NT составляет 2^128 (или более 340 тысяч дециллионов) вариантов. Средняя скорость брутфорса пар NTLM-хеш — пароль на компе с Core i7 и топовой видеокартой уровня GTX1080 составляет порядка 700 миллионов в секунду (зависит от программы и особенностей конфигурации). Поиск по радужным таблицам на нем же выполняется гораздо быстрее — на скорости около 100 000 миллионов в секунду.

 

Описание уязвимости

В конкретном примере рассматривается частный случай атаки Pass the Hash, подробности о которой читай во врезке. Атаковать мы будем с помощью Office Open XML. Это формат хранения офисных документов, и представляет он собой не что иное, как обычный ZIP-архив, в который упакованы текст, графика и остальные данные. Нам необходимо заставить документ обратиться к удаленному (естественно, подконтрольному нам) SMB-серверу, перехватить трафик и выудить оттуда хешированные учетные данные. Для этого воспользуемся возможностью данного формата встраивать в тело документа текст из другого документа (субдокумента).

В частности, в MS Office имеется функция под названием subDoc, о которой и пойдет речь. Сама функция ничего особо злого в себе не несет, так как предназначена она для динамического обновления контента.

К примеру, возьмем два файла: doc1 и doc2. Вставим при помощи функции subDoc текст из doc1 в doc2. Изменим текст в doc1. Теперь при открытии файла doc2 он обратится к источнику текста и внесет те же самые изменения, а точнее — просто обновит содержимое.

Фокус в том, что мы можем модернизировать файл doc2 таким образом, чтобы он ссылался на файл на удаленном сервере (неважно, в локальной сети это будет или за NAT). На этот раз, открывая doc2, Word обратится по SMB-протоколу за содержимым, что позволит нам перехватить трафик и достать оттуда необходимые нам данные. Если файл будет недоступен, то документ просто не сможет обновиться.

Делать мы будем так, чтобы ссылка была вообще не на файл, а просто на сервер по SMB. На том конце, естественно, кто-то встретит нужные пакеты и получит заветный логин (в открытом виде) и NTLMv2-ответ (с которым в итоге и нужно развлекаться). При этом на стороне атакуемого не будет никакой подозрительной активности. Он просто открывает файл.

 

Подготовка

Для реализации описанной выше теории нам необходимы четыре вещи:

  1. Любая Linux-машина (какой уж взлом без линуксов-то…).
  2. Пакет Microsoft Word, начиная с 2007.
  3. Прямые руки.
  4. Компьютер жертвы или его имитация.

В эксперименте я использовал следующие программы:

  • Ubuntu Server 16.04;
  • MS Windows 7 Ultimate (сборка 7600);
  • пакет MS Office 2010, стандартное издание.

Помимо Windows 7, успешные испытания были проведены на Windows Server 2012 R2, версия 6.3, билд 9600.


Скачать:









Важно:


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





Заходи на mc.foxygame.ru:25565

Советуем прочитать