Make your own free website on Tripod.com


vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisnächstes Kapitel


12

Trojanische Pferde

Dieses Kapitel behandelt eines der heimtückischeren Programme, die dazu benutzt werden, Internet-Sicherheit zu umgehen: das Trojanische Pferd oder Trojaner.

12.1 Was ist ein Trojanisches Pferd?

Ein Trojanisches Pferd ist:

Die unbefugten Funktionen, die der Trojaner durchführt, können manchmal auch als böswilliges Programm gelten. Einige Viren passen in dieses Profil. Ein solcher Virus kann innerhalb eines ansonsten nützlichen Programms verborgen sein. In diesem Fall kann das Programm sowohl als Trojaner als auch als Virus bezeichnet werden.

Klassische Dokumente über Internet-Sicherheit definieren den Begriff Trojaner in unterschiedlicher Art und Weise. Die vielleicht am meisten bekannte Definition befindet sich im RFC 1244, dem Site Security Handbook:

Ein Trojanisches Pferd kann ein Programm sein, das etwas Nüztliches oder auch nur etwas Interessantes tut. Es tut immer etwas Unerwartetes, wie beispielsweise ohne Ihr Wissen Paßwörter stehlen oder Dateien kopieren.

Dr. Alan Solomon, ein international bekannter Virenspezialist, hat in seiner Arbeit »All about Viruses« eine andere passende Definition gegeben:

Ein Trojaner ist ein Programm, das etwas mehr tut, als der Benutzer erwartet, und diese zusätzliche Funktion ist zerstörerisch. Dies führt zu einem Problem, was die Aufdeckung von Trojanern betrifft. Sagen wir, ich hätte ein Programm geschrieben, das zuverlässig entdecken könnte, ob ein anderes Programm die Festplatte formatiert hat. Kann es dann sagen, daß dieses Programm ein Trojaner ist? Wenn das andere Programm die Festplatte formatieren sollte (wie beispielsweise Format), dann ist es offensichtlich kein Trojaner. Wenn aber der Benutzer das Formatieren der Festplatte nicht erwartete, dann ist es ein Trojaner. Das Problem liegt darin zu vergleichen, was das Programm tut und was der Benutzer erwartet. Sie können die Erwartungen eines Benutzers nicht bestimmen.

Wegweiser:

Sie können »All About Viruses« von Dr. Alan Solomon unter http:// www.drsolomon.com/vircen/vanalyse/va002.html finden.

Jeder, der etwas mit Computerviren zu tun hat (oder einfach mehr über Virustechnologie wissen möchte), sollte sich Dr. Solomons Site ansehen unter http://www.drsolomon.com/ oder http://www.drsolomon.de/.

Generell können Sie ein Trojanisches Pferd als ein Programm klassifizieren, das eine versteckte und nicht gewünschte Funktion ausführt. Ein Trojaner kann in jeder Form daherkommen. Es kann ein Utility sein, das angeblich Dateiverzeichnisse indiziert oder Registrierungscodes auf Software öffnet. Es kann eine Textverarbeitung oder ein Netzwerk-Utility sein. Kurz, ein Trojanisches Pferd kann alles tun (und überall gefunden werden).

Sie können das Konzept des Trojanischen Pferdes besser verstehen, wenn Sie sich die Herkunft seines eher seltsamen, aber durchaus treffenden Namens ansehen. Im 12. Jahrhundert vor Christus erklärte Griechenland Troja den Krieg. Der Sage nach begann der Streit, als der Prinz von Troja die Königin von Sparta entführte, um sie zu seiner Frau zu machen. Die Griechen nahmen die Verfolgung auf und führten einen 10 Jahre dauernden Krieg gegen Troja. Sie konnten Troja aber nicht erobern, da es zu gut geschützt war.

In einem letzten Eroberungsversuch zog sich die griechische Armee zurück und hinterließ ein riesiges hölzernes Pferd. Dieses Pferd war hohl und in ihm versteckten sich die besten griechischen Soldaten. Die Trojaner sahen das Pferd und brachten es in der Annahme, daß es sich um ein Geschenk handele, in ihre Stadt. In der folgenden Nacht kletterten die griechischen Soldaten aus dem Pferd und überwältigten die Trojanische Armee im Schlaf.

12.2 Woher kommen Trojanische Pferde?

Trojanische Pferde werden von Programmierern geschaffen, in der Regel mit böswilligen Absichten. Irgendwo auf diesem Planeten sitzt jetzt bestimmt ein Programmierer und entwickelt einen Trojaner. Dieser Programmierer weiß genau, was er tut, und seine Absichten sind bösartig (oder zumindest nicht selbstlos).

Die Autoren Trojanischer Pferde verfolgen in der Regel einen bestimmten Plan. Dieser Plan kann fast alles sein, aber im Zusammenhang mit Internet-Sicherheit werden sie ihren Trojaner so programmieren, daß er eines von zwei Dingen tut:

Einige Trojaner tun beides. Zusätzlich existiert noch eine andere Klasse von Trojanischen Pferden, die dem Ziel wirklich Schaden zufügt (z.B. könnte es Ihre Festplatte verschlüsseln oder umformatieren). Trojanische Pferde können Informationen (bezüglich unautorisiertem Zugang oder allgemeine) sammeln oder sogar Ihr System sabotieren.

Ein Trojanisches Pferd, das in das Sabotage-Profil paßt, ist der PC-CYBORG-Trojaner. Wie in einem CIAC-Bulletin (Information about the PC CYBORG (AIDS) Trojan Horse) vom 19. Dezember 1989 erklärt wird:

