/ itsummaries

[GER] Security

Einleitung

Angriffe

Passiv: Zugriff auf vertrauliche Informationen: Abhören von Leitungen, Lesen von geheimen Daten

Aktiv: Modifikation von Datenobjekt/Systemressourcen: Denial-of-Service, Verändern von IP-Paketen

  1. Angriffsziel festlegen und Informationen sammeln
  2. Erstzugriff durch Ausnutzen von Schwachstellen
  3. Ausbau der Zugriffsberechtigungen
  4. Spuren verwischen
  5. Hintertür offen lassen

Buffer Overflows

  • Buffer Overflows sind häufige Ursache für Verwundbarkeit und Sicherheitslücken.
  • Erster Angriff tauchte bereits 1998 auf.
  • Anwendungs- und Systemprogrammierer sind verantwortlich für das Auftreten solcher Schwachstellen
Was Passiert ?
  • Der Puffer ist zu klein und die Daten werden in die nachfolgenden Speicherfelder geschrieben
  • Variablen werden mit unsinnigen Werten überschreiben
  • Die Rücksprungadresse einer Funktion stimmt nicht mehr
Wie ausnutzen ?
  • Meist ist das Ziel das Einschleusen von Code
  • Beim Von-Neumann-Rechner liegen Code und Daten im selben Speicher
  • zB. wird die Rücksprungadresse einer Funktion gezielt geändert
  • Die Eingabe einer Zeichenkette kann genügen
  • Die Sicherheitslücke wird als "Exploit" bezeichnet
Speicherverwaltung

Code-Segment: Enthält die Maschinenbefehle

Heap-Segment: Wird für dynamische Speicherallokation genutzt (zB. malloc())

Stack-Segment: Zwischenspeicher für lokale Variablen und Prozessorregister

  • C Programme legen Übergabeparameter einer Funktion, die Rücksprungadresse und lokale Variablen auf den Stack
  • Datenbereich einer Funktion wird als Stackframe bezeichnet
  • Auf dem Stack können (zb. bei verschachtelten Funktionon) mehrere Stackframes liegen
Manipulation des Stacksegmentes
  • Benutzereingaben lokaler Variablen können den EIP (Instruction Pointer) manipulieren und somit entscheiden was als nächstes ausgeführt wird
  • Die Position des EIPs im Stack und die Länge der Eingabe lässt sich durch disassembles oder debugging rausfinden
  • Exploit-Programme erzeugen die passende Eingabe automatisch
  • Normalerweise soll nicht an eine andere Stelle im Programm gesprungen werden, sondern eigener Code ausgeführt werden : "Payload"
  • Eigener Code kann im Stackframe der Funktion abgelegt werden und über die Eingabe eingeschleust werden

Probleme:

  1. Wie lässt sich die Rücksprungadresse bestimmen ?
    • NOPs als "Landing-Pad" einfügen, liegt in der Nähe des Stackanfangs
  2. Sonderzeichen müssen versteckt werden
    • Kodieren über XOR, dekodieren über Assembler-Befehle
  3. Aufruf von Funktionen und Adressierung von Eingabedaten
    • Verwenden von relativen Adressen
    • Funktionen können über Software-Interrupts gestartet werden (zB. execve zum starten der Shell)

Gegenmaßnahmen

  • Sicherheitsbewusste Programmierung
  • Tools die das Überschreiben der Rücksprungadresse verhindern (zB. StackGuard, StackShield, libsafe)

XSS : Cross Site Scripting

Hintergrund

Ähnliche Angriffsmöglichkeiten:

  • XFS Cross Frame Scriptiong
  • CSRF Cross Site Request Forgery
  • Cross Site Tracing
  • Cross Site Cooking

Besonders Kombinationen aus Client- und Serverschwachstellen sind gefährlich !

Funktionsweise

XSS ist eine Art HTML-Injection. Es tritt auf, wenn eine Webanwendung Benutzereingaben annimmt und diese ohne Prüfung and den Browser weiterleitet.
Beispiel: Eingabeformular einer Website

Oft werden manipulierte Hyperlinks und Cookies genutzt.

Besondere Risiken
  • Für den Browser wirkt die Eingabe (zB. schädliches Javascript) vertrauenswürdig
  • Gespeicherte Passwörter sind oft bereits im Browser hinterlegt
  • Meist jedoch gehasht (zB MD5). Daher müssen diese erst noch entschlüsselt werden.

Hierbei sind Tools und Programme zum Knacken dieser Passwörter nicht zwangsläufig illegal. (Oft als "Sport" betrieben, oder um schwache Passwörter zu ermitteln und eliminieren)

Bekannte Arten
  1. Reflected (Non-Persistent): Link in externer Website oder email
    • zB. Skripttag in link
  2. Stored (Persistent): Forum, Blog, Bulletin Board, feedback form
    • Schadhafter Code wird zB. von Blog geladen
  3. Lokal: PDF Adobe Reader, FLASH Player
    • zB. Email mit javascript, welches allerdings zB. von FLASH-Player ausgeführt wird

Zombies und Botnets

  • Übernimmt einen Rechner, ohne das dieser es bemerkt.
  • Rechner werden in Netze integriert und arbeiten zB an DDoS, phishing, spamming, cracking

Ein Botnetz hat eine peer-to-peer Struktur, Zombienetze einen Master.

Sicherheitsstrategien

  • Systemverhalten (Speicherbereinigung, Beweissicherung, Rechteprüfung)
  • Zugriffsrechte
  • Administrationsrollen
  • Benutzerverhalt/Passwortrichtlinien
  • Einsatz von Software (Virenscanner, Firewalls, Verschlüsselung)
  • Absicherung von Räumen
  • Datensicherungsmaßnahmen

Biometrie

Macht scheinbar vieles einfacher. In der Praxis oft einfach zu täuschen.
Play-Doh täuschte lange Zeit 90% aller Fingerabruckscanner

TLS/SSL Transport Layer Security

TLS / SSL implementiert ein 2-Phase Protokoll

  1. Handshake-Protokall - mittels Zertifikation wird ein asymmetrischer Session-Key generiert
  2. Im Record-Protokoll wird für eine begrenzte Zeit ein symmetrischer Schlüssel genutzt

Online-Banking

2-Faktor-Authentifikation

Durch einen zusätzlichen einmaligen Sicherheitscode wird die Sicherheit stark erhöht.
Dabei ist das mTAN (mobile-TAN) Verfahren bei Smartphones i.A. nicht zu empfehlen, da diese selbst zu unsicher sind.