Обнаружение уязвимостей ProxyLogon в MS Exchange

Обнаружение уязвимостей ProxyLogon в MS Exchange

Среди наиболее популярных почтовых серверов, используемых тысячами компаний по всему миру, можно выделить Microsoft Exchange (Microsoft Mail). По этой причине популярность и доступность Интернета делают его привлекательной целью для злоумышленников.

В этой статье мы коротко расскажем об архитектуре сервера MS Exchange, а также о том, как обнаружить эксплуатацию уязвимостей ProxyLogon. На данный момент мы продемонстрируем, как ProxyLogоn может быть обнаружен с помощью стандартных событий ОС и журналов Exchange, как в реальном времени, так и с использованием упреждающих подходов к отслеживанию угроз и атак, произошедших в прошлом.

Векторы атак на MS Exchange

Основные компоненты сервера MS Exchange и связи между ними представлены на схеме ниже.

Обнаружение уязвимостей ProxyLogon в MS Exchange

Архитектура MS Exchange

В зависимости от версии у MS Exchange могут быть следующие роли:

 

  • Сервер почтовых ящиков (Mailbox server).
  • Сервер клиентского доступа (Client Access) — фронтенд-сервис, который проксирует клиентские запросы на бэкенд-серверы.
  • Транспорт (Transport), который отвечает за управление почтовым потоком.
  • Единая система обмена сообщениями (Unified Messaging), которая позволяет использовать голосовые сообщения и другие возможности телефонии (роль недоступна на серверах версии 2019).
  • Управление (Management role), суть которого состоит в администрировании и гибкой настройке компонентов MS Exchange.

Табл. 1. Основные протоколы, используемые MS Exchange

Обнаружение уязвимостей ProxyLogon в MS Exchange

Основные компоненты Exchange и их краткое описание приведены ниже:

 

  • Outlook Web Access (OWA) — веб-интерфейс для предоставления доступа к почтовым ящикам и работы с ними (чтение/отправка/удаление почты, редактирование календаря и т. д.)
  • Exchange Control Panel (ECP) — веб-интерфейс для администрирования компонентов Exchange: управления почтовыми ящиками, создания различных политик для управления почтовым потоком, подключения новых почтовых серверов и т. д.
  • Autodiscover — служба, позволяющая клиентам получать информацию о расположении различных компонентов сервера Exchange, например URL для службы EWS. Для получения информации требуется предварительная аутентификация пользователя.
  • Exchange Web Services (EWS) — API для предоставления различным приложениям доступа к компонентам почтовых ящиков.
  • Exchange ActiveSync (EAS) — сервис, позволяющий пользователям мобильных устройств получать доступ к электронной почте, календарю, контактам, задачам и работать с этой информацией без подключения к интернету.
  • RPC — служба клиентского доступа через протокол RPC, который работает поверх HTTP.
  • Offline Address Book (OAB) — служба автономной адресной книги сервера Exchange, которая позволяет пользователям Outlook кешировать содержимое GAL (Global Address List) и обращаться к нему даже при отсутствии подключения к Exchange.

 

Все вышеописанные компоненты функционируют как приложения на веб-сервере Microsoft IIS.

 

Атакуя сервер MS Exchange, злоумышленники, как правило, преследуют следующие цели:

 

  • Получение доступа к конфиденциальной информации, содержащейся в корпоративной почте.
  • Запуск вредоносной рассылки с адресов компании-жертвы для проникновения в инфраструктуру другой организации.
  • Компрометация УЗ с помощью компонентов Exchange (успешная брутфорс-атака или обнаружение учетных данных в почтовой переписке) для входа в сеть компании через один из корпоративных сервисов.
  • Закрепление в сети компании (например, с помощью веб-шелла на сервисе OWA).
  • Повышение привилегий в домене с помощью сервера Exchange.
  • Выведение из строя сервера Exchange для нарушения внутренних бизнес-процессов компании (например, полное шифрование данных сервера).

Журналы и события

Для обнаружения различных атак на сервер MS Exchange будут полезны события источников, приведенных в табл. 2.

 

Табл. 2. Характеристика источников событий

Обнаружение уязвимостей ProxyLogon в MS Exchange

Обнаружение уязвимостей ProxyLogon в MS Exchange

Уязвимости ProxyLogon

