Безфайловый криптоджекинг в контейнерах Next.js: скрытая атака обошла сканеры и что с этим делать

information security

В контейнерной среде одного из корпоративных заказчиков обнаружена многоэтапная атака скрытого майнинга криптовалюты. Вредоносная кампания использовала безфайловый метод. Код выполнялся в оперативной памяти и не оставлял следов на диске. Такая техника обходит большинство традиционных средств защиты. Антивирусы и сканеры ищут вредоносные файлы и известные сигнатуры. Атака развивалась в несколько этапов. Злоумышленники специально проектировали каждый этап так, чтобы скрыть его от стандартных инструментов.

Описание

Современные команды безопасности вкладывают много ресурсов в проверку образов контейнеров до их запуска. Они также управляют конфигурациями. Эти меры эффективны против известных уязвимостей. Однако они бессильны, когда злоумышленник уже внутри работающей системы. Вредоносный код, живущий в памяти, не создаёт файлов. Он не меняет сигнатуры и ускользает от инструментов, настроенных на поиск известных угроз. Более того, многие средства, заявляющие о защите в реальном времени, лишь собирают данные. Затем они передают эти данные аналитикам. К моменту, когда срабатывает оповещение, атакующий уже завершает свои действия.

По данным Aqua Nautilus, кампания атаковала контейнеризированные приложения на базе Node.js и Next.js. Злоумышленники использовали уязвимость в веб-приложении для первоначального проникновения. Затем они запустили в памяти цепочку вредоносных скриптов. Промежуточный загрузчик распаковывался прямо в памяти. Только после этого на диск попадал сам майнер. Такой подход сокращал количество файлов на диске и снижал шансы обнаружения файловыми сканерами. Вдобавок каждый этап доставки вредоносного кода маскировался под обычную активность приложения.

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

Отдельного внимания заслуживает так называемый дрейф контейнера. Это появление исполняемых файлов, которых не было в исходном образе приложения. Именно по этому признаку система безопасности выявила скрытые компоненты майнера. В нормальной ситуации все исполняемые файлы известны заранее. Поэтому любые новые исполняемые файлы выглядят подозрительными. Контроль дрейфа позволяет блокировать такие файлы ещё до их запуска.

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

Сам майнер связывался с внешним пулом для добычи Monero через стандартный порт. С точки зрения сетевого трафика такие соединения практически неотличимы от обычного обмена данными приложения. Только сопоставление исходящих запросов с конкретными процессами позволило выявить вредоносную активность. В расследовании не обнаружили следов доступа к секретам, токенам или ключам заказчика. Поэтому ущерб ограничился использованием вычислительных ресурсов. Тем не менее подобные атаки могут нанести серьёзный финансовый урон. Они повышают потребление электроэнергии и снижают производительность.

Большинство средств, обещающих защиту в реальном времени, лишь фиксируют событие. Они реагируют после того, как ядро разрешило действие. К этому моменту вредоносный код уже отработал, файлы появились на диске, злоумышленник закрепился. Такой подход даёт видимость, но не даёт контроля. Обнаружение аномалий полезно, однако само по себе не предотвращает развитие атаки. Сетевые экраны отслеживают трафик по адресам и портам. Однако они не знают, какой процесс создаёт соединение. Поэтому запрос к майнинг-пулу выглядит как обычное обращение к внешнему сервису. Только глубокий контроль на уровне процессов и памяти способен остановить такие атаки.

Платформа Aqua работает иначе. Она собирает данные о процессах, файлах, памяти и сетевых соединениях изнутри контейнера. Это позволяет заблокировать действие до его завершения. Например, система останавливает выполнение кода из памяти в момент попытки запуска. Она блокирует запуск новых исполняемых файлов, которых не было в исходном образе. Система прерывает соединение с майнинг-пулом на уровне процесса. В итоге контроль осуществляется с той же скоростью, с которой работает атакующий код. Он не требует участия аналитика. Такой подход позволяет разорвать цепочку атаки ещё до того, как злоумышленник успеет нанести ущерб.

Для защиты от подобных кампаний стоит проверить настройки безопасности контейнерной платформы. Нужно включить контроль появления новых исполняемых файлов. Важно перевести его из режима наблюдения в режим блокировки. Также стоит настроить запрет выполнения кода из памяти. Это актуально для рабочих нагрузок, где такое поведение не ожидается. Отдельно рекомендуется проверять файлы авторизованных ключей и другие места, где злоумышленники оставляют закладки. Регулярное обновление веб-приложений и мониторинг исходящих соединений дополняют этот набор мер. Особое внимание стоит уделить интернет-приложениям. Именно они чаще всего становятся точкой входа.

Любая атака в облачной среде рано или поздно приводит к попытке выполнить вредоносный код. Именно в точке выполнения защита может остановить угрозу, не дожидаясь, пока атакующий завершит свои действия. Инструменты, которые только наблюдают, оставляют инфраструктуру уязвимой. Упреждающее блокирование разрывает цепочку атаки ещё до того, как злоумышленник получит контроль над системой.

Индикаторы компрометации

IPv4

  • 185.216.75.152

Domain

  • cts-assets.s3.us-west-1.amazonaws.com
  • redclub-websites-offer-images.s3.amazonaws.com

URL

  • http://221.156.167.200:9090/js/
  • http://77.90.13.20/dashboard
  • pastebin.com/raw/7nCDtDwS
  • pastebin.com/raw/Z7HfUZPJ

SHA256

  • 72987d9755dbd12117a23f337054edcc51629563c3ff867fd65ccb948775d546
  • 82258b64b331d1f0d345292b69da6e6f4381e8c7249654140b2c1167353b534b
  • 83a9d43c3d37983a551d4b525829b40e8af4de49cfc9524156400f983fd49699
  • b20f39fc00d242e706b6c30367ad811c676e0575050a4ec2f30104b696944b49
  • fce7781a199f2b65bdb47dac602ecf397941235670818e79e5d9a9d0fa4cceea
  • ff990066f7860be6f2893550e58c0ab485c330edc8a4a55a289557004eb9ef99

Комментарии: 0