Stan zagrożeń w internecie znajduje się obecnie na poziomie standardowym. Nie występują duże epidemie a eksperci z Kaspersky Lab nie zanotowali żadnych poważnych incydentów związanych z bezpieczeństwem. Poziom zagrożenia: 1

Nowy 64-bitowy rootkit dla Linuksa wstrzykuje ramki iFrame

Marta Janus
Kaspersky Lab Expert
Dodany 21 listopada 2012, 12:38 CET
Tagi:

Kilka dni temu na Full Disclosure mailing-list pojawił się interesujący szkodnik. Próbka ta jest godna uwagi, nie tylko dlatego że atakuje 64-bitowe platformy z Linuksem i wykorzystuje zaawansowane techniki w celu ukrywania się, ale przede wszystkim ze względu na nietypową funkcjonalność infekowania stron internetowych hostowanych na zaatakowanym serwerze HTTP – a tym samym działanie w ramach scenariusza drive-by download.

Moduł szkodliwego oprogramowania został specjalnie zaprojektowany dla jądra w wersji 2.6.32-5-amd64, które jest najnowszym jądrem wykorzystywanym w 64-bitowym systemie Debian Squeezy. Plik binarny ma ponad 500k - taki rozmiar wynika z faktu, że plik został skompilowany wraz z symbolami debugowania. Być może nadal znajduje się w fazie rozwojowej, ponieważ wydaje się, że niektóre funkcje nie działają w pełni lub nie zostały jeszcze w pełni zaimplementowane.

Szkodnik zapewnia sobie automatyczne uruchomienia z każdym startem systemu poprzez dodanie wpisu do skryptu /etc/rc.local:

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

Po załadowaniu się do pamięci rootkit wykorzystuje jedną z dwóch metod wyszukiwania symboli jądra i zapisuje je w pliku /.kallsyms_tmp:

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

Następnie odczytuje adresy niektórych funkcji i zmiennych jądra i przechowuje je w pamięci.

Plik tymczasowy jest natychmiast usuwany:

rm /.kallsyms_tmp -f

W celu ukrycia plików i wpisu zapewniającego autouruchamianie rootkit przechwytuje następujące funkcje jądra, albo poprzez inline hooking albo poprzez zastąpienie adresów tych funkcji w pamięci wskaźnikami do własnych, szkodliwych funkcji:

vfs_readdir
vfs_read
filldir64
filldir

Oprócz ukrywania swojego własnego modułu szkodliwe oprogramowanie próbuje ukrywać następujące pliki i wątki:

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

Dość interesujący jest mechanizm wstrzykiwania ramki iFrame: szkodliwe oprogramowanie podmienia funkcję systemową tcp_sendmsg – która odpowiada za tworzenie pakietów TCP – na własną funkcję, więc szkodliwe ramki iFrame są wstrzykiwane do ruchu HTTP poprzez bezpośrednią modyfikację wychodzących pakietów TCP.

W celu uzyskania właściwego kodu, który ma zostać wstrzyknięty do ruchu HTTP szkodliwy program łączy się z serwerem kontroli (C&C) przy użyciu zaszyfrowanego hasła uwierzytelniania.

Nie mogliśmy połączyć się z serwerem C&C na porcie wykorzystywanym przez szkodliwe oprogramowanie, jednak szkodliwy serwer nadal jest aktywny i hostuje inne narzędzia oparte na systemach uniksowych, takie jak narzędzia do czyszczenia logów (wielkie dzięki dla mojego kolegi Davida Jacoby’ego za dostarczenie tych informacji).

Jak dotąd w większości scenariuszy drive-by download automatyczny mechanizm infekujący strony jest implementowany w postaci prostego skryptu PHP. W opisanym wyżej przypadku mamy do czynienia z czymś o wiele bardziej wyrafinowanym – z komponentem binarnym działającym w trybie jądra, który wykorzystuje zaawansowane techniki przechwytywania, sprawiając, że proces wstrzykiwania ramek staje się bardziej niskopoziomowy i niewidoczny niż kiedykolwiek wcześniej. Rootkit ten, mimo że nadal znajduje się na etapie rozwoju, wskazuje na nowe podejście do ataków drive-by download i bez wątpienia w przyszłości pojawi się więcej takiego szkodliwego oprogramowania.

Doskonała, szczegółowa analiza tego rootkita została opublikowana niedawno na blogu CrowdStrike

Kaspersky Lab wykrywa już tego rootkita jako: Rootkit.Linux.Snakso.a.