2 марта 2021 года Microsoft выпустила обновления безопасности для ряда критических уязвимостей сервера MS Exchange. Обновления также исправили цепочку критических уязвимостей CVE-2021-26857, CVE-2021-26855, CVE-2021-26858, CVE-2021-27065, под общим названием ProxyLogon. После выпуска обновлений безопасности и публикации первых статей об этих уязвимостях по всему миру стали фиксироваться кибератаки с их использованием. Большинство атак были направлены на загрузку основной веб-оболочки на сервер для дальнейшего развития атаки. Хотя американские компании приняли на себя основную атаку, мы также зафиксировали ряд аналогичных атак, направленных на наших клиентов в России и Азии.

Обнаружение уязвимостей ProxyLogon в MS Exchange

Цепочка уязвимостей ProxyLogon

Давайте подробнее рассмотрим цепочку уязвимостей ProxyLogon. Уязвимость CVE-2021-26857 на самом деле не является частью цепочки уязвимостей ProxyLogon, поскольку она приводит к выполнению кода на сервере и не требует предварительного использования других уязвимостей. Уязвимость CVE-2021-26857 связана с небезопасной десериализацией данных в службе единой системы обмена сообщениями. Для использования этой уязвимости требуется установка и настройка роли единой системы обмена сообщениями на сервере Exchange. Поскольку эта роль используется редко, на сегодняшний день не зарегистрировано никаких свидетельств использования этой уязвимости. Вместо этого злоумышленники используют цепочку уязвимостей CVE-2021-26855, CVE-2021-26858 и CVE-2021-27065, которая также позволяет удаленно выполнять произвольный код на почтовом сервере, но с ней проще работать.

ProxyLogon — это название уязвимости CVE-2021-26855 (SSRF), которая позволяет внешнему злоумышленнику обойти механизм аутентификации в MS Exchange и выдать себя за любого пользователя. Создавая запрос на стороне сервера, злоумышленник может отправить произвольный HTTP-запрос, который будет перенаправлен на другую внутреннюю службу от имени учетной записи компьютера почтового сервера. Чтобы воспользоваться этой уязвимостью, злоумышленник должен сформировать специальный запрос POST для статического файла в неавторизованных каталогах для чтения, например /ecp/x.js, если присутствие файла в каталоге не требуется. Тело запроса POST также будет перенаправлено на службу, указанную в файле cookie, под названием X-BEResource.

Например, злоумышленник, использующий ProxyLogon, может выдать себя за администратора и пройти аутентификацию в панели управления Exchange (ECP), а затем перезаписать любой файл в системе с уязвимостями CVE-2021-26858 или CVE-2021-27065.

Наибольший эффект перезаписи файлов достигается за счет создания веб-оболочки в общедоступных каталогах. Чтобы создать веб-оболочку, злоумышленник использует уязвимость во встроенном механизме виртуальных каталогов. При создании нового виртуального каталога (например, для службы автономной адресной книги) злоумышленник может указать в качестве своего внешнего адреса адрес, который включает простую веб-оболочку. Потом этого злоумышленник должен сбросить настройки виртуального каталога и указать путь к файлу на сервере, в который будут сохранены текущие настройки виртуального каталога. После сброса настроек файл, в котором будет сохранена резервная копия виртуального каталога, будет содержать веб-оболочку, указанную на предыдущем шаге.

После использования цепочки уязвимостей злоумышленник может запускать команды через веб-оболочку на сервере Exchange с привилегиями учетной записи, под которой запущен пул приложений на сервере IIS (по умолчанию NT AUTHORITY \ SYSTEM). Чтобы успешно использовать цепочку уязвимостей, злоумышленнику необходимо иметь сетевой доступ через порт 443 к серверу MS Exchange с установленной ролью клиентского доступа и знать имя почтового ящика пользователя с правами администратора.

Эксплуатация CVE-2021-26855

Уязвимость CVE-2021-26855 позволяет внешнему злоумышленнику отправить произвольный HTTP-запрос, который будет перенаправлен на указанную внутреннюю службу из учетной записи компьютера почтового сервера. Таким образом, уязвимость может обойти механизм аутентификации Exchange Server и выполнить запрос с наивысшими привилегиями.

Поскольку злоумышленник может указать службу, на которую будет перенаправлен произвольный HTTP-запрос, эту уязвимость SSRF можно использовать различными способами. Рассмотрим два способа использования этой уязвимости: чтение электронной почты через EWS и загрузка веб-оболочки через ECP (CVE-2021-26858 и CVE-2021-27065).

