CVE-2022-30190, она же Follina. По данным VirusTotal, первый раз уязвимость эксплуатировали 25 мая, а первый сабмит сделан японской командой исследователей nao_sec 27 мая.
Microsoft Support Diagnostic Tool – сервис в Windows 11/10/8.1/7, который собирает информацию для отправки в службу технической поддержки Microsoft. При обращении к службе поддержки Microsoft специалист поддержки выдаёт ключ, который вводится в MSDT. После запуска MSDT (в поиске Windows ввести MSDT) и ввода ключа, полученного от специалиста, сервис будет активирован и начнёт сбор и анализ информации, чтобы найти решение проблемы пользователя.
![Пример обращения к MSDT Пример обращения к MSDT](https://habrastorage.org/getpro/habr/upload_files/b1a/272/2c6/b1a2722c6630f565020908965610a305.png)
Кратко об уязвимости
Новый Zero-day баг позволяет удалённо выполнить код через Microsoft Office. Злоумышленник создает Maldoc, содержащий ссылку на внешний вредоносный OLE-объект, связанный с находящимся на удалённом сервере HTML-файлом.
Действие эксплойта:
Открытие полученного .doc или .rtf документа.
Документ ссылается на непримечательный URL с протоколом https, скачивающий HTML файл, содержащий код JavaScript.
JavaScript ссылается на URL с необычным идентификатором — ms-msdt вместо https.
В Windows «ms-msdt» является проприетарная ссылкой, вызывающей пакет устранения неполадок.
Командная строка, загруженная в MSDT через URL, запускает недоверенный код, располагающийся на удаленном сервере.
Подготовленный документ при открытии запускает Microsoft Support Diagnostic Tool (MSDT), через который передается любая команда для выполнения в системе, от безвредного запуска программ до повышения привилегий, сбора и передачи паролей. Microsoft были предупреждены о возможности эксплуатации, но без своевременного реагирования появилась возможность использования уязвимости. При эксплуатации окно ввода ключа появляется, но при этом параллельно происходит исполнение скрипта, не требуя ввода ключа.
Известны 2 формата документов, подверженных атакам: .doc (.docx) и .rtf. Подверженные уязвимости версии Office: 2013, 2016, 2019, 2021, Office ProPlus и Office 365. Для эксплуатации необязательно открывать документ, скрипт сработает при предварительном просмотре, также атака работает при отключенных макросах.
География попыток использования эксплойта по данным Securelist:
![](https://habrastorage.org/getpro/habr/upload_files/906/a1f/871/906a1f87129edc1e993bc2d30c89a6f9.png)
![Пример обращения к ms-msdt Пример обращения к ms-msdt](https://habrastorage.org/getpro/habr/upload_files/cef/ee0/1df/cefee01dfebc9b8ed571fc0d7f046e07.png)
Зареверсил и сделал готовую версию эксплойта Джон Хаммонд. Его решение на GitHub. В терминале Kali Linux с помощью команды [python3 follina.py] создаётся файл «follina.doc», с загруженный html пейлоадом на порт :8000. Полученный документ уже подходит для отправки пользователям. По заготовленной команде после просмотра документа открывается калькулятор. Также заложены предустановки: [-c «notepad» ] откроет блокнот, а [-r 9001] запустит reverse shell на порт 9001, но при этом скачивается netcat binary на ПК жертвы с расположением C:\Windows\Tasks, без очистки binary, из-за чего сработает антивирус.
![Пример запуска готового эксплойта Пример запуска готового эксплойта](https://habrastorage.org/getpro/habr/upload_files/34a/201/f29/34a201f294095771580471b948c6ac46.gif)
Распространение Follina
Поскольку CVE эксплуатируется через документ, применимы методы социальной инженерии:
Рассылка писем сотрудникам компании под видом рабочих документов.
Рассылка уведомлений, промоакций.
Размещение документа для скачивания на сайтах.
Загрузка файла на физический носитель (метод «дорожного яблока»).
Основная проблема заключается в самом формате файла. Из-за расширения .doc (.docx) пользователи не чувствуют опасности и спокойно скачивают файл, а дальше – дело техники.
Защита от Follina
Спустя почти месяц после первого сабмита Microsoft выпустили обновление безопасности, закрывающее уязвимость. Патч входит в июньский пак обновлений Windows. До этого было предложение частичное решение, закрывающее CVE-2022-30190. Оно заключалось в отключении протокола MSDT:
Запустить командную строку с правами администратора.
Для резервного копирования изменяемых ключей реестра выполнить команду reg export HKEY_CLASSES_ROOT\ms-msdt filename.
Запустить команду отключения поддержки URL MSDT: reg delete HKEY_CLASSES_ROOT\ms-msdt /f.
Почему же Follina? Название для CVE-2022-30190 придумал Кевин Бомонт, он расшифровал образец кода, полученного с VirusTotal, в который входил RAR-архив с именем 05-2022-0438.rar, а 0438 — это телефонный код итальянского города Follina.
![«Официальное» лого уязвимости «Официальное» лого уязвимости](https://habrastorage.org/getpro/habr/upload_files/701/9aa/ba8/7019aaba8e17c29831f6e17990683dcd.png)
К паранойи осведомленности сотрудников теперь добавилось знание о вредоносных .doc файлах. Несмотря на закрытие уязвимости, неизвестно, как злоумышленники ещё смогут эксплуатировать ms-msdt URL, в очередной раз можно порекомендовать не скачивать непонятные письма, полученные с частных электронных почтовых адресов.
Сигнатурное правило для обнаружения Follina
Специалисты компании «Перспективный мониторинг» разработали сигнатурное правило для обнаружения CVE-2022-30190.
alert tcp any $HTTP_PORTS -> $HOME_NET any (msg:"AM EXPLOIT Microsoft Diagnostic Tool RCE via PCWDiagnostic aka Follina (CVE-2022-30190)"; flow:established,from_server; file_data; content:"location.href"; distance:0; content:"|22|ms-msdt|3A|"; distance:0; content:"/id"; content:"PCWDiagnostic"; content:"/skip"; content:"force"; content:"/param"; content:"IT_RebrowseForFile=?"; content:"IT_LaunchMethod=ContextMenu"; content:"IT_BrowseForFile="; content:"$("; distance:0; content:".exe"; distance:0; reference:url,huntress.com/blog/microsoft-office-remote-code-execution-follina-msdt-bug; reference:url,github.com/JMousqueton/PoC-CVE-2022-30190; reference:cve,2022-30190; classtype:client-side-exploit; sid:3202452; rev:2.
Follina состоит из 2 уязвимостей:
Переадресация на внешний ресурс при просмотре документа.
Удаленное исполнение команд через MSDT.
Сигнатура реагирует на выполнение кода в HTML-скрипте, содержащегося на адресуемой странице. В теле скрипта используется location.href для обращения к msdt:
content:"location.href"; distance:0; content:"|22|ms-msdt|3A|".
Далее перечисляются параметры обращения:
content:"/id"; content:"PCWDiagnostic"; content:"/skip"; content:"force"; content:"/param"; content:"IT_RebrowseForFile=?"; content:"IT_LaunchMethod=ContextMenu"; content:"IT_BrowseForFile=".
После IT_BrowseForFile= вводятся минимум 2 /../, иначе скрипт не сработает. После чего идет $ (передаваемая программа), но без использования пробелов, поскольку они сломают процесс. Также передаваемая команда обязательно должна оканчиваться на .exe.
Существуют вариации с передачей дополнительных параметров в base64, но экспертами с Huntress было установлено, что они избыточны.
ComodoHacker
Спасибо.
Банальный Command injection. По сравнению с, например, FORCEDENTRY не так эпично, но главное ведь — работает. :)