Новый rootkit для Linux, осуществляющий подстановку вредоносного кода в HTTP-трафик
21 ноября 2012 года
На ряде web-серверов обнаружен новый руткит, используемый для скрытной подстановки вредоносных вставок в отдаваемый сервером HTTP-контент. Руткит поражает 64-разрядные Linux-серверы, работающие под управлением Debian Squeeze с ядром 2.6.32-5-amd64. После активации в ядро системы загружается специальный модуль, скрывающий следы присутствия руткита и осуществляющий подстановку в генерируемый локальным web-сервером HTTP-трафик iframe-блоков с кодом для эксплуатации уязвимостей в клиентских браузерах и установленных в них плагинах.
В отличие от обычно применяемой техники внедрения вредоносного кода в хранимые на сервере html-страницы, руткит позволяет оставить файлы в неизменном виде, осуществляя подстановку на стадии отдачи контента http-сервером. Так как компоненты руткита маскируются и скрываются от средств мониторинга, на первый взгляд вредоносная активность отсутствует.
Первая информация о новом рутките была опубликована несколько дней назад в списке рассылки Full Disclosure. Администратор одной из поражённых систем привёл первичный разбор странной активности на своём сервере, из-за которой с хоста данные уходили с подстановкой вредоносного iframe, но локально следов подстановки вредоносного кода не наблюдалось, в том числе используемый для отдачи контента nginx при проверке через strace отдавал в сетевой сокет корректные данные.
В дальнейшем один из исследователей безопасности, получивший доступ к поражённой системе, проанализировал руткит и опубликовал (Архивная копия от 26 января 2013 на Wayback Machine) подробный отчёт о методах его работы. Наиболее важным выводом является то, что выявленный руткит является новой разработкой, не основанной ни на одном из ранее доступных руткитов или инструментов для их создания. При этом реализация и качество исполнения руткита свидетельствует о том, что он создавался не для проведения целевых атак, а как начальная попытка создания ещё одного средства для распространения вредоносного ПО.
После загрузки руткит осуществляет перехват управления некоторых функций ядра Linux (vfs_readdir, vfs_read, filldir64 и filldir), скрывая необходимые для работы руткита файлы на диске. Для скрытия загрузки модуля ядра осуществляется модификация списка активных модулей в соответствующей структуре данных ядра Linux. Перехват управления производится путем перезаписи нескольких байт непосредственно в начале кода перехватываемой функции (добавляется команда jmp rel32 и копируется рассчитанное в стеке смещение). Запуск руткита производится через загрузку модуля ядра Linux. Но так как команда "insmod /lib/modules/2.6.32-5-amd64/kernel/sound/module_init.ko" добавляется в конец файла /etc/rc.local, а в Debian файл /etc/rc.local завершается вызовом exit 0, команда загрузки модуля размещается после вызова exit, т.е. после перезагрузки руткит не активируется.
Подстановка вредоносного кода в трафик осуществляется путем перехвата функции tcp_sendmsg, используемой для построения исходящих TCP-пакетов. Обработчик руткита анализирует передаваемый контент и добавляет после строки с тегом body блок iframe. Для управления руткитом предусмотрен специальный интерфейс, получающий команды от удалённого управляющего сервера. В частности, после обращения руткита к управляющему серверу, тот возвращает блок данных, который следует внедрить в трафик, а также параметры подстановки. Например, поддерживается установка правил для какого именно хоста осуществить подстановку, определяется тип внедрения (JavaScript/iframe).
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.