Эксплуатация BlueKeep (CVE 2019-0708) дикой природе

akok

Команда форума
Администратор
Сообщения
17,781
Реакции
13,521
Баллы
2,203
Прошло почти шесть месяцев с тех пор, как была исправлена уязвимость в Microsoft Windows RDP CVE 2019-0708, получившая название BlueKeep. Сегодня исследователь безопасности Кевин Бомонт (Kevin Beaumont) разместил в Твиттере тему, в которой сообщается о BSOD (Blue Screen of Death) в его сети BlueKeep Honeypots.


Кевин любезно поделился с нами дампом, в котором мы обнаружили, попытки эксплуатации уязвимости. Из-за того, что включены только минидампы, трудно сделать однозначные выводы.

LimitedCrashDump - Эксплуатация BlueKeep (CVE 2019-0708) дикой природеСбой вызова стека
Из первоначального наблюдения стек вызовов кажется отключенным. Примечательно, что адрес 0x1aec08не выделен или отсутствует в дампе. Вместо этого мы решили посмотреть на распределение пула с TSicтегом, который является тегом пула, используемым IcaAllocateChannelв termdd.sysдрайвере RDP для Windows.

Allocations - Эксплуатация BlueKeep (CVE 2019-0708) дикой природеФрагмент выделения с тегом `TSic`
Глядя на TSicраспределение, ясно, что что-то не так. При нормальных обстоятельствах должно быть менее 100 выделений с TSicтегом, но в этом случае их более 19 000, что предполагает эксплуатацию.

В частности, выделяются блоки размером 0x170. Из предыдущего исследования BlueKeep мы знаем, что размер 0x170 — это точный размер структуры канала (плюс метаданные). Во время использования BlueKeep MS_T120структура канала освобождается, оставляя указатель. Чтобы воспользоваться этой уязвимостью, необходимо заполнить дыру в памяти выделением 0x170 байтов. Тысячи распределений размером 0x170 байтов предполагают использование метода «распыления кучи», поэтому давайте посмотрим глубже и подтвердим.

MS 120Allocation - Эксплуатация BlueKeep (CVE 2019-0708) дикой природеВнутри одного из распределений байтов 0x170
Как и ожидалось, распределение является допустимой канальной структурой для эксплуатируемого MS_T120канала.

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

VTable - Эксплуатация BlueKeep (CVE 2019-0708) дикой природе
Действительно, мы находим, что оно установлено. Если это эксплойт BlueKeep, мы должны обнаружить, что разыменование адреса fffffa80`08807048приведет к полезной нагрузке или эксплойту шеллкода.

KernelShellcode - Эксплуатация BlueKeep (CVE 2019-0708) дикой природеРазыменование указателя
Наконец, мы подтверждаем, что этот сегмент указывает на исполняемый шелл-код. На этом этапе мы можем утверждать допустимые попытки эксплойта BlueKeep в дикой природе, используя шелл-код, который даже совпадает с шелл-кодом в модуле метаслоя BlueKeep!

KernelShellcodeCompare - Эксплуатация BlueKeep (CVE 2019-0708) дикой природеРядом с шеллкодом в памяти и шеллкодом metasploit
Фрагмент шеллкода выполняет простой «egghunt» (сканирует системную память на наличие двоичной сигнатуры), чтобы найти остальную часть шеллкода. «Яйцо» есть 0x0b00dac0fefe42069. Сканируя память на предмет этого значения, мы найдем остаток шелл-кода.

KernelEgg - Эксплуатация BlueKeep (CVE 2019-0708) дикой природеПоявления «яйца»
В памяти находятся сотни копий подписи, что соответствует кучному распылению.

KernelShellcodePart2 - Эксплуатация BlueKeep (CVE 2019-0708) дикой природеВторая часть шеллкода ядра
Опять же, вторая часть шелл-кода также совпадает с той, что была в модуле метаслоя BlueKeep. Поскольку большая часть шелл-кода эксплойта, по-видимому, соответствует метассплойту, можно предположить, что яйцо шелл-кода пользовательского режима не изменится. Проверяя это, мы сделали то же самое сканирование памяти, но на этот раз для яйца пользовательского режима 0xb00dac0fefe31337.

UsermodeShellcode - Эксплуатация BlueKeep (CVE 2019-0708) дикой природеПользовательский режим Shellcode
Яйцо было не только одинаковым, но и полезный груз легко виден в конце шелл-кода. Это закодированная команда PowerShell.

PowershellCommand1 - Эксплуатация BlueKeep (CVE 2019-0708) дикой природеПервая из матрешек PowerShell
Расшифровывая команду PowerShell, мы получаем код для загрузки другой команды PowerShell с сервера злоумышленника.

После этого загружается другая закодированная команда PowerShell. И другой. В конце концов мы получаем команду, которая загружает и выполняет исполняемый файл.

FinalStagePowershell - Эксплуатация BlueKeep (CVE 2019-0708) дикой природеПоследний этап матрешки PowerShell
Хэш этого бинарного файла известен VirusTotal как майнер криптовалюты.

Заключение
Любопытно, что эта общеизвестная уязвимая уязвимость, известная всем, кто хотел бы знать ее по крайней мере в течение шести месяцев, заняла так много времени, чтобы стать обнаруживаемым оружием. Можно предположить, что злоумышленники знают, что у них есть один шанс использовать их в масштабе, и это становится игрой о том, кто сделает это первым. Стоит также отметить, что массовая эксплуатация ради выгоды может быть затруднена из-за сопутствующих рисков.

Хотя эта предполагаемая деятельность вызывает обеспокоенность, сообщество по информационной безопасности (правильно) предсказало гораздо худшие потенциальные сценарии. Основываясь на наших данных, мы не видим всплеска неизбирательного сканирования на уязвимом порту, как мы видели, когда EternalBlue проник в Интернет через то, что сейчас известно как атака WannaCry. Вполне вероятно, что субъект низкого уровня просканировал Интернет и оппортунистически инфицировал уязвимые хосты, используя готовые утилиты для тестирования на проникновение.

 
Последнее редактирование:
Сверху Снизу