С помощью CVE-2021-26855 вы легко сможете загружать письма от любого пользователя, зная только его адрес электронной почты. Для работы требуется как минимум два сервера MS Exchange в атакуемой инфраструктуре. Например, запрос отправляется на сервер exchange.lab.local, а оттуда перенаправляется на exchange02.lab.local с помощью SSRF. На снимке экрана ниже показан пример такого вызова EWS API с использованием запроса SOAP для получения последних 10 электронных писем из почтового ящика user1@lab.local. Ответ от сервера содержит идентификаторы сообщений и другую информацию о них (например, заголовок или дату получения).

Обнаружение уязвимостей ProxyLogon в MS Exchange

SOAP-запрос для получения списка писем

Если подставить идентификатор искомого письма в другой SOAP-запрос, можно получить оригинал этого письма.

Обнаружение уязвимостей ProxyLogon в MS Exchange

SOAP-запрос для получения письма

Ответ от сервера будет содержать base64-представление оригинального письма.

Обнаружение уязвимостей ProxyLogon в MS Exchange

Таким образом, все сообщения из любого почтового ящика могут быть загружены с сервера без аутентификации. Почта часто используется для передачи конфиденциальной информации, такой как платежные поручения, файлы конфигурации, идентификаторы пользователей, пароли или инструкции по подключению к серверам VPN и т. д. Этот вектор атаки не менее опасен, чем загрузка веб-оболочки на сервер.

Подобные запросы логируются в журнале EWS. Соответственно, правило для детектирования описанной атаки может выглядеть следующим образом:

 

  • event_log_source:'EWS' AND AuthenticatedUser end with:'$' AND SoapAction IS NOT NULL AND UserAgent contains:'ExchangeWebServicesProxy/CrossSite/' AND NOT (SoapAction = 'GetUserOofSettings')

Вторая возможность использовать уязвимость SSRF — использовать ECP-аутентификацию с последующей эксплуатацией уязвимостей CVE-2021-26858 / CVE-2021-27065 для загрузки веб-оболочки на сервер. Чтобы направлять запросы в ECP, вы должны установить полный сеанс в ECP. Чтобы злоумышленник при установлении сеанса выдавал себя за администратора, он должен узнать SID учетной записи администратора почтового сервера.

Из ответа на запрос NTLM к /rpc/rpcproxy.dll злоумышленник может сначала определить полное доменное имя почтового сервера, которое требуется в следующих шагах: оно указывается в ответе NTLM, который необходимо расшифровать.

Обнаружение уязвимостей ProxyLogon в MS Exchange

Получение FQDN почтового сервера

Следующим шагом является получение LegacyDN и идентификатора почтового ящика с помощью HTTP-запроса для автообнаружения. Полное доменное имя почтового сервера, полученное на предыдущем шаге, указывается в файле cookie с именем X-BEResource.

Обнаружение уязвимостей ProxyLogon в MS Exchange

Запрос к Autodiscover для получения информации о почтовом ящике администратора

Затем злоумышленник может получить SID целевого пользователя с помощью HTTP-запроса MAPI. Злоумышленник отправляет запрос на делегирование доступа к почтовому ящику. Этот запрос также перенаправляется в MAPI от имени пользователя учетной записи компьютера и вызывает ошибку доступа. Ошибка содержит SID разыскиваемого пользователя.

Запрос к MAPI для получения SID администратора

Наконец, получив SID пользователя, злоумышленник сможет пройти аутентификацию на сервере, представившись администратором, отправив специально сформированный запрос POST на /ecp/proxyLogon.ecp.

Аутентификация на ECP под администратором

Запрос содержит заголовок с именем msExchLogonMailBox, который указывает SID пользователя, для которого вы хотите пройти аутентификацию. Тело запроса POST также включает SID этого пользователя. Сервер отвечает двумя файлами cookie с именами ASP.NET_SessionId и msExchEcpCanary, которые злоумышленник может использовать для последующих запросов ECP. Получение этих файлов cookie является конечным результатом использования злоумышленником уязвимости ProxyLogon (CVE-2021-26855), если он планирует использовать уязвимости CVE-2021-26858 и CVE-2021-27065, а затем загрузить веб-оболочку на сервер.

Подобные запросы логируются в журнале IIS. Соответственно, правило для детектирования данной активности может выглядеть следующим образом:

 

  • event_log_source:'IIS' AND cs-method:'POST' AND cs-uri-stem:'/ecp/proxyLogon.ecp' AND cs-username end with:'$'

Эксплуатации CVE-2021-26858, CVE-2021-27065

