Aqua Nautilus обнаружил новое вредоносное ПО на основе Go, нацеленное на серверы Redis. Атака была осуществлена на один из наших заведомо уязвимых Redis honeypots (CVE-2022-0543). Расследование выявило новое необнаруженное вредоносное ПО, написанное на языке Golang и предназначенное для атаки на серверы Redis, чтобы позволить атакующему серверу доминировать на скомпрометированной машине. Поэтому вредоносное ПО получило название Redigo. В этом блоге мы рассмотрим, как противники используют эту уязвимость Redis и применяют ее для запуска нового вредоносного ПО. Кроме того, мы рассмотрим процесс атаки и порекомендуем методы защиты от будущих атак.
Процесс нападения
Первоначальный доступ
Недоброжелатели используют сканеры или ботнеты для поиска сервера Redis, открытого для доступа в интернет через порт 6379. После подключения к серверу Redis злоумышленники могут выполнять следующие команды Redis:
- Команда INFO - эта команда позволяет противникам получать информацию о нашем сервере Redis. Среди полученных данных они знают, какая версия сервера уязвима к CVE-2022-0543 (как мы объясняли ранее, honeypot был построен с этой уязвимостью специально). Эта информация предоставляет противникам одобрение, которое им понадобится для эксплуатации уязвимости, и позволяет им начать подготовку поверхности для ее использования.
- Команда SLAVEOF - позволяет противникам создать копию атакующего сервера. Это действие впоследствии поможет им загрузить общий объект, позволяющий использовать уязвимость.
- Команда REPLCONF - эта команда используется для настройки соединения от ведущего (атакующего сервера) к только что созданной реплике.
- Команда PSYNC - новая реплика выполняет эту команду и инициирует поток репликации от мастера. Это соединение поддерживает реплику в актуальном состоянии и позволяет мастеру отправлять поток команд. Атакующий сервер, определенный как ведущий, использует это соединение для загрузки разделяемой библиотеки exp_lin.so на диск реплики. Кроме того, это соединение может использоваться противниками как черный ход, когда в случае прерывания соединения реплика переподключается и пытается получить ту часть потока команд, которую она пропустила во время отключения.
- Команда MODULE LOAD - позволяет во время выполнения загрузить модуль из динамической библиотеки, загруженной на этапе 4. Эта библиотека позволяет эксплуатировать уязвимость и запускать произвольные команды в дальнейшем.
- Команда SLAVEOF NO ONE - отключает репликацию и превращает уязвимый сервер Redis в ведущий.
Выполнение
Библиотечный файл exp_lin.so, загружаемый противниками, выполняет код, эксплуатирующий уязвимость, которая была намеренно оставлена в нашей honeypot. Этот файл содержит реализацию команды system.exec, которая позволяет противникам выполнить произвольную команду и инициировать атаку. Первое использование команды активируется для получения информации об архитектуре процессора. Второе использование команды выполняется для загрузки недавно обнаруженного вредоносного ПО с атакующего сервера - Redigo. После загрузки файла вредоносного ПО злоумышленники повышают разрешения на выполнение файла и выполняют его (об исследовании вредоносного ПО читайте ниже).
Уклонение от защиты
Противники заинтересованы в сокрытии своей деятельности, чтобы избежать обнаружения. Для этого они используют кажущуюся легитимной коммуникацию Redis, которая имитирует связь между кластером Redis, используя порт 6379. Однако эта связь используется противниками для передачи команд, которые позволят им контролировать уязвимый сервер.
Обнаружение
Redigoстремятся познакомиться и узнать о системе, которую они атаковали, в данном случае о нашем сервере Redis. Эта информация ценна для них по мере продвижения атаки. Как мы описывали ранее, при первоначальном доступе, противники использовали команду Redis INFO, которая возвращала информацию и статистику о нашем сервере. Наш сервер вернул ответ со всей указанной информацией, включая данные о сервере, памяти и процессоре. Эти данные помогли противникам узнать о целевых ресурсах. Более того, после эксплуатации уязвимости и выхода из Lua-песочницы они запускают команду lscpu на хосте, чтобы получить информацию о процессоре.
Командование и управление
Сброшенная вредоносная программа имитирует взаимодействие с сервером Redis, что позволяет противникам скрывать связь между целевым узлом и сервером C2. После загрузки вредоносной программы роли хостов меняются - наш уязвимый сервер Redis превращается в клиента, а атакующий сервер становится сервером Redis. Эти отношения позволяют противникам выражать связь C2 между собой, так как ответ атакующего сервера будет использоваться в качестве команд для будущих атак на уязвимый сервер Redis. Он имитирует легитимную коммуникацию кластера Redis через порт 6379. Это может помочь ему обойти детекторы сетевых датчиков. Проанализировав реальную коммуникацию, мы выяснили, что вредоносная программа использовалась противниками для управления сервером Redis по принципу "ведущий-ведомый".
Воздействие
Aqua Nautilus ограничивают продолжительность атаки в наших honeypots, и поэтому трудно сказать, увидели ли мы весь масштаб воздействия. Основываясь на аналогичных атаках, мы можем предположить, что когда злоумышленники добавляют целевой хост в большой ботнет, это обычно означает, что взломанный сервер примет участие в кампании распределенного отказа в обслуживании (DDoS) против целевых приложений и повлияет на их бизнес. Другим вероятным сценарием является запуск криптомайнеров на целевом узле. Кроме того, поскольку речь идет о базе данных, злоумышленники могут использовать хост для кражи данных или секретов и дальнейшего закрепления в среде. В любом случае, каждый сценарий может оказать влияние на ресурсы взломанного сервера, который теперь используется как часть кооптированной системы для решения ресурсоемких проблем, что может повлиять на его доступность для пользователей, ежедневно пользующихся его услугами.
Indicators of Compromise
IPv4
- 45.41.240.51
MD5
- a755eeede56cbce460138464bf79cacd
- c3b9216936e2ed95dcf7bb7976455859