Kürzlich gab es erhebliche Aufmerksamkeit von seiten der Medien für ein neues Trojanisches Pferd, das angeblich Informationen über den AIDS-Virus für Benutzer von IBM-PCs zur Verfügung stellt. Wenn es erst einmal in das System eingedrungen ist, ersetzt das Trojanische Pferd die AUTOEXEC.BAT-Datei und zählt die Bootvorgänge, bis eine bestimmte Zahl (90) erreicht ist. An diesem Punkt versteckt PC CYBORG Verzeichnisse und vermischt (verschlüsselt) die Namen aller Dateien auf Laufwerk C:. Es gibt mehr als eine Version dieses Trojaners und mindestens eine davon wartet nicht damit, dem Laufwerk C: Schaden zuzufügen, sondern beginnt mit dem Verstekken von Verzeichnissen und Vermischen von Dateinamen beim ersten Booten nach der Infizierung.

Wegweiser:

Sie finden das CIAC-Bulletin »Information About the PC CYBORG (AIDS) Trojan Horse« unter http://www.ciac.org/ciac/bulletins/a-10.shtml.

Ein anderes Beispiel ist der AOLGOLD-Trojaner. Er wurde über Usenet durch E-Mail verteilt. Das Programm war angeblich ein verbessertes Paket für den Zugang zu America Online (AOL). Die Distribution bestand aus einer archivierten Datei, die dekomprimiert zwei Dateien enthüllte. Eine war eine Standard-INSTALL.BAT-Datei. Die Ausführung der INSTALL.BAT-Datei führt dazu, daß 18 Dateien auf die Festplatte gebracht werden. In einem Sicherheitshinweis (Information on the AOLGOLD Trojan Program) vom 16. Februar 1997 wird berichtet:

Das Trojanische Pferd wird durch die Ausführung der INSTALL.BAT-Datei gestartet. Die INSTALL.BAT-Datei ist eine einfache Stapelverarbeitungsdatei, die die VIDEO.DRV-Datei umbenennt in VIRUS.BAT. VIDEO.DRV ist eine amateurhafte DOS-Stapelverarbeitungsdatei, die damit beginnt, den Inhalt mehrerer kritischer Verzeichnisse auf Ihrem Laufwerk C: zu löschen, darunter

c:\
c:\dos
c:\windows
c:\windows\system
c:\qemm
c:\stacker
c:\norton

Wenn die Stapelverarbeitungsdatei ihren Arbeitsablauf beendet, erscheint eine kurze Nachricht auf dem Bildschirm und ein Programm namens DOOMDAY.EXE versucht zu starten. Fehler in der Stapelverarbeitungsdatei verhindern einen Ablauf von DOOMDAY.EXE. Andere Fehler in der Datei führen dazu, daß das Programm sich selbst löscht, wenn es auf einem anderen Laufwerk als C: gestartet wird. Der Programmierstil und die Fehler in der Stapelverarbeitungsdatei zeigen, daß der Autor des Trojanischen Pferdes scheinbar nur wenig Programmiererfahrung hat.

Wegweiser:

Sie können den Sicherheitshinweis »Information on the AOLGOLD Trojan Program« online finden unter http://www.emergency.com/aolgold.htm.

Diese Trojaner wurden von Amateurprogrammierern entwickelt: wahrscheinlich von Jugendlichen, die Unruhe stiften wollten. Beide Trojaner waren destruktiv und führten keine raffinierten kollektiven oder penetrativen Funktionen aus. Derartige Trojaner tauchen gewöhnlich auf dem Usenet auf.

Manchmal werden Trojanische Pferde auch von Programmierern eingeschleust, die an einer legitimen Entwicklung arbeiten. In diesem Fall wird der unautorisierte Code von jemandem, der an der Entwicklung beteiligt ist, in eine Applikation oder ein Utility (in seltenen Fällen auch in das Betriebssystem selbst) integriert. Diese Situationen sind aus den folgenden Gründen viel gefährlicher:

Manchmal beschädigen Programmierer, die nichts mit kommerzieller Entwicklung zu tun haben, Schlüssel-Utilities für Unix. Diese Art der Beschädigung ist schon mehrfach vorgekommen und betraf bei mehr als einer Gelegenheit sicherheitsrelevante Programme. Zum Beispiel wurde entdeckt, daß die SATAN-1.0-Distribution für Linux ein Trojanisches Pferd enthielt.

Hinweis:

SATAN 1.0 war eine vorkompilierte Sammlung von Binärdateien für Linux- Anwender. Die Binärdateien wurden an der Temple University kompiliert. Das Trojanische Pferd fand sich allerdings nur in einer Freigabe, der Version 1.0.

Die betroffene Datei war ein Programm namens fping. Anscheinend bekam ein Programmierer Zugang zu einem Rechner, auf dem sich der Source-Code befand. Er modifizierte die main()-Funktion und änderte fping so, daß beim Ablauf von SATAN ein spezieller Eintrag in die /etc/passwd-Datei plaziert wurde. Dieser spezielle Eintrag war ein Benutzer namens suser. Über die Benutzer-ID wollte der Eindringling viele Hosts beeinträchtigen. Tatsächlich gab es nur zwei bekanntgewordene Fälle einer solchen Beeinträchtigung. Angeblich war die Programmierung mangelhaft und das verhinderte, daß der Täter sein Vorhaben in die Tat umsetzen konnte. (Das Trojanische Pferd hatte keine Wirkung auf Systemen mit Shadow- Paßwörtern.)

Hinweis:

Frühe Slackware-Distributionen bieten keine standardmäßige Unterstützung für Shadow-Paßwörter. In den letzten Jahren sind die meisten Linux-Systeme allerdings auf die Benutzung von Shadow-Funktionen umgestiegen. Der Programmierer, der für den SATAN-Trojaner verantwortlich war, hat dies entweder nicht bedacht oder es einfach ignoriert.

12.3 Wo findet man Trojanische Pferde?

Trojaner können fast überall sein, in jeder Applikation, auf jedem Betriebssystem. Aus diesem Grund sollten Sie Software, die Sie aus dem Internet herunterladen, immer mit Vorsicht genießen, insbesondere wenn sie von Underground-Servern oder aus dem Usenet kommt.

