Tux erkältet sich
Linuxviren im Vormarsch
Wenn man heutzutage einen Linux Anwender fragt, ob er sich denn vor Viren schützt oder Angst vor ihnen hat, wird er meistens lächeln und sagen, dass das nur ein Problem von Windows Benutzern ist. Das dem nicht so ist, ist leider nur wenigen klar.
Viele Linux Anwender wissen zum Beispiel nicht, das die ersten Viren überhaupt auf einem Unix System liefen und 1983 von Fred Cohen entwickelt wurden.
Es begann mit einfachen Shell-Skripten, die zu reinen Demonstrationszwecken dienten. Ich glaube folgendes Beispiel kann man mit gutem Gewissen geben, da es kein sehr mächtiger Virus ist, und demonstriert wie einfach man in Shell Skript einen Virus schreiben kann:
#!/bin/sh
#Dieser Virus ist nur für Lehrzwecke gedacht !
#Das Verbreiten von Viren ist strafbar!
for file in *.sh
do
head -n 7 $0 > $file
done
Wenn man sich einmal die Anzahl der Viren für Linux ansieht, wird man sehr schnell feststellen, das diese in den letzten Jahren stark zugenommen hat. 1995 wurde der erste Linux Virus entdeckt, 1999 zählte man dagegen schon 13 Linux Viren und heute sind es schon über 50, Tendenz steigend.
Linux hat als Desktop System in den letzten Jahren auf vielen Desktop Systemen Einzug gehalten. Und wird nun immer häufiger nicht nur von erfahrenen Computeranwendern verwendet, sondern auch von unerfahrenen Anwendern, da die Installation immer Benutzerfreundlicher wurde. Dies hat zum einen die Folge, das auch die Benutzer, die vor dem Öffnen einer E-Mail oder dem Starten eines Programmes nicht nachdenken unter Linux zugenommen hat, und zum anderen, aufgrund der erhöhten Angriffsfläche auch immer mehr Virenautoren anzieht.
Viren zielen also, im Gegensatz zu Würmern nicht auf Serversysteme ab, sondern auf die Anwender an Desktopsystemen. Ein Virus, der erst vor kurzem durch die Presse ging, der Winux Virus, zielt, da er sowohl Windows PE Dateien als auch Linux ELF Dateien infiziert, genau auf die Anwender ab, die zu Linux umsteigen wollen und es erst einmal neben dem Windows System installiert haben.
Unter Linux kann man generell 4 Virentypen unterscheiden, Shell Skript, Perl, Makro und ELF Viren. Diese sollen nun etwas näher betrachtet werden.
Shell Skript Viren
Wie im obigen Beispiel schon gesehen, ist ein Shell Skript Virus schon in wenigen Zeilen Programmcode realisierbar. Shell Skripte sind vergleichbar mit MS-DOS Batch Dateien oder dem Windows Scripting Host, allerdings, um einiges mächtiger, und dadurch auch anfälliger für Viren. Unter Linux werden Shell Skripte für eine Vielzahl von Aufgaben verwendet, wie zum Beispiel zum Laden von Dämons in den verschiedenen Init Leveln oder zum Konfigurieren von Firewalls. Batch Viren oder WSH Scripte dagegen werden unter Windows nur sehr selten benutzt und trotzdem haben Virenautoren für diese Dateien erstaunliche Tricks entwickelt, die teilweise schon portiert wurden. So existiert zum Beispiel schon ein Virus Creation Lab, ein Programm, mit dem jeder Viren erstellen kann, für Shell Skript Viren. Auch sind schon polymorphe Shell Skript Viren, also Viren bei denen jede Generation anders aussieht, geschrieben. Jeder der schon etwas mit der Shell (zum Beispiel der ''bash'') gearbeitet hat, wird wissen, wie einfach es ist, das ein Shell Script Virus sich per E-Mail oder ähnliches verbreiten könnte.
Fred Cohen, ist der Ansicht das es für jedes Betriebssystem möglich ist einen Shell Virus innerhalb von 12 Minuten zu schreiben. Dies alleine sagt aus das sich wohl viele Virenautoren, intensiv mit Shell Skript Viren befassen werden, bevor sie anfangen "höheren" Arten zu schreiben. Diese Viren stellen in jedem Fall eine Gefahr da. Sie sind Prepender oder Appender, das heißt, sie hängen sich entweder vor die Datei, die sie infizieren oder an deren Ende. Dementsprechend sind sie, durch einen kurzen Blick auf eine Shell Skript Datei zu erkennen.
Perl Viren
Perl wird mit vielen Distributionen standardmässig installiert, da Perl eine sehr mächtige Sprache zur Stringbearbeitung ist. Es wird oftmals für kleine Programme eingesetzt, die bestimmte Routine Aufgaben erledigen, so zum Beispiel auch für CGI-Skripte. Dadurch ist Perl sowohl auf Servern, als auch auf Desktop Systemen zuhause. Dies bedeutet, für einen Virenautor, das beide Plattformen ein interessantes Ziel für Virus / Wurm Hybriden sind.
Durch die Standard CPAN Module hat ein Perl Virus einiges an Funktionen zur Verfügung, die ihm viele Möglichkeiten eröffnen, die ein Shell Skript Virus nicht hat. So kann ein Perl Virus Socket Verbindungen nutzen um über remote Exploits weitere Systeme zu befallen. Perl Viren existieren bereits und auch in der Form, das sie sich nicht nur auf Linux oder Windows beschränken, sondern alle Systeme mit Perl Interpreter befallen können.
Momentan existieren nur Perl Viren, die sich am Anfang oder Ende einer infizierten Datei befinden. Es ist jedoch auch denkbar, das sich diese Viren in der Mitte einer Datei verstecken, was sie schwerer zu finden macht als zum Beispiel Shell Skript Viren. Perl ist nun mal eine Sprache zur Bearbeitung von Strings, und Perl Quellcodes sind nun mal Strings. Eine weitere Eigenart dieser Skriptsprache die das Erkennen von Perl Viren um ein weiteres erschwert sind die vielen Möglichkeiten in Perl ein und dasselbe zu tun, welches folgender Slogan genau ausdrückt: "There is more than one way to do it". Wer schon einmal Perl Obfuscated Code Contests gesehen hat, wird wissen, das es möglich ist Perl Code zu schreiben, der nahezu unlesbar ist. Zwar ist es möglich Interpreter zu schreiben, die dann diesen Code ausführen, aber ein Heuristisches Verfahren zu erstellen, das in diesem Code einen Virus erkennt und entfernt dürfte eine schwere Aufgabe werden. Daher ist es ratsam umbedingt Perl Dateien nur aus vertrauenswürdigen Quellen anzunehmen.
Makro Viren
Star Office, ist das Office Programm für Linux, das momentan keine wirkliche Konkurrenz hat. Mittlerweile gibt es für Star Office eine Makro Sprache, die mit der von Word vergleichbar ist, und auch eine Zielfläche für Viren bietet. Erste Makro Viren für Star Office wurden bereits in AntiViren Laboratorien erstellt um auf eine Bedrohung schnell reagieren zu können. Makro Viren, sind momentan zu über 50% in der Wildlist vertreten. Die Wildlist gibt an, welche Viren momentan am häufigsten in freier Wildbahn gefunden wurden.
Wenn Linux, und davon ist auszugehen, weiter in Büros und Privat - PCs Einzug hält, dürften Makro Viren für Star Office eine ähnlich große Bedrohung werden, wie momentan die Word Makro Viren. Dokumente, Tabellen und Präsentationen gehören zu den am meisten getauschten Dateien, was Makro Viren, die sich in eben diesen Dateien einnisten einen großen Vorteil gegenüber Shell oder Perl Viren verschafft.
Star Office beherrscht 3 Makro Sprachen, die alle möglicherweise für Viren genutzt werden könnten : StarBasic, StarScript und JavaScript. Wenn man Makros in Star Office Dateien nicht nutzt, sollte man die Makro Funktion unbedingt ausstellen, aber auf jeden Fall sollte man einstellen, das bei besonders virenfreundlichen Makro Events eine Warnung ausgegeben wird, falls ein Makro aktiv wird. Diese Events können das Öffnen, Schließen oder Speichern eines Dokumentes sein. Wie es aussieht, sind mehrere Teile des Star Office Paketes durch Viren gefährdet und zwar StarWriter, StarCalc und StarImpress. Also ist bei all diesen Programmen Vorsicht geboten.
ELF Viren
ELF, das Executable Linking Format, hat auf Linux Plattformen, das ältere a.out Format abgelöst und wird nun für fast alle Binaries, die bei Distributionen mitgeliefert werden, verwendet. Dementsprechend ist es kaum verwunderlich, das nun auch immer mehr Viren auf dieses Format abzielen. Diese Viren sind dann meistens in C oder Assembler geschrieben und dadurch das sie näher am System arbeiten als eine Skript Sprache noch wirksamer. Auch wenn die Anzahl der ELF Infektoren im Vergleich zu Windows Viren erheblich kleiner ist, so existiert bereits eine Vielzahl an verschiedenen Infektionsmethoden. Es existieren sowohl Viren, die Verschlüsselung als auch Polymorphie einsetzen. Auch ein Virus, der ''local root Exploits'' benutzt um Root Privilegien zu bekommen wurde schon in die Tat umgesetzt.
Der einzige Grund wieso Linux Viren noch keine Bedrohung geworden sind, ist die Tatsache, das Linux noch vergleichsweise wenig verbreitet ist. Um dies zu verdeutlichen werde ich nun einige Linux Viren etwas näher darstellen.
+ Kalif
Dieser Linux Virus aus Deutschland und arbeitet recht trickreich. Er extrahiert sich in eine Objekt Datei und ändert gcc dahingehend, das diese in jeder neuen Datei gelinkt wird. Eine kompilierte Datei schreibt nun beim Aufruf von close() die Objekt Datei und eine weitere wieder auf die Festplatte und startet die zweite Datei. Damit ist der Kreislauf wieder geschlossen und alle weiteren Programme, die auf einem infizierten System kompiliert werden sind ebenfalls infiziert. Dies zeigt, das man sich nicht alleine auf den Quellcode verlassen kann.
+ LoTek
Dieser ELF Virus versteckt sich in unbenutzten Bereichen der .note Sektion von ELF Dateien ohne ihre Größe zu verändern. Mit einer Chance von 1 zu 32 setzt der Virus den Hostnamen des infizierten Rechners auf den Namen des Autors "Wintermute". Dieser Virus ist ein reiner Demonstrationsvirus, und infiziert nur das momentane Verzeichnis.
+ k0dy Project
Dieser Virus ist ein Kernel Modul, das andere Loadable Kernel Module infiziert, indem es in 23 verschiedenen Verzeichnissen ( wie zum Beispiel "/lib/modules/net" ) nach ihnen sucht. Wenn er ein Modul findet, öffnet er die Datei und fügt den eigenen Code ein. Wenn nun ein infiziertes Modul geladen wird, wird zuerst der Virus aktiv und danach das echte Modul. Allerdings existiert er in jedem Durchlauf nur maximal 7 Module. Dieser Virus stammt von dem gleichen Autor wie Kalif, von Stealthf0rk/SVAT.
Was kommt noch auf uns zu ?
Linux Viren werden mit hoher Wahrscheinlichkeit in naher Zukunft ausgefeilter werden und immer öfter ''local root Exploits'' ausnutzen, um Root-Privilegien zu erlangen, da sie danach kompletten Zugriff auf das System haben. Dies ist besonders gefährlich, wenn Programme wie ls infiziert werden, oder ein Virus selbständig Kernel Module lädt. Der Virus ist dann in der Lage auf verschiedenen Wegen speicherresident zu werden, um dann jede Datei auf die zugegriffen wird zu infizieren. Wenn ein Benutzer also Dateien auflistet, oder mit updatedb die locate Datenbank aktualisiert wird, sind alle Dateien auf dem System infiziert.
Auch wird es mit hoher Wahrscheinlichkeit eine Verschmelzung mit Viren geben, so das die Malware nicht mehr nur in der Lage ist ein lokales System zu infizieren, sondern sich auch über Netzwerke verbreiten kann. Netzwerke werden auch auf andere Art und Weise eine Rolle in Linux Viren spielen. Win32.Hybris, ein Wurm der auf Windows Systemen erhebliche Verbreitung erlangt hat, benutzt eine Technik, mit der der Autor den Virus über das Internet updaten kann um ihm neue Funktionen zu vermitteln. Ein Linux Virus, könnte ebenfalls neue Funktionen laden, oder auch neue Exploits laden, um auch nach längerer Zeit noch in der Lage zu sein Root-Status auf ungepachten Systemen zu erlangen. Auch denkbar ist eine Kombination aus normalem ELF Infector und LKM Infector, der sich vor Interrupts legt, und ähnlich wie zu MS-DOs Zeiten, Dateien beim Öffnen infiziert. Bei so einem Virus wäre es auch möglich Stealth Techniken zu integrieren, die einen Virus vor dem Öffnen desinfizieren und ihn beim Schließen wieder infizieren, so das ein Virenscanner immer nur die sauberen, uninfizierten Dateien zu sehen bekommt. Wenn so ein Virus gut implementiert werden würde, könnte er auch Programme wie Tripwire täuschen. Auch die Dateigrößen und ähnliches könnte er vor dem Benutzer ändern, so das dieser die Veränderung der Größe nicht bemerkt.
Gegenmaßnahmen
Was kann man also tun um sich gegen Viren zu schützen ? Die meisten Leser werden all diese Punkte schon einmal gehört haben, sie aber aus Faulheit, oder aus Unterschätzung der Gefahr für ein Linux System nicht anwenden, deshalb möchte ich sie hier noch mal aufführen. Wenn möglich sollte man seine Programme nur aus vertrauenswürdigen Quellen beziehen und eine gesunde Paranoia besitzen. Nach Möglichkeit sollten Programme nur im Quellcode bezogen werden, da davon auszugehen ist, das nur wenige Quellcode Viren existieren werden.
Wer sich seine Distribution über das Internet herunterlädt, sollte darauf achten, das er einen Originalserver verwendet, oder Server die als offizieller Mirror dienen. Auf Mehrbenutzersystemen sollte für strenge Dateirechte gesorgt werden, was leider noch immer nicht selbstverständlich ist. Besonders kritische Bereiche, wie /sbin, /bin und /etc sollten mit einem Programm wie Tripwire ( www.tripwire.net ) ein bis zweimal die Woche auf ihre Integrität überprüft werden, um sicherzugehen, das keine Programme infiziert wurden. Zwar erkennen die wenigsten Virenscanner schon zuverlässig Linux Viren, dennoch sollte man auf jeden Fall einen Virenscanner installieren, die größten wurden schon auf Linux portiert, sind zwar nicht Open-Source aber dennoch Freeware. Ein Cron-Skript sollte dafür sorgen, das immer die neuesten Datenbanken installiert sind. Wer einen Mailserver verwendet, sollte mit einem Programm wie amavis ( www.amavis.org ) alle ein- und ausgehende Mail automatisch auf Viren überprüfen lassen. Bei Verwendung von PGP oder anderer Verschlüsselungssoftware, sollte man die Mail natürlich nach dem Entpacken noch einmal Scannen, da die Antivirenscanner natürlich nicht im verschlüsselten Teil scannen können.
Eric Sesterhenn <snakebyte(-@-)kryptocrew.de>
Martin J. Münch <mjm(-@-)codito.de>
Links
1.Silvio Cesare - Texte und Beispiele zu Linuxviren
http://www.big.net.au/~silvio/
2.''A Mail Virus Scanner''
http://www.amavis.org
3.Virenbezogenes Lexikon
http://www.viruslist.com/eng/default.asp
4.Kaminski's Vortrag über Linuxviren
http://www.virusbtn.com/vb2000/Programme/papers/kaminski.pdf
5.Virenbezogenes Lexikon, linuxbezogen
http://www.viruslist.com/eng/viruslist.asp?id=3033&key=000010000500002&f_page=0