Успешная эксплуатация уязвимости CVE-2021-27065 позволяет использовать интерфейс ECP для загрузки вредоносного файла на сервер Exchange, который затем будет использоваться в качестве веб-оболочки. Для эксплуатации этой уязвимости требуется предварительная аутентификация, которую можно пройти с помощью CVE-2021-26855. Давайте подробнее рассмотрим, как работает CVE-2021-27065.

Сначала войдем в интерфейс ECP и перейдем в раздел Серверы → Виртуальные каталоги. Редактирование виртуальных каталогов позволяет переносить приложения Exchange, изменяя текущий каталог приложения на IIS.

Перейдя к редактированию OAB (Default Web Site) в поле External URL, можно прописать код веб-шелла, например China Chopper:

Изменение параметров виртуальной директории для OAB (Default Web Site)

После установки новых параметров конфигурации виртуальной директории в журнале MSExchange Management мы можем увидеть следующее событие:

Установка новых параметров виртуальной директории OAB (журнал MSExchange Management)

На данную активность можно написать следующее правило:

 

  • event_log_source:('PowershellAudit' OR 'MSExchangeCMDExec') AND event_id:('1' OR ’800’ OR '4104') AND (Message contains ‘Set-’ AND Message contains ‘VirtualDirectory AND Message contains ‘-ExternalUrl’ AND Message contains ‘script’)

На следующем этапе настройки виртуального каталога сбрасываются. В появившемся интерфейсе мы видим, что перед сбросом нам предлагается сохранить текущие настройки виртуального каталога в выбранный файл:

Интерфейс сброса виртуальной директории OAB

После сброса настроек виртуального каталога в журнале управления MSExchange мы видим два события с EventID 1, используя сначала команду Remove-OabVirtualDirectory, а затем следующее событие New-OabVirtualDirectory. Эти события могут использоваться как дополнительные индикаторы при срабатывании описанного выше правила.

Сохраним конфигурацию как файл test.aspx по пути C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\ecp\auth. В событиях IIS ECP можно увидеть событие, говорящее нам о том, что настройки для виртуальной директории приложения были сброшены. Пример события:

 

2021-03-10 08:16:52 10.3.132.20  POST /ecp/DDI/DDIService.svc/SetObject  ActivityCorrelationID=d874fdcd-bd9d-9545-af02-677d356f1aa9&schema=ResetOABVirtualDirectory
&msExchEcpCanary=xkdU4icLzEazuIzEhSZaYgDLNVmW49gIjMvzJCs7TmzJoNU9rXLN15tkY5JGHwEOROWXGGq9_NM.&ActID=113cbd79-1e40-4635-8bae-8c8af6731267
444 LAB\dadmin 192.168.1.20 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/89.0.4389.82+Safari/537.36
https://exchange/ecp/VDirMgmt/ResetVirtualDirectory.aspx?pwmcid=6&ReturnObjectType=1&id=7a466ca6-419b-4445-9cc8-ae66a6bff719&schema=ResetOABVirtualDirectory  200  0 0 7

 

Правило на сброс настроек для виртуальных директорий по событиям журнала IIS будет иметь вид:

 

  • event_log_source:’IIS’ AND http_method:’POST’ AND http_code:'200' AND url_path:'/ecp/DDI/DDIService.svc/SetObject' AND (Message contains 'schema=Reset' AND Message contains 'VirtualDirectory')

Когда эта уязвимость используется с CVE-2021-26858, используется атака SSRF для манипулирования виртуальными каталогами. По этой причине поле Username будет содержать учетную запись компьютера, в нашем случае lab.local \ EXCHANGE $, поскольку запрос был инициирован самим сервером Exchange. Учитывая этот факт, можно реализовать еще одно правило:

  • event_log_source:’IIS’ AND http_method:’POST’ AND http_code:'200' AND url_path:'/ecp/DDI/DDIService.svc/SetObject' AND (Message contains 'schema=Reset' AND Message contains 'VirtualDirectory') AND Username contains '$'

Содержимое конфигурационного файла test.aspx можно увидеть на скриншоте ниже, где в параметре ExternalUrl содержится заданный нами China Chopper.

Содержимое файла test.aspx

Попробуем запустить команду с загруженной веб-оболочкой. С помощью Burp Suite мы указываем интересующую нас команду в параметре POST a. Результат команды добавляется к ответу сервера, за которым следует содержимое файла конфигурации.

Выполнение команд с помощью загруженного веб-шелла.

Если мы посмотрим на события запуска процесса, мы увидим, что наша команда выполняется в рабочем процессе IIS, который запускает интерпретатор командной строки cmd.exe с соответствующими аргументами.

