HeadCrab Botnet IOCs

botnet IOC

Исследователи Aqua Nautilus обнаружили новую неуловимую и серьезную угрозу, которая проникает на серверы по всему миру с начала сентября 2021 года. Известный как HeadCrab, этот продвинутый агент угроз использует современное, специально разработанное вредоносное ПО, не обнаруживаемое безагентными и традиционными антивирусными решениями, для компрометации большого количества серверов Redis. Ботнет HeadCrab взял под контроль не менее 1 200 серверов.

HeadCrab Botnet

Эта история началась с атаки на один из honeypots Aqua Nautilus, когда объект угрозы нацелился на сервер Redis. В итоге сервер был взломан с помощью команды SLAVEOF, в результате чего он стал ведомым сервером другого сервера Redis, контролируемого злоумышленником. Затем ведущий сервер Redis инициировал синхронизацию ведомого сервера, который, в свою очередь, загрузил вредоносный модуль Redis, вредоносную программу HeadCrab, на ведомый сервер (honeypot). Эта техника используется злоумышленниками уже некоторое время и позволяет им загружать вредоносные модули Redis на пораженные узлы.

После загрузки модуля в каталог /tmp на сервере жертвы он был загружен в процесс Redis с помощью команды MODULE LOAD /tmp/[имя_модуля], злоумышленник попытался загрузить несколько модулей, но в конце концов добился успеха.

При обратном анализе загруженного модуля Aqua Nautilus обнаружили сложную, давно разработанную вредоносную программу. Она предоставляет злоумышленнику множество расширенных возможностей и, в конечном итоге, полный контроль над целевым сервером. Модуль представляет 8 пользовательских команд, названных по шаблону rds*, которые используются злоумышленником для выполнения действий на взломанном сервере.

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

Aqua Nautilus обнаружили не только вредоносную программу HeadCrab, но и уникальный метод обнаружения ее заражений на серверах Redis, метод обнаружил около 1 200 активно зараженных серверов при применении к открытым серверам в дикой природе. Жертвы, похоже, имеют мало общего, но злоумышленник, похоже, в основном нацеливается на серверы Redis и обладает глубоким пониманием и опытом в модулях и API Redis, что демонстрирует вредоносная программа.

Aqua Nautilus заметили, что злоумышленники приложили немало усилий для обеспечения скрытности своей атаки. Вредоносная программа была разработана таким образом, чтобы обойти сканирование на основе объема, поскольку она работает исключительно в памяти и не хранится на диске. Кроме того, журналы удаляются с помощью фреймворка и API модуля Redis. Атакующий связывается с легитимными IP-адресами, в первую очередь с другими зараженными серверами, чтобы избежать обнаружения и снизить вероятность попадания в черный список решений по безопасности. Вредоносная программа в основном базируется на процессах Redis, которые вряд ли будут отмечены как вредоносные. Полезная нагрузка загружается через memfd, файлы только для памяти, а модули ядра загружаются непосредственно из памяти, что позволяет избежать записи на диск.

HeadCrab Malware

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

Проверка того, что при выполнении программа запускается только один раз

При первом запуске вредоносная программа использует функцию RedisModule_OnLoad, которая срабатывает, когда сервер Redis загружает модуль. Затем вредоносная программа сохраняет адреса соответствующих функций API Redis для последующего использования, проверяет, не загружен ли уже модуль с именем rds, и, если да, немедленно выходит из программы, не выполняя никаких вредоносных действий.

Первоначальное обследование среды

Информация о соединении, инициировавшем загрузку модуля, сохраняется для последующих проверок. Кроме того, вредоносная программа проверяет, запускается ли она от имени привилегированного пользователя root или от имени менее привилегированного пользователя redis.

Упор на безопасность операций (магические числа)

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

Если модуль загружен с двумя аргументами, некоторые из команд Redis по умолчанию (8 команд: Module, Client, Debug, Shutdown, Monitor, Slaveof, Replicaof, Config) заменяются командами, которые в основном возвращают ошибки. Это делается для того, чтобы избежать обнаружения вредоносного ПО. Если модуль не загружен с 2 аргументами, этот шаг пропускается.

Кроме того, вредоносная программа удаляет файл журнала Redis и опустошает его, если он был создан заново, обрезая его до размера 0.

Подготовка

Функции обработки сигналов были заменены и использовались вредоносной программой для связи со своими дочерними процессами.

Выполнение скрытого кода

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

Выполнение из памяти

Вредоносная программа пытается создать бесфайловый файл с помощью системного вызова memfd_create. Если это удается, он создает 10 memfd или temp-файлов и сохраняет их для последующего использования.

Упор на выполнение в контейнерах

Вредоносная программа проверяет, не имеет ли ID процесса ниже 31, это делается для того, чтобы определить, запущена ли служба в контейнере. Если вредоносная программа не запущена в контейнере, проверяется несколько программ управления сервисами, таких как systemd, initd, upstart и другие. Если какая-либо из них установлена, она помечается и в дальнейшем будет использоваться для размещения постоянных служб и скриптов в соответствующем месте, вредоносная программа пропускает этот шаг на контейнерах, поскольку он будет неэффективным.

Создание новых команд Redis

