Эксплуатация CVE-2024-21413 (Outlook)
Статус проекта: Приостановлен (незавершенная практика; не удалось захватить NTLM-хеши)
Цели
Попытка эксплуатации уязвимости CVE-2024-21413, которая позволяет утечку NTLM-хешей в Outlook при взаимодействии с вредоносными ссылками.
Целью практики было не создание с нуля всех инструментов, используемых в атаке, а глубокое понимание их центрального механизма и экспериментирование с реальными ошибками при создании собственной инфраструктуры.
Я использовал коды эксплойтов и SMTP/POP3-серверов, разработанные сторонними лицами и опубликованные сообществом, за что я глубоко благодарен.
Содержание
- Требования
- Виртуальные машины
- Установка
- Поток эксплуатации
- Тесты и результаты
- Извлеченные уроки
Требования
- Python 3.10+
- Outlook 2016
- Kali Linux
- Собственные SMTP/POP3-серверы
- Эксплойт
- Виртуальные машины
Виртуальные машины
Машина-жертва (Windows)
- ОС: Windows 10 Home (x32)
- Outlook: Microsoft Outlook 2016 (версия 16.0.4266.1001)
- Сеть: Адаптер 1: NAT, Адаптер 2: Внутренняя сеть
Машина-атакующий (Kali)
- ОС: Kali Linux 2025.1
- Установленные инструменты и библиотеки:
- Python 3.10+
- smtplib
- email
- socket
- threading
- os
- aiosmtpd
- servidor-smtp.py
- servidor-pop3.py
- exploit.py
- Сеть: Адаптер 1: NAT, Адаптер 2: Внутренняя сеть
Инфраструктура
- SMTP- и POP3-серверы были развернуты на машине-атакующем (Kali) вручную с помощью скриптов на Python.
Машины запускались в VirtualBox.
Установка
Установка (Kali)
Установка SMTP-сервера
- Venv: Виртуальное окружение с Python 3
- Шаг 1: Создать каталог для сервера и виртуального окружения (mkdir smtp-lab) и перейти в него (cd smtp-lab)
- Шаг 2: Создать виртуальное окружение внутри каталога (python3 -m venv venv)
- Шаг 3: Активировать виртуальное окружение (source venv/bin/activate)
- Шаг 4: Установить aiosmtpd внутри виртуального окружения (pip install aiosmtpd)
- Шаг 5: Создать код сервера (nano servidor-smtp.py)
- Шаг 6: Запустить сервер (python3 servidor-smtp.py)
Код SMTP-сервера
Код SMTP-сервера находится в файле src/servidor-smtp.py.
Установка POP3-сервера:
- Шаг 1: Создать каталог для сервера (mkdir pop3-server) и перейти в него (cd pop3-server)
- Шаг 2: Создать код сервера (nano server-pop3.py)
- Шаг 3: Запустить сервер (python3 server-pop3.py)
Код POP3-сервера
Код POP3-сервера находится в файле src/servidor-pop3.py.
Установка эксплойта
- Шаг 1: Создать код; этот код я взял у CMNatic, но адаптировал под свою инфраструктуру (nano exploit.py)
Код эксплойта
Код эксплойта находится в файле src/exploit.py.
Установка (Windows 10)
- Шаг 1: Установить ISO Microsoft Office 2016; я использовал сайт archive.org и установил версию Microsoft Office 2016 Professional Plus x86
- Шаг 2: После установки ISO скачать Microsoft Office и войти в Outlook 2016
- Шаг 3: Правильно настроить Outlook
Настройка Outlook 2016
Здесь показано, как настроить Outlook для работы с тестовыми SMTP и POP3-серверами.
- Как в поле "Incoming mail server", так и в "Outgoing mail server(SMTP)" необходимо указать IP-адрес внутреннего сетевого интерфейса атакующей машины (Kali).
- Пароль не имеет значения для атаки, можно выбрать любой.

Поток эксплуатации
Цель эксплойта для CVE-2024-21413 — заставить Outlook выполнить автоматический SMB-запрос к ресурсу, контролируемому атакующим, что приводит к отправке NTLM-хеша жертвы, который можно перехватить офлайн для взлома.
Подготовка окружения
- Атакующая машина (Kali) запускает собственный SMTP и POP3-сервер.
- Outlook на машине-жертве (Windows 10) настроен на получение писем с этого сервера.
- Атакующая машина (Kali) поднимает поддельный SMB-сервер (в моем случае я использовал Responder).
Отправка вредоносного письма
- Письмо отправляется жертве с SMTP атакующего.
- Тело сообщения содержит вредоносную UNC-ссылку.
- Путь спроектирован так, чтобы активировать автоматическое SMB-подключение, если пользователь взаимодействует со ссылкой.
Взаимодействие пользователя
- Жертва открывает Outlook и видит сообщение.
- Ожидается, что она нажмет на ссылку.
- Если Outlook попытается разрешить UNC-путь, генерируется SMB-запрос к серверу атакующего.
- Ниже показано, как выглядит вредоносное письмо в Outlook с точки зрения жертвы:

Перехват хеша
- SMB-сервер атакующего принимает соединение.
- Outlook при попытке аутентификации автоматически отправляет NTLM-хеш пользователя.
- Атакующий может сохранить этот хеш для атаки типа hashcat.
Примечания
- В моем случае письмо успешно доставлялось в Outlook.
- Однако при нажатии на UNC-ссылку ожидаемое SMB-соединение не устанавливалось.
- Я до сих пор не знаю причину сбоя, хотя подозреваю, что это может быть связано с настройками сети, версией Outlook или проблемами доступности/ответа SMB-сервера.
Тесты и результаты
Функции, которые работали
- SMTP и POP3 настроены правильно, Outlook синхронизировался с ними без ошибок.
- Вредоносное письмо было получено Outlook.
- Сообщение отображало UNC-ссылку без блокировки.
- SMB-окружение атакующего было поднято и находилось в режиме прослушивания.
Что не сработало
- При нажатии на UNC-ссылку в Outlook не было видимого SMB-трафика в Wireshark.
- Не было сгенерировано ни одной попытки NTLM-аутентификации с машины-жертвы.
- На SMB-сервере не было зарегистрировано подключений.
Анализ с помощью Wireshark
- Снимки сделаны на интерфейсе Kali (eth1).
- Наблюдался SMTP и POP3 трафик, но ни одного пакета TCP 445 или UDP 137/138 при нажатии на ссылку.
- Также была попытка запустить Outlook от имени администратора: без изменений.
Извлеченные уроки
Полученные знания
- Как работают SMTP и POP3 на низком уровне.
- Что именно ожидает Outlook при синхронизации учетных записей.
- Как Outlook интерпретирует UNC-ссылки и какие условия должны быть выполнены для их автоматического открытия.
- Ценность Wireshark и логов как инструментов отладки в сложных лабораторных условиях.
Почему я решил остановиться здесь
- После многочисленных попыток эксплойт не дошел до этапа захвата хеша, что было конечной целью.
- Я задокументировал всю инфраструктуру, тесты и результаты, что остается ценным как учебная лаборатория.
- Хотя конечная цель не была достигнута, процесс позволил мне глубоко изучить каждый задействованный технический компонент. Это можно будет возобновить в будущем.
Благодарности
Код этого эксплойта основан на работе CMNatic из https://github.com/CMNatic/CVE-2024-21413. Я внес изменения для адаптации к своему окружению.