Один из подписчиков списка рассылки SecLists прислал описание нового руткита, который работает под 64-битной ОС Linux и использует Nginx. Вредоносную программу пользователь обнаружил на своём сервере Debian Squeeze, веб-сервер Nginx 1.2.3.
Обнаружить руткит удалось после того, как некоторые посетители сайта пожаловались, что им отгружается странный iframe с редиректом на вредоносную страницу. Каким-то образом злоумышленнику удалось внедрить код на страницы сайта.
Расследование показало, что Nginx возвращает клиенту ответ с вредоносным фреймом даже в случае неверного запроса.
server { listen 80 default backlog=2048; listen 443 default backlog=2048 ssl; server_name _; access_log off; (...) location / { return 400; } }
В данном случае Nginx не обращается в кэш после получения плохого запроса, а return 400
означает, что он возвращает предустановленный ответ из памяти.
Вот как выглядит ответ.
HTTP/1.1 400 Bad Request Server: nginx/1.2.3 Date: Wed, 07 Nov 2012 00:01:24 GMT Content-Type: text/html Content-Length: 353 Connection: close <html> <head><title>400 Bad Request</title></head> <body bgcolor="white"><style><iframe src="http://malware-site/index.php "></iframe></div> <center><h1>400 Bad Request</h1></center> <hr><center>nginx/1.2.3</center>
Покопавшись в системе, админы обнаружили на сервере руткит и несколько скрытых процессов с именами вроде write_startup_c
и get_http_inj_fr
.
Собственно, вот сам руткит.
lib+modules+2.6.32-5-amd64+kernel+sound+module_init.lo
Специалисты «Лаборатории Касперского» проанализировали код и выяснили, что руткит специально создан для версии ядра 2.6.32-5-amd64, бинарный файл размером более 500 Кб содержит неудалённую служебную информацию от разработчиков, некоторые запланированные функции руткита не реализованы или работают с ошибками. Эксперты ЛК объясняют, что внедрение фреймов происходит путём подмены системной функции tcp_sendmsg
, то есть внедрение в HTTP-трафик осуществляется путём непосредственной модификации исходящих TCP-пакетов на сервере Linux.
Для получения боевой нагрузки руткит связывается с удалённым сервером с авторизацией по паролю.
Вредоносной программе присвоено название Rootkit.Linux.Snakso.a, более подробное описание см. в блоге CrowdStrike.