SelfLinux Sicherheit Grundlagen Sicherheit Abschnitt 3 | SelfLinux-0.13.0

| Grundlagen Sicherheit | Autoren Formatierung GFDL

#### 3 Bedrohungen und Schwachstellen

#### 3.1 Einführung Bedrohungen und Schwachstellen

Zu Beginn jedes Sicherheitsprozesses steht die Schwachstellen- und Bedrohungsanalyse. Dies erfordert allerdings genaues Wissen über potentielle Gefahren. Deshalb möchten wir in diesem Kapitel eine Übersicht vermitteln.

#### 3.2 Systemanomalien

Um den Begriff der Systemanomalie beschreiben zu können, muss man sich über zwei Verhaltensweisen klar werden:

1. normales Systemverhalten:
   Alle Systemkomponenten (Hardware + Software) erfüllen die an sie gestellten Erwartungen unter bestimmten Rahmenbedingungen.
2. anormales Systemverhalten:
   Die Abweichung vom normalen Systemverhalten bezeichnet man als anormales Systemverhalten

Schwierig gestaltet sich die Einordnung in eine dieser Kategorien, viele Nutzer können aufgrund ihrer geringen Kenntnisse zu Fehlentscheidungen gelangen. Anormales Systemverhalten ist das sichtbare Resultat von Anomalien. Anders ausgedrückt: Als Anomalien bezeichnet man Veränderungen an Hard- und/oder Software bzw. deren Konfiguration, die durchaus schwere Schäden nach sich ziehen können. Man unterscheidet Systemanomalien erster, zweiter und dritter Art:

Systemanomalien der ersten Art

> Anormales Verhalten kann durch eine Vielzahl an Faktoren hervorgerufen werden. Wenn dieses Verhalten weder beabsichtigt noch spezifiziert oder gar durch gewollte Systemveränderungen hervorgerufen wurde, handelt es sich um Systemanomalien erster Art. Dazu zählen insbesondere Umwelteinflüsse wie Überspannung durch Blitzschlag oder Übertragungsfehler. Zu den Anomalien der ersten Art gehören aber auch menschliche Fehler, die zum Beispiel bei der Programmierung auftreten und durch Angreifer ausgenutzt werden können (z.B. Pufferüberläufe).

Systemanomalien der zweiten Art

> Bei diesen Anomalien wurden Komponenten (Betriebssystemmodule, Softwareklassen, Bibliotheken, Hardwarekomponenten, ...) absichtlich durch zusätzliche, schädliche Funktionen erweitert. Bekannte Vertreter sind Trojanische Pferde, die das Systemverhalten nach den Wünschen des Angreifers manipulieren.

Systemanomalien der dritten Art

> Aus Anomalien zweiter Art entstehen durch die Erweiterung um Funktionen zur Reproduktion Systemanomalien dritter Art. Dazu gehören Bakterien (Ausbreitung begrenzt auf lokales System), Viren und Computerwürmer.

#### 3.3 Viren

Ein Computervirus ist ein Stück Selbstreplizierende Software, die sich jedoch immer in ein ausführbares Wirtsprogramm oder eine Systemkomponente hineinmogelt und auf einem beschreibbaren Medium abgespeichert ist.

Viren stellen für Linux (noch) keine Bedrohung dar. Trotzdem gibt es bereits welche, und nicht nur das, man findet sogar eine Anleitung zum Schreiben von Viren. Bekannteste Vertreter der Linux-Viren sind: Bliss, Staog, Telf, SIILOV.

Gegenmaßnahmen sind einerseits Virenscanner, z.B.

- fprot: http://www.fprot.org/
- AvGate: http://antivir.de
- AMaViS Mail Scanner: http://www.amavis.org/
- InterScan VirusWall von Trendmicro: http://de.trendmicro-europe.com/

und andererseits der Vergleich der Signaturen beim Installieren von Software, welche natürlich ausschließlich von vertrauenswürdigen Stellen stammen darf. Besonders vorsichtig sollte man als Superuser root agieren, aber das versteht sich ja von selbst.

#### 3.4 Würmer