Manchmal allerdings müssen Sie gar nicht in dunkle und verbotene Gassen reisen, um einem Trojanischen Pferd zu begegnen. Manchmal tauchen Trojaner auch in größeren netzwerkweiten Distributionen auf. 1994 beispielsweise versteckte jemand ein Trojanisches Pferd in WUFTPD. Die Angelegenheit wurde in einer CIAC-Warnung besprochen:

Die CIAC hat Informationen erhalten, daß der Source-Code einiger Kopien des wuarchive FTP Daemons (ftpd) in den Versionen 2.2 und 2.1f manipuliert worden sei und ein Trojanisches Pferd enthielte. Dieser Trojaner ermöglicht es jedem Benutzer, ob lokal oder entfernt, Root-Privilegien auf dem betroffenen Unix-System zu erhalten. Die CIAC empfiehlt ausdrücklich, daß auf allen Sites, die über diese oder ältere Versionen des wuarchive ftpd laufen, die Version 2.3 installiert wird. Es ist möglich, daß Versionen, die älter sind als 2.2 und 2.1f, das Trojanische Pferd ebenfalls beinhalten.

WUFTPD ist der weltweit meistbenutzte FTP-Server. Der WUFTPD-Trojaner betraf also Tausende von Sites, sowohl öffentliche als auch private. Für viele dieser Sites besteht nach wie vor ein Risiko, weil ihre Systemadministratoren nicht so sicherheitsbewußt sind, wie sie es sein sollten.

Hier sind einige andere bekannte Beispiele von Trojanischen Pferden:

12.4 Wie oft werden Trojaner wirklich entdeckt?

Trojaner werden so oft entdeckt, daß sie ein Hauptsicherheitsbedenken darstellen. Sie sind gerade deshalb besonders heimtückisch, da ihre Auswirkungen auch nach ihrer Entdeckung oft noch gespürt werden. In dieser Hinsicht ähneln Trojanische Pferde Sniffern. Niemand kann sicher sagen, wie tief die Beeinträchtigung in das System hineingegangen ist. Es gibt mehrere Gründe hierfür.

Ein Grund ist, daß sich Trojaner in der Regel in kompilierten Binärdateien verstecken. Der Code eines Trojaners ist daher in vom Menschen nichtlesbarer Form oder in Maschinensprache geschrieben. Ohne Debug-Programm kann man nicht viel über Binärdateien erfahren. Wenn Sie beispielsweise einen Texteditor benutzen, um sich eine Binärdatei anzusehen, wird Ihnen das nichts bringen. Die einzig erkennbaren Textzeilen sind Copyright-Mitteilungen, Fehlermeldungen oder andere Daten, die an verschiedenen Punkten des Programms an STDOUT ausgegeben werden.

Hinweis:

Kompilierte Binärdateien sind nicht die einzigen Orte, an denen sich Trojanische Pferde verstecken. Shell-Scripts, Perl-Programme und vielleicht sogar Code, der in JavaScript, VBScript oder Tcl geschrieben wurde, können theoretisch ein Trojanisches Pferd beinhalten. Diese Fälle kommen allerdings verhältnismäßig selten vor. Script-Sprachen sind ungeeignet, weil der Code für den Menschen lesbar ist. Dies vergrößert die Wahrscheinlichkeit, daß das Opfer den Code entdeckt. (Ein Trojanisches Pferd in einen solchen Code einzubetten, ist wahrscheinlich nur dann machbar, wenn die Datei Teil eines viel größeren Pakets ist - z.B. wenn das Gesamtpaket sich auf viele Unterverzeichnisse verteilt. In solchen Fällen reduziert die Komplexität des Pakets möglicherweise die Wahrscheinlichkeit, daß ein menschliches Wesen mit normalen Untersuchungsmethoden den Trojaner entdecken kann.)

Ein anderer Grund für die Schwierigkeiten im Entdecken von Trojanern liegt darin, daß sie ihre Anwesenheit nicht ankündigen. Sie führen einfach ruhig und effektiv ihre entsprechenden Aufgaben aus. Noch schlimmer, die meisten gut gemachten Trojaner kommen in Form von bekannten Utilities, deren Ablauf Sie auf einem System erwarten würden. Daher können Sie ein Trojanisches Pferd nicht durch eine Auflistung der aktuell laufenden Prozesse entdecken.

Bevor Sie mit der Suche nach einem Trojaner anfangen, müssen Sie allerdings zunächst einen Grund dafür haben, daß Sie einen Trojaner in Ihrem System vermuten. Die meisten Leute haben dies nicht, und selbst wenn es so wäre, wüßten sie nicht, wo sie mit ihrer Suche beginnen sollten.

Es hängt viel von der Erfahrung eines Benutzers ab. Benutzer, die nicht viel über ihr Betriebssystem wissen, werden wohl kaum tief in Verzeichnisstrukturen tauchen, um verdächtige Dateien zu suchen. Selbst erfahrene Programmierer haben möglicherweise Schwierigkeiten, ein Trojanisches Pferd zu identifizieren, auch wenn ihnen der Code für Untersuchungszwecke zur Verfügung steht. (Dies gilt insbesondere dann, wenn der Trojaner in einer Sprache geschrieben ist, von der der Programmierer nur sehr wenig versteht. Es klingt unglaublich, aber ich kenne BASIC-Programmierer, die Schwierigkeiten haben, einen Perl- Code zu lesen.)

12.5 Wie hoch ist das Risiko, das Trojanische Pferde
darstellen?

Trojaner stellen ein hohes Risiko dar, hauptsächlich aus Gründen, die schon angesprochen wurden:

Trojanische Pferde können sogar zu einem Zusammenbruch des gesamten Systems führen. Ein Trojaner kann sich bereits seit Wochen oder gar Monaten im System befinden, bevor er entdeckt wird. Innerhalb dieses Zeitraums könnte ein Cracker mit Root-Privilegien ein gesamtes System nach seinem Bedarf verändern. Und auch wenn ein Trojanisches Pferd entdeckt wird, existieren möglicherweise viele versteckte Sicherheitslöcher.

