Обнаружение уязвимостей ProxyLogon в MS Exchange. Часть 2
Life-Hack [Жизнь-Взлом]/ХакингУспешная эксплуатация уязвимости CVE-2021-27065 позволяет использовать интерфейс ECP для загрузки вредоносного файла на сервер Exchange, который затем будет использоваться в качестве веб-оболочки. Для эксплуатации этой уязвимости требуется предварительная аутентификация, которую можно пройти с помощью CVE-2021-26855. Давайте подробнее рассмотрим, как работает CVE-2021-27065.
Сначала войдем в интерфейс ECP и перейдем в раздел Серверы → Виртуальные каталоги. Редактирование виртуальных каталогов позволяет переносить приложения Exchange, изменяя текущий каталог приложения на IIS.
Перейдя к редактированию OAB (Default Web Site) в поле External URL, можно прописать код веб-шелла, например China Chopper:

После установки новых параметров конфигурации виртуальной директории в журнале 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 мы видим два события с 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.

Попробуем запустить команду с загруженной веб-оболочкой. С помощью 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.
Единая система обмена сообщениями позволяет использовать голосовую почту и другие функции, включая голосовой доступ к Outlook и правила ответа на вызовы. Для корректной работы этого сервиса необходимо его заранее настроить, и он используется редко. По этой причине в реальных атаках киберпреступники часто используют CVE-2021-27065.
Проблема содержится в методе Base64Deserialize класса CommonUtil, а сам класс — в пространстве имен Microsoft.Exchange.UM.UMCommon библиотеки Microsoft.Exchange.UM.UMCommon.dl

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

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

Правило для обнаружения запуска подозрительных дочерних процессов процессом 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 и новых нападок – это вопрос времени, поэтому важно не просто обеспечить защиту своих почтовых серверов, но и заранее провести запись и мониторинг важных событий безопасности.