Охота на атаки MS Exchange. Часть 1. ProxyLogon (CVE-2021-26855, 26858, 27065, 26857)
Все это побудило нас написать цикл статей, посвященных безопасности MS Exchange: атакам на сервер и методам их обнаружения.
В первой статье цикла мы вкратце расскажем об архитектуре сервера MS Exchange и сразу перейдем к наиболее актуальной для всех теме — обнаружению фактов эксплуатации уязвимостей ProxyLogon. Мы покажем, как при помощи штатных событий операционной системы и журналов Exchange можно обнаружить ProxyLogon, причем как в реальном времени, с использованием проактивных подходов охоты за угрозами, так и уже случившиеся в прошлом атаки.
Архитектура и основные векторы атак на MS Exchange
Основные компоненты сервера MS Exchange и связи между ними представлены на схеме ниже.
В зависимости от версии у MS Exchange могут быть следующие роли:
- Сервер почтовых ящиков (Mailbox server).
- Сервер клиентского доступа (Client Access) — фронтенд-сервис, который проксирует клиентские запросы на бэкенд-серверы.
- Транспорт (Transport), который отвечает за управление почтовым потоком.
- Единая система обмена сообщениями (Unified Messaging), которая позволяет использовать голосовые сообщения и другие возможности телефонии (роль недоступна на серверах версии 2019).
- Управление (Management role), суть которого состоит в администрировании и гибкой настройке компонентов MS Exchange.
Табл. 1. Основные протоколы, используемые MS Exchange
Типы протоколов | Название | Описание |
---|---|---|
Протоколы клиентского доступа
|
HTTP/HTTPS
|
Протокол, который используется клиентами, в том числе мобильными, чтобы обращаться к компонентам Exchange для работы с почтой, календарями, адресной книгой и т. д. |
MAPI
|
Транспортный протокол для работы с почтой и другими компонентами, который используется клиентом Outlook для взаимодействия с сервером Exchange. Он имеет ряд преимуществ за счет инкапсуляции в HTTP |
|
RPC over HTTP
|
Альтернативный транспортный протокол, который используется клиентом Outlook и мобильными устройствами |
|
Протоколы для пересылки и хранения
почты
|
SMTP
|
Протокол передачи почты в сетях TCP/IP |
IMAP4/POP3
|
Протоколы прикладного уровня для доступа к электронной почте |
|
Протокол обмена данными со службой
каталогов
Active Directory
|
LDAP
|
Открытый протокол, который используется для хранения и извлечения данных из иерархической структуры каталогов |
Основные компоненты 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. Характеристика источников событий
Название источника | Краткое описание источника | Путь до источника |
---|---|---|
События Security аудита Windows | Журнал хранит все события (старты процессов, успешные/неуспешные входы и т. д.), которые настраиваются в политике аудита | Журнал Security |
События Application аудита Windows | Журнал Application содержит различную информацию о работе приложений в ОС Windows: ошибки запуска, heartbeat, изменение конфигурации и т. д. | Журнал Application |
События аудита PowerShell | Журнал содержит события, которые регистрируют выполнение скрипт-блоков, pipelines и модулей PowerShell |
Журнал Windows PowerShell Журнал Microsoft-Windows-PowerShell/Operational |
События управления MS Exchange | Журнал содержит информацию об управляющих действиях с компонентами Exchange. В нем отображаются все действия, выполненные с помощью Exchange Management Shell и ECP | Журнал MSExchange Management |
События IIS — Web OWA (Outlook Web Access) | Журнал хранит события — access-логи веб-сервера IIS, которые содержат все обращения к интерфейсу OWA | C:\inetpub\logs\LogFiles\W3SVC1\ u_ex*.log |
События IIS — Web ECP (Exchange Management Panel) | Журнал хранит события — access-логи веб-сервера IIS, которые содержат все обращения к интерфейсу ECP | C:\inetpub\logs\LogFiles\W3SVC2\ u_ex*.log |
События EWS | Журнал содержит информацию о клиентском взаимодействии с сервисом EWS | C:\Program Files\Microsoft\Exchange Server\<version number>\Logging\Ews\Ews_*.log
|
События Sysmon | Журнал содержит события утилиты Sysmon, которая позволяет реализовывать расширенное логирование за счет установки своего драйвера в систему | Журнал Microsoft-Windows-Sysmon/Operational |
Client RPC | Журнал содержит информацию о RPC-взаимодействии клиентов с сервером Exchange | C:\Program Files\Microsoft\Exchange Server\<version number>\Logging\RPC Client Access\RCA_*.log
|
Server ECP | Журнал содержит запросы к интерфейсу ECP | C:\Program Files\Microsoft\Exchange Server\<version number>\Logging\ECP\Server\ECPServer*.log
|
OAB Generator | Журнал содержит события генератора OAB | C:\Program Files\Microsoft\Exchange Server\V15\Logging\OABGeneratorLog\*.log
|
Описание уязвимостей ProxyLogon
2 марта 2021 года Microsoft выпустила обновления безопасности для ряда критических уязвимостей сервера MS Exchange. Обновления исправляли в том числе и цепочку критических уязвимостей CVE-2021-26857, CVE-2021-26855, CVE-2021-26858, CVE-2021-27065, получившую общее название ProxyLogon. После выпуска обновлений безопасности и публикации первых статей о данных уязвимостях по всему миру начали фиксировать кибератаки с их использованием. Целью большинства атак была загрузка на сервер первичного веб-шелла для развития атаки в будущем. Хотя основной удар на себя приняли компании из США, мы также зафиксировали ряд подобных атак, направленных на организации из России и Азии.
Рассмотрим немного подробнее цепочку уязвимостей ProxyLogon. Уязвимость CVE-2021-26857 на самом деле не входит в цепочку уязвимостей ProxyLogon, поскольку она приводит к выполнению кода на сервере и не требует предварительного использования других уязвимостей. Уязвимость CVE-2021-26857 связана с небезопасной десериализацией данных в сервисе единой системы обмена сообщениями (Unified Messaging Service). Для эксплуатации данной уязвимости требуется, чтобы роль Unified Messaging была установлена и сконфигурирована на сервере 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.
Наибольший эффект от перезаписи файлов достигается созданием веб-шелла в публично доступных директориях. Для создания веб-шелла атакующий эксплуатирует уязвимость во встроенном механизме виртуальных директорий. При создании новой виртуальной директории (например, для сервиса OAB) атакующий может указать в качестве ее внешнего адреса адрес, включающий в себя простейший веб-шелл. После чего злоумышленник должен сбросить настройки виртуальной директории и указать путь к файлу на сервере, в который должны быть сохранены текущие настройки виртуальной директории в качестве резервной копии. После сброса настроек файл, в который будет сохранена резервная копия виртуальной директории, будет содержать указанный на предыдущем шаге веб-шелл.
После эксплуатации цепочки уязвимостей злоумышленник получает возможность выполнять команды
через веб-шелл на Exchange-сервере с привилегиями учетной записи, под которой
запущен пул приложений на сервере IIS (по умолчанию
NT AUTHORITY\SYSTEM
). Для успешной эксплуатации цепочки уязвимостей
атакующему требуется иметь сетевой доступ по порту 443 к серверу MS Exchange
с установленной ролью Client Access
и знать имя почтового ящика
пользователя с правами администратора.
Обнаружение эксплуатации CVE-2021-26855
Уязвимость CVE-2021-26855 позволяет внешнему атакующему отправить произвольный HTTP-запрос, который будет перенаправлен к указанному внутреннему сервису от машинного аккаунта почтового сервера. Таким образом, уязвимость позволяет обойти механизм аутентификации сервера Exchange и выполнить запрос с наивысшими привилегиями.
Так как атакующий может указывать сервис, к которому будет перенаправлен произвольный HTTP-запрос, эту SSRF-уязвимость можно использовать по-разному. Рассмотрим два способа использования данной уязвимости — это чтение электронной почты через EWS и загрузка веб-шелла через ECP (CVE-2021-26858 и CVE-2021-27065).
При помощи CVE-2021-26855 можно
с легкостью скачать письма любого пользователя, зная лишь адрес его электронной почты.
Для эксплуатации необходимо, чтобы в атакуемой инфраструктуре было
как минимум два сервера MS Exchange. Например, запрос отправляется на сервер
exchange.lab.local
, а с него при помощи SSRF перенаправляется
на exchange02.lab.local
. На скриншоте ниже показан пример такого обращения
к EWS API с использованием SOAP-запроса для получения последних 10 писем
из почтового ящика user1@lab.local
. Ответ от сервера содержит
идентификаторы писем и другую информацию о них (например, заголовок или дату
получения).
Если подставить идентификатор искомого письма в другой SOAP-запрос, можно получить оригинал этого письма.
Ответ от сервера будет содержать base64-представление оригинального письма.
Таким образом, все письма из любого почтового ящика могут быть скачаны с сервера без аутентификации. Почта часто используется для передачи конфиденциальной информации, например платежных поручений, конфигурационных файлов, учетных данных пользователей, паролей или инструкций по подключению к 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
атакующий может узнать FQDN почтового сервера, которое понадобится на следующих этапах:
оно будет указано в NTLM-ответе, который необходимо декодировать.
Следующий шаг — получение LegacyDN
и идентификатора почтового ящика
при помощи HTTP-запроса к Autodiscover. Полученное на предыдущем шаге FQDN
почтового сервера указывается в cookie с именем X-BEResource
.
Затем атакующий может получить SID искомого пользователя при помощи HTTP-запроса к MAPI. Атакующий отправляет запрос для делегирования доступа к почтовому ящику. Этот запрос также перенаправляется к MAPI от имени пользователя машинного аккаунта и вызывает ошибку доступа. Ошибка содержит SID искомого пользователя.
Наконец, получив SID пользователя, атакующий сможет аутентифицироваться на сервере,
выдав себя за администратора, отправив специальным образом сформированный POST-запрос
на /ecp/proxyLogon.ecp
.
Запрос включает в себя заголовок с именем msExchLogonMailBox
, где
в качестве значения указан SID пользователя, под которым необходимо
аутентифицироваться. Тело POST-запроса также содержит SID этого пользователя. Сервер
в ответ вернет два cookies с именами ASP.NET_SessionId
и msExchEcpCanary
, которые атакующий может использовать для любых
последующих запросов к ECP. Получение этих cookies и есть конечный результат
атакующего при эксплуатации уязвимости 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 и перейдем в раздел
Servers → Virtual directories
. Редактирование виртуальных директорий позволяет
Exchange-приложению мигрировать через смену текущей директории приложения на IIS.
Перейдя к редактированию OAB (Default Web Site), в поле External URL
можно прописать код веб-шелла, например China Chopper
:
После установки новых параметров конфигурации виртуальной директории в журнале MSExchange Management мы можем увидеть следующее событие:
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’)
На следующем шаге сбрасываются настройки виртуальной директории. В появившемся интерфейсе видим, что перед сбросом нам предлагается сохранить текущие настройки виртуальной директории в выбранном файле:
После сброса настроек для виртуальной директории в журнале MSExchange Management
мы можем увидеть два события с 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&schemaResetOABVirtualDirectory &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')
Более подробно детектирование данной активности будет описано в одной из наших следующих статей.
На практике данная 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.
Unified Messaging позволяет использовать голосовую почту и другие функции, включая функции Outlook Voice Access и Call Answering Rules. Для полноценной работы данной службы ее необходимо предварительно настроить, кроме того она довольно редко используется. По этим причинам в реальных атаках злоумышленники чаще эксплуатируют 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, на момент написания статьи около 92% серверов MS Exchange уже обновлены и больше не уязвимы к ProxyLogon. Тем, кто еще не установил патчи, нужно срочно это сделать.
Даже если серверы уже обновлены, стоит проверить их на признаки эксплуатации ProxyLogon и при необходимости устранить ее последствия. Сделать это довольно просто, имея под рукой штатные события журналов операционной системы и сервера Exchange.
Выявление новых уязвимостей в сервере Exchange и новые атаки — вопрос времени, поэтому важно не только грамотно защитить свои почтовые серверы, но и заранее организовать сбор и мониторинг важных событий безопасности.
Надеемся, вам понравилась эта статья. В следующей статье цикла мы поговорим о методах обнаружения эксплуатации других нашумевших уязвимостей MS Exchange.