Затем вредоносная программа создает новые команды Redis, которые используются для того, чтобы агент угрозы мог управлять вредоносным ПО:

  • rdsa Эта команда принимает два аргумента. Первый - путь к файлу конфигурации Redis, а второй - путь к вредоносному модулю Redis. Эта функция добавляет в конфиг Redis строку, которая загружает вредоносный модуль с магическими числами. Для того чтобы обеспечить дальнейшую устойчивость вредоносной программы, она скрывает вывод команды loadmodule. Эта команда используется для загрузки вредоносного модуля и, добавляя прокладку к выводу, выводимому на экран, скрывает его активность.
  • rdss Выполняет команду с popen и возвращает вывод процесса в качестве вывода команды.
  • rdsp Заменяет команды по умолчанию на вредоносные функции, чтобы избежать обнаружения.
  • rdsi Обновляет магические числа, используемые в шифровании и пустых журналах, усекая их.
  • rdsm MONITOR - это команда отладки Redis, которая передает обратно каждую команду, обрабатываемую сервером Redis. Она также заменена командой rdsp или загрузкой модуля с 2 аргументами. Эта новая команда отвечает за отмену изменений в команде MONITOR - повторное включение отладки сервера.
  • rdsc Слушает входящее соединение на нужном порту и позволяет установить зашифрованный канал связи с сервером C2. Подробное описание доступных команд приведено ниже в разделе приложения. Вредоносная программа может создавать новый сокет и подключать его к командному сокету C2, туннелировать сеть на другую пару IP-адресов и портов, выполнять команды shell, отправлять содержимое файла на C2, записывать данные в открытый файл memfd, читать содержимое сохраненного файла memfd и отправлять обратно на C2, загружать модуль ядра без файлов и многие другие сильные возможности.
  • rdsr Устанавливает зашифрованный канал связи с сервером C2. То же, что и в rdsc выше.
  • rdsx Восстанавливает переопределенные команды и возвращает их к командам Redis по умолчанию.

Кто такой HeadCrab? Или, что такое HeadCrab?

Возникает вопрос, почему Aqua Security называет субъекта угрозы и вредоносную программу HeadCrab. Угрожающий агент HeadCrab оставил "мини-блог" внутри вредоносной программы.

HeadCrab

Как видно на приведенном выше снимке экрана, действующее лицо угрозы идентифицируется как HeadCrab, монстр из игры HalfLife, который прикрепляется к людям и превращает их в зомби.

Более того, агент угрозы также сделал запись в блоге, посвященную команде Nautilus. Эта ссылка относится к блогу о Redigo. Недавно мы обнаружили Redigo, который является новым вредоносным ПО, нацеленным на серверы Redis. В блоге Aqua Nautilus Discovers Redigo - New Redis Backdoor Malware писали, что злоумышленник использовал уязвимость, позволяющую выйти из песочницы LUA и привести к удаленному выполнению кода (CVE-2022-0543) на целевом сервере. После дальнейшего изучения вновь обнаруженной вредоносной программы и личного посвященного ей комментария в Aqua Security поняли, что вредоносная программа Redigo также эксплуатирует технику "ведущий-ведомый", а не выход из песочницы LUA.

Этот агент угроз очень дискретен, поэтому Aqua Security не смогли найти много указаний на его активность в открытых источниках. Aqua Security нашли одно указание на "pamdicks", которое появилось в "мини-блоге". В блоге компании Trend Micro упоминается, что руткит под названием netlink используется для изменения статистики, связанной с процессором (может скрывать процесс pamdicks и загрузку процессора), чтобы скрыть криптомайнинг. Хотя это не на 100% совпадает с "миниблогом", скорее всего, это то, что имеет в виду агент угрозы.

Смягчение рисков

Чтобы снизить риски для серверов Redis, необходимо усилить среду, обеспечив соответствие конфигурации Redis лучшим практикам безопасности.

  1. Redis разработан для доступа доверенных клиентов в доверенных средах. Это означает, что обычно не стоит открывать экземпляр Redis непосредственно в интернет или, в целом, в среду, где ненадежные клиенты могут получить прямой доступ к TCP-порту Redis или сокету UNIX.
  2. Если вы используете Redis в облаке, лучше включить защищенный режим для повышения безопасности. Защищенный режим гарантирует, что база данных отвечает только на loopback-адрес и генерирует ошибку в качестве ответа всем узлам, подключающимся с других IP-адресов.
  3. Принимайте связь от известных узлов с помощью параметра bind.
    Ваш сервер Redis будет прослушивать соединения только с адресом, указанным в параметре bind. Это мера безопасности, позволяющая отбрасывать соединения, созданные не внутри сети.
  4. Если функция 'slaveof' не используется активно, рекомендуется отключить ее.

Indicators of Compromise

Ipv4

  • 116.202.102.79
  • 178.62.32.29

MD5

  • c5b992c76b7c9fa3b9bd755dd3b5af76

Monero wallet ID

85o3miXCHdWduE6V2xTMVsEofzrDoTyquGAXwW35mAPuRtkW6Xf5jET35QNSnHQL68gZNh96RrZBnPuGgwR6FoyoUEhbZJP

Avatar for Gnostis
Gnostis
SEC-1275-1
Добавить комментарий