Würmer sind im Gegensatz zu Viren eigenständige Programme, die sich ebenfalls selbst replizieren können. Schon vor mehr als drei Jahrzehnten traten einzelne Exemplare auf Großrechnern auf. Diese wurden liebevoll "Kaninchen" genannt, weil sie sich so schnell vermehrten. Sie reproduzierten sich im Hauptspeicher und stahlen somit anderen Nutzern wertvolle Ressourcen. Sie wurden aber auch für nützliche Zwecke wie dem Einsammeln von Informationen eingesetzt, heute würde man solche Programme dann doch lieber als Vorfahren Mobiler Agenten ansehen.

Einer der bekanntesten Schädlinge war der Morris Wurm (1988), welcher zwischen 2000 und 6000 Internetrechner lahm legte. Das war ein sehr großer Teil des damaligen Internet. Anfällig waren neben BSD-Unix-Systemen auch alle DEC-Rechner und SUN3-Systeme. Computer mit "UNIX System V" als Betriebssystem waren "nur" anfällig, wenn mit Sendmail, fingerd und rexec eine Kompatibilität zu BSD bestand. Der Entwickler des Wurmes, Robert Tappan Morris Jr, wurde zu 10.000 Dollar, 3 Jahren Haft und 400 Stunden gemeinnütziger Arbeit verurteilt. Zusätzlich musste er die 150.000 Dollar Gerichtskosten tragen.

Man sieht, dass Computerwürmer ein wesentlich größeres Gefahrenpotential als Viren darstellen, gerade auch im Hinblick auf breitbandige Internetzugänge im privaten Bereich. Einen gezielten Schutz gegen Würmer gibt es nicht, man sollte versuchen, sein System so sicher wie möglich zu gestalten und kontinuierlich Sicherheitsupdates durchzuführen.

#### 3.5 Trojanische Pferde

Der Begriff des trojanischen Pferdes stammt aus der griechischen Sagenwelt (Odyssee des Homer). Nach der vergeblichen Belagerung der Stadt Troja boten die Griechen ein riesiges hölzernes Pferd als Friedensgeschenk an. Nachdem dieses Holzpferd in die Stadt geschafft worden war, sprangen aus dem Inneren des Pferdes dutzende Soldaten und griffen die Stadt aus dem Hinterhalt an. Nur so gelang es den Griechen die Stadt zu erobern.

Genauso hinterhältig sind trojanische Pferde im Computerbereich. In durchaus nützliche Programme (wie z.B. lsmod) werden schädliche Funktionen eingebaut und durch den getäuschten Benutzer selbst aktiviert. Dabei muss der Schaden nicht gleich im Zerstören von Daten liegen, manchmal wird auch einfach nur die Ausgabe wichtiger Informationen unterdrückt. Einige Trojanische Pferde nisten sich direkt im Kernel ein (als Modul) und könnten mit lsmod sichtbar gemacht werden. Um dies zu verhindern, manipulieren trojanische Pferde das Programm lsmod derart, dass es den Eindringling nicht anzeigt.

Es gibt dutzende Varianten, die hier niemals alle behandelt werden können. Als Schutzmaßnahmen kommen vor allem Einbruchserkennungssysteme zum Einsatz, insbesondere Hostbasierte Intrusion Detection Systeme. Des weiteren sollte man ausschließlich vertrauenswürdige Software installieren und vorher die digitale Signatur (Fingerprint) vergleichen.

#### 3.6 Sniffer

Als Sniffer bezeichnet man ein Programm (oder ein Gerät), welches den Netzwerkverkehr abhört, protokolliert und in einer menschenlesbaren Form ausgibt. Gefährlich sind Sniffer vor allem beim Austausch von unverschlüsselten Nachrichten wie Passwörtern, Kreditkartennummern und vertraulichen Dateien.

Sniffer nutzen den Promiscuous Mode einer Netzwerkschnittstelle und empfangen so alle auf dem Netz übertragenen Daten, egal für wen diese bestimmt sind. Weder Sender noch Empfänger merken etwas von dieser Spionage.

