Атаки на виртуальную инфраструктуру VMware ESXi в последнее время стали заметно набирать обороты. Сценарий, когда злоумышленник получает доступ к гипервизору, а затем останавливает все виртуальные машины и шифрует их диски, выглядит пугающе реалистично, особенно если компания не подготовлена к таким угрозам. Речь не только о редких случаяx, когда проникают особо изощрённые APT-группы. Всё чаще встречаются относительно простые, но крайне эффективные шифровальщики, которые атакуют хост ESXi, оставляя администраторов и владельцев инфраструктуры с зашифрованными файлами и практически без каких-либо зацепок для быстрого восстановления.
Именно с такой ситуацией я столкнулся в своей деятельности - крупная коммерческая организация скомпрометирована через фишинг и получение доступа во внутреннюю инфраструктуру с использованием VMware Horizon. Следом за этим, используя уязвимость программного обеспечения, VMware злоумышленником получен доступ к ESXI и загружены вредоносные сценарии.
Мое внимание привлек тот факт, что ни одно средство защиты информации не воспринимало эти файлы как вредоносные.
Сам пакет состоит из трёх компонентов. В корне зла находится исполняемый файл под названием «encrypt», ориентированный на 64-битную Linux-платформу. Если посмотреть на его дизассемблированный код, можно увидеть типичные признаки «рансомварного» поведения: он запрашивает ровно один аргумент (путь к файлу или «образу диска»), открывает его в режиме «rb+», а затем пытается распознать структуру MBR или GPT. В случае неудачи создаёт «фейковый» раздел и в любом случае начинает блочное шифрование. Внутри используются серьёзные криптографические механизмы: закодированное в base64 значение, которое впоследствии разделяется на 3 части и передается Curve25519 для генерации общего секрета, SHA-256 для окончательного преобразования ключа и SoSEMANuk как потоковый шифр для записи зашифрованных данных обратно в тот же файл.
Классические антивирусы, особенно если они установлены в гостевых операционных системах, подобного шифрования не видят, потому что действие разворачивается непосредственно на уровне ESXi, в каталоге /vmfs/volumes, куда антивирусы в гости обычно не заглядывают.
Вторым важным компонентом вредоносного ПО является скрипт «encrypt.sh». Его можно назвать «организационным центром» атаки. В самом начале скрипт проверяет, не запущен ли он уже, чтобы исключить множественные параллельные копии. Затем он отключает некоторые защитные опции, связанные с запуском бинарей, пытается модифицировать конфигурации виртуальных машин, чтобы они не могли правильно использовать диски, и наконец выключает все процессы vmx, то есть грубо убивает работающие виртуалки. После этого скрипт запускает «encrypt» по каждому файлу, который связан с виртуальной инфраструктурой: .vmdk, .vmx, .vswp и так далее. Чтобы администратор заметил катастрофу, в каждой папке создаётся «How To Restore Your Files.txt», а в веб-интерфейсе ESXi подменяется index.html, и жертве остаётся только читать требования злоумышленника. В заключение скрипт удаляет логи, вносит изменения в crontab и некоторые системные файлы, чтобы усложнить расследование и восстановление.
Интересно устроен и файл под названием «root». По сути, он выглядит как фрагмент crontab для пользователя root, в котором наряду с типичными для ESXi заданиями вроде auto-backup.sh внезапно появляются строки с запуском encrypt.sh каждые несколько часов. Вредонос прописывает три одинаковые команды, что создаёт избыточность и гарантирует, что шифровальщик запустится неоднократно. Если администратор сумеет восстановить некоторые файлы из резервной копии, через три часа скрипт снова просканирует каталог /vmfs/volumes и снова зашифрует то, что успели вернуть. Это почти полностью исключает шансы на оперативное восстановление, если не были предприняты меры по удалению зловредных записей в cron и самого скрипта.
Сложность подобных атак на ESXi в том, что многие защитные решения нацелены на гостевую операционную систему. Речь идёт не только об антивирусах, но и о системах NTA (Network Traffic Analysis), которые отслеживают сетевые пакеты, но не видят локальные операции на дисках гипервизора, а также SIEM системах, которые зачастую снимают логи только с гостевых ОС. Злоумышленники не пытаются вызвать большой поток трафика или «засветиться» во внешней сети — всё происходит внутри ESXi, поэтому ни сетевые фильтры, ни агенты, установленные в гостях, не замечают, как в каталоге /vmfs/volumes десятки гигабайт данных превращаются в хаотичный зашифрованный набор байт. Этим объясняется тот факт, что подобные шифровальщики часто оказываются вне поля зрения классических решений безопасности. Механизм работы in-place, когда блоки по 10 или 100 МБ читаются, шифруются и перезаписываются на то же место, выглядит незаметно для большинства систем безопасности, а узкая направленность подобного ПО позволяет уходить от поведенческого анализа. Кстати в полученном образце с целью оптимизации используется многоступенчатая схема анализа - кроме возможности шифровать блоки (в зависимости от размера системы по 10 МБ либо по 100 и пропуская следующие 900 МБ) предусмотрена возможность создания в виртуальной системе дополнительного раздела размером 768 Мб, который используется если софт не смог начать работу с разделами диска либо определил, что разделы имеют формат отличный от MBR/GPT.
Системы анализа не видят угрозы в файле, который не прописывает себя в места автоматического старта, не пытается перехватить контроль над какими-то запросами или отправить обратный коннект к C&C серверу. Вся дополнительная логика ложится в поставляемый с основным ПО bash скрипт.
В результате единичное проникновение на ESXi-хост может обернуться катастрофой для всей виртуальной инфраструктуры. Остановка всех виртуальных машин, подмена конфигураций, периодический перезапуск атаки через cron, полное игнорирование антивирусов на уровне гостевых ОС — всё это делает защиту сложной, а последствия атаки разрушительными. Многие компании, столкнувшись с зашифрованными .vmdk-файлами, оказываются в ситуации, когда никаких дешёвых способов восстановить виртуальные машины не остаётся. Единственное надёжное решение — иметь внешние бэкапы, которые не доступны злоумышленнику, и внимательно следить за безопасностью самого гипервизора. Политика обновлений, закрытие лишних сервисов, ограничения SSH, специализированные решения мониторинга ESXi — всё это перестаёт быть опциональным, когда на кону стоит вся виртуальная инфраструктура.
Опасность подобных атак
Массовое отключение всей виртуальной инфраструктуры.
При успешной атаке шифруются файлы всех виртуалок, что парализует работу компании.Усложнённое восстановление.
Скрипт чистит логи, правит конфиги, убирает crontab-записи, меняет файлы. Если нет резервных копий (или они тоже доступны злоумышленнику), восстановить может быть невозможно.Постоянный авто-запуск.
Вредонос прописывает себя в cron, чтобы повторять атаку каждые 3 часа. Даже если админ начнёт что-то исправлять, скрипт вернётся.
На практике атаки на ESXi стали реальным вызовом в последние пару лет, и случаи с массовым шифрованием виртуальных машин уже вызвали громкие инциденты. Злоумышленники не пытаются придумывать что-то сверхсложное: им достаточно один раз загрузить скрипт, бинарник и cron-файл, настроить их запуск, а дальше сам шифровальщик будет раз за разом портить файлы и показывать при каждом обращении к веб-интерфейсу ESXi свою страницу с требованием выкупа. Можно вспомнить, что администраторы обычно сфокусированы на гостевых ОС, а не на самом гипервизоре, и именно этим пользуются авторы вредоносного ПО. Полноценные EPP или EDR-решения на уровне ESXi нечасто встречаются в продакшене, и если злоумышленникам удалось добраться до SSH или уязвимого сервиса, то они практически беспрепятственно внедряют свой скрипт.
Как противодействовать
Обновлять ESXi и закрывать все известные уязвимости (особенно CVE-2021-21974, и др.).
Ограничить SSH-доступ: использовать ключи и ограничение IP, отключать, если не нужно.
Использовать специализированные решения для защиты гипервизоров (есть отдельные продукты, умеющие мониторить ESXi).
Регулярно делать бэкапы (вне хоста ESXi, чтобы злоумышленник не мог добраться до них).
Мониторить изменения в /vmfs/volumes, /etc/crontab, /var/spool/cron, /etc/rc.local.d/, /usr/lib/vmware/ на предмет аномальных скриптов и подмен страниц.
Чтобы противостоять таким атакам, важно не только закрывать свежие уязвимости и держать ESXi в актуальном состоянии, но и иметь полноценную схему резервного копирования, которая не зависит от самого гипервизора. Желательно настроить систему оповещений или мониторинга, которые обращают внимание на появление неизвестных скриптов и бинарных файлов в /tmp или других системных каталогах ESXi. Понимание того, что блокчейн-уровень криптографии в рансомварях давно стал нормой, а атаки охватывают всю инфраструктуру, а не только отдельные машины с Windows, помогает выстраивать комплексную защиту. В противном случае одна пропущенная уязвимость на ESXi может поставить под угрозу все виртуальные машины и привести к застою или даже потере важных данных без шансов на дешёвое восстановление.
NKulikov
А не подскажите, а каким образом злоумышленник пусть даже через фишинг пробившийся в виртуальный десктоп смог получить сетевой доступ до mgmt порта ESXi чтобы атаковать его через не пропатченные уязвимости?
Gerionill Автор
Мисконфигурация сети, здесь уже проблема не в VMware =)
NKulikov
Вот за такую "мисконфигурацию" и надо долго и сильно бить по рукам. И это ИМХО должно быть правило номер 0, перед тем как ставить патчи особенно от well-known и seen in the wild уязвимостей. Потому что management сеть платформы и железа, по умолчпнию, должна быть изолирована от сети пользователей. А требования номер 3 - просто включить MFA на Horizon. Любой из этих шагов был бы достаточен для защиты. Рекомендация 4 - проверить и настроить мониторинг соответствия Hardening Guide.
А вот от инструментов, которые обеспечивают безопасность ESXi часто больше вреда, чем пользы, не говоря уже про то, VMware не рекомендует установку всяких security агентов на хосты - https://knowledge.broadcom.com/external/article/330057/deployment-of-3rd-party-agents-and-antiv.html
Gerionill Автор
С одной стороны - я полностью согласен, правильная конфигурация всей системы обеспечила бы эшелонированную защиту. С другой стороны - это справедливо для многих энтерпрайз систем, но тем не менее для них выпускают средства защиты информации либо сразу их встраивают.
Банально, при правильно конфигурации домена AD и своевременном обновлении пробить его тоже не всегда просто, однако Shodan, Fofa, Censys и пр. полнятся уязвимыми системами, ведь люди не идеальны. Смысл решений в области ИБ - снизить риски.
На текущий же момент заметна активность хакеров в направлении атак систем виртуализации, при этом необходимые компетенции у администраторов не всегда есть, а снизить риск нечем.
NKulikov
Основное и принципиальное отличие — это то, что ESXi не является ОС общего назначения, на которой можно запускать произвольный код/программы. Все компоненты должны быть подписаны цифровой подписью от VMware. Да, есть CommunitySupported VIB, но их разрешение требует изменение Acceptance Level (что прямо не рекомендуется и не поддерживается вендором, а так же запрещено в рамках всяких сертификаций по безопасности типа PCI DSS и прочих) + Secure Boot просто перестанет работать и не позволит запустить ESXi. См. https://blogs.vmware.com/vsphere/2011/09/whats-in-a-vib.html + https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-security/GUID-5D5EE0D1-2596-43D7-95C8-0B29733191D9.html
Поэтому тулзы безопасности, о которых вы говорите (кстати, а какие конкретно вы можете привести в качестве примера?), обычно используют всякие грязные хаки (типа установки таких же не подписанных модулей или работа по всегда открытому ssh), которые только создают новые вектора угроз + могут оказывать влияние на стабильность работы платформы и СИЛЬНО усложняют любой траблшутинг (возможное/вероятное требование номер 1 от поддержки будет - удалите всякую фигню с хоста и тогда будем смотреть) и обновление (потому что кто его знает кто и как тестировал эту тулзу на работу с новыми версиями/патчами).
Да, безусловно, есть нормальные инструменты безопасности для защиты самой платформы. Но они пассивные и или мониторят логи/события, или мониторят/отслеживают конфигурацию платформы и в случае чего (например, кто-то открыл ssh порт) кидают алерты. Но ИМХО — это все-таки скорее система мониторинга, чем система активной защиты.
Ну и если вам нужно сделать все совсем-совсем секурно на ESXi, то включайте еще и Lockdown Mode + пустой DCUI.Access (https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-security/GUID-88B24613-E8F9-40D2-B838-225F5FF480FF.html) в дополнение к стандартным SecureBoot + Host Profiles. Тогда никакой ssh/cli/dcui не работает. Хотя на практике так делают крайне редко (и только в средах с очень высокими требованиями по безопасности), потому что траблшутинг превращается в ад, где все заканчивается просто перезаливкой хостов.
jackgrebe
видимо на вирутальном дестктопе лежал реальный текстовый файл с реальными паролями.
в СДЭКе что-то такое было.
NKulikov
Так дело не в паролях. По умолчанию, management сеть гипервизора, серверов, СХД и прочего изолирована от сети пользователей. Так что хоть есть пароли и уязвимости, хоть нет, туда не достучаться при атаке на VDI десктоп пользователя.
jackgrebe
хорошо. допустим вы изолировали mgmt в отдельный vlan.
рассмотрим вопрос: а кто еще имеет туда доступ и как ?
мои ответы это:
автоматика (мониторинг, биллинг, бэкап, IDS, ...) и ручное управление от админов.
через роутинг + фаерволл, через роутинг + фаерволл.
видите в п1. потенциально уязвимые места ?
пользователь не простой. достучаться можно.