Report: Viren unter Linux

Binary-Viren sind unmöglich? - Falsch!

Wer sich schon einmal die Anatomie eines EXE-Virus unter DOS angesehen hat, ist von seiner Einfachheit erstaunt. Ein Virus erzeugt ein neues Programmsegment mit seinem Sabotage-Code, hängt sich an das Ende der EXE an und führt sich selbst beim Start des Programms aus. Anschließend patcht er fleißig im Speicher umher, um sich im Speicher festzusetzen und beispielsweise den DOS-Funktionen-Interrupt 21h zu infizieren. Über diesen Interrupt 21h sorgt er dann auch für seine weitere Verbreitung.

Unter Linux müssen diese beiden Schritte - Infektion und Verbreitung - ebenfalls gelöst werden. Entgegen dauerhafter Falschinformationen können ELF-Binaries ähnlich wie EXE-Dateien infiziert werden. Das Anhängen von weiteren Programmsegmenten ist kein Problem. Im Gegenteil: Viren können sich sogar in "Füllinformationen" von ELF-Segmenten einnisten, so dass teilweise gar kein separates - und leicht zu identifizierendes - Segment notwendig ist. Lediglich der unter DOS so beliebte, sich selbst im Speicher modifizierende Code, ist unter Linux nicht möglich. Doch diese Probleme lassen sich auch anders lösen.

Die Infektion durch Patchen von Binaries im Dateisystem ist also kein Problem unter Linux. Die Vermehrung hingegen auf den ersten Blick schon eher. Wie soll sich ein Linux-Virus aus einem ELF-Programm in eine zentrale Systemfunktion ähnlich dem DOS-Funktionen-Interrupt einhängen? Das ist zwar schwierig aber auch nicht unmöglich.

Hierzu ist es nötig, die Kernel-Binaries zu patchen. Ein etwas umfangreiches Unterfangen, da kaum ein Kernel dem anderen gleicht. Je nach verwendetem Compiler, Einstellungen zur Optimierung und Kernelversion sieht das Binary des Kernels anders aus. Prinzipiell ist dieses Problem aber lösbar.