12.6 Wie kann ich ein Trojanisches Pferd aufspüren?

Trojanische Pferde aufzudecken ist leicht, vorausgesetzt, Sie haben immer nur die besten Sicherheitspraktiken angewendet. Ist das nicht der Fall, ist das Aufspüren eines Trojaners eine schwierige Aufgabe.

Die meisten Aufdeckungsmethoden basieren auf einem Prinzip, das »Objektvergleich« genannt wird. Objekte sind in dem Fall Dateien oder Verzeichnisse. Diese Objekte werden jeweils mit sich selbst zu einem früheren oder späteren Zeitpunkt verglichen.

Nehmen Sie beipielsweise ein Backup-Band und vergleichen Sie die Datei PS, wie sie im November 1995 aussah, mit der Datei PS, die sich jetzt auf Ihrer Festplatte befindet. Wenn die zwei sich unterscheiden, und PS nicht aktualisiert, ersetzt oder korrigiert wurde, stimmt etwas nicht. Diese Technik sollte auf alle Systemdateien angewandt werden, die als Basisteile des Betriebssystem installiert sind.

Objektvergleich ist eine einfache Methode zur Überprüfung der Dateiintegrität, die auf entdeckten Änderungen der Zustandsinformationen einer Datei basiert. Andere Überprüfungsmöglichkeiten rangieren von ganz einfachen bis hin zu raffinierten Methoden. Zum Beispiel können Sie die Integrität einer Datei mit Hilfe der folgenden Angaben überprüfen:

Alle drei Methoden sind leider ungenügend. Lassen Sie mich kurz erklären, warum.

Jedesmal, wenn eine Datei geändert wird, ändern sich ihre Werte. Beispielsweise wird jedesmal, wenn die Datei geöffnet, verändert und gespeichert wird, ein neues Datum für die letzte Modifikation vergeben. Diese Datumsangabe kann jedoch leicht manipuliert werden. Man braucht nur die globale Zeiteinstellung ändern, die gewünschten Änderungen an der Datei vornehmen, sie speichern und schon ist die Datumsangabe manipuliert. Aus diesem Grund ist die Datumsangabe der unzuverlässigste Weg, um Objekte zu vergleichen. Das Datum der letzten Modifikation ist völlig nichtssagend, wenn die Datei unverändert war (wenn sie z.B. nur kopiert oder gemailt wurde).

Ein anderer Weg, die Integrität einer Datei zu überprüfen, ist die Untersuchung ihrer Größe. Diese Methode ist jedoch ebenfalls sehr unzuverlässig, da auch dieser Wert auf sehr einfache Art und Weise manipuliert werden kann. Es ist relativ einfach, mit einer Dateigröße von, sagen wir, 1.024 Kbyte zu starten und nach Änderung der Datei mit der gleichen Größe zu enden.

Der Prozeß ist allerdings komplexer, wenn eine binäre Datei verändert wird. Binären Dateien werden in der Regel spezielle Funktionsbibliotheken beigefügt, ohne die das Programm nicht funktionieren würde. Daher müssen Sie die unentbehrlichen Funktionen des Programms beibehalten und trotzdem Raum für Ihren eigenen Trojanischen Code finden.

Das meistverbreitete Szenario ist das Angreifen über eine bekannte Datei. Die Datei ist in der Distribution Ihres Betriebssystems enthalten, die Sie von Ihrem Hersteller bekommen (wie beipielsweise die Datei csh in Unix oder die Datei command.com in DOS). Diese Dateien werden bei Erstinstallation auf Ihre Festplatte geschrieben und sie beinhalten eine Datums- und Zeitangabe und haben eine bestimmte Größe. Eine Differenz in den Zeit-, Datums- oder Größenangaben gegenüber den ursprünglichen Werten würde sofort Verdacht errregen.

Böswillige Programmierer wissen das. Ihre Aufgabe besteht deshalb darin, den Source-Code sorgfältig nach Dingen zu untersuchen, die ausgelassen werden können (sie löschen möglicherweise Kommentare oder andere nicht so wichtige Elemente der Datei). Dann wird der unautorisierte Code integriert und die Datei neu kompiliert. Der Cracker überprüft die Dateigröße. Wenn sie zu klein oder zu groß ist, beginnt der Cracker den Prozeß erneut, bis er eine kompilierte Datei hat, die der ursprünglichen Dateigröße so nah wie möglich ist.

Hinweis:

Wenn die Datei noch nicht verteilt wurde, braucht sich der Angreifer über dieses Problem keine Sorgen zu machen, weil noch niemand die Datei oder ihre Größe gesehen hat. Vielleicht würde nur der Originalautor wissen, daß etwas nicht stimmt. Wenn dieser Originalautor sich nicht um Sicherheit kümmert, würde vielleicht nicht einmal er etwas merken. Wenn Sie Programmierer sind, denken Sie doch einmal an die letzte Datei, die Sie kompiliert haben. Wissen Sie noch, wie groß sie war?

Noch einmal zur Wiederholung: Datum, Datum des letzten Zugangs, Zeit und Größe sind alles Angaben ohne wirkliche Bedeutung. Keine dieser Angaben ist geeignet, die Integrität einer Datei sicherzustellen. Daher hat das Erstellen einer umfassenden Datenbank über alle Dateien und ihre entsprechenden Werte (Zeit, Größe, Datum oder Änderungen) nur sehr limitierten Wert:

Eine Checkliste ist eines der Formulare dieser Datenbank für ein Unix-System. Die Dateiinhalte selbst werden normalerweise nicht gespeichert, da dies zuviel Festplattenspeicher in Anspruch nehmen würde. Statt dessen würde eine Checkliste eine Reihe von Werten enthalten, die aus der ursprünglichen Datei generiert werden - darunter in der Regel die Länge, das Datum der letzten Modifizierung und der Besitzer. Die Checkliste wird regelmäßig erneuert und mit den gespeicherten Kopien verglichen, wobei Abweichungen notiert werden. Jedoch können die Inhalte der Unix- Dateien verändert werden, ohne daß sich diese Werte gegenüber denen der gespeicherten Dateien verändern. Insbesondere könnte ein Benutzer, der Root-Zugang hat, die Originalfestplatte so modifizieren, daß sie die gespeicherten Dateien ändert, ohne dies in der Checkliste anzuzeigen.1

Es gibt andere Indizierungen. Zum Beispiel könnten Sie die Basis-Prüfsummen benutzen. Obwohl Prüfsummen zuverlässiger sind als Zeit, Datum oder Datum der letzten Modifizierung, können auch sie geändert werden. Spezialisten schlagen vor, daß Sie bei Verwendung eines Basisprüfsummensystems Ihre Prüfsummenliste auf einem separaten Server oder gar einem separaten Medium aufbewahren sollten, das nur durch Root oder andere vertrauenswürdige Benutzer zugänglich ist. Prüfsummen funktionieren gut für die Überprüfung der Integrität einer Datei, die von Punkt A zu Punkt B übertragen wurde, aber das war's auch schon.

Hinweis:

Wenn Sie jemals Dateien mit Kommunikationspaketen wie Qmodem, Telix, Closeup oder MTEZ übertragen haben, wissen Sie, daß diese Programme Prüfsummen- oder CRC(cyclic redundancy checks)-Überprüfungen während der Übertragung durchführen. Dadurch wird die Wahrscheinlichkeit reduziert, daß die Datei während der Übertragung beschädigt wird. Wenn Sie jedoch raffinierten Angriffen gegen die Integrität von Dateien begegnen, ist diese Technik unzureichend. Anleitungen zum Umgehen von Prüfsummensystemen gibt es haufenweise im Internet. Die meisten stehen mit der Entwicklung von Computerviren in Verbindung. (Viele Anti-Viren-Utilities benutzen die Prüfsummen-Analyse zur Aufdeckung von Viren.)

Sie fragen sich wahrscheinlich, ob es überhaupt eine Technik gibt, die hinreichend ist. Ich freue mich, diese Frage bejahen zu können. Es handelt sich hierbei um die Berechnung eines digitalen Fingerabdrucks für jede Datei unter Benutzung verschiedener Algorithmen. Eine Familie von Algorithmen namens MD series wird für diesen Zweck eingesetzt. Eine der beliebtesten Implementierungen ist ein System namens MD5.

12.6.1 MD5

MD5 gehört zu einer Familie von One-Way-Hash-Funktionen namens message digest algorithms . Das MD5-System wird im RFC 1321 definiert:

Der Algorithmus nimmt eine Nachricht von willkürlicher Länge als Eingabe und erzeugt einen 128-Bit-»Fingerabdruck« oder »message digest« der Eingabe als Ausgabe. Es wird gemutmaßt, daß es rechnerisch unmöglich ist, zwei Nachrichten zu erzeugen, die den gleichen Fingerabdruck haben, bzw. eine Nachricht zu erzeugen, die einen vorher bestimmten Ziel-Fingerabdruck hat. Der MD5-Algorithmus ist für Digitale-Signatur-Applikationen bestimmt, wenn eine große Datei in einer sicheren Weise »komprimiert« werden muß, bevor sie mit einem privaten (geheimen) Schlüssel in einem Public-Key-Verschlüsselungssystem wie RSA verschlüsselt wird.

Wegweiser:

RFC 1321 finden Sie unter http://info.internet.isi.edu:80/in-notes/ rfc/files/1321.txt.

Wenn Sie eine Datei durch MD5 laufen lassen, entsteht der Fingerabdruck als ein 32stelliger Wert, der so aussieht:

2d50b2bffb537cc4e637dd1f07a187f4

Viele Sites, die Unix-Software vertreiben, benutzen MD5, um digitale Fingerabdrücke für ihre Distributionen zu erzeugen. Während Sie durch Ihre Verzeichnisse blättern, können Sie sich den Original-Fingerabdruck jeder Datei genau ansehen. Eine typische Verzeichnisauflistung würde wie folgt aussehen:

MD5 (wn-1.17.8.tar.gz) = 2f52aadd1defeda5bad91da8efc0f980
MD5 (wn-1.17.7.tar.gz) = b92916d83f377b143360f068df6d8116
MD5 (wn-1.17.6.tar.gz) = 18d02b9f24a49dee239a78ecfaf9c6fa
MD5 (wn-1.17.5.tar.gz) = 0cf8f8d0145bb7678abcc518f0cb39e9
MD5 (wn-1.17.4.tar.gz) = 4afe7c522ebe0377269da0c7f26ef6b8
MD5 (wn-1.17.3.tar.gz) = aaf3c2b1c4eaa3ebb37e8227e3327856
MD5 (wn-1.17.2.tar.gz) = 9b29eaa366d4f4dc6de6489e1e844fb9
MD5 (wn-1.17.1.tar.gz) = 91759da54792f1cab743a034542107d0
MD5 (wn-1.17.0.tar.gz) = 32f6eb7f69b4bdc64a163bf744923b41

Wenn Sie eine Datei von solch einem Server herunterladen und feststellen, daß der digitale Fingerabdruck anders ist, gibt es eine 99,9999prozentige Chance, daß etwas nicht stimmt.

MD5 ist ein populärer Algorithmus und wurde in viele Applikationen eingefügt. Einige extreme Sicherheitsprogramme benutzen MD4- und MD5-Algorithmen. Eines dieser Programme ist S/Key von den Bell Laboratories. S/Key generiert Einmal-Paßwörter und wird für Remote Logins benutzt. S/Key bietet fortgeschrittene Sicherheit für entfernte Arbeitssitzungen (wie Telnet oder Rlogin-Verbindungen). Die Vorteile von MD5 werden im »S/Key Overview« (Autor unbekannt) beschrieben:

