Новый руткит для 64-разрядной системы Linux: внедрение iframe

в 13:09, , рубрики: kaspersky, kaspersky lab, linux, Блог компании «Лаборатория Касперского», вирусы, Вирусы (и антивирусы), касперский, лаборатория касперского, руткиты, метки: , , , , , ,

Несколько дней назад в списке рассылки Full Disclosure появилось сообщение об интересной вредоносной программе для Linux. Это очень любопытный образец – не только потому, что он предназначен для 64-разрядных платформ Linux и скрывает свое присутствие в системе с помощью хитроумных методов, но прежде всего из-за необычного функционала, связанного с заражением сайтов, размещенных на подвергшемся атаке HTTP-сервере. Таким образом, мы имеем дело с вредоносной программой, используемой для организации drive-by загрузок вредоносного ПО.
image

Вредоносный модуль создан специально для версии ядра 2.6.32-5-amd64. Это новейший вариант ядра, используемый в 64-разрядной системе Debian версии Squeeze. Исполняемый файл имеет размер более 500 кБ, но это связано с тем, что он был скомпилирован с отладочной информацией. Возможно, модуль находится на стадии разработки: создается впечатление, что некоторые функции не до конца отлажены или, может быть, еще не полностью реализованы.

Вредоносная программа обеспечивает свой автозапуск, добавляя строку в скрипт /etc/rc.local:

insmod /lib/modules/2.6.32-5-amd64/kernel/sound/module_init.ko

После своей загрузки в память руткит использует один из двух методов для получения kernel symbols и их записи в файл /.kallsyms_tmp:

/bin/bash -c cat /proc/kallsyms > /.kallsyms_tmp
/bin/bash -c cat /boot/System.map-`uname -r` > /.kallsyms_tmp

Затем он извлекает адреса памяти нескольких функций и переменных ядра и сохраняет их в памяти для дальнейшего использования.

image

Временный файл немедленно удаляется:

rm /.kallsyms_tmp -f

Чтобы скрыть файлы и строку стартового скрипта, запускающую вредоносную программу, руткит перехватывает следующие функции ядра путем сплайсинга или замены адреса в памяти на указатели собственных вредоносных функций руткита:

vfs_readdir
vfs_read
filldir64
filldir

В дополнение к сокрытию собственного модуля вредоносная программа пытается скрыть следующие файлы и потоки:

zzzzzz_command_http_inject_for_module_init
zzzzzz_write_command_in_file
module_init.ko
sysctl.conf
/usr/local/hide/first_hide_file/*
/ah34df94987sdfgDR6JH51J9a9rh191jq97811/*

backconnect_command_thread_name
new_backconnect_command_thread_name
read_command_http_inject_thread_name
write_startup_command_thread_name
write_se_linux_command_thread_name
get_http_inj_from_server_thread_name

Интересен механизм внедрения плавающего фрейма (iFrame): вредоносная программа подменяет системную функцию tcp_sendmsg, отвечающую за построение TCP-пакетов, собственной функцией. Таким образом, вредоносные фреймы внедряются в HTTP-трафик путем непосредственной модификации исходящих TCP-пакетов.

image

Для получения актуального внедряемого блока данных вредоносная программа соединяется с сервером управления (C&C), используя для аутентификации зашифрованный пароль.

image

Нам не удалось соединиться с сервером управления через порт, используемый вредоносной программой, однако вредоносный сервер все еще активен; на нем размещен и другой инструментарий для UNIX-подобных операционных систем, в частности, инструменты для очистки журналов.

До сих пор в большинстве сценариев drive-by атак механизм автоматического внедрения вредоносного кода был реализован с помощью простого PHP-скрипта. Но в данном случае мы имеем дело с гораздо более сложным механизмом – применением руткит-компонента режима ядра, использующего сложные технологии перехвата, что позволяет сделать процесс внедрения более прозрачным (незаметным) и низкоуровневым, чем когда-либо ранее. Этот руткит, который в данный момент находится на стадии разработки, демонстрирует новый подход к организации drive-by атак. Несомненно, можно ожидать появления других подобных вредоносных программ в будущем.

Превосходный подробный анализ этого руткита был недавно опубликован в блоге CrowdStrike.

Продукты «Лаборатории Касперского» детектируют данный руткит как

Rootkit.Linux.Snakso.a

Автор: Kaspersky_Lab

Источник

Поделиться

* - обязательные к заполнению поля