Sicherheitsmaßnahmen: Vertrauliche Daten wie Kennwörter oder Kreditkartennummern sollten stets über verschlüsselte Verbindungen übertragen werden (https, ssh). Durch sichere Netzwerktopologien (z.B. durch Trennung der Netzwerksegmente mittels Router, Switch, Bridge) und den Einsatz von Paketfiltern zur logischen Trennung kann man das Blickfeld eines potentiellen Sniffers stark einschränken. Um einen Sniffer ausfindig zu machen, fragt man an allen Rechnern des Netzwerkes den Status der Netzwerkkarte mit ifconfig ab. Das ist die einfachste Lösung. Es gibt aber auch AntiSniffer Werkzeuge wie beispielsweise SniffDet, oder kommerzielle Produkte wie AntiSniff.

#### 3.7 Spoofing

Unter Spoofing versteht man das Erschleichen von Vertrauen unter Vorgabe einer falschen Identität. Im Computerbereich unterscheidet man:

- IP-Spoofing (Vorgabe einer falschen IP-Adresse)
  Gegenmaßnahme: Paketfilter
- DNS-Spoofing (Einstreuen einer falschen IP-Namenszuordnung ins DNS-Kommunikationssystem - Cache pollution)
  Gegenmaßnahme: digitale Unterschriften beim Austausch von DNS-Einträgen
- ARP-Spoofing (Einstreuen einer falschen IP-MAC-Adressenzuordnung im Ethernet; Überschreiben durch Push-Technik)
  Gegenmaßnahme: Ersetzen des ARP-Cache durch eine in einer Datei gespeicherten Liste
- RIP-Spoofing (Umleiten der Datenströme durch Einstreuen falscher Routing-Informationen)
  Gegenmaßnahme: Setzen des entsprechenden Kernelparameters
- WWW-Spoofing (URL Rewriting, man in the middle attack)
  Gegenmaßnahme: Kontrolle der Zertifikate verschlüsselter Verbindungen

Der bekannteste Fall ist wohl die Kevin Mitnick Attacke, die 1994 auf das Netz des Sicherheitsexperten Tsutomu Shimumura stattfand. Mitnick begann seinen Angriff mit mehreren Verbindungsanfragen an den rlogin Port des Servers seines Opfers, diese Anfragen besaßen allerdings gefälschte interne IP-Adressen. Aufgrund dieser Last brach der Server zusammen. Nachdem Kevin Mitnick die TCP-Sequenznummerngenerierung analysiert hatte, konnte er unter Vorgabe der Identität des zusammengebrochenen Servers eine TCP-Verbindung aufbauen und den Zugang für zukünftige Angriffe weit öffnen.

Kevin Mitnick wurde verhaftet und bekam 1999 eine Haftstrafe von 48 Monaten (er saß aber schon zu diesem Zeitpunkt mehrere Jahre in Untersuchungshaft). Im Januar 2000 wurde er mit der Auflage entlassen, dass er drei Jahre lang (also bis Januar 2003) weder Computer noch Mobiltelefon oder ähnliche Gerätschaften benutzen durfte.

Spoofing ist ein wichtiger Bestandteil der meisten Einbruchsversuche. Durch die Angabe einer falschen Identität können fremde Verbindungen entführt (Hijacking) oder beendet werden, und das Nachvollziehen eines Einbruchs / Einbruchversuchs gestaltet sich äußerst schwierig. Deshalb wird dieses Thema zukünftig in einem gesonderten Kapitel behandelt werden.

#### 3.8 Netzwerk-Scan-Techniken

#### 3.8.1 Netzwerk-Scan-Techniken Allgemeines

Als Scanning bezeichnent man den Versuch, möglich viele oder gar alle Rechner eines Netzwerkes zu verifizieren. Dies beinhaltet vor allem auch die Bestimmung der darauf laufenden Dienste. Folgende Informationen sind Ziel eines solchen Angriffs:

- IP-Adressen von Rechnern (die ans Internet angeschlossen sind)
- TCP/UDP Portnummern
- Systemarchitektur (x86, PowerPC, Sparc)
- Betriebssystem (Kernelversion, Windowsversion)

Dem geht meist die Erstellung eines System- oder Netzwerkprofiles voraus, in dem allgemeine Informationen wie geographischer Standort, Namen, Telefonnummern, IP-Adressen (Bereiche) und Dienste wie DNS-Server, Mail-Server oder Web-Server festgehalten werden.

