Pull to refresh

Разбор Zero-day уязвимости Microsoft Support Diagnostic Tool

Reading time4 min
Views5.3K

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

Кратко об уязвимости

Новый 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:

Пример обращения к ms-msdt
Пример обращения к ms-msdt

Зареверсил и сделал готовую версию эксплойта Джон Хаммонд. Его решение на GitHub. В терминале Kali Linux с помощью команды [python3 follina.py] создаётся файл «follina.doc», с загруженный html пейлоадом на порт :8000. Полученный документ уже подходит для отправки пользователям. По заготовленной команде после просмотра документа открывается калькулятор. Также заложены предустановки: [-c «notepad» ] откроет блокнот, а [-r 9001] запустит reverse shell на порт 9001, но при этом скачивается netcat binary на ПК жертвы с расположением C:\Windows\Tasks, без очистки binary, из-за чего сработает антивирус.

Пример запуска готового эксплойта
Пример запуска готового эксплойта

Распространение 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.

«Официальное» лого уязвимости
«Официальное» лого уязвимости

К паранойи осведомленности сотрудников теперь добавилось знание о вредоносных .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 было установлено, что они избыточны.

Tags:
Hubs:
Total votes 8: ↑8 and ↓0+8
Comments1

Articles

Information

Website
amonitoring.ru
Registered
Founded
Employees
101–200 employees
Location
Россия