conIT Gesellschaft für Consulting, Software-Entwicklung und IT-Dienstleistungen mbH conIT GmbH

Viren, Würmer und Verwandte...

veröffentlicht:

Virus

Täglich muß man von so bösen Viren, Würmern, Spybots lesen…

Frei nach Wilhem Busch geistern täglich neue Horrormeldungen durch Nachrichtenkanäle wie den Heise-Ticker. Sie berichten von Viren, Würmern, “Trojanern” (genauer: “Trojanischen Pferden”) und anderen Computerschädlingen, die entweder auf Ihrem egenen Rechner Dateien und Einstellungen verändern bzw. löschen können, oder Ihren Rechner als Sprungbrett zu weiterer Verbreitung nutzen. In solchen Meldungen taucht fast ausschließlich der Name eines Betriebssystems des größten Software-Herstellers der Welt auf, welches heutzutage auf den meisten Rechnern mitgeliefert wird: Windows.

In den begleitenden Leserdiskussionen geht es dann immer hoch her. “Mit Linux wäre das nicht passiert” ist ein häufig geschriebener Satz. Dieser wird dann mit schöner Regelmäßigkeit damit gekontert, daß Linux nur wegen des Randgruppendaseins und der geringen Verbreitung nicht so häufig in den Virenstatistiken auftauchen würde.

Dieser Artikel erläutert, weshalb Computerschädlinge es unter Linux und Artgenossen grundsätzlich viel schwerer mit Verbreitung und Schadroutinen haben, und weshalb sog. “Antivirenprogramme” prinzipiell nicht helfen können.

Was sind Viren, Würmer und Verwandte?

Zunächst einmal sind alle Viren und Computerschädlinge nichts anderes als das, was Sie ohnehin auf Ihrem Rechner betreiben: es sind ausführbare Programme. Auch die meisten Office-Programmpakete (mit Textverarbeitung, Tabellenkalkulation und weiteren Komponenten) besitzen inzwischen die Fähigkeit, Programmcode in speziellen Programmiersprachen ausführen zu können, ebenso wie Internet-Betrachter (JavaScript, Java).

Der Unterschied zwischen den “normalen Programmen” und der Schadsoftware liegt darin, daß letztere

Die Bezeichnung Viren kommt daher, daß sich die ersten solcher Schadprogramme an andere Anwendungsdateien auf dem Rechner angeheftet haben, mit diesen zusammen gestartet wurden und sich dabei “virusartig” vermehrten, indem sie dabei jedesmal weitere Dateien “infizierten”. Die Eigenschaft von Würmern dagegen ist, sich auch über Rechnergrenzen hinweg durch ganze Netzwerke zu bewegen, eben “wurmartig” fortzupflanzen.

Halten wir also fest: damit sie aktiv werden können, müssen Schadprogramme jeder Art

Das Verändern von Dateien schließt auch das Anlegen von neuen Dateien oder das Löschen ein. Alle diese Operationen erfordern eine Schreibberechtigung auf das entsprechende Speichermedium.

Nicht alle Schadprogramme zeigen eine sichtbare Wirkung, die Sie als Benutzer am Bildschirm erkennen können. Oft wirken diese Plagegeister im Verborgenen, und können in dieser Zeit weit größeren Schaden anrichten als bei einer sofort erkennbaren Auswirkung.

Die Ansteckung

Falls Sie das Ziel eines Viren- oder Wurmangriffs werden sollen, muß der Schadcode zuerst einmal auf Ihren Rechner gelangen. Auch Virus- oder Wurmprogramme müssen dazu in einer Datei gespeichert sein, wobei diese nicht nur auf einem Datenträger vorliegen, sondern auch per e-Mail oder Dateitransfer auf Ihren Rechner gelangen kann. In den frühen Tagen der privaten Computerei kamen diese schädlichen Dateien meist per Diskette auf Ihren Rechner. Heute sind auch USB-Speicherstifte und ähnliche Datenträger mögliche Übertragungswege, wie auch drahtlose Verbindungen über Bluetooth oder WLAN.

Damit eine Datei mit (schädlichem) Programmcode auf Ihrem Rechner auch eine Wirkung entfalten kann, muß diese zur Ausführung gelangen, also gestartet werden. Hierzu muß sie in einem Format vorliegen, welches das unterlagerte Betriebssystem aus ausführbar erkennt, und die geladenen Befehlsfolgen müssen sinnvoll und fehlerfrei durchlaufen. Beendet sich das Programm durch einen Fehler vorzeitig (ein “Absturz”), meldet das Betriebssystem in der Regel einen Grund dafür, und der Virus hat seine Aktivität verraten. Falls Sie kein laufendes Programm erwartet haben, sollte dies schon der erste Anhaltspunkt sein, stutzig zu werden.

Exkurs: Ein Programmstart

Zugegen: die folgende Darstellung ist stark vereinfacht, aber sie schildert die prinzipielle Funktionsweise. Beim Starten eines Programmes muß das Betriebssystem zunächst die entsprechende Programmdatei auf einem Datenträger lokalisieren. Der Inhalt dieser Datei wird dann in einen freien Bereich im Hauptspeicher geladen. Damit dies erfolgreich stattfinden kann, müssen die Dateien mit dem Programmcode bestimmte Informationen an genau festgelegten Stellen enthalten. Ist dies nicht der Fall, schlägt schon das Laden des Programmcodes fehl, ebenso, wenn die Datei keine gültigen Programmcode-Sequenzen enthält, die der Computer-Prozessor verstehen kann.

Konnte aber der Programmcode erfolgreich geladen werden, ermittelt das Betriebssystem die Nummer der Speicherstelle, welche die erste, auszuführende Anweisung für den Prozessor enthält. Diese Nummer, auch Speicheradresse oder kurz Adresse genannt, wird im Regelfall vom Rechner selbst verwaltet und bei einem normalen Programmablauf einfach automatisch nach jedem Befehl hochgezählt, weil sich Programmanweisungen in der Regel in der richtigen Reihenfolge hintereinander im Speicher befinden. Da manchmal aber auch von dieser strikten Ausführungsreihenfolge abgewichen werden muß, gibt es auch Befehle, die den Wert der Adresse verändern können. Und der Computer führt als nächstes stets den Befehl aus, auf den die momentane Adresse verweist.

Diesen Mechanismus nutzt auch das Betriebssystem aus, um das Programm zu starten. Nachdem das oben beschriebene Laden erfolgreich durchgeführt wurde, wird die Adresse der ersten Programmanweisung gesetzt. So wird als nächstes der erste Programmbefehl ausgeführt. Irgendwann wird dann bei einem korrekten Programm der Befehl Ende auftauchen. Dieser sorgt dafür, daß die Ablaufkontrolle wieder an das Betriebssystem zurückgegeben wird.

Wie macht das ein Virus?

Auch ein Programm, das Ihnen jemand mit schädlichen Funktionen unterschieben möchte, muß sich an den oben beschriebenen, prinzipiellen Mechanismus halten. Zum einen muß der Schadcode in einer Datei enthalten oder bereits in den Speicher geladen sein und gültigen Code für den benutzten Prozessor enthalten. Andererseits sollen Sie als Computernutzer diesen Programmstart aber nicht bemerken. Trotzdem muß dieser Code “irgendwie” zur Ausführung gelangen.

Das momentan marktbeherrschende Betriebssystem macht sich die Erkennung von ausführbaren Programmen ziemlich leicht: es gibt eine Reihe von maximal dreibuchstabigen Anhängseln am Dateinamen, die sie als solche kennzeichnen. Dieser Inhalt muß tatsächlich kein gültiger Programmcode sein – wichtig ist nur, daß das System einen Programmstart versucht.

Zusammen mit der als “benutzerfreundlich” eingestuften Fähigkeit dieses Systems, solche bekannten und für die Funktionalität entscheidenden Endungen des Namens für die Anzeige für Sie als Benutzer ausblenden zu können, und dem Ansatz des “dokumentenzentrierten Arbeitens” entsteht ein gefährlicher Mechanismus, mit dem Anwender durch normale Bedienung unerwünschten Programmcode starten können - das unbedarfte Anklicken eines Dateinamens oder -symbols genügt bereits.

Dokumentenzentriertes Arbeiten bedeutet dabei, daß man auch Dateien beliebigen Typs zur Ausführung aktivieren kann. Einzelne Dateitypen (die wiederum über die ggf. ausgeblendeten Dateiendungen erkannt werden) werden bei der Aktivierung nicht selbst gestartet, sondern bringen ihre zugeordnete Anwendung zur Ausführung. Werden nun die Dateiendungen ausgeblendet, können Sie niemals sicher sein, was nun als nächstes passiert. Und anstelle der Bilddatei beispielbild.jpg, die eigentlich den Bildbetrachter anstarten sollte, läuft in Nullkommanix ein schädlicher Programmcode, der in der tatsächlich auf der Platte befindlichen Datei beispielbild.jpg.exe enthalten war. Merke: denn Endungen wie .exe, .pif, .com oder .bat kennzeichnen Dateien als ausführbar.

Wo ist nun die Gefahr?

Im Auslieferungszustand ist Windows so eingestellt, daß jeder angemeldete Benutzer automatisch Administrationsrechte erhält. Mit diesen Rechten hat der Benutzer nahezu uneingeschränkten Zugriff auf alle Dateien des Rechners, auch auf kritische Systembereiche, die für das Funktionieren des Rechners notwendig sind. Normalerweise ist es für den Rechnerbetrieb nur erforderlich, solche Dateien zu lesen, nicht aber zu schreiben. Aufgrund schlampiger Programmierweise erfordern viele Programmpakete allerdings sogar diese Administrationsrechte, sonst lassen sie sich nicht erfolgreich betreiben.

Dies alles führt dazu, daß die Viren-Programme ein leichtes Spiel haben, den Rechner, wichtige Einstellungen und die installierten Programme zu verändern oder auf andere Weise ihr Schadwerk zu verrichten.

Wie ist das bei Linux oder Unix?

Grundsätzlich wird hier als erste Maßnahme strikter Wert auf die Trennung von Systembedienung und -konfiguration sowie der “normalen” Bedienung durch die Anwender gelegt. Konfigurationsarbeiten am System können nur durch den Systemadministrator mit dem Namen root ausgeführt werden. Es hindert selbstverständlich den unbedarften Benutzer nichts daran, unter dieser Benutzerkennung auch die tägliche Arbeit zu verrichten, aber nach der ersten, versehentlichen Löschung von wichtigen (System-) Dateien (mit anschließender Neu-Installation ;-) kehren die meisten Benutzer wieder zu der Arbeit unter ihrem Benutzerkonto zurück - welches übrigens bei den gängigen Linux-Distributionen bereits im Zuge der ersten Installation angelegt wird.

Arbeitet ein Benutzer also unter seinem Benutzerkonto, so hat er schreibenden Zugriff nur auf seine eigenen Dateien. Dies sind meistens Texte, Bilder und andere Anwendungsdaten, die nicht ausführbar sind. Wichtige Systemdateien, die für den Betrieb des Rechners erforderlich sind, kann ein normaler Benutzer in der Regel nicht verändern - und damit auch kein Schadprogramm, welches von dem Benutzer absichtlich oder unabsichtlich gestartet wird. Nur die eigenen Dateien sind gefährdet, nicht aber der Betrieb und die Stabilität des Gesamtsystems.

Schadprogramme unter Linux bzw. Unix müssen daher erst einmal einen Weg finden, gestartet zu werden, und anschließend unter Ausnutzung von Sicherheitslücken versuchen, Rechte zur Systemverwaltung zu erlangen. Dies ist nicht unmögich, aber doch relativ schwierig, und setzt in der Regel das Vorhandensein bestimmter Software mit bekannten Fehlern oder Sicherheitslücken voraus. Aus diesem Grund sollte die Software auf einem Rechner stets aktuell gehalten werden - wie auch unter Windows.

Der Start

Im Gegensatz zu Windows erkennen unixoide Betriebssysteme ausführbare Programme nicht an bestimmten Datei-Endungen oder besonderen Namensbestandteilen. Damit hat es ein Angreifer grundsätzlich schon schwieriger, eine ausführbare Programmdatei unterzuschieben. Damit eine Datei als “ausführbar” erkannt wird, muß für den Dateibesitzer, die Gruppe oder für “alle” ein entsprechendes Attribut (eine Dateieigenschaft) gesetzt sein, welches die Ausführung erlaubt; außerdem muß der Bediener entsprechend entweder der Dateibesitzer sein oder Mitglied in einer der berechtigten Gruppen.

Reicht es unter Windows zum Starten einer Datei bereits aus, eine beispielsweise per Mail empfangene Datei mit passender Endung anzuklicken (ggf. doppelt), so müssen unter Unix/Linux zunächst die passenden Berechtigungen gesetzt werden. Dies muß der Benutzer ausdrücklich machen, und dies ist eine gute Gelegenheit, die Datei zu überprüfen, ob sie die gewünschten Inhalte enthält.

Diese Vorgänge mögen umständlicher erscheinen, aber Komfort und Automatismen vertragen sich nicht mit Sicherheitsanforderungen. Der Hauptgrund für die Anfälligkeit von Windows liegt in den eingebauten Komfortfunktionen, und genau diese Automatismen werden von der Schadsoftware ausgenutzt. Unter Linux und Unix stellt die konsequente Trennung von System- und Benutzerbereichen jedoch bereits eine hohe Hürde für Schadsoftware dar.

Vielfalt schützt

Ein weiterer Baustein in der höheren Sicherheit von Unix/Linux ist die Vielfalt der Applikationen, Versionen und Konfigurationen. Während unter Windows die Schadprogramme so erfolgreich agieren können, weil sie bei den meisten Rechnern eine bekannte Kombination von Programmversionen, Datenformaten oder Dateipfaden erwarten können, hätten sie unter Linux einen viel größeren Aufwand zu treiben, die aktuelle Konfiguration erst herauszufinden. So funktionieren die meisten Mail-Würmer unter Windows deswegen so hervorragend, weil sie ein bestimmtes Mailprogramm mit bekannten Sicherheitslücken vorfinden und daraufhin auch direkten Zugriff auf das Adressbuch des Benutzers haben.

Unter Linux müßte ein solcher Wurm zunächst einmal ermitteln, welches Mailprogramm der Benutzer verwendet, anschließend die hierfür spezialisierten Schadroutinen zum Einsatz bringen (sofern solche existieren), und müßte dann weiterhin Ort und Format des Mailadressbuches ermitteln, um sich weiter zu verschicken. Damit sinken die Chancen erheblich, eine erfolgreiche Verbreitung durchzuführen.

“Aber ich benutze doch Antiviren-Programme!”

Anti-Viren-Programme bekämpfen die Symptome, sind aber kein wirklicher Schutz. Es würde den Rahmen dieses Artikels sprengen, auf die genaue Funktionsweise und die verschiedenen Varianten von Anti-Virus-Programmen einzugehen (auf Wunsch holen wir dies in einem weiteren Artikel nach), aber von der Tendenz her helfen solche Programme hauptsächlich gegen bekannte Viren und Würmer.

Viel wichtiger ist aber ein Schutz gegen neue oder bisher unbekannte Schadprogramme. Diese setzen vielleicht andere Verfahren zu Tarnung oder Verbreitung ein, die von der Anti-Virus-Software nicht erkannt werden. Und schon ist die ganze Schutzwirkung dieser Software dahin. Abgesehen von dem nicht unerheblichen Aufwand, Anti-Viren-Software aktuell zu halten, um mit der Evolution der Viren Schritt zu halten. Auch wenn dieser Vorgang automatisiert oder im Hintergrund abläuft, muß man sich mal vor Augen halten, daß dabei ein Rechner einen nicht unerheblichen Teil der Leistungsfähigkeit und Ressourcen damit verbraucht, sich gegen Schadsoftware zu schützen. Bei jedem Zugriff auf eine gewünschte Datei muß diese aufwendig untersucht werden, ob sie eventuell kompromittiert ist.

Der bessere Weg ist daher wie immer die Vorbeugung - die Vermeidung von Schädlingsbefall. Da es sich bei Viren und Würmern “nur” um Computerprogramme handelt, kann man ihnen die Grundlage entziehen, indem man sie nicht zur Ausführung gelangen läßt. Das erste Mittel dazu ist Selbstdisziplin des Benutzers - man muß nicht alles unbedarft anklicken, was nicht bei “drei” auf den Bäumen ist. Unverlangt zugesandte Dateien untersucht man zunächst, ob sie wirklich die gewünschten oder angekündigten Inhalte haben. Die Ausführmöglichkeiten von Programmroutinen sollten auf das unablässige Minimum reduziert werden - wer keine Makros in der Textverarbeitung benötigt, sollte deren Ausführung in der Programmkonfiguration unterbinden; ebenso die Ausführung von Scripting und aktiven Elementen (JavaScript, Java und insbesondere ActiveX) in Webbrowsern.

Ansonsten müssen Sie für sich selbst abwägen, wo bei Ihrem Nutzungsverhalten die Grenze zwischen Komfort und Sicherheit zu ziehen ist. Hoher Benutzungskomfort ist autmoatisch mit Sicherheitsrisiken verbunden, da die meisten Aktivitäten ohne Eingriff und Kontrolle stattfinden. Kontrolle ist aber mit Aufwand verbunden.