Neues 64-bit Linux Rootkit schleust iFrame ein

Vor einigen Tagen wurde eine interessante Linux-Malware auf der Full Disclosure mailing-list beschrieben. Es handelt sich um ein auffallendes Sample, nicht nur deshalb, weil es 64-bit Linux-Plattformen angreift und fortschrittliche Technologien einsetzt, um sich im System zu verbergen, sondern hauptsächlich aufgrund der ungewöhnlichen Funktionalität, Websites zu infizieren, die auf einem attackierten http-Server gehostet werden – und so als Teil eines Drive-by-Downloads zu fungieren.

207319948

Das Schadmodul wurde eigens für die Kernel-Version 2.6.32-5-amd64 entwickelt – den neusten Kernel also, der in 64-bit Debian Squeezy verwendet wird. Die Binärdatei ist über 500k groß, allerdings ist ihre Größe der Tatsache geschuldet, dass sie nicht isoliert wurde (d.h. sie wurde mit den Debugging-Informationen zusammengesetzt). Vermutlich befindet das Schadprogramm sich noch in der Entwicklungsphase, da einige Funktionen noch nicht vollwertig arbeiten oder bisher noch nicht vollständig implementiert wurden.

Das Schadprogramm seinen Startup, indem es dem Skript /etc/rc.local einen Eintrag hinzufügt:



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

Nachdem es sich in den Speicher geladen hat, setzt das Rootkit zwei Methoden ein, um Kernelsymbole abzurufen und sie in die Datei /.kallsyms_tmp zu schreiben:


/bin/bash -c cat /proc/kallsyms > /.kallsyms_tmp

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


Daraufhin zieht es die Adressen verschiedener Kernelfunktionen und Variablen heraus und legt sie für den späteren Gebrauch im Speicher ab.

207319951

Die temporäre Datei wird umgehend gelöscht:



rm /.kallsyms_tmp -f

Um die Dateien und den Startup-Eintrag zu verbergen, hookt das Rootkit die folgenden Kernelfunktionen – entweder mittels Inline-Hooking oder durch Ersetzen ihrer Adressen im Speicher durch die Pointer auf seine eigenen schädlichen Funktionen:



vfs_readdir
vfs_read
filldir64
filldir

Der Schädling verbirgt nicht nur sein eigenes Modul, sondern versucht zudem die folgenden Dateien und Threads zu verbergen:



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

Der Mechanismus der iFrame-Einschleusung ist recht interessant: Die Malware ersetzt die Systemfunktion tcp_sendmsg, die verantwortlich ist für den Bau der TCP-Pakete, durch seine eigene Funktion, das heißt, die schädlichen iFrames werden durch direkte Manipulation der ausgehenden TCP-Pakete eingeschleust.

207319952

Um die jeweiligen Einschleusungs-Payloads abzurufen, verbindet sich der Schädling mit dem C&C-Server, wobei der ein verschlüsseltes Passwort zur Authentifikation verwendet.

207319954

Uns ist es nicht gelungen, uns auf dem von der Malware verwendeten Port mit dem C&C zu verbinden, doch der schädliche Server ist immer noch aktiv und hostet andere *NIX-basierte Tools, wie z.B. Log-Cleaner (ein großes Dankeschön an dieser Stelle an meinen Kollegen David Jacoby für diese Information).

Bisher wurde bei den meisten Drive-by-Download-Situationen ein automatischer Einschleusungsmechanismus als simples PHP-Skript integriert. In dem oben beschriebenen Fall haben wir es mit etwas Raffinierterem zu tun – eine binäre Komponente im Kernel-Modus, die fortschrittliche Hooking-Techniken einsetzt, um sicherzustellen, dass der Einschleusungsprozess transparenter und auf niedrigerer Ebene abläuft als je zuvor. Obgleich sich dieses Rootkit noch in der Entwicklungsphase befindet, offenbart es einen neuen Drive-by-Download-Ansatz, und wir werden es künftig sicherlich mit weiteren Schadprogrammen dieser Art zu tun bekommen.

Eine hervorragende, detaillierte Analyse dieses Rootkits wurde kürzlich auf dem CrowdStrike blog gepostet.

Kaspersky Lab detektiert dieses Rootkit bereits als Rootkit.Linux.Snakso.a.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.