IT-Sicherheit

  • aktive vs. passive Sicherheit
    • aktive Sicherheit: versuchen zu verhindern
    • passive Sicherheit: Folgen / Schaden minimieren
  • stets Kosten/Nutzen-basiert; Maßnahme im Vergleich zu parallelen Lücken
  • Security by Obscurity: Sicherheit dadurch, dass jemand/Angreifer etwas nicht weiß.
  • Kerckhoff (zu Verschlüsselung): Verfahren darf bekannt sein, nur Schlüssel nicht.
  • Annahmen: Angreifer hat unbegrenztes Wissen, Zeit und Geld (->HW, SW)
    • →Ziel: möglichst viel davon ist notwendig
  • Faktor Mensch; menschliche Fehler
  • Social Engineering: Personen reinlegen („Ich bin von der IT, geben Sie mir doch mal das Passwort für…“)
  • Es gibt immer Fehler in der SW -> Frage: wie groß deren Auswirkungen
    • =>Mehr SW nicht unbedingt besser
    • →prüfen wie sinnvoll zusätzliche SW ist & keine unnötige verwenden
  • SW-Qualität -> höhere Sicherheit
  • wenige die absichern – (unbegrenzt) viele die Angreifen
    • 1 funktionierende Implementierung finden – 1 Weg damit nicht mehr funktioniert finden
    • Angreifer hat neue Perspektive -> Unerwartetes
  • Verifikation/Falsifikation: Sicherheit nicht beweisbar, -> best effort; man weiß es zu dem Zeitpunkt nicht besser
  • Angreifer-Ziel: Code-Ausführung
  • Begriffe:
    • Informationssicherheit: Fokus auf Daten
      • Vertraulichkeit, Integrität (und damit auch Authentizität), Verfügbarkeit
      • IT-Sicherheit: Fokus auf Systeme
        • Verfügbarkeit, Integrität
      • Datenschutz: Fokus auf personenbezogene Daten
        • Vertraulichkeit
  • Wo kommen Probleme her?
    • zu viel Vertrauen gegenüber Daten-Quelle (keine Eingaben-Validierung/-escapen)
      • SQL-Injection
      • XSS: Cross-Site-Scripting
        • nicht persistent: z.B. Präparierter URL-Parameter, nur Person die Link öffnet bekommt XSS-Seite
        • persistent: XSS-Code wird persistiert und damit an weitere Besucher ausgeliefert
    • Pufferüberlauf
    • Viren
    • mangelnde (SW-)Aktualität
    • mangelnde (SW-)Qualität: meist durch Druck wegen time-to-market, Budget, Fokus und Funktion wo anders
    • Faktor Mensch: Nachlässigkeit, mangelndes Wissen/Bewusstsein, Vertrauen
    • mehr Angriffsfläche als notwendig: Berechtigungen, Funktionen
    • Verwendung eigener statt etablierter Algorithmen: (bei Verschlüsselung/Verschleierung, Erzeugen von Zufallszahlen)
    • Verlassen auf eine einzige Maßnahme
    • fehlende Trennung von Daten & Code
      • Harvard-Architektur: getrennt im Speicher
      • Von-Neumann: Nicht getrennt im Speicher
  • Wo kommt Sicherheit her?
    • Maßnahmen
      • aktive Sicherheit
        • etablierte, technische Standardlösungen
          • Paketfilter Firewall
            • Firewall teilt Netzwerk in Bereiche; schafft kontrollierte übergänge über Regelsätze
            • filtert auf Schicht 3 (4-Schichten Modell)
              • d.h. anhand von Header Daten: Quell-IP, Quell-Port, Ziel-IP, Ziel-Port, Protokoll (z.B. TCP), Flags (bei TCP z.B. SYN, ACK, RST, FIN)
            • stateful Paketfilter: merkt sich Verbindungsstati -> d.h. keine Antwortregeln („Rückweg”) notwendig und keine Angriffe mit „falschem“ Verbindungsaufbau möglich
            • Whitelist / Blacklist: 1 Regel vergessen bei Whitelist nicht schädlich und bei Fehlfunktion bemerkbar ->sicher, bei Blacklist Lücke -> nicht sicher
          • Web-Application Firewall
            • arbeitet auf Schicht 4 (4 Schichten-Modell)
            • Header: Cookies, MIME-Typen
            • Inhalt (=>Filtern, Verändern)
            • HTTP-Methode
            • URL (Pfad, Query-String)
            • ->wesentlich komplexer als Paketfilter-FW
            • ->sehr enge Abstimmung mit Applikation(en) notwendig -> Wartungsaufwand
            • =>als Ergänzung zu Paketfilter-FW
          • DMZ: Demilitarisierte Zone
          • VPN
            • Road-Warrior
            • Site2Site-Kopplung: Verbindung mehrerer Netzwerke über ungesichertes Netz
          • Virenscanner
            • signaturbasiert: Bitmuster-Abbild aus Speicher -> Signatur-Erstellung => Bei Prüfung Vergleich mit bekannten Signaturen
            • Anomalieerkennung
          • IDS/IPS; Intrusion Detection/Prevention System
          • physikalische Sicherheit
          • programmiertechnisch
            • Parametervalidierung
            • Prepared Statements
          • Patches/Updates
          • Stackentkopplung (Proxy, …)
          • Mehrherstellerstrategie: bei seriell verwendeter SW/HW mit gleicher Aufgabe von verschiedenen Herstellern -> Change das selben Fehler geringer
          • Authentifikation
            • Wissen: Password, Code/PIN
            • Besitz: Zertifikate, Schlüssel, Reisepass, (Bestechung)
            • unablegbare Eigenschaften: Fingerabdruck (unsicher, wird überall hinterlassen, fälschbar), (über Vertrauen), Iris-/Venenscan, Gesichtserkennung
          • W^X (W XOR X)
            • Daten/Code-Markierung im Speicher bei Von-Neumann Architekturen
            • W: Daten, nur beschreibbar
            • X: Code, nur ausführbar
            • gleiche Idee: Verzeichnisstruktur (UNIX Berechtigungen, Web-Server)
      • passive Sicherheit
        • Berechtigungskonzept
        • Härtung: Beschränkung der Fn. auf Minimum; Minimierung der Angriffsfläche
  • Verschlüsselung
    • symmetrische Verschlüsselung
      • „shared secret“
    • asymmetrische Verschlüsselung
      • private Key
      • public Key
      • Verschlüsselung
      • Signierung
      • Randbedingungen: priv. Key nur Besitzer bekannt, pub. Key allen Teilnehmern bekannt (d.h. zuvor gesichert / auf vertrauenswürdigem Weg übertragen)
      • Kann Man-in-the-Middle Kommunikation und public Keys (Erstaustausch) abfangen kann er Sicherheit vorgaukeln
    • hybride Verschlüsselung
      • Austausch shared-secret asymmetrisch, Daten-Verschl. symm.
    • Performance-Optimierung der Signierung: Daten-Checksumme und diese signieren
    • Austausch des öffentlichen Schlüssels
      • Web of Trust
      • Zertifizierungsinstanzen (CA)
    • HTTPS (HTTP + SSL): nur Server hat Schlüsselpaar
      • Client Aktionen
        • bekommt Cert
        • prüft Cert
        • erzeugt shared secret und sendet es verschlüsselt an den Server um symm. verschlüsselt und ohne Client Cert. kommunizieren zu können
      • ->Authentizität des Clients für WebServer nicht sicher
  • Analyse-Tools
    • Sniffer: Netzwerkverkehr/Daten anschauen; Wireshark
    • Portscanner: nmap
    • Applikationsscanner: nessus (auch viele Notices, false positives)
  • Honey-Pot
  • Brute-Force
    • Limit Versuche pro Zeit
    • PWs werden als Hashs gespeichert
    • Rainbow Table: Mapping PW->Hash merken
  • CVSS: Common Vulnerability Scoring System
    • Gefährlichkeit einer Lücke / Wichtigkeit eines Patches
    • Rating 0 bis 10; 0 unwichtig, 10 kritisch, sehr gefährlich
    • aus
      • Basis-Metriken
      • Auswirkungs-Metriken
      • Umgebungs-Metriken
      • zeitabhängige Metriken
  • 0-day Angriff
    • je nach Definition
      • Angriff/Exploit bevor Hersteller davon wusste/Patch veröffentlichen konnte
      • Angriff/Exploit innerhalb ersten Tages nach Patch-Veröffentlichung
  • Full-Disclosure: vollumfängliche Veröffentlichung eines Exploits; -> Druck auf Hersteller
  • Responsible Disclosure
  • False Positive: harmloses fälschlicherweise als Angriff/Exploit erkannt
  • False Negative: Angriff/Exploit nicht erkannt
  • Steganographie: verstecken dass kommuniziert wird
    • Kommunikation in anderer Kommunikation verstecken
    • z.B. unterste Bit-Ebene der Farbwerte in BMP-Bild
  • Zufallszahlen
    • aus Entropie-Pool gespeist -> dieser muss möglichst zufällig sein
  • Trennmechanismen (Netzwerke, Systeme)
    • physikalisch getrennt
    • virtuell getrennt
    • VM-Gefahr: Entropie Pool wird kopiert oder durch Backup-Recovery wieder hergestellt -> Zufälligkeit verloren
  • Linux Sys. Härtung
    • netstat -tulpen
    • Kernel-refuse statt Anwendung auf Ports -> Dienst dem Angreifer nicht bekannt geben
      • /etc/hsots.allow/.deny
    • Zugriff unterbinden
      • Stack/Kernel: bind
      • lokale Firewall
      • TCP-Wrapper (tcpd)
      • Applikation (Konfiguration)
  • Port-Knocking
    • kein bind auf Port
    • Daemon hört Port ab auf Anfragen
      • direkt
      • über iptables log
    • bestimmtes Klopfzeichen -> dienst wird gestartet/Port gebinded
    • DVariation um Nachahmung zu vermeiden