Security Scanner bieten feinere Techniken zum Ausspionieren sicherheitsrelevanter Informationen eines Systems. Zu den damit gewonnenen Informationen zählen zum Beispiel:

- Benutzer- und Gruppennamen
- Schwachstellen, welche ausgenutzt werden können
- Routing-Tabellen
- SNMP-Informationen

#### 3.8.2 Online-Check

Das Ziel dieses Angriffes besteht darin, herauszufinden, welche Rechner des Opfernetzwerkes (eines bestimmten IP-Bereiches) gerade aktiv sind. Dies ist möglich durch

- ICMP-Echo-Anfragen (Ping, Broadcast)
- UDP /TCP Sweeps

Beides kann durch Kernelparameter bzw. Paketfilter verhindert werden.

#### 3.8.3 Port-Scanning

Wenn nach einem erfolgreichen Online-Check die aktiven Rechner bekannt sind, wird der Angreifer meist die angebotenen Dienste mittels Port-Scanning ermitteln. Dazu bedient er sich oftmals der TCP SYN Scan Methode, bei der eine TCP-Verbindung nur angefragt aber nicht aufgebaut wird. Deshalb sind solche Attacken nur schwer zu finden und werden sehr selten in Logfiles protokolliert. Eine "Weiterentwicklung" sind die so genannten Stealth Scans, die auch Paketfilter passieren und trotzdem im Netzwerkverkehr unentdeckt bleiben. Sie missachten einfach das Three Way Handshake Protokoll und interpretieren die Antworten der Opferrechner. Zu den Stealth Attacken gehören:

- XMAS Scan
- Null Scan
- Syn/Ack Scan
- Fin Scan

Port-Scans können durch Port-Scan-Detektoren erkannt werden, zu den wichtigsten zählen: Scanlogd PortSentry Natürlich gibt es auch wieder Möglichkeiten, diese Detektoren zu umgehen, darauf wollen wir an dieser Stelle nicht eingehen. Einen Hinweis zum Schluss: Theoretisch kann ein Angreifer einen Port-Scan-Detektor dazu benutzen, durch einen gefälschten Scan-Angriff (Vortäuschung eines Angriffs vom Gateway-Rechner --> Spoofing) den Opferrechner vom externen Netz zu trennen.

#### 3.8.4 Nmap

Der Netzwerk-Scanner nmap unterstützt zahlreiche Angriffspraktiken zum Scannen von einzelnen Rechnern oder ganzen Netzwerken. Er bietet auch viele nützliche Funktionen für einen sinnvollen Einsatz. Denkbar wären beispielsweise die Überwachung der offenen Ports aller Netzwerkrechner oder das automatische Auslösen eines Alarms, wenn ein neuer Rechner ans Netz angeschlossen wird. Mit nmap und den zahlreichen Möglichkeiten wird sich ein eigenständiges Kapitel beschäftigen.

#### 3.8.5 Betriebssystemerkennung

Systemschwachstellen sind meist an das verwendete Betriebssystem gebunden, deshalb sind Informationen darüber für den Angreifer äußerst wertvoll.

Viele Dienste wie z.B. telnet, ssh oder www geben auch nicht autorisierten Benutzern Betriebssysteminformationen. Sie können dies einfach nachvollziehen:

user@linux $ telnet ip-opfer 80 Trying 217.72.195.42... Connected to ha-42.web.de. Escape character is '^]'. user@linux $ get http/1.0 400 Bad Request Date: Wed, 19 Jan 2000 15:33:21 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Connection: close ....

Aus der vorletzten Ausgabezeile ist ersichtlich, dass es sich um einen Linux Rechner mit Red Hat handelt. Es gibt mittlerweile einige Betriebssystemerkennungsprogramme wie queso oder nmap.

#### 3.8.6 Firewalking

Darunter versteht man eine Technik, um Informationen von Netzwerken hinter einer Firewall zu erlangen. David Goldsmith und Michael Schiffmann haben diese Technik im Oktober 1998 veröffentlicht. Firewalking benutzt traceroute, das eigentlich entwickelt wurde, den Weg einer Verbindung aufzuzeigen. Duch die Angabe eines Ausgangs- bzw Zielport können auch Firewalls passiert werden.

#### 3.8.7 Inverse Mapping

Mit Inverse Mapping Techniken können Informationen über solche Rechner und Netzwerke erhalten werden, die als unerreichbar gelten (z.B. Rechner eines internen Netzwerkes).

Beispiel ftp-Bounce-Attacke:

Der Angreifer benutzt einen normalen ftp-Client und verbindet sich mit dem ftp-Server des Opfers. Er benutzt den ftp-Port-Befehl um die IP-Adresse und die Portnummer des anzugreifenden Dienstes anzugeben. Der Angreifer sendet nun in Kommandos, die der angegriffene Dienst versteht, in Form von Dateien an den ftp-Server und dieser leitet die Kommandos einfach an den verbundenen Dienst. Wenn der ftp-Server hinter der Firewall steht, sind durch diese Methode auch Scans des internen Netzwerkes möglich.

#### 3.9 Buffer Overflows

Die wohl am häufigsten auftretende Schwachstelle sind Programme, die Pufferüberläufe (Buffer Overflows) ermöglichen. Diese Programme werden zu einer gefährlichen Bedrohung, wenn sie unter privilegierten Rechten ablaufen. Ein Angreifer kann durch das Ausnutzen dieser Schwachstelle beliebigen Programmcode zur Ausführung bringen, und zwar mit den selben Privilegien wie die des fehlerhaften Programms. Wenn also beispielsweise der Web-Server apache unter root Rechten ablaufen würde und eine solche Schwachstelle existiert, so kann ein Angreifer dem System den denkbar größtmöglichen Schaden zufügen.

Schutzmaßnahmen für Programmierer und Entwickler:

- Sichere Programmierung, Einsatz von "Source Code Security Analyzer" zur Feststellung möglicher Fehler
- Libsafe ersetzt unsichere C-Funktionen (z.B. sprintf, strcp, gets) durch Bibliotheksfunktionen
- Openwall-Patch: nichtausführbarer Stack Array-Grenzüberwachung

#### 3.10 Denial of Service (DOS Attacken)

Angriffe mit dem Ziel, ein System oder einen Dienst lahm zu legen, bezeichnet man als DOS-Attacken. Oftmals handelt es sich um Netzwerkdienste, die beim Trennen der Netzverbindung nicht mehr nutzbar sind. Es werden entweder Schwachstellen im System (Rechner, Übertragungsprotokolle, ...) ausgenutzt oder begrenzte Systemressourcen (z.B. Bandbreite) aufgebraucht, um eine Dienstverweigerung zu erreichen.

Manchmal geht es auch darum, sicherheitsrelevante Systeme (z.B. IDS, Loghosts) in einen instabilen Zustand zu versetzen und somit Einbruchsversuche zu ermöglichen. Prinzipiell werden DOS-Attacken in zwei Arten untergliedert: hostbasierte Denial of Service Attacken und netzwerkbasierte Denial of Service Attacken. Eine besonders gefährliche Weiterentwicklung der letztgenannten sind verteilte DOS-Attacken (Distributed Denial of Service). Das Opfer wird hierbei von mehreren (manchmal sogar tausenden) Rechnern angegriffen.

Hostbasiert

Wenn der Angreifer bereits Zugang zum System besitzt, kann er mit meist sehr einfachen Mitteln das System handlungsunfähig machen. Dazu gehören beispielsweise

- Plattenplatz aufbrauchen (Sicherheitsmaßnahme: quota)
- Arbeitsspeicher / CPU Reserven aufbrauchen (Sicherheitsmaßnahme: ulimit)
- Hardwarefehler ausnutzen (Sicherheitsmaßnahme: neuer Kernel)

Netzwerkbasiert

Die größere Gefahr geht im Allgemeinen von netzwerkbasierten DOS-Attacken aus. Diese sind schwerer nachvollziehbar, und ein Angreifer benötigt im Zweifelsfall nicht einmal einen direkten Zugang zum Opfernetzwerk. Zu diesen DOS-Attacken gehören:

Email-Bomben

> Die Speicherkapazität auf Mailservern ist sehr begrenzt, der Plattenplatz wird sehr schnell aufgebraucht. Außerdem können durch sehr große Mails die Netzwerkressourcen (Bandbreite) sehr schnell aufgebraucht werden.

Broadcast-Angriff

> Ein Angreifer generiert pro Sekunde 100 Brodcast-Anfragen. Wenn angenommen 150 Rechner im Subnetz aktiv sind und deshalb antworten, müssen 15.000 Antwortpakete übertragen werden. Der Rechner, der diese Anfrage gestellt hat, ist mit den Antworten hoffnungslos überlastet und verliert im Extremfall seine Netzverbindung (meist in Kombination mit Spoofing). Gegenmaßnahmen können beispielsweise durch die Limit Option im Paketfilter oder durch das Herausfiltern von ICMP Paketen realisiert werden.

Kernel-Angriff

> Auch die Netzwerkmodule des Kernels sind nicht vor Angriffen gefeit. So kann beispielsweise durch eine SYN-Flood-Attacke der Netzwerkpuffer zum Überlaufen gebracht werden. Kernelparameter bieten einen guten, meist ausreichenden Schutz.

DOS-Angriffe auf TCP/IP-Ebene

> Durch Massenanfragen werden Schwachstellen im IP-Stack ausgenutzt. Die Schwachstellen lassen sich nur bedingt beseitigen, sodass solche Angriffe meist als DDOS Attacken durchgeführt werden. Zu solchen Attacken zählen:

- IP-Fragmentangriff (teardrop, newtear, bonk)
- IP-Bombing (meist als DDOS-Attacke)
- SYN-Flood Attacken (massenhafte Verbindungsanfragen)

#### 3.11 Distributed Denial of Service (DDOS Attacken)

Während bei normalen netzwerkbasierten DOS-Attacken viele Anfragen von einem Angriffsrechner ausgehen, kommen bei verteilten DOS-Attacken (Distributed Denial of Service = DDOS) sehr viele Computer zum Einsatz, die simultan einen DOS-Angriff auf einen Opferrechner durchführen. Ein DDOS-Angriff wird zentral kontrolliert, es gibt also einen oder mehrere Server (so genannte Master), die viele Clients (auch einfach als Daemons bezeichnet) kontrollieren.

ddos.png

Diese Angriffe sind erst seit 1999 bekannt. Die dokumentierten Angriffe gingen meistens von vier Softwaretools aus:

- trinoo (englische Infos auf CERTwww.cert.org/incident_notes/IN-99-07.html)
- TFN Tribe Flood Network (englische Infos auf CERT)
- stacheldraht (basiert auf trinoo und TFN)
- shaft

Die zu ergreifenden Schutzmaßnahmen sind

- Einbruchserkennungssysteme (IDS)
- Paketfilter (ICMP-Filterung, Pakete > 9 Byte)
- Verhinderung eines Einbruchs durch Kombination von Sicherheitsmaßnahmen wie kontinuierliche Aktualisierung der Software, Einsatz von Proxies, Paketfiltern, Einbruchserkennung und Gegenmaßnahmen bei erfolgreichem Angriff.

#### 3.12 Root Kits

Root Kits sind Softwarepakete, in denen meist skriptbasierte Werkzeuge enthalten sind. Diese haben zum Ziel,

1. verschiedene Angriffsformen anzubieten,
2. Angriffe zu verschleiern sowie
3. Hintertüren einzubauen.

Ein solcher automatisierter Angriff dauert typischerweise drei bis fünf Sekunden und erfordert keinerlei Fachwissen.

Wie läuft ein Angriff mit einem Root Kit ab?
Nach dem Ausnutzen einer Schwachstelle, durch die ein beliebiger Maschinencode zur Ausführung gebracht werden kann, steht dem Angreifer eine Ausführungsumgebung mit root-Rechten (daher der Name) zur Verfügung. Diese Privilegien werden benutzt, um auf dem angegriffenen System eine Hintertür zu installieren, die dem Angreifer in Zukunft jederzeit Administratorrechte verschafft. Abschließend werden sämtliche Spuren des Angriffs aus den Log-Dateien entfernt. Präventive Maßnahmen sollten bevorzugt zum Einsatz kommen, da erfolgreiche Einbrüche äußerst schwer zu finden und zu beseitigen sind. Bekannte Root Kits können mit chkrootkit gefunden werden.