Добавив условие для интерпретатора PowerShell, на подобную активность можно написать следующее правило:

 

  • event_log_source:'Security' AND event_id:'4688' AND proc_parent_file_path end with:'\w3wp.exe' AND proc_file_path end with:('\cmd.exe' OR '\powershell.exe')

Активность веб-шелла в событиях журнала Security

На практике данная CVE использовалась как полезная нагрузка после обхода аутентификации с помощью уязвимости CVE-2021-26855.

Уязвимость CVE-2021-26858 также позволяет записать произвольный файл на сервер Exchange, но для правильного использования требуется предварительная аутентификация. Эта уязвимость также может использоваться в сочетании с SSRF (CVE-2021-26858).

Нет общедоступных PoC или других источников с подробным описанием операции. Однако Microsoft посоветовал, как обнаружить эту активность. Для этого реализуем следующее правило, используя служебные события OAB Generator:

  • event_log_source:'OABGenerator' AND Message contains 'Download failed and temporary file'

Файлы должны быть загружены только в директорию %PROGRAMFILES%\Microsoft\Exchange Server\V15\ClientAccess\OAB\Temp, запись файла в любые другие директории считается нелегитимной.

Эксплуатация CVE-2021-26857

CVE-2021-26857 — уязвимость небезопасной десериализации в сервисе единой системы обмена сообщениями Unified Messaging.

Единая система обмена сообщениями позволяет использовать голосовую почту и другие функции, включая голосовой доступ к Outlook и правила ответа на вызовы. Для корректной работы этого сервиса необходимо его заранее настроить, и он используется редко. По этой причине в реальных атаках киберпреступники часто используют CVE-2021-27065.

Проблема содержится в методе Base64Deserialize класса CommonUtil, а сам класс — в пространстве имен Microsoft.Exchange.UM.UMCommon библиотеки Microsoft.Exchange.UM.UMCommon.dll.

Код метода Base64Deserialize

Данный метод вызывается в основной библиотеке сервиса Unified Messaging — Microsoft.Exchange.UM.UMCore.dll, а именно в методе FromHeaderFile класса PipelineContext пространства имен Microsoft.Exchange.UM.UMCore. Таким образом, атакующий может сформировать свой сериализованный объект, например с помощью утилиты ysoserial.net, и удаленно выполнить свой код на сервере Exchange в контексте SYSTEM.

Фрагмент метода FromHeaderFile

В новой версии библиотеки Microsoft.Exchange.UM.UMCore.dll (после установки обновления) перед процессом их десериализации добавлено множество проверок типов входящих объектов. Как видно на скриншоте ниже, библиотека загружается в процесс UMWorkerProcess.exe. Следовательно, в случае использования уязвимости этим процессом будет инициирована аномальная активность.

Использование библиотеки Microsoft.Exchange.UM.UMCore.dll

Правило для обнаружения запуска подозрительных дочерних процессов процессом UMWorkerProcess.exe (старт cmd/powershell, по событиям журналов Security и Sysmon):

 

  • event_log_source:'Security' AND event_id:'4688' AND proc_parent_file_path end with:'\UMWorkerProcess.exe' AND proc_file_path end with:('\cmd.exe' OR '\powershell.exe')

В качестве полезной нагрузки в файловой системе может быть создан вредоносный файл, например реверс-шелл в каталоге автозагрузки или веб-шелл в одной из директорий IIS. Для детектирования данной активности можно реализовать следующее правило:

 

  • event_log_source:’Sysmon’ AND event_id:'11' AND proc_file_path end with:'\UMWorkerProcess.exe' AND file_name end with:(*.asp OR *.aspx) AND file_path contains:("\ClientAccess\Owa\" OR "\HttpProxy\Owa\" OR "\inetpub\wwwroot\" OR "\www\")

Заключение

По данным Microsoft, в настоящий момент на серверах MS Exchange находятся около 92% серверов, которые были обновлены и больше не уязвим для ProxyLogon. В любом случае, если вы еще не установили патчи, то вам необходимо это сделать как можно скорее.
Если сервера уже были обновлены, стоит проверить работоспособность ProxyLogon и устранить последствия. Это можно сделать с помощью встроенного журнала событий ОС и сервера Exchange.
Задержка с обнаружением новой бреши в Exchange Server и новых нападок – это вопрос времени, поэтому важно не просто обеспечить защиту своих почтовых серверов, но и заранее провести запись и мониторинг важных событий безопасности.

 

 

 

 

 

 

 

 

 

 

Click to rate this post!
[Total: 0 Average: 0]

Leave a reply:

Your email address will not be published.