S/Key benutzt entweder MD4 oder MD5 (One-Way-Hashing-Algorithmen, entwickelt von Ron Rivest), um ein Einmal-Paßwort-Schema zu implementieren. In diesem System werden Paßwörter in Klartext über das Netzwerk verschickt, aber nachdem ein Paßwort benutzt wurde, ist es für einen Angreifer nicht mehr nützlich. Der größte Vorteil von S/Key ist, daß es ohne Modifizierung von Client-Software und nur unbedeutender Unbequemlichkeit für die Benutzer gegen Angreifer schützt.

Wegweiser:

Lesen Sie den S/Key Overview unter http://medg.lcs.mit.edu/people/ wwinston/skey-overview.html.

Ob mit oder ohne MD5, Objektvergleich ist ein komplexer Prozeß. Es ist richtig, daß Sie auf einer einzelnen Workstation mit wenigen Ressourcen jede Datei und jedes Verzeichnis per Hand vergleichen könnten. In größeren vernetzten Umgebungen ist dies jedoch schlicht unmöglich. Verschiedene Utilities wurden bereits entwickelt, um Objektvergleich durchzuführen. Das meistgelobte ist ein Produkt, das passenderweise Tripwire genannt wird.

12.6.2 Tripwire

Tripwire (geschrieben im Jahr 1992) ist ein umfassendes Dateiintegritäts-Tool. Tripwire ist gut durchdacht, einfach zu verstehen und kann ohne große Schwierigkeiten implementiert werden.

Das System liest Ihre Umgebung von einer Konfigurationsdatei. Diese Datei enthält alle Dateimasken (die Arten der Dateien, die Sie überwachen wollen). Das System kann sehr genau sein. Zum Beispiel können Sie spezifizieren, welche Änderungen an Dateien einer bestimmten Klasse vorgenommen werden können, ohne daß Tripwire die Änderungen angibt (oder, für umfassendere Überwachungen, können Sie ein Verzeichnis als Ziel des Überwachungsprozesses festlegen). Die ursprünglichen Werte (digitale Fingerabdrücke) dieser Dateien werden in einer Datenbankdatei aufbewahrt. Auf diese Datenbankdatei (einfaches ASCII) wird immer dann zugegriffen, wenn eine Signatur kalkuliert werden muß. In der Distribution sind folgende Hash-Funktionen enthalten:

Tripwire benutzt standardmäßig sowohl MD5 als auch Snefru, um digitale Fingerabdrücke für Dateien zu generieren. (Sie können jede dieser Hash-Funktionen auf jede einzelne Datei, einen Teil von Dateien oder alle Dateien anwenden.) Jeder Datei-Fingerabdruck ist absolut einzigartig. Es gibt wenig oder keine Chance, daß zwei Dateien den gleichen digitalen Fingerabdruck haben. Die Autoren erklären:

Es wurde ein Versuch gemacht, eine doppelte Snefru[16]-Signatur für das /bin/login- Programm mit Hilfe von 130 Sun-Workstations zu finden. Über einen Zeitraum von einigen Wochen wurden 17 Millionen Signaturen generiert und mit 10.000 gespeicherten Signaturen verglichen, der maximalen Anzahl von Signaturen, die in den Speicher passen, ohne bei jeder erneuten Suche Speicherseitenfehler hervorzurufen. Etwa 224 Signaturen wurden überprüft, ohne Übereinstimmungen zu finden, und etwa 1015 Signaturen blieben unüberprüft.

Idealerweise sollten Sie ein Tool wie Tripwire gleich nach einer Erstinstallation einsetzen. Dies gibt Ihnen 100prozentige Dateiintegrität als einen Anfangsbezugspunkt. Nachdem Sie die komplette Datenbank für Ihr Dateisystem generiert haben, können Sie andere Benutzer einführen (die Ihr System sofort mit Müll füllen werden, der auch verifiziert werden muß). Tripwire ist extrem gut geplant. Hier sind einige der interessanteren Funktionen:

Tripwire ist ein hervorragendes Tool, aber es gibt einige erwähnenswerte Punkte in Hinsicht auf Sicherheit. Einer dieser Punkte betrifft die Wertedatenbank, die generiert wird und erhalten bleibt. Im wesentlichen geht es um die gleichen Punkte, die ich vorher schon angesprochen habe: Ein Cracker kann Datenbanken verändern. Es ist daher empfehlenswert, daß Sie einige Maßnahmen ergreifen, um diese Datenbank zu schützen. Den Autoren des Tools waren dies von Anfang an klar:

Die Datenbank, die von dem Integritätsprüfer benutzt wird, sollte vor unautorisierten Modifikationen geschützt werden; ein Eindringling, der die Datenbank ändern kann, kann das gesamte Überprüfungssystem für die Integrität von Dateien untergraben.

Wegweiser:

Bevor Sie Tripwire einsetzen, lesen Sie »The Design and Implementation of Tripwire: A File System Integrity Checker« von Gene H. Kim und Eugene H. Spafford. Sie finden diesen Bericht unter ftp://ftp.cs.purdue.edu/pub/ spaf/security/Tripwire.PS.Z.

Eine Methode zum Schutz der Datenbank ist extrem sicher: Speichern Sie die Datenbank auf einem schreibgeschützten Medium. Dies beseitigt fast jede Möglichkeit der Manipulation. Tatsächlich wird diese Technik zu einem starken Trend im Gebiet Sicherheit. In einer kürzlich stattgefundenen Sicherheitsberatung stellte ich überrascht fest, daß die Kunden (die ja gerade erst etwas über Sicherheit lernen sollten) sehr viel Interesse für schreibgeschützte Medien für ihre Web-basierten Datenbänke zeigten. Diese Datenbänke enthielten sensible Informationen, die im Fall einer Modifizierung ein Gefahrenpotential für die Sicherheit anderer Systeme darstellen könnten.

