Pass the Hash через Open XML. Створюємо документ з сюрпризом для перехоплення хешу NTLMv2-SSP і Брута пароль

  1. Зміст статті Хакери давно використовують документи MS Office як контейнери для доставки пейлоада....
  2. WARNING
  3. NTLMv2
  4. Питання до читача
  5. опис уразливості
  6. Pass the Hash
  7. підготовка
  8. Продовження доступно тільки учасникам
  9. Варіант 2. Відкрий один матеріал

Зміст статті

Хакери давно використовують документи 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

WARNING

Вся інформація в цій статті надана в ознайомлювальних цілях. Ні редакція, ні автор не несуть відповідальності за будь-можливу шкоду, заподіяну даними матеріалами!

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 мільйонів гривень на секунду.

Питання до читача

Як ти думаєш, скільки часу буде потрібно на брутфорс пароля по NTLM-хешу при стандартному математичному очікуванні 50% (тобто коли пароль відшукується в першій половині безлічі перебираються варіантів)?

Відповідь для ледачих: комп згорить швидше.

опис уразливості

У конкретному прикладі розглядається окремий випадок атаки 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-відповідь (з яким у підсумку і потрібно розважатися). При цьому на стороні атакується не буде ніякої підозрілої активності. Він просто відкриває файл.

Pass the Hash

Суть атаки передачі хешу полягає в тому, щоб змусити атакується комп'ютер відправити на мережевий вузол, підконтрольний хакеру, запит, який містить хешировать пароль поточного користувача. У даній статті розглядається варіант з використанням посилання на загальний мережевий ресурс в «зловмисно складеному» документі формату Office Open XML. При відкритті файлу автоматично виконається спроба авторизації по SMB без Session Security Flag, для чого відправиться стандартний запит, який містить зашифрований NTLM-хеш пароля.

Зрозуміло, це справедливо тільки в тому випадку, якщо на комп'ютері жертви використовується SMB-NTLM. Якщо корпоративна мережа мігрує на Kerberos, зміниться система «запит / відповідь». У ній з'явиться проміжний сервер, тому таким способом хеш перехопити вже не вдасться. Детальніше див. доповідь c конференції Black Hat.

підготовка

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

  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.

Продовження доступно тільки учасникам

Варіант 1. Приєднайся до товариства «Xakep.ru», щоб читати всі матеріали на сайті

Членство в співтоваристві протягом зазначеного терміну відкриє тобі доступ до ВСІХ матеріалами «Хакера», збільшить особисту накопичувальну знижку і дозволить накопичувати професійний рейтинг Xakep Score! Детальніше

Варіант 2. Відкрий один матеріал

Зацікавила стаття, але немає можливості стати членом клубу «Xakep.ru»? Тоді цей варіант для тебе! Зверни увагу: цей спосіб підходить тільки для статей, опублікованих більше двох місяців тому.


Ru»?

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

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: