Wenn Viren durch die eMail schwirren
Virenscan auf den zentralen Mailservern der Uni Wien

von Alexander Talos (Ausgabe 01/1, März 2001)

 

Als im vergangenen Mai die Nachricht vom "I love you"-Wurm (siehe dazu auch Seite 18, 20 und 26) den ZID erreichte und klar wurde, daß dieser für Laien nicht leicht zu erkennen ist, wurden in einer Bl itzaktion die zentralen Mailserver der Uni Wien mit einem Filter versehen, um diese Unbill von den Benutzern fernzuhalten. Eine einmalige Maßnahme gegen eine außergewöhnliche Bedrohung, hieß es damals. Doch es kam anders.

Feliz Navidad & Hybris

Die angekündigte Enthaltsamkeit beim Virenfiltern währte nicht lange: In der Vorweihnachtszeit des Jahres 2000 suchten die ersten Opfer des "Feliz Navidad"-Wurms Hilfe beim Service- und Beratungszentrum des ZID; daraufhin wurden die Mailserver abermals so konfiguriert, daß sie auch diesen Wurm anhand einer charakteristischen Sequenz erkennen und eliminieren konnten. Im Jänner 2001 häuften sich dann aber die Doublebounces (Fachausdruck für mailtechnische Rohrkrepierer) des Mailwurms "Hybris" in der Postmaster-Inbox, und die Navidad-Variante "Emanuel" verbreitete sich an der Uni Wien in einem Ausmaß, daß die Mitarbeiter des Service- und Beratungszentrums und der ZID-Außenstellen tagelang mit "Katastrophenhilfe" beschäftigt waren.

Eine Fortsetzung der bisherigen Strategie, nämlich einfach eine weitere charakteristische Sequenz ausfindig zu machen und in die Mailserver zu integrieren, war zumindest aus zwei Gründen nicht mehr sinnvoll: Zum einen tauchen immer häufiger neue Viren im eMail-Verkehr auf, die leider auch immer aggressiver und vermehrungsfreudiger werden, sodaß diese "Handarbeit" bald am erforderlichen Zeitaufwand gescheitert wäre. Zum anderen ist gemeingefährlichen Würmern wie dem offensichtlich in den Startlöchern stehenden Hybris mit den bisher eingesetzten Methoden nicht beizukommen: Hybris mutiert nicht nur, sondern ist zusätzlich noch mit einem Plugin-System ausgestattet - d.h. einzelne Varianten können aus dem Internet Erweiterungen nachladen und damit ihre Funktionalität "verbessern". Bei einem solchen Untier ist die Suche nach charakteristischen Sequenzen hoffnungslos.

Daher mußte rasch eine "richtige" Lösung gefunden werden, und es lag nahe, einen der kommerziellen Virenscanner einzusetzen: Diese gehen weit über das einfache Wiedererkennen von Bytefolgen hinaus - sie sind das Werk von Spezialisten, deren Methoden und Verfahren ein besser gehütetes Geheimnis sind als jeder Voodoo-Zauber.

Nachdem an der Universität Wien bereits eine Campuslizenz für den Virenscanner von McAfee vorhanden war, wurden erste Versuche mit diesem Produkt gemacht. Dabei stellte sich heraus, daß McAfee auch auf den Mailservern, die unter dem Betriebssystem AIX betrieben werden, zuverlässig und mit zufriedenstellender Geschwindigkeit funktioniert.

McAfee auf den Mailservern

Eine besondere Herausforderung stellte die Einbindung des Virenscanners in die vorhandene Serverinstallation dar. Die zentralen Mailserver der Universität Wien verarbeiten täglich rund 100 000 eMail-Nachrichten - eine Masse, die erst einmal bewältigt werden muß. Eine zusätzliche Schwierigkeit liegt darin, daß die Nachrichten auf verschiedensten Wegen an die Empfänger weitergeleitet werden: mit procmail, mit imap-deliver oder per Forward an andere Mailadressen. Nicht zuletzt sind auch die hinter den zentralen Mail-Exchangern gelegenen Instituts-Mailserver betroffen. Damit scheiden zahlreiche Lösungen aus, die bei der Mailzustellung ansetzen (z.B. das vielbeachtete AMaViS).

Der Virenscanner von McAfee wurde schließlich in den Mailtransport eingebunden, und zwar mit Hilfe der Schnittstelle milter (einem Bestandteil des Mailtransportprogramms sendmail ab Version 8.10). Detail am Rande: Am selben Tag, an dem an der Uni Wien die Arbeiten an einem milter-basierten Filter begannen, wurde auch bei AMaVis eine erste Entwicklerversion eines solchen Filters gesichtet, die aber (noch?) nicht für unsere Bedürfnisse geeignet war.

Die enorme Anzahl virenverseuchter eMail-Nachrichten, die dann innerhalb weniger Stunden ins Netz ging, war beeindruckend, und auch die vorgefundene Artenvielfalt müßte - ginge es hier um Tiere oder Pflanzen - jedem Ökologen das Herz höher schlagen lassen.

Mut zur Lücke

Eines sei vorweggenommen: Beileibe nicht alle Viren werden beim Scan auf den zentralen Servern erkannt, sodaß ein ohnehin trügerisches Sicherheitsgefühl unangebracht ist. Abgesehen davon werden Viren nicht nur über eMail verbreitet, und ein aktueller Virenscanner am Arbeitsplatzrechner ist und bleibt daher unerläßlich.

Der zentrale Virenscan wird vor allem deshalb durchgeführt, weil Epidemien, die via eMail übertragen werden, auch den Mailverkehr lahmlegen können - und diesen sicherzustellen ist die Hauptaufgabe der Mailserver. Dementsprechend sind den Mailservern beim Scannen einige Beschränkungen auferlegt, die sich je nach den Erfordernissen (z.B. hinsichtlich der Performance) ändern können:

  • Nachrichten, die kürzer als 1500 Byte oder länger als 1 Megabyte sind, werden nicht gescannt. Dadurch wird die Anzahl der Scanläufe bzw. (bei langen Nachrichten) der Zeitaufwand für einen einzelnen Scan dramatisch reduziert.
  • MIME-Attachments werden auf Viren überprüft; es wird aber kein Versuch unternommen, komprimierte bzw. kodierte Attachments oder gar die keinerlei Standard entsprechenden MS-TNEF-Dateien zu entpacken.
  • Die verwendete Virendatenbank (die sogenannte DAT-Datei) wird nur händisch und infolgedessen nur fallweise aktualisiert: Ein automatisches Update birgt das Risiko, daß z.B. aufgrund einer Formatänderung in der DAT-Datei der gesamte Mailverkehr der Uni Wien zum Erliegen kommt, und ist daher in Anbetracht der Hauptdirektive nicht sinnvoll.

Die Immunantwort

Was weiter geschieht, wenn der Virenscanner einen Virus, Wurm oder Trojaner in einer eMail-Nachricht findet, hängt davon ab, woher die Nachricht kommt und wohin sie geht:

  • Jeder Versuch, eine solche Nachricht über einen zentralen Mailserver der Universität (MAIL.UNIVIE.AC.AT, MAILBOX.UNIVIE.AC.AT, UNET.UNIVIE.AC.AT, MAIL.UNET.UNIVIE.AC.AT, RS6000.UNIVIE.AC.AT) zu versenden, wird abgebrochen, und das Mailprogramm des Absenders zeigt eine entsprechende Fehlermeldung.
  • Wenn eine verseuchte eMail-Nachricht von außen an einen Unet- oder Mailbox-Benutzer geschickt wird, weist der zentrale Mailserver die Nachricht zurück und produziert einen sogenannten Bounce: Das entsprechende Programm am Mailserver des Absenders (üblicherweise der Mailer-Daemon) schickt diesem eine Benachrichtigung, daß die Mail nicht zugestellt werden konnte.

  • Nachrichten, die zu den zentralen Mail-Exchangern (MX1.UNIVIE.AC.AT und MX2.UNIVIE.AC.AT) gelangen und für Instituts-Mailserver bestimmt sind, werden markiert und dann weitergeleitet. Die Markierung erfolgt durch das Einfügen einer zusätzlichen Header-Zeile, die den gefundenen Virus bzw. Wurm bezeichnet und in Klammern angibt, von welchem Server und zu welchem Zeitpunkt der Scan durchgeführt wurde (siehe Abb. 1). Die Administratoren von Mailservern, die ihre eMail über die zentralen Mail-Exchanger erhalten, können dann selbst entscheiden, ob sie eine derart markierte Nachricht abweisen1) oder annehmen wollen. Allenfalls können auch Benutzer leicht mit einem Mailfilterprogramm (z.B. procmail) nach dieser Header-Zeile filtern.

    Date: Thu, 08 Feb 2001 12:52:41 +0100
    From: H. Adschi <bazillus@virenschleud.er>
    X-Mailer: Microsoft Outlook Express 5.00.2919.6700
    To: helmi@ihw.univie.ac.at
    Subject: phagozytenfutter
    X-ZID-Univie-Virus-Alert: W32/Hybris.gen@M virus
    (mx1 for mx1.univie.ac.at Thu Feb 8 12:52:16 2001)
    Abb. 1: Verseuchte Nachrichten, die für Instituts-Mailserver bestimmt sind, werden durch eine zusätzliche Header-Zeile "markiert" und dann weitergeleitet

Zur Technik: Die milter-Schnittstelle

Die Mailfilter-Schnittstelle milter, die seit der Version 8.10 Bestandteil des Mailtransportprogramms sendmail ist und für sendmail 8.11 geringfügig adaptiert wurde, beruht auf dem bewährten Client/Server-Prinzip: milter ist der Server, der auf eine Verbindung von sendmail wartet. Sobald sendmail kontaktiert wird, verbindet es sich mit milter und leitet ihm laufend die Verbindungsdaten, die Envelope-Adresse, die Header und schließlich den Message Body weiter. milter kann zu jedem Zeitpunkt eine Nachricht abweisen (z.B. weil ein Virus gefunden wurde), akzeptieren und auf weitere Prüfung verzichten oder auf weitere Daten warten.

Darüber hinaus bietet milter die Möglichkeit, zusätzliche Header-Zeilen einzufügen oder Adressaten hinzuzufügen bzw. zu löschen. Auch der Text der Nachricht kann verändert werden, sodaß der in der Newsgruppe comp.mail.sendmail oft geäußerte Wunsch, einen Standardtext am Ende jeder Nachricht anzufügen, realisierbar wird. Ein weiterer großer Vorteil liegt darin, daß die Verbindung zwischen sendmail und milter sowohl über Unix Domain Sockets als auch über TCP erfolgen kann: Der Unet- und der Mailbox-Rechner haben nicht die Kapazitäten, den hohen Aufwand des Virenscannens zu übernehmen. So verbinden sie sich über einen einfachen load balancer (der auch gleichzeitig zur Ausfallssicherheit beiträgt) zu den beiden Mail-Exchangern, und diese führen das Filtern durch.

Die Ruhe nach dem Sturm

Der Erfolg des Virenscannens auf den zentralen Servern hat alle Erwartungen übertroffen: Allein vom Mailbox-Rechner wurden zu Beginn der "Säuberungsaktion" täglich rund 600 verseuchte Nachrichten abgewehrt (hauptsächlich Navidad-Würmer, Hybris holt aber rasant auf). Bereits nach einer Woche sank das Virenaufkommen allerdings auf rund zwei Dutzend pro Tag - offensichtlich bemerkten viele Benutzer die Infektion ihres Rechners erst durch retournierte Nachrichten und setzten dann entsprechende Maßnahmen.

Dennoch: Scannen ist besser als heilen - achten Sie darauf, daß über Ihren PC stets ein aktueller Virenscanner wacht! Infos über Antivirensoftware und eine aktuelle Hitliste der beim zentralen Scan erlegten Viren finden Sie auf den Security-Seiten des ZID.

 

1) Für sendmail geht das mit folgenden Regeln in sendmail.cf (bzw. nach LOCAL_RULESETS in sendmail.mc):

HX-ZID-Univie-Virus-Alert: $>CheckVirus
SCheckVirus
R$* $#error $@ 5.6.0 $: Virus detected: $1

Zwischen R$* und $#error muß ein Tabulator stehen.