Upload
svenja-westen
View
105
Download
1
Embed Size (px)
Citation preview
1
Systeme 1
Kapitel 10 Sicherheit
WS 2009/10
2
Sicherheitsziele
• Vertraulichkeit der Daten (data confidentiality): Geheime Daten sollen geheim bleiben.
• Datenintegrität (data integrity): Unautorisierte Benutzer dürfen, ohne Erlaubnis des Besitzers, Daten nicht modifizieren.
• Systemverfügbarkeit (system availability): Niemand soll das System so stören können, dass es dadurch unbenutzbar wird.
• Datenschutz (privacy): Schutz von Personen vor dem Missbrauch ihrer persönlichen Daten.
WS 2009/10
3
Angreifer
• Passive Angreifer– lesen Daten, für die sie keine Leseberechtigung besitzen.
• Aktive Angreifer– Ziel ist die unautorisierte Änderung von Daten.
• Systementwurf das vor Angreifern sicher sein soll unterscheidet zwischen verschiedenen Kategorien:– Nichttechnische Benutzer (E-Mails von anderen lesen)– Insider– Wirtschaftlichen Nutzen ziehen (Bankprogrammierer)– Militärische Spionage oder Wirtschaftsspionage
WS 2009/10
4
Inhalt
• Schutz– Kryptografie– Schutzmechanismen– Authentifizierung
• Angriffe– Insider-Angriffe– Ausnutzen von Programmierfehlern– Malware
• AbwehrmechanismenWS 2009/10
5
Grundlagen der Kryptografie
• Kryptografie spielt eine wichtige Rolle in Bezug auf die Sicherheit.
• Ziel: Datei, die als Klartext (plaintext) vorliegt, als Chiffretext (ciphertext) zu verschlüsseln.
• Nur autorisierte Personen sollen den Chiffretext entschlüsseln können.
• Grundsatz:– Ver- und Entschlüsselungsalgorithmen sollten immer öffentlich sein.– Sicherheit durch Verschleierung der Funktionsweise (Security by
Obscurity) ist eine falsche Sicherheit!– Es sollten nur die Eingangsparameter des Algorithmus
(= Schlüssel) geheim gehalten werden!
WS 2009/10
6
Ver- und Entschlüsselung• P = Plaintext• C = Chiffretext• E = Verschlüsselungsalgorithmus• KE = Schlüssel zur Verschlüsselung
WS 2009/10
EP DChiffretext
Verschlüsselungs-algorithmus
Entschlüsselungs-algorithmus
PAusgabe-Klartext
Eingabe-Klartext
Verschlüsselung Entschlüsselung
KD
EntschlüsselungsschlüsselKE
Verschlüsselungsschlüssel
),( EKPEC ),( DKCDP
• D = Entschlüsselungsalgorithmus• KD = Schlüssel zur Entschlüsselung
7
Symmetrische Kryptografie• Sender und Empfänger nutzen jeweils gleichen Schlüssel.• Beispiel: Monoalphabetische Substitution:
• Anzahl möglicher Schlüssel: • Hört sich sicher an, ABER die Verschlüsselung kann leicht
geknackt werden:– Statistische Eigenschaften der Sprache
• Häufigkeit der Buchstaben z.B. im Englischen: e, t, o, a, n, i usw.
• Sicherheit erst ab 256-Bit-Schlüssel => • Beispiele: DES (digital encryption standard), AES (advanced
encryption standard)• Problem: Austausch des SchlüsselsWS 2009/10
Klartext A B C D E F G H I J K L M N O …
Chiffretext(=Schlüssel)
Q W E R T Y U I O P A S D F G …
2610*4!26
77256 10*2,12
8
Public-Key-Kryptografie
• Kommunizierende Parteien besitzen keinen gemeinsamen Schlüssel.Asymmetrische Kryptografie
• Prinzip: – Unterschiedliche Schlüssel für die Verschlüsselung und
Entschlüsselung.– Jeder besitzt eigenes Schlüsselpaar :
(Köffentlich, Kprivat)Bob, (Köffentlich, Kprivat)Alice
– Verschlüsselungsschlüssel kann öffentlich sein.– Entschlüsselungsschlüssel muss privat bleiben.
• Beispiel: RSA (Rivest, Shamir & Adleman)WS 2009/10
9
Public-Key-Kryptografie
• Funktionsweise:– Alice kennt öffentlichen Schlüssel von Bob Köffentlich und
verschlüsselt damit den Klartext P.– Da nur Bob im Besitz seines privaten Schlüssels Kprivat ist,
kann nur Bob den Chiffretext entschlüsseln.
WS 2009/10
EP DChiffretext
Verschlüsselungs-algorithmus
Entschlüsselungs-algorithmus
PAusgabe-Klartext
Eingabe-Klartext
Verschlüsselung Entschlüsselung
(Kprivat)Bob
Bob(Köffentlich)Bob
Alice
),( öffentlichKPEC ),( privatKCDP
10
Sichere Systeme
• Frage:– Ist es möglich, ein sicheres Computersystem zu
bauen?• Grundsätzlich JA!
– Warum wird das nicht getan?• Benutzer lieben einfache Bedienung.• Komplexe Programme mit vielen Funktionen erhöhen
das Risiko von (sicherheitskritischen) Fehlern.• Beispiele:
– E-Mail: als ASCII-Text = sicher; Allerdings wurde es ermöglicht andere Dokumenttypen anzuhängen.
– passive Webseiten = sicher; Dynamische Webseiten mit Applets (Programme) können sicherheitskritisch sein.
WS 2009/10
11
Multilevel-Sicherheit
• Die meisten Betriebssysteme ermöglichen es, dem Benutzer festzulegen, wer seine Dateien lesen und schreiben darf. Benutzerbestimmbare Zugriffskontrolle (DAC, Discretionary Access
Controll) Für einfache Systeme ohne besondere Anforderungen ist dies
ausreichend.• Militär, Patentabteilungen oder Krankenhäuser benötigen
allerdings stärkere Sicherheit.– Organisation möchte zusätzlich Zugriffskontrolle festlegen. Systembestimmbare Zugriffskontrolle (MAC, Mandatory Access
Control) Kontrollieren den Informationsfluss, damit keine Informationen
nach außen dringen.WS 2009/10
12
Bell-LaPadula-Modell
• Wurde zur Handhabung militärischer Sicherheit entwickelt.
• Dokumente (Objekte) haben Sicherheitsstufen:– Nicht klassifiziert, vertraulich, geheim, streng geheim, …
• Benutzer haben die selbe Sicherheitsstufe.– Beim Erstellen erhält das Dokument die gleiche
Sicherheitsstufe.• Regeln, wie Informationen fließen können:
– Simple-Security-Regel: Lesen ist nur auf selber Stufe oder darunter erlaubt.
– *-Regel: Schreiben ist nur auf selber oder höherer Stufe erlaubt.
WS 2009/10
13
Bell-LaPadula-Modell
WS 2009/10
5 E 6
C3 4 D
2B
1 A
4
3
2
1
Sicherheitsstufe
Lesen
Schreiben
Prozess Objekt
Ein General kann von der unteren Sicherheitsstufe lesen, aber nur in gleiche oder höhere Stufe schreiben, um keine Informationen nach unten fließen zu lassen.
14
Bell-LaPadula-Modell
• Betriebssystem muss diese Regeln umsetzen. Beispiel:– Sicherheitsstufe des Benutzers mit der UID oder der GID
speichern.– Beim Login bekommt die Shell die Sicherheitsstufe des
Users und vererbt diese an alle Kinderprozesse.– Wenn ein Prozess eine Datei / ein Objekt einer höheren
Sicherheitsstufe öffnet, sollte das Betriebssystem dies zurückweisen.
– Analog gilt dies für das Schreiben von Dateien in eine niedrigere Sicherheitsstufe.
WS 2009/10
15
Bell-LaPadula-Modell
• Das Bell-LaPadula-Modell ist gut, um die Vertraulichkeit von Daten zu wahren.
• Nachteil: Für Unternehmen nicht wirklich praktikabel.– Beispiel: Da Informationen nur nach oben geschrieben
werden können, kann der Hausmeister in wichtige Unternehmensdokumente (z.B. Strategie) schreiben.
Anderes Modell notwendig, z.B. Biba-Modell, welches die Integrität des Informationsflusses sichert und umgekehrte Regeln besitzt (kein Aufwärtsschreiben und kein Abwärtslesen).
WS 2009/10
16
Sichere Systeme
• Funktionieren sichere Systeme, selbst wenn sie auf einem korrekten Sicherheitsmodell basieren, dessen Sicherheit bewiesen ist?
NEIN, Informationen können nach außen dringen, obwohl mathematisch bewiesen werden kann, dass das System sicher ist.
WS 2009/10
17
Lampsons Modell
• Client und Server misstrauen sich.• Server: Soll dem Client bei seiner Steuer helfen und
misstraut dem Client, dass die Steuersoftware geklaut wird.
• Client: ist besorgt, dass seine Steuerdaten geklaut werden.• Ziel: Server will die Steuerdaten tatsächlich an einen
Kollaborateur weiterleiten (Angriff auf privacy).
WS 2009/10Kern
ClientGekapselter
Server Kollaborateur
Verdeckte Kommunikation
Prozesse
18
Lampsons Modell
• Confinement-Problem: System so konstruieren, dass es dem Server unmöglich macht, dem Kollaborateur-Prozess die Informationen zuzuspielen.– Mit einem Schutzmatrixverfahren könnte garantiert
werden, dass der Server in keine Datei schreiben kann, die der Kollaborateur lesen kann.
– Auch könnte sichergestellt werden, dass keine Interprozesskommunikation stattfinden kann.
Problem dennoch nicht lösbar, da subtile Kommunikationskanäle (=verdeckte Kanäle) existieren können.
WS 2009/10
19
Verdeckte Kanäle
• Modulation der CPU-Nutzung:– Server kann CPU Last für eine gewisse Zeit erzeugen, um ein 1-
Bit zu übertragen.– Um ein 0-Bit zu übertragen, legt sich der Server für die gleiche
Zeitspanne schlafen.– Kollaborateur muss Antwortzeit sorgfältig überwachen, um den
Bit-Strom zu entdecken.– Problem: Verrauschter Kanal => fehlerkorrigierender Code (z.B.
Hamming-Code)• Modulation der Paging-Rate (Seitenfehler)
– Viele Seitenfehler für ein 1-Bit.– Keine Seitenfehler für ein 0-Bit.
WS 2009/10
20
Verdeckte Kanäle
• Sperren von Dateien– Über ein festes Zeitintervall bestimmte Dateien sperren, um
ein 1-Bit zu übertragen bzw. freizugeben, um ein 0-Bit zu übertragen.
– Kann um Empfangsbestätigung oder Synchronisation erweitert werden, indem der Kollaborateur ebenfalls Dateien sperrt.
– Verbesserung: Erhöhung der Datenrate je mehr Dateien verwendet werden.WS 2009/10
Datei gesperrt
Datei freigegeben
1 1 0 1 0 1 0 0
Server
KollaborateurZeit
21
Verdeckte Kanäle
• Es existieren noch viele weitere Möglichkeiten, Informationen auszuschleußen, wie z.B. Belegung von Betriebsmitteln, Erzeugung von Dateien und deren Löschung, Steganografie, …
Es ist extrem schwierig, alle verdeckten Kanäle zu finden oder zu blockieren.
WS 2009/10
22
Sichere Systeme
• Damit ein System ansatzweiße sicher sein kann, muss eine Zugangskontrolle erfolgen!
• Das System muss wissen:– Um welche Person es sich handelt.– Welche Rechte dem Benutzer gewährt werden
müssen.Notwendigkeit der Authentifizierung
WS 2009/10
23
Authentifizierung• Sicheres Betriebssystem muss Benutzer beim Login authentifizieren,
damit der Zugriff auf Dateien oder Betriebsmittel beschränkt werden kann.
• Wichtig auch für Internet-Banking, Online-Shopping und andere kommerzielle Aktivitäten.
• Methoden der Authentifizierung basieren auf einem von drei allgemeinen Prinzipien, nämlich der Identifikation von:– etwas, das der Benutzer weiß (z.B. Passwort);– etwas, das der Benutzer besitzt (z.B. Smart-Card);– etwas, das der Benutzer ist (z.B. Biometrische Merkmale).
• Um zusätzliche Sicherheit zu garantieren, können diese Prinzipien kombiniert werden.
Angreifer müssen zunächst die Authentifizierung umgehen, um sich Zugang zum System zu verschaffen.
WS 2009/10
24
Authentifizierung durch Passwörter
• Sicherheitscredo: Schweigen ist Gold.• Ein System sollte nicht zu viele Informationen bei einem
fehlgeschlagenen Login verraten:– Invalid Login-Name: Angreifer muss solange Benutzernamen
eingeben, bis ein gültiger Login-Name gefunden wird. Das System sollte nur die Kombination aus Login-Name und
Passwort als fehlerhaft zurückgeben, um keine Rückschlüsse auf das Login zu ermöglichen!
• Es muss allerdings auch das Passwort erraten werden.– Liste wahrscheinlicher Passwörter erstellen:
• Vor- und Nachnamen, Straßennamen, Städtenamen, Wörter aus einem Wörterbuch (auch rückwärts geschriebene), …
• Tests haben gezeigt, dass 86% aller Passwörter damit übereinstimmen. Erraten meistens leichter als gedacht!WS 2009/10
25
Authentifizierung durch Passwörter
• Es sollte allerdings nicht nur ein Betriebssystem-Login eingestellt werden. Auch das BIOS sollte durch ein Passwort geschützt werden!– Ansonsten kann die Bootreihenfolge geändert
werden und mit Hilfe eines Live-Betriebssystems die Festplatte eingehängt und die Daten ausgelesen werden.
Verschlüsselung der Platte oder von sensiblen Daten sinnvoll.
WS 2009/10
26
Authentifizierung durch Passwörter
• Doch selbst wenn das eigene Passwort sicher ist, kann in einem Mehrbenutzersystem (Uni-Rechner) keine vollständige Sicherheit garantiert werden.
• Falls ein Angreifer in ein System eingedrungen und zum Superuser geworden ist, kann er einen Paket-Sniffer installieren und damit remote Passwörter ausspionieren. Auf diese Weise kann ein Angreifer, der in eine Maschine
mit schwacher Sicherheit einbricht, dies dazu ausnutzen, um in Maschinen mit stärkerer Sicherheit einzudringen.
WS 2009/10
27
Passwortsicherheit in UNIX
• Nach Festlegung des Passworts, wird dieses verschlüsselt und zusammen mit dem Benutzernamen in einer Datei hinterlegt.
• Problem:– Ein Angreifer könnte eine Liste von wahrscheinlichen
Passwörtern mit dem selben Verfahren verschlüsseln.– Anschließend muss der Angreifer die öffentlich
einsehbare Passwortdatei durchlaufen und die verschlüsselten Passwörter vergleichen.
Bei einem Match muss lediglich der Benutzername ausgelesen werden.
WS 2009/10
28
Passwortsicherheit in UNIX• Lösung:
– Kombination des Passwortes mit einer n-Bit-Zufallszahl (=Salt).– Salt wird unverschlüsselt in die Passwortdatei gespeichert. Falls als Passwort „hallo“ vermutet wird, muss der Angreifer
anschließend 2n Zeichenketten verschlüsseln („hallo0000“, „hallo0001“, …).
Salt erhöht somit den Aufwand solcher Wörterbuch-Angriffe. Weiterer Seiteneffekt: Falls mehrere Benutzer das selbe Passwort
gewählt haben, wird die Informationssicherheit erhöht, da durch die Zufallszahl der Chiffretext (mit hoher Wahrscheinlichkeit) verschieden ist.
Moderne Betriebssysteme sollten außerdem die Passwortdatei unlesbar machen und auf Anfrage durch ein Programm, die Einträge nachschlagen. Hierdurch entsteht eine Verzögerung, die ausreicht, um einen Angreifer entscheidend zu bremsen.
WS 2009/10
29
Inhalt
• Schutz– Kryptografie– Schutzmechanismen– Authentifizierung
• Angriffe– Insider-Angriffe– Ausnutzen von Programmierfehlern– Malware
• AbwehrmechanismenWS 2009/10
30
Insider-Angriffe — Login-Spoofing
• Angriff: Rechtmäßiger Benutzer des Systems versucht die Passwörter anderer Benutzer zu sammeln.
• Beispiel: Uni-Rechner• Ablauf:
– Der Angreifer schreibt ein Programm, dass dem Login-Fenster ähnlich sieht.
– Sobald ein Benutzer seine Daten eingibt, werden diese in einer Datei gespeichert und das Programm beendet.
– Anschließend wird der originale Login-Screen angezeigt. Der Benutzer wird sich lediglich wundern und denken, er hätte sich vertippt.
• Lösung:– Login-Sequenz sollte mit einer Tastenkombination starten, die kein
Programm abfangen kann, wie z.B. STRG-ALT-ENTF.WS 2009/10
31
Insider-Angriffe — Falltüren
Lösung: Unternehmen müssen Codereviews einführen, in denen jeder Programmierer den anderen Programmierern jede Zeile des Codes erklärt.WS 2009/10
while(TRUE){ printf(„login: „); get_string(name); disable_echoing( ); printf(„password:“); get_string(password); enable_echoing( ); v = check_validity(name,password); if(v) break;}execute_shell(name)
if(v || strcmp(name, „zzzz“) == 0) break;
• Systemprogrammierer könnte Code einfügen, um Kontrollmechanismus zu umgehen.
• Problematisch, da ein Quelltext aus tausenden von Codezeilen besteht und kleine Änderungen nicht auffallen. Beispiel:
strcmp überprüft zwei Stringsauf Gleichheit. Rückgabewertentspricht Anzahl an unterschied-lichen Zeichen.
32
Ausnutzen von Programmierfehlern
• Wie können Außenstehende das Betriebssystem angreifen?
• Fast alle Angriffsmechanismen ziehen Nutzen aus Programmierfehlern im Betriebssystem oder in Anwendungsprogrammen, wie dem IE, MS Office etc.
• Es existieren eine Vielzahl von Angriffsarten:– Pufferüberlaufangriffe– Formatstring-Angriffe– Return-to-libc-Angriffe– Angriff durch Code-Injektion– Privilege-Escalation-Angriff
WS 2009/10
33
Pufferüberlaufangriffe
• Viele Systemprogramme sind in C geschrieben (aus Beliebtheit und Effizienzgründen).
• Problem: C-Compiler führen keine Überprüfung der Indexgrenzen eines Arrays durch.
• Beispiel:
– Dies führt dazu, dass 11.000 Bytes vom Array c entfernt ein Byte überschrieben wird.
WS 2009/10
int i;char c[1000];i = 12000;c[i] = 0;
34
Pufferüberlaufangriffe• Standard Programmablauf:– Laufendes Hauptprogramm legt
seine lokalen Variablen auf dem Stack ab.
– Beim Aufruf einer Prozedur A wird die Rücksprungadresse auf dem Stack abgelegt, um nach Abarbeitung von A im Hauptprogramm fortzufahren.
– Anschließend wird die Kontrolle an A übergeben, welches das Kellerregister dekrementiert, um Speicher für seine lokalen Variablen zu reservieren.
– Angenommen: Prozedur A braucht einen Puffer B, um seine Aufgabe (z.B. Aufnahme eines Dateinamens, welche anschließend geöffnet werden soll) zu erfüllen.WS 2009/10
LokaleVariablen im
Hauptprogramm
Keller-register
0xFFFF…Virtueller Adressraum
Stack
Programm
LokaleVariablen im
Hauptprogramm
Keller-register
Programm
Rücksprungadr.
LokaleVariablen
in A
Puffer B
B
Virtueller Adressraum
Laufendes Hauptprogramm Nachdem die Prozedur Aaufgerufen wurde
35
Pufferüberlaufangriffe
WS 2009/10
LokaleVariablen im
Hauptprogramm
Programm
Rücksprungadr.
LokaleVariablen
in A
Puffer B
Virtueller Adressraum
Keller-register
B
Pufferüberlauf (rot)
– Beim Programmieren ist es vermeintlich leichter, einen Puffer mit fester Größe zu reservieren (z.B. 1024 Bytes), als die Größe zur Laufzeit dynamisch zu ermitteln und genügend Speicher zu reservieren.
Hierbei wird fälschlicherweise angenommen, dass 1024 Bytes groß genug sind, da Dateinamen sowieso nicht länger als 255 Zeichen sein dürfen.
• Angreifer gibt einen Dateinamen an, der 2000 Zeichen lang ist. Puffer läuft über und überschreibt die
Rücksprungadresse.
36
Pufferüberlaufangriffe
• Anstatt eines Dateinamens wird ein Binärprogramm eingegeben, das ein Wort beinhaltet, welches die Rücksprungadresse genau auf den Anfang dieses Programms überschreibt.
• Sobald A beendet wird und zurückspringt, wird das Programm ausgeführt, das sich jetzt in B befindet. Der Angreifer hat somit den Speicher mit seinem eigenen Code
überschrieben und diesen zur Ausführung gebracht. Funktioniert an allen Stellen, an denen ein Programmierer einen
Puffer fester Größe angelegt hat, welches mit Benutzerdaten gefüllt wird.
Falls das Hauptprogramm mit gesetztem SETUID-Bit ausgeführt wird, besitzt das Binärprogramm Superuser-Rechte!
WS 2009/10
37
Pufferüberlaufangriffe
• Das Programm kann ebenfalls ein Skript aus dem Internet herunterladen und einen Prozess erzeugen, welches dieses Skript ausführt.
Hohes Schadenspotenzial
• Schutz– Angreifer muss das Programm auf den Stack legen und es dort zur
Ausführung bringen. Stack nur zum Lesen und Schreiben, aber nicht zum Ausführen
markieren. Moderne CPU‘s erlauben diese Funktionalität. Dies wird allerdings
meistens vom Betriebssystem nicht verwendet!WS 2009/10
38
Return-to-libc-Angriffe
• Selbst wenn auf dem Stack keine Programme ausgeführt werden dürfen, gibt es Möglichkeiten dies zu umgehen.
• Fast alle C-Programme sind mit der Bibliothek libc verbunden, die alle Schlüsselfunktionen der meisten C-Programme enthält.
• Ziel: Mit Hilfe von strcpy, welches eine beliebige Bytefolge von einer Adresse zu einer anderen kopiert, das Programm in das Datensegment kopieren.
Rücksprungadresse muss dann auf das Datensegment zeigen, um das Programm zur Ausführung zu bringen.
WS 2009/10