Веб-шеллы на PHP, управляемые через куки: как злоумышленники закрепляются на серверах Linux

Команда Microsoft Defender Security Research Team опубликовала детальный разбор атак, в которых злоумышленники используют HTTP-куки для управления PHP-шеллами на Linux-серверах. Техника необычна тем, что вредоносный код на сервере не делает ровно ничего, пока не получит HTTP-запрос со строго определённым набором значений в куках. Обычный трафик проходит мимо, логи чисты, сканеры молчат.
Веб-шеллы на PHP, управляемые через куки: как злоумышленники закрепляются на серверах Linux
Изображение носит иллюстративный характер

Традиционно веб-шеллы принимают команды через GET- или POST-параметры. Это давно известно защитным решениям: WAF-ы и системы логирования фильтруют URL-строки и тела запросов. Куки же практически не попадают под такой контроль. Они легко доступны в PHP через суперглобальную переменную $_COOKIE, не требуют дополнительного парсинга и естественно присутствуют в любом HTTP-запросе к веб-серверу. Злоумышленники, по сути, прячут команды у всех на виду.
Первоначальный доступ к серверу атакующие получают двумя основными путями: либо используют украденные легитимные учётные данные, либо эксплуатируют известные уязвимости. Ничего экзотического на этом этапе нет. Интереснее то, что происходит дальше. После проникновения создаётся задача cron, которая периодически запускает обфусцированный PHP-загрузчик. Если администратор находит и удаляет вредоносный файл, cron-задача пересоздаёт его заново. Microsoft описывает это как «самовосстанавливающуюся» архитектуру. Канал удалённого исполнения кода (RCE) таким образом сохраняется даже после частичной зачистки.
Microsoft выделила три разных модели реализации этих шеллов. Первая — обфусцированный PHP-загрузчик с несколькими уровнями запутывания и проверками среды выполнения. Он разбирает структурированные данные из куки и запускает закодированную вторичную нагрузку. Вторая модель — сегментированный PHP-скрипт, который разбивает данные из куки на части, восстанавливает из них рабочие компоненты (декодирование, работа с файлами), записывает вторичную нагрузку на диск и исполняет её при выполнении определённых условий. Третья — маркерный скрипт, где одно значение куки работает как простой триггер: если нужная кука есть, скрипт выполняет переданные команды или загружает файлы на сервер.
Разделение функций между механизмом управления и механизмом закрепления — пожалуй, самая неприятная черта этой техники с точки зрения обнаружения. Куки отвечают за передачу команд, cron обеспечивает постоянство. В стандартных логах приложений это почти не оставляет следов. Атакующие при этом не городят сложные цепочки эксплойтов, а пользуются штатной инфраструктурой: процессами веб-сервера, компонентами панелей управления хостингом, плановыми задачами cron. Всё выглядит легитимно.
Обфускация кода дополнительно маскирует функциональность. Даже если файл найден, его содержимое не всегда очевидно для администратора, который не занимается реверс-инжинирингом PHP каждый день. А с учётом того, что шелл активируется только при наличии конкретных кук, стандартное автоматическое сканирование файловой системы может не зафиксировать вредоносное поведение. Файл лежит на диске, но ведёт себя как обычный PHP-скрипт — до момента, когда атакующий решит его «разбудить».
Microsoft рекомендует шесть конкретных мер противодействия. Первая — включить многофакторную аутентификацию (MFA) на панелях управления хостингом, SSH-доступе и административных интерфейсах. Вторая — мониторить необычную активность при входе в систему. Третья — ограничить выполнение интерпретаторов командной строки. Четвёртая — проводить аудит cron-задач на всех веб-серверах, причём регулярно, а не от случая к случаю. Пятая — отслеживать подозрительное создание файлов в директориях веб-сервера. Шестая — ограничить возможности командной оболочки, доступные через панели управления хостингом.
Отдельно стоит обратить внимание на рекомендацию по аудиту cron. Администраторы нередко проверяют crontab текущего пользователя и на этом успокаиваются. Но задачи могут быть созданы от имени других пользователей, размещены в /etc/cron.d/ или зарегистрированы через systemd-таймеры. Регулярная проверка всех этих мест — дело муторное, но именно на этом построена «самовосстанавливающаяся» часть атаки.
Описанная Microsoft техника показательна ещё и тем, насколько мало ресурсов нужно атакующему для поддержания доступа. Один cron-job, один небольшой PHP-файл, пара значений в куках. Никаких экзотических бэкдоров, никаких руткитов на уровне ядра. Защита от подобных атак требует не столько дорогих инструментов, сколько дисциплины: контроля учётных записей, регулярного аудита и внимания к тому, что происходит на сервере за пределами стандартных логов веб-приложения.


Новое на сайте

19729Веб-шеллы на PHP, управляемые через куки: как злоумышленники закрепляются на серверах... 19728Как учёным впервые удалось составить полную карту нервов клитора? 19727Homo habilis: самый древний «человек», который, возможно, им не является 19726Как северокорейские хакеры взломали одну из самых популярных библиотек JavaScript 19725Почему риски от подрядчиков стали главной дырой в кибербезопасности 19724Как выживший во второй мировой придумал нападение гигантского кальмара 19723Что если вселенная никогда не начиналась с точки бесконечной плотности? 19722Доживёт ли комета MAPS до субботы? 19721Квантовый процессор IBM побил сразу два рекорда — что это меняет? 19720Как северная Корея похитила $285 миллионов у Drift через предподписанные транзакции? 19719Как хакеры через одну дыру в Next.js украли ключи от 766 серверов? 19718Artemis II покинул земную орбиту и летит к луне 19717NASA показало невиданные снимки кометы 3I/ATLAS и запечатлело старт лунной миссии Artemis... 19716Сифилис появился 4000 лет назад — или его находили не там, где искали? 19715Энергетический дисбаланс земли зашкаливает, и учёные не могут это объяснить
Ссылка