Kim und Spafford (die Autoren von Tripwire) empfehlen ebenfalls, die Datenbank auf diese Weise zu sichern, obwohl sie zugestehen, daß dies einige praktische Probleme in bezug auf die Prozedur hervorrufen könnte. Es hängt viel davon ab, wie oft die Datenbank aktualisiert wird, wie groß sie ist usw. Wenn Sie Tripwire auf einer großangelegten Basis implementieren (und in seiner Maximal-Applikation), könnte die Einrichtung einer schreibgeschützten Datenbank eine sehr gute Idee sein. Dies hängt wiederum vom Risikoniveau und der Notwendigkeit für erhöhte oder optimale Sicherheitsmaßnahmen ab.

Wegweiser:

Sie finden Tripwire (und eine Dokumentation über seine Nutzung und seine Entwicklung) unter ftp://coast.cs.purdue.edu/pub/tools/unix/Tripwire/.

12.6.3 TAMU

Die TAMU-Programmfamilie (von der Texas A&M University) ist eine Sammlung von Tools, die die Sicherheit eines Unix-Rechners erheblich verbessern. Diese Tools wurden als Antwort auf ein sehr reales Problem entwickelt. Wie in der Zusammenfassung, die der Distribution beigelegt ist, erklärt wird:

Unix-Rechner der Texas A&M University wurden kürzlich von einer Gruppe von Internet-Crackern weitreichend angegriffen. Dieser Bericht gibt Ihnen einen Überblick über das Problem und unsere Antworten, darunter die Entwicklung von Richtlinien, Prozeduren und Tools für den Schutz der Universitätsrechner. Die entwickelten Tools umfassen »drawbridge«, eine fortschrittliche Internet-Filter-Bridge, »tiger scripts«, extrem mächtige aber einfach zu bedienende Programme für das Schützen individueller Hosts, und »xvefc« (Xview Etherfind Client), ein mächtiges Überwachungstool für verteilte Netzwerke.

Die TAMU-Distribution beinhaltet ein Paket von tiger scripts, die die Basis der digitalen Fingerabdruckauthentifizierung der Distribution bilden. Wie in der Zusammenfassung erklärt wird:

Der durchgeführte Überprüfungsvorgang deckt eine ganze Reihe von Dingen ab, darunter Dinge, die in CERT-Mitteilungen identifiziert wurden, und Dinge, die uns während der kürzlich stattgefundenen Angriffe aufgefallen sind. Die Skripte benutzen Xerox's Kryptographie-Prüfsummenprogramme, um sowohl modifizierte System- Binärdateien (mögliche Hintertüren/Trojaner) zu überprüfen, als auch zu prüfen, ob die erforderlichen sicherheitsrelevanten Patches vorhanden sind.

Die TAMU-Distribution ist umfassend. Sie können TAMU benutzen, um mehrere Sicherheitsprobleme zu lösen, unter anderem eben auch das Suchen nach Trojanern. TAMU beinhaltet ein Netzwerk-Überwachungstool und einen Paketfilter.

Wegweiser:

Die TAMU-Distribution finden Sie unter ftp://coast.cs.purdue.edu/pub/ tools/unix/TAMU/.

12.6.4 ATP (Anti-Tampering Program)

ATP ist unbekannter als Tripwire oder die TAMU-Distribution, funktioniert aber so ähnlich wie Tripwire. Wie David Vincenzetti von der Universität Mailand, Italien, in ATP - Anti- Tampering Program erklärt:

ATP »macht eine Momentaufnahme« des Systems unter der Annahme, daß Sie sich in einer vertrauenswürdigen Konfiguration befinden, und führt einige Prüfungen durch, um mögliche Veränderungen an Dateien zu überwachen.

Wegweiser:

Sie finden ATP - Anti-Tampering Program unter http://www.cryptonet.it/ docs/atp.html.

ATP etabliert eine Datenbank mit Werten für jede Datei. Einer dieser Werte (die Signatur) besteht aus zwei Prüfsummen. Die erste ist eine CRC32-Prüfsumme, die zweite eine MD5- Prüfsumme. Sie fragen sich vielleicht, warum das so ist, insbesondere da Sie wissen, daß CRC-Prüfsummen nicht ganz sicher oder zuverlässig sind. Aufgrund der Geschwindigkeit wird die CRC32-Prüfsumme benutzt für Überprüfungen, die regelmäßig (vielleicht täglich) durchgeführt werden. MD5, das umfangreicher ist (und deshalb mehr Ressourcen und Zeit braucht), ist für geplante, periodische Überprüfungen (vielleicht einmal wöchentlich) vorgesehen.

Die Datenbank wird unter Benutzung von DES verschlüsselt. ATP bietet eine flexible (aber recht sichere) Methode für die Überwachung Ihres Netzwerks und für das Aufdecken eventuell vorhandener Trojaner.

Wegweiser:

Sie finden die ATP Distribution und Dokumentation unter ftp://security.dsi.unimi.it/pub/security .

12.6.5 Hobgoblin

Hobgoblin ist eine interessante Implementierung einer Datei- und Systemintegrität-Überprüfungsmethode. Die Autoren des Definitionspapiers (Farmer und Spafford an der Purdue University) geben an, daß das Programm schneller und leichter konfigurierbar ist als COPS und generell detailliertere Informationen sammelt. Was Hobgoblin besonders interessant macht, ist, daß es sowohl eine Sprache als auch ein Interpreter ist. Die Programmierer haben ihre eigenen einzigartigen Deskriptoren und strukturellen Konventionen zur Verfügung gestellt.

Das Paket scheint leicht zu benutzen, aber es gibt einige Fallen. Obwohl Globbing-Konventionen (sowohl von csh als auch von sh/bash) zugelassen sind, benutzt der Hobgoblin-Interpreter bekannte und oftbenutzte Metacharaktäre, die eine besondere Bedeutung haben. Wenn Sie dieses mächtige Tool also in der Praxis anwenden wollen, sollten Sie einige Stunden einplanen, um sich mit diesen Konventionen vertraut zu machen.

Insgesamt ist Hobgoblin ein extrem mächtiges Tool für die Überwachung von Dateisystemen. Allerdings wurde das Programm speziell für Systeme an der University of Rochester geschrieben, und obwohl es erfolgreich auf einer ganzen Reihe von Betriebssystemen kompiliert wurde, kann es Unterschiede in der Performance geben - vor allem wenn Sie keinen Sun3, Sun4 oder VAX mit Ultrix benutzen. Außerdem wurde bemängelt, daß Hobgoblin einige Elemente fehlen, die in anderen Tools zur Überwachung von Systemintegrität enthalten sind, obwohl ich denke, daß entsprechende Tools (und ihre Funktionen) in Hobgoblin integriert werden können.

Wegweiser:

Hobgoblin und seinen Source-Code finden Sie unter http://ftp.su.se/pub/ security/tools/admin/hobgoblin/hobgoblin.shar.gz.

12.6.6 Auf anderen Plattformen

Es gibt Dateiintegrität-Monitoringtools auch für Windows, aber sie sind nicht so mächtig und zuverlässig wie die für andere Plattformen (sie sind auch nicht ausdrücklich für das Überprüfen mehrerer Rechner und Dateisysteme in Netzwerken entwickelt). Die meisten dieser Tools benutzen Prüfsummen als Überprüfungsbasis und sind daher nicht so umfassend wie die Tools, die MD5 benutzen. Die meisten sind zur Benutzung als Virenscanner gedacht. Das ist unglücklich, weil ein Trojaner ebenso leicht für die Microsoft-Plattform geschrieben werden kann wie für jede andere Plattform. Gerade jetzt, da Windows NT als Plattform für Internet-Server benutzt wird, wird es zu einer Hauptzielscheibe für Trojanische Pferde werden.

12.7 Informationsquellen

In diesem Abschnitt finden Sie eine Liste von Informationsquellen zum Thema Objektvergleichstechniken. Ich empfehle jedem Systemadministrator, sich zumindest ein Basiswissen über diese Techniken zuzulegen (und vielleicht sogar die Prozeduren zu implementieren, die darin detailliert dargestellt werden).

»MDx-MAC and Building Fast MACs from Hash Functions«

Bart Preneel und Paul C. van Oorschot. Crypto 95.

ftp://ftp.esat.kuleuven.ac.be/pub/COSIC/preneel/mdxmac_crypto95.ps

»Message Authentication with One-Way Hash Functions«

Gene Tsudik. 1992. IEEE Infocom 1992.

http://www.zurich.ibm.com/Technology/Security/publications/1992/t92.ps.Z

»RFC 1446 - 1.5.1. Message Digest Algorithm«

http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1446.txt

»Answers to Frequently Asked Questions About Today's Cryptography«

Paul Fahn. RSA Laboratories. 1993 RSA Laboratories, eine Abteilung von RSA Data Security.

http://kepler.poly.edu/~jmarca01/cryptography/rsafaq1.html

»The Checksum Home Page«

Macintosh Checksum.

http://www.cerfnet.com/~gpw/Checksum.html

»RFC 1510 - 6. Encryption and Checksum Specifications«

Connected: An Internet Encyclopedia.

http://www.freesoft.org/Connected/RFC/1510/69.html

»RFC 1510 - 6.4.5. RSA MD5 Cryptographic Checksum Using DES
(rsa-md5des)«

http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1510.txt

»A Digital Signature Based on a Conventional Encryption Function«

Ralph C. Merkle. Crypto 87, LNCS, pp. 369-378, SV, August 1987.

»An Efficient Identification Scheme Based on Permuted Kernels«

Adi Shamir. Crypto 89, LNCS, pp. 606-609, SV, August 1989.

»An Introduction to Digest Algorithms«

Proceedings of the Digital Equipment Computer Users Society, Australien, Ross N. Williams. September 1994.

ftp://ftp.rocksoft.com/clients/rocksoft/papers/digest10.ps

»Data Integrity with Veracity«

Ross N. Williams.

ftp://ftp.rocksoft.com/clients/rocksoft/papers/vercty10.ps

»Trusted Distribution of Software over the Internet«

Aviel D. Rubin. (Bellcore's Trusted Software Integrity (Betsi) System). 1994.

ftp://ftp.cert.dfn.de/pub/docs/betsi/Betsi.ps

»International Conference on the Theory and Applications of Cryptology«

1994 Wollongong, N.S.W. Advances in Cryptology, ASIACRYPT 28. November - 1. December 1994. (Protokolle) Berlin & New York. Springer, 1995.

Managing Data Protection (Second Edition)

Dr. Chris Pounder und Freddy Kosten, Butterworth-Heineman Limited, 1992.

»Some Technical Notes on S/Key, PGP«

Adam Shostack.

http://www.homeport.org/~adam/skey-tech-2.html

»Description of a New Variable-Length Key, 64-Bit Block Cipher« (Blowfish)

Bruce Schneier. Counterpane Systems.

http://www.program.com/source/crypto/blowfish.txt

12.8 Zusammenfassung

Trojanische Pferde sind ein bedeutendes Sicherheitsrisiko für jedes Netzwerk. Da PC- basierte Server sich im Internet immer weiter verbreiten, müssen Entwickler Utilities (zusätzlich zu den schon vorhandenen Anti-Viren-Utilities) entwerfen, die Trojanische Pferde aufdecken können.



vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisKapitelanfangnächstes Kapitel


1

Gene H. Kim und Eugene H. Spafford, The Design and Implementation of Tripwire: A File System Integrity Checker. COAST Laboratory, Department of Computer Science, Purdue University. 23. Februar 1995.

Markt+Technik, ein Imprint der Pearson Education Deutschland GmbH.

Elektronische Fassung des Titels: hacker's guide, ISBN: 3-8272-5460-4