Inhaltssammlung

Aus Labor für Echtzeitsysteme

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[bearbeiten] Einleitung

Willkommen auf der E-Learning-Plattform Finden von Sicherheitslöchern im eigenen Rechner des Projektfachs Rechner- und Netzwerksicherheit 2006/2007.


Diese E-Learning-Plattform soll einem fortgeschrittenen PC-Nutzer (mit Basiswissen über Linux/Unix) folgende Einblicke gewähren und vermitteln:

  • welche verschiedenen Arten von Rechner-Angriffen es generell gibt
  • welche Angriffsmöglichkeiten es auf der local- oder remote-Ebene gibt
  • was ein Man-in-the-middle-Angriffe ist
  • wie man einen Rechner auf existierende Sicherheitslücken in Betriebssystemen und Diensten untersuchen kann
  • wie man mit dem Network Protocol Analyzer wireshark den fließenden Netzwerkverkehr unter die Lupe nimmt
  • wie man mit dem Tools dsniff oder John-the-Ripper übertragene Passwörter aus dem Netzwerkverkehr filtern kann
  • wie man einen Rechner generell auf mögliche, (von aussen) nutzbare Angriffspunkte untersucht
  • wie man mit den Network Scanner nmap oder Nessus eine Netzwerkanalyse vornimmt
  • wie man mit ettercap einen man-in-the-middle-Angriff simulieren kann
  • wie man einen Rechner absichert
  • welche Arten von Firewalls es gibt und wie sie arbeiten
  • welche Software zur Erhöhung der Sicherheit unbedingt auf einem Rechner laufen sollte


Diese E-Learning-Plattform ist das Resultat des zweisemestrigen Projektfachs Rechner- und Netzwerksicherheit des Diplom-Studiengangs Technische Informatik der Hochschule Niederrhein. Das in dieser E-Learning-Plattform vermittelte Wissen wurde von uns im SS 2006 zusammengetragen, aufgearbeitet und selbst in vorher erstellten Testszenarien ausprobiert. Im WS 2006/2007 wurde dann diese E-Learning-Plattform aufgesetzt und inhaltlich "gefüllt".


An der Ausarbeitung dieser E-Learning-Plattform waren beteiligt:

Chu Bingbin
Stefan Deling
Simon Dietrich
Jörg Fichtner
Stefan Hüskes
Markus de Jong
Christian Kaczynski
Jens Nitschke
Andreas Rütten
Tim Rütten

Mit freundlicher Unterstützung von:

Prof. Dr. Jürgen Quade
Lars Weiler

[bearbeiten] Verschiedene Arten von Angriffsmöglichkeiten

[bearbeiten] Applikationen

[bearbeiten] local

Es gibt verschiedene Arten von Möglichkeiten ein locales System anzugreifen.

- Direct Account hacking: Username ist bekannt, nur gezielte Passwörter werden versucht. - Via Brute-Forcealgorithmus (alle Möglichkeiten durch probieren), Siehe Werkzeuge: "John the Ripper" oder "Hydra"

Lösung: Keine einfachen Passwörter benutzen, mindestens 8 Zeichen, incl. Sonderzeichen, Groß-/kleinbuchstaben. Keine Namen, Geburtstage, Hochzeitstage und nicht gleich wie Accountname. Evtl Das Password alle paar Monate erneuern.


- direkte Sicherheitslücken ausnutzen, z.B. mit Anwendung von Exploids um Rootrechte mit einem normalen User zu bekommen.

Lösung: Regelmäßig Updates durchführen


Fragen:

Welche Programme sind Tools zum herausfinden von Passwörtern via Bruteforce-Algorithmus ? (in Fragenpool "Kapitel 2" eingetragen)

  • John the Ripper *
  • John mit Tripper
  • Hydra *
  • BrutePass


Wie gestaltet sich ein sicheres Passwort? (in Fragenpool "Kapitel 2" eingetragen)

  • nicht mehr als 6 Zeichen
  • mindestens 8 Zeichen
  • Groß-/Kleinschreibung beachten
  • Namen von Familienmitgliedern oder Freunden
  • auch Sonderzeichen benutzen
  • ein gutes Passwort muss nie erneuert werden


Wie schließt man Sicherheitslücken in einem System? (in Fragenpool "Kapitel 2" eingetragen)

  • Virenscanner ausführen
  • Durch regelmäßige Updates des Systems
  • Defragmentieren der Festplatte

[bearbeiten] remote

Möglichkeiten, Remote auf einen Rechner zu gelangen, sind:


  • Trojanische Pferde: Die einerseits die gewünschte bzw. 'offizielle' Funktion ausführen, aber gleichzeitig vom Angreifer beabsichtigte Nebenwirkung ausführen.
  • Würmer oder Wurmsegmente: Die sich selbstständig über ein Netz verbreiten und auf anderen Rechnern vervielfältigen können.
  • Viren: Die sich in andere Programme hineinkopieren (reproduzieren) und zeit- oder ereignisgesteuert Schäden hervorrufen.
  • Logische Bomben: Die vom Programmierer eingebaut werden. Sie treten erst zu einem bestimmten Ereignis zu Tage, z. B. werden alle Daten zwei Jahre nach Entlassung des Programmierers gelöscht.
  • Trap doors: Die einen nicht autorisierten Zugang zum System ermöglichen. Das muß nicht in böser Absicht geschehen, auch Programmteile, die zur Fehlersuche dienten und dann in der Verkaufsversion nicht entfernt wurden, oder Wartungsaccounts können zu trap doors werden.
  • Spoofing: Die Form der Tarnung im Netz (siehe 2.3.1).
  • Offene Ports: Welche potenzielle Angreifer herausfinden und die dazugehörigen Dienste ausmachen. Die neuste Art von Schädlingen, so genannte Rootkits, die solche offenen Ports ausnutzen, setzen alles daran, auf dem PC nicht entdeckt zu werden. Ein Rootkit z.B. installiert mehrere Dateien, die sich zum Teil als Windows-Treiber tarnen, und startet ein Backdoor-Programm auf dem betreffenden Rechner. Da ein solcher Schädling tief ins System eindringt, ist er kaum wieder zu entfernen.


Fragen

Zuordungsfrage: Ordnen Sie die Möglichkeiten, auf einen anderen Rechner zu gelangen, auf der linken Seite den Beschreibungen auf der rechten Seite zu. (im Fragenpool zu Kapitel 2 eingetragen)

[bearbeiten] Kernel

[bearbeiten] Man In The Middle

Als "Man In The Middle" Angriff, versteht man einen Angreifer der sich aktiv in eine Verbindung zwischen zwei oder mehreren Netzelementen einhängt. In dieser Position kann der Angreifer z.B. den Datenverkehr analysieren ( Passwörter ausspähen usw. ), Umleiten oder blockieren.

Die wohl bekanntest Art, ist das ARP-Spoofing/Poisoning.

[bearbeiten] ARP-Spoofing/Poisoning

Das Problem bei geswitchten Netzen liegt einfach daran, dass der Datenverkehr nicht mehr jeden im Netz erreicht sondern nur den für die die Nachricht gedacht ist ( Switch, Weiterleitung anhand von MAC-Adresse ).

Die Standard Kommunikation in einem geswitchten LAN sieht wie folgt aus:

Bild:standard_kommunikation.jpg


Vorgang

1.) Client C sendet Daten an Server S.
2.) Der Switch nimmt die Daten auf und sucht die Ziel MAC-Adresse ( MAC(S) ) raus. 
Der Switch erkennt das die Ziel MAC-Adresse am Switch-Port XYZ hängt. 3.) Leite die Daten NUR auf diesem Port weiter.


Die Frage die man sich nun als Angreifer stellt: Wie bekomme ich etwas oder alles vom Datenverkehr mit?

Lösung: "Vergiften" der ARP-Tabellen! Der Angreifer nutzt die schwache Implementierung von ARP aus und sendet ARP-Responses an Client und Server, sodass jeder denkt die MAC-Adresse des anderen wäre die MAC-Adresse des Angreifers.


Bild:arp_poisoning.jpg


Vorgang

1.) Schicke ein ARP-Response an Client C mit IP(S) und MAC(A)
2.) Schicke ein ARP-Response an Server S mit IP(C) und MAC(A)


Nachdem die ARP-Tabellen von Client und Server "vergiftet" worden sind, läuft der gesamte Datenverkehr über Angreifer A! D.h. der Switch leitet die Pakete von Client S an Angreifer A weiter, da die Ziel-MAC-Adresse NICHT mehr MAC(S) ist, sonder MAC(A) und da ein Switch Weiterleitungen auf OSI-Layer2-Basis (MAC-Adresse) entscheidet steht der Angreifer nun im Mittelpunkt der Kommunikation ( Man In The Middle )!


Bild:redirected_traffic.jpg


Vorgang

1.) Client C möchte Daten an Server S schicken [ mit Ziel-IP IP(S) und Ziel-MAC MAC(A) ]
2.) Der Switch erkennt die Ziel-MAC MAC(A) und leitet diese an den Switch-Port ABC weiter
3.) Der Angreifer A nimmt die Daten entgegen und analysiert o.ä. diese.
4.) Angreifer A schickt die Daten zurück mit der Ziel-IP IP(S) und der Ziel-MAC(S)
5.) Der Switch schickt die Daten nun an den Server S, da Ziel-MAC nun MAC(S)


Dieser gesamte Vorgang verläuft bidirektional. D.h. der Weg von Server S an Client C verläuft gleich, da am Anfang ( und während dessen auch ) die ARP-Tabelle von Client und Server "vergiftet" worden sind.


Fragen:

Was versteht man unter einem "Man In The Middle" - Angriff ? (in Fragenpool zu Kapitel 2 eingetragen)

  • Ein System solange mit Anfragen "bombardieren" bis es nicht mehr erreichbar ist
  • Angreifer, der sich aktiv in eine Netzwerk-Verbindung einhängt *
  • Das knacken von Passwörtern mit Hilfe entsprechender Tools


Anordungsfrage: Standardkommunikation im geswitchten LAN (in Fragenpool zu Kapitel 2 eingetragen)

Anordungsfrage: Wie läuft eine Kommunikation zwischen einem Client und einem Server ab, wenn da ARP-Tabelle gespooft wurde ? (in Fragenpool zu Kapitel 2 eingetragen)

[bearbeiten] Netz-Analyse

[bearbeiten] telnet

Telnet (Teletype Network) ist der Name eines im Internet weit verbreiteten Netzwerkprotokolls. Das IETF-Dokument STD 8 (RFC 854 und RFC 855), in welchem es beschrieben wird, beginnt folgendermaßen: "Der Sinn des TELNET-Protokolls besteht darin, eine ziemlich allgemeine, bidirektionale, 8-bit-pro-Byte-orientierte Kommunikationsmöglichkeit zu bieten." Es wird üblicherweise dazu verwendet, Benutzern den Zugang zu Internetrechnern über die Kommandozeile zu bieten. Aufgrund der fehlenden Verschlüsselung wird es kaum noch eingesetzt, verbreitet sind heutzutage SSH (im Unixbereich) und RDP (im Windowsbereich)

Weiterhin ist Telnet der Name eines Programms, welches Verbindungen zu einem entfernten Gastrechner ermöglicht. Das Telnetprogramm stellt dabei die benötigten Clientfunktionen des Protokolls zur Verfügung. Telnet ist ein Client-Server-Protokoll, es verwendet TCP und die Clients verbinden sich meistens über Port 23 mit dem Zielrechner, allerdings lässt sich dieser Port, wie bei den meisten Internetprotokollen, auch ändern. Teilweise aufgrund des Protokolldesigns, teilweise aufgrund der üblicherweise zur Verfügung gestellten Flexibilität der Telnetprogramme, ist es ebenfalls möglich, mit einem Telnetprogramm eine interaktive TCP-Verbindung zu einigen anderen Internetservices aufzubauen. Eine klassische Verwendung davon ist beispielsweise eine Telnetverbindung über Port 25 aufzubauen (wo sich meistens ein SMTP-Server befindet), um Fehlkonfigurationen in einem E-Mail-Server zu finden.

Syntax

telnet [address] [-l user] [port]

Weiter Telnet Optionen mit

man telnet

Fragen:

Was ist Telnet? (eingetragen in Fragenpool "Kapitel 3")

  • Ein grafisches Remote Administrationstool
  • Ein Remotetool auf Kommandozeilenebene
  • Telnet ist sehr sicher

Lückentext: Telnet allgemein (eingetragen in Fragenpool "Kapitel 3")

[bearbeiten] nmap

Nmap steht für "Network Mapper". Es wird zum scannen von offenen Ports auf dem eigenen, bzw. fremden Rechner benutzt. Dieser Portscanner wurde ursprünglich von einem Hacker mit dem Nickname Fyodor für Linux entwickelt. Es ist inzwischen für fast alle Platformen (Linux, Windows, Mac OS X, etc.) zu haben. Das Tool ist in der textbasierten Version frei verfügbar. Daneben gibt es noch NmapFE, welches eine Grafische Oberfläche hat. Nmap wird von vielen Administratoren und auch Hackern eingesetzt, da es ein wesentlicher Bestandteil der Netzwerkdiagnose darstellt. Es unterstützt eine Vielzahl verschiedener Scanning-Techniken, wie z.B. UDP, TCP, FTP-Proxy, Reverse-ident, ICMP, FIN, ACK-Suchlauf, Xmas-Tree, SYN-Suchlauf, IP-Protocol und Null-Scan. Neben dem Scannen einzelner Systeme, kann man auch ganze Netze scannen. Ebenso ermöglicht nmap eine Vielzahl von zusätzlichen Möglichkeiten, wie z.B. das Erkennen von Betriebssystemen mittels TCP/IP-Fingerprinting. Da viele Techniken root-Privilegien benötigen, sollte Nmap stets als root genutzt werde.

Das Ergebnis eines Scans ist normalerweise eine Liste von Ports der gescannten Rechner. Sofern bekannt ist um welche Ports es sich handelt, weist Nmap ihnen Service-Namen, Portnummer, Status und Protokoll zu. Der Status ist entweder "open", "filtered" oder "unfiltered". "Open" bedeutet, dass das Zielsystem auf diesem Port eine Verbindung annehmen kann. "Filtered" weist darauf hin, dass eine Firewall oder ein TCP/IP-Filter den Scan blockiert, und keine Rückschlüsse auf die Ports gemacht werden können. "Unfiltered" heisst, dass nmap den Port kennt, und beim Zugriff keinerlei Filter-Mechanismen ausgemacht werden konnten. Dieser Staus kommt am häufigsten vor.

[bearbeiten] Syntax

nmap [Scan-Typ] [Optionen] <Host oder Netz>


Es gibt eine vielzahl verschiedener Scannmöglichkeiten:

  • Der TCP-connect() scan wird mit dem Kürzel -sT aufgerufen. Er nutzt den connect()-System-Call des Betriebsystems. Befindet sich der Zielport im Zustand LISTENING, wir der Zugriff erfolgreich ausfallen. Es ist der standard scan für User die keine root-Rechte haben. Er ist jedoch leicht zu entdecken, da er mit grosser Warscheinlichkeit in der Protokoll-Datei des Zielrechners auftauchen wird.
  • Der TCP SYN-Scan wird mit der Option -sS aufgerufen. Diese Technik wird oft als "halb-offen" bezeichnet, da keine volle TCP-Verbindung zustande kommt. Der Scanner schickt ein TCP-Paket mit gesetzter SYN-Flag an das Zielsystem. Der Scanner wartet nun auf eine Rückmeldung des Zielsystems. Kommt ein Paket mit gesetzter SYN/ACK-Flag zurück, so wird der Zielport als LISTENING identifiziert. Nmap schick nun automatisch ein RST zurück, damit der Verbindungsaufbau abgebrochen wird. Der Vorteil dieser Methode ist, dass viele Systeme diese Zugriffe nicht protokollieren. Im Gegensatz dazu deutet ein RST-Datangramm auf einen geschlossenen Port hin. Dieser Scantyp benötigt root Rechte.
  • Es gibt auch noch erweiterte Stealth Scans. Sie werden mit den Parameter -sF (FIN-Scan),-sX (Xmas-Tree-Scan) und -sN (Null-Scan) ausgeführt. Sie werden eingesetzt, falls der SYN-Scan nicht heimlich genug ist, da einige Firewalls verdächtige SYN-Aktivitäten erkennen können. Da Microsoft eine nich standardmässige TCP-IP implementierung verwendet,ist dieser Scan lediglich zur Bestimmung des Betriebsystems geeignet.
  • Ping-Scanning wird mit der Option -sP aufgerufen. Wenn man lediglich wissen will welche Hosts in einem Netz aktiv sind, ist der Ping-Scan die richtige Wahl. Hier wird eine ICMP echo request-Anfrage an jede Adresse im spezi­fizierten Netz geschickt. Antwortet der Host mit einem ICMP echo reply, wird er als aktiv eingestuft. Wird der ICMP Verkehr durch eine Firewall gefiltert, schickt nmap ein TCP-Datenpaket mit gesetzter ACK-Flag an einen möglich offenen Port(standardmässig TCP-Port 80). Bekommen wir ein RST zurück, ist das Zielsystem aktiv.
  • Der Parameter für IP-Protokoll-Scan ist -sO. Diese Methode ist dazu da um herauszufinden welche IP-Protokolle vom Zielsystem unterstützt werden. Für jedes IP-Protokoll wird ein RAW-Paket mit fehlendem Protokoll-Headar verschickt. Kommt als Antwort ICMP unreachable, wird das Protokoll nicht unterstützt. Es müssen 256 Protokolle gescannt werden, da das IP-Protokoll 8 Bit groß ist.
  • Der ACK-Scan (-sA) wird zur Identifizierung eines Firewall-Regelwerks verwendet. Zusätzlich kann diese Methode eine Determinierung des Vorhandenseins einer Stateful Inspec­tion, die eingehende SYN-Pakete blockt, ermöglichen. Der Scan sendet ein ACK-Paket an den Zielport. Kommt ein RST zurück, wird der Port als "unfiltered" eingestuft. Kommt keine Antwort, oder ein ICMP unreachable, wird er als "filtered" eingestuft.
  • Nachdem man durch einen anderen scan festgestell hat, das ein Port offen ist, kann man mit mit einem Version-Scanning (-sV) weitere Informationen zu diesem Dienst herausfinden. Nmap versucht das Service-Protokoll, den Applikationsnamen und die Versionsnummer zuzuweisen.


Zusätzlich zu den verschiedenen Scanmöglichkeiten gibt es noch weitere Optionen, die angegeben werden können.

  • -T<0-5> setzt vordefinierte Timing Richtlinien
  • 0: Der "Paranoid"-Modus scannt sehr langsam, in der Hoffnung nicht von Intrusion Detection-Systemen entdeckt zu werden. Es ist kein paralleles scannen möglich und es zwischen den Paketen bis zu 5 Minuten gewartet.
  • 1: "Sneaky" ist ähnlich wie "Paranoid", nur dass anstatt 5 Minuten nur 15 Sekunden gewartet wird.
  • 2: "Polite" wir dann eingesetzt, wenn die Netzwerkauslastung niedrig gehalten werden soll.
  • 3: "Normal" stellt das normale Verhalten von nmap dar. Es ist ein Kompromiss zwischen Geschwindigkeit und Zuverlässigkeit.
  • 4: "Aggressive" Es wird nie länger als 1.25 Sekunden auf Antwort gewartet. Es wird jedoch eine Wartezeit von 5 Minuten zwischen den einzelnen Hosts hinzugefügt.
  • 5: "Insane" sollte nur in schnellen Netzen eingesetzt werden, oder dort wo Zuverlässigkeit nicht besonders wichtig ist.
  • -F steht für Fast-scan-mode. Diese Option gibt an, dass lediglich die in der services-Datei von nmap gelisteten Dienste gescantwerden sollen.
  • -O Diese Option ermöglicht das Identifizieren des Betriebsystems am Zielrechenr anhand des TCP/IP-Fingerabdrucks. Es wird eine Anzahl von Tests ausgeführt, die das typische Verhalten der jeweiligen TCP/IP-Implementierungen erkennen können. Die erhaltenen Informationen werden in einer Datenbank mit bekannten Betriebssystemen verglichen.
  • -PO verhindert das Pingen eines Hosts, bevor er gescannt wird. Dies ermöglicht das Scannen von Netzwerken, die keine ICMP echo requests/responses aufgrund einer restriktiv konfigurierten Firewall zulassen.
  • Die Option -PI benutzt einen klassischen Ping, um die Ereichbarkeit von Systemen und Broadcast-Adressen von Subnetzen zu identifizieren.

Es gibt noch viele weitere Optionen und Scanmöglichkeiten, die ausführlich in der Manpage von nmap beschrieben werden.

[bearbeiten] Beispiele

  • nmap -sS -O 192.168.0.0/24
Hier wird ein stealth SYN-Scan gegen jeden Rechenr im Netz 192.168.0.0 ausgeführt. Es wir weiterhin versucht, die Betriebssysteme der Systeme zu ermitteln. Dieser Vorgang erfordert aufgrund des SYN-Scans und der Betriebssystemerkennung root-Privilegien.
  • nmap -sX -p 22,53,110,143,4564 198.116.*.1-127
Startet einen Xmas-Tree-Scan auf die erste Hälfte der 255 möglichen 8 Bit Subnetze des Klasse B-Adressraums von 198.116. Es wird überprüfen, ob am Zielsystem SSHD, DNS, POP3D, IMAPD oder der Port 4564 aktiv ist. Wichtig ist, dass Xmas-Scans nicht gegen Microsoft-Geräte funktion­ieren, da einige Abweichungen bei der Implementierung des TCP-Stacks gemacht wurden. Das gleiche gilt fuer Cisco-, IRIX-, HP/UX- und BSDI-Maschinen.

[bearbeiten] Übungen

blablabla keine Ahnung!!!!!!

[bearbeiten] Links

Nmap Homepage

[bearbeiten] nessus

Nessus-Logo
Nessus-Logo

Bei Nessus handelt es sich um einen bekannten Netzwerk- und Vulnerability Scanner für Linux- und Unix-Systeme der Entwickler-Firma Tenable Network Security (Entwickler: Renaud Deraison). Mit Hilfe dieser Software lassen sich - basierend auf dem Client-Server-Prinzip - Betriebssysteme und Dienste, die auf dem zu untersuchenden Rechner installiert und konfiguriert sind, auf Sicherheitslücken überprüfen.

Nessus
Nessus

Ausserdem überprüft Nessus idealerweise Router, Firewalls, Server und Gateways von außen auf bekannte Sicherheitslücken und mögliche Angriffspunkte. Dies wird durch vielfältige Plugins erreicht, die beim Start des Nessus-Servers geladen werden. Diese Plugins (z.B.: nasl,eine Scriptsprache,nessus-adduser,nessus-build,...) haben alle ihre eigenen Manpages, sowohl für den Client und als auch für den Server.

[bearbeiten] Installation

Um Nessus benutzen zu können, braucht man nmap, bison, flex und das Gimp-Toolkit (Gtk) (Man kann Nessus auch über die Kommandozeile benutzen, so dass Gtk nicht unbedingt notwendig ist). Es gibt insgesamt vier Archive: die Nessus-Bibliotheken, die NASL-Bibliotheken, den Nessus-Kern und die Nessus-Plugins, die man am besten von der nächstgelegenen FTP-Site herunterladen kann. Das Entpacken, Erstellen und Installieren erfolgt wie gewohnt über ./configure, make, make install, in der Reihenfolge der obigen Archive.

Mittels der Nessus-Plugin-Scriptsprache NASL lassen sich eigene Plugins recht einfach erstellen und in Nessus implementieren.

[bearbeiten] Nessus konfigurieren und ausführen

[bearbeiten] Der nessusd-Server

Um Nessus zu starten, sollte man den Serverdaemon nessusd starten. Startet man den Daemon erstmalig, muss man seinen Benutzernamen und sein Passwort angeben, indem man den nessus-adduser-Befehl benutzt. Ist das Nessus-Bibliothekenpaket mit der Option "--enable-cipher" kompiliert worden (zwingend!), wird ein Private Key generiert, der mit einem Passwort geschützt werden sollte. Wenn man nun den Server startet, sind zahlreiche Optionen (aus dem Nessus-Plugin-Archiv) verfügbar, welche auch alle in der Manpage von Nessus aufgeführt sind. Davon ausgehend kann man eine Benutzerdatenbank und entsprechende Regeln erzeugen, d.h., welcher Benutzer den Serverdaemon ausführen darf und was dieser Benutzer überhaupt scannen darf (einen Rechner, ein Netzwerk,...).

[bearbeiten] Der Nessus-Client

Um den Client auszuführen, reicht es, den Befehl "nessus &" in einer Shell einzugeben. Daraufhin öffnet sich das Nessus-Setup-Fenster (oben erwähntes Passwort wird abfragt), welches neun Tab-Sites zur Verfügung stellt. Über diese Sites gibt man zuerst einmal die Verbindung zum Nessus-Server ein (je nachdem, ob der Client auf einem beliebigen lokalen oder entfernten Host gestartet wird), damit der Scan überhaupt durchgeführt werden kann.

Server-Verbindung
Server-Verbindung


Auf diesen Tab-Sites kann nun beispielsweise folgendes eingestellt werden:

  • Aktivierung oder Deaktivierung der beim Scan zu verwendenden Plugins, zu denen man parallel auch Funktionsinformationen bekommt (Achtung bei Plugins, die den Rechner zum Absturz bringen könnten!) und Einstellungen zu den jeweiligen Plugins (bezüglich ping, TCP, FTP, ...)
Plugin-Auswahl
Plugin-Auswahl


  • Wahl der gewünschte Portscanner (meist nmap) und deren Scanoptionen
Scan-Optionen
Scan-Optionen


  • Auswahl des gewünschten Zielhosts (localhost oder IP-Adresse)
Wahl des zu scannenden Hosts
Wahl des zu scannenden Hosts


  • eventuelle Änderung der gesetzten Passwörter oder Löschen des Private Keys
Persönliche Einstellungen
Persönliche Einstellungen


Nach Ende eines Host-Scans gibt der Nessus-Client eine zuverlässige, vertrauenswürdige Übersicht über alle eventuell gefundenen Sicherheitslücken und offenen Ports.

Achtung:

Nessus wird ab der Version 3.0 nicht mehr frei zur Verfügung gestellt, sondern unter einer proprietären Lizenz weiterentwickelt wird. Aus diesem Grund hat sich das Projekt OpenVAS gebildet, welches auf der letzten freien Nessus-Version aufsetzt und weiterentwickelt.

[bearbeiten] Weblinks

Homepage des Nessus-Projekts

Homepage des OpenVAS-Projekts

[bearbeiten] Mögliche Übung

Nutzung von Nessus auf dem eigenen Rechner.

[bearbeiten] Wireshark/Ethereal

Wireshark Logo
Wireshark Logo

Ethereal wurde von Gerald Combs unter der GNU General Public License als Open-Source-Software entwickelt und im Mai 2006 in Wireshark umbenannt. Es stellt den wohl momentan bekanntesten Network Protocol Analyzer bzw. Sniffer dar.

Als Sniffer dient Wireshark dazu, um den Netzwerkvekehr zu analysieren. Dazu stellt es die gesammelten Daten in Form von Paketen übersichtlich dar.


[bearbeiten] Anwendung

Capture eines pings
Capture eines pings

Hat man ein Netz, das über einen Hub verteilt wird, so kann man jedes Paket, das sich über das Netz bewegt einfach sniffen, da ein Hub grundsätzlich jedes Paket an alle seinen Ports aussendet.

In den heutigen geswitchten Netzen ist es jedoch nicht so einfach alles zu sniffen, da ein Switch, im Gegensatz zum Hub, eine Tabelle führt, in der er zu jedem seiner Ports die MAC-Adresse des Host der dahinter angeschlossen ist, speichert. Der Switch analysiert jedes Paket, das ihn erreicht, soweit, dass er die Ziel-MAC-Adresse erkennt und das jeweilige Packet auch nur an den entsprechenden Ports aussendet. Das hat zur Folge, dass normalerweise Pakete, die nicht an einen selber adressiert sind, auch nicht an der Netzwerkkarte ankommen und so auch nicht vom Sniffer aufgezeichnet werden können.

Hat man Zugriff auf den jeweiligen Switch, so kann man seinen Sniffer an den so genannten Monitor-Port anschliessen. Nahezu alle Switches haben einen solchen. Der Unterschied zu den normalen Ports ist, dass an diesem Monitor-Port alle Pakete des Netzwerks empfangen werden können.

[bearbeiten] Aufzeichnung des Netzwerkverkehr's

Capture-Options
Capture-Options
Capture-Statistiken
Capture-Statistiken

Zum Starten der Aufzeichnung wählt man unter Capture den Punkt Options aus. Im nachfolgendem Dialog kann man dann das Interface auswählen und noch weitere Optionen einstellen.

Die Option Capture packets in promiscuous modus sorgt dafür, dass das Netzwerk-Interface für die Aufzeichnung in den promiscuous Modus geschaltet wird. Dadurch werden nicht, wie normalerweise, alle Pakete, die nicht an die Adresse des Interfaces gerichtet sind, verworfen.

Intressant sind auch noch die Optionen unter dem Bereich Name Resolution, dort kann man beeinflussen, ob in den aufgezeichneten Daten die eigentlichen MAC- bzw. IP-Adressen oder entsprechend die aufgelösten Namen auftauchen. So würde man dann beispielsweise bei einem Ping auf www.heise.de den Namen erkennen können, anstatt der IP-Adresse.

Durch einen Klick auf Start wird die Aufzeichnung im Hintergrund begonnen und ein Fenster mit einer Statistik über gesammelte Pakete und der seit dem Start der Aufzeichnung vergangenen Zeit angezeigt. Durch Betätigen des Stop-Buttons, wird die Aufzeichnung beendet und Wireshark lädt die gesammelten Pakete in die Übersicht. Das kann einige Zeit dauern, je nachdem wie viele Pakete wurden bzw. wie lange aufgezeichnet wurde.

[bearbeiten] Analyse der gesammelten Daten

Anschliessend wird im oberen der drei Felder je Zeile ein Paket aufgelistet. Diese werden, zur besseren Übersicht, je nach Typ unterschiedlich eingefärbt. In dieser Liste kann man an Hand von Quelle und Ziel bzw. Protokoll ein Paket zur genaueren Analayse auswählen. Im mittleren Bereich findet man dann die Informationen der einzelnen Schichten des Pakets aufgelistet. Und im unterem Bereich stehen die Paket-Informationen in roher Byte-Form.

Unter den Menüpunkten Analyze und Statistic finden sich vielfältige Möglichkeiten die gesammelten Daten aufzubereiten und grafisch darzustellen.

[bearbeiten] Filterfunktion

Die Ausgabe der Paketliste lässt sich sehr fein über die Funktion Filter steuern. So kann man sich beispielsweise nur Pakete eines bestimmten Protokolltypes oder einer bestimmten Quell- bzw. Zieladresse anzeigen lassen.

[bearbeiten] Beispiel:

Dieser Filter filtert alle Pakete aus, die nicht als Absender-IP-Adresse die 192.168.1.2 und als Protokoll ICMP aufweisen. Dabei bewirkt der Operator && eine UND-Verknüpfung der einzelnen Filterbedingungen.

ip.addr == 192.168.1.2 && icmp

[bearbeiten] Weblinks

[bearbeiten] Bücher

  • Ethereal Protokollanalyse
Angela Orebaugh
Mitp-Verlag; Auflage: 1 (Juni 2004)
448 Seiten
ISBN: 3826614925
Das Buch beschreibt die Protokollanalyse mittels Ethereal. Als deutschsprachiges Buch weiterhin interessant.
Amazon Suche

[bearbeiten] Alternative Software

[bearbeiten] Übungen

[bearbeiten] 1. Übung

  1. Starten Sie wireshark und stellen Sie die Netzwerkschnittstelle, mit der Sie mit dem Internet verbunden sind, als zu überwachende Schnittstelle ein.
  2. Starten Sie die Aufzeichnung.
  3. Pingen Sie einen Server im Internet an (z.B. www.heise.de).
  4. Stoppen Sie die Aufzeichnung.
  5. Versuchen Sie durch Einsetzen der Filterfunktion die zu Ihrem Ping gehörenden TCP/IP-Pakete zu finden.

[bearbeiten] 2. Übung

  1. Starten Sie wireshark und stellen Sie die Netzwerkschnittstelle, mit der Sie mit dem Internet verbunden sind, als zu überwachende Schnittstelle ein.
  2. Starten Sie die Aufzeichnung.
  3. Veranlassen Sie ihren Email-Client (z.B. Thunderbird) dazu bei Ihrem Provider mittels pop nach email zu schauen.
  4. Stoppen Sie die Aufzeichnung.
  5. Versuchen Sie die zu der Verbindung gehörenden Pakete zu filtern.
  6. Untersuchen Sie den Inhalt der Pakete. Ist ihre pop-Authentifikation nicht SSL geschützt, sollten Sie ihr Email passwort im Klartext vorfinden.

[bearbeiten] 3. Übung

  1. Starten Sie wireshark und stellen Sie die Netzwerkschnittstelle, mit der Sie mit dem Internet verbunden sind, als zu überwachende Schnittstelle ein.
  2. Starten Sie die Aufzeichnung.
  3. Lassen Sie Aufzeichnung im Hintergrund laufen und verursachen Sie (z.B. 2 Minuten lang) den für Sie normalen Netzwerktraffic, surfen Sie einige Webseiten an, rufen Sie ihre Emails ab oder ähnliches.
  4. Stoppen Sie die Aufzeichnung.
  5. Es kann nun etwas dauern bis Wireshark alle gesammelten Pakete darstellt. Dies ist abhängig davon, wie viel Traffic Sie in der Zeit verursacht haben.
  6. Schauen Sie grob über die gesammelten Daten und versuchen sie folgendes herauszufinden:
    1. Welche Protokolle wurden erkannt?
    2. Erkennen Sie Pakete, die zu einer Verbindung gehören?

[bearbeiten] dsniff

Dsniff beinhaltet diverse Tools im Bereich Sniffing, Man-in-the-middle sowie Hijacking. Dsniff läuft unter Linux, Solaris, BSD und den meisten UNIX-Derivaten. Zudem existiert auch eine Windows-Variante, welche aber nur Dsniff, Mailsnarf, Urlsnarf und Webspy beinhaltet. Die aktuelle Version ist 2.3, das Copyright liegt beim Author, Dug Song.

Dsniff kann übertragene Passwörter für viele Klartext-Netzwerkprotokolle auffangen (FTP, Telnet, SMTP, HTTP, POP, poppass, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, PPTP, MS-CHAP, NFS, VRRP, YP/NIS, SOCKS, X11, CVS, IRC, AIM, ICQ, Napster, PostgreSQL, Meeting Maker, Citrix ICA, Symantec, pcAnywhere, NAI Sniffer, Microsoft SMB, Oracle SQL*Net, Sybase und Microsoft SQL auth info)

[bearbeiten] Hintergrund Technik

Ein Sniffer kennt den so genannten non-promiscuous mode und den Promiscuous Mode.

Im non-promiscuous mode wird der ankommende und abgehende Datenverkehr des eigenen Computers gesnifft.

Im Promiscuous Mode sammelt der Sniffer den gesamten Datenverkehr an die in diesen Modus geschaltete Netzwerk schnittstelle. Es werden also nicht nur die an ihn adressierten Datenframe|Frames empfangen, sondern auch die nicht an ihn adressierten. Der Adressat eines Frames wird in Ethernet-Netzwerken anhand der MAC-Adresse festgelegt.

Weiterhin ist es von der Netzwerkstruktur abhängig, welche Daten ein Sniffer sehen kann. Werden die Computer mit Hub (Netzwerk)|Hubs verbunden, kann sämtlicher Traffic von den anderen Hosts mitgeschnitten werden. Wird ein Switch (Computertechnik)|Switch verwendet, ist nur wenig oder gar kein Datenverkehr zu sehen, der nicht für das sniffende System selbst bestimmt ist. Allerdings gibt es in diesem Fall mehrere Möglichkeiten wie z. B. ARP-Spoofing, ICMP Redirects, DHCP Spoofing oder MAC-Flooding, um trotzdem die Frames empfangen zu können. Ein Switch darf also nicht als Sicherheitsfeature gesehen werden.

Deswegen Dsniff kann nur unter Hubs-Netzwerk gut arbeiten.

[bearbeiten] Anwendung

mit dem Befehl kann man einfach dsniff starten.

dsniff oder dsniff -i eth0

dsniff

dsniff -i eth0

Syntax

dsniff [-c] [-d] [-m] [-n] [-i interface | -p pcapfile] [-s snaplen] [-f services] [-t trigger[,...]]] [-r|-w savefile] [expression]


weiter Info zu Options... finden sich mit dem Befehl man dsniff oder im Weblink.

[bearbeiten] WebLink

dsniff

WIN32 port of dsniff

[bearbeiten] Übung

[bearbeiten] 1

Wechle Protokolle kann dsniff Passwort nicht auffangen ? (in Fragenpool "Kapitel 3" eingetragen)

A. HTTP
B. POP
C. IP
D. VRRP

[bearbeiten] 2

Wechle Netzwerkstruktur kann dsniff Daten sehen? (in Fragenpool "Kapitel 3" eingetragen)

A. Switch
B. Route/Switch
C. Hub
D. Route

[bearbeiten] 3

Mit Wechle Options kann man Usename/password in Datei Speichern? (in Fragenpool "Kapitel 3" eingetragen)

A. -m
B. -w
C. -i eth0
D. -w Dateiname

[bearbeiten] ettercap

Ettercap ist ein Open-Source-Werkzeug für Man-In-The-Middle-Angriffe. Es unterstützt Sniffing auf IP wie auch auf ARP Basis, Echtzeitkontrolle über Verbindungen selbst in geswitchten Netzwerken, inhaltbezogenes Filtering und aktive wie auch passive Analysen von einzelnen Hosts und ganzen Netzwerken.

Mittels ettercap ist man in der Lage den Datenstrom innerhalb eines geswitchten LANs so um zu leiten das ein Angreifer, der sich aktiv im LAN befindet, den Datenstrom analysieren und auswerten kann. Gefährlich ist dies, wenn Benutzter sich über das Netz authentifizieren ( Telnet, HTTP, POP usw.). Diese Protokolle übermitteln Username/Password im Klartext.

Ein einfaches Beispiel:

Es sei folgende Netzstruktur gegeben:

Bild:standard_topologie.jpg


  • Angreifer A möchte den Datenstrom von Client C und Server S über sich laufen lassen um den Traffic zu analysieren. Dazu startet Angreifer A das Tool ettercap.
bash# ettercap -C
  • Nun wird nach einem Netzwerk-Interface gefragt, über die ettercap fungieren soll. In diesem Fall wählt der Angreifer das Interface eth1.
  • Um zu wissen welche Hosts im Netz überhaupt vertreten sind, bietet ettercap ein IP-Scanner an um zum verifizieren welche Host im Netz aktiv sind. Dazu wird der Menüpunkt Hosts->Scan for hosts ausgewählt.
  • Die gefunden Hosts werden in einer Hostliste angezeigt, welche über Hosts->Host lists angezeigt werden
  • Die Hosts, dessen ARP-Tabellen man "vergiften" möchte, muss man explizit in der Hostliste verifizieren. Dazu läuft man mit den Pfeiltasten bis hin zum gewünschten Host und ordnet diesen einer Gruppe zu durch drücken der Tasten 1,2,3...
In diesem Beispiel würde der:
*Client C mit der IP-Adresse 192.168.50.122 der Gruppe 1 zugeordnet ( Taste "1" )
*Server S mit der IP-Adresse 192.168.50.123 der Gruppe 2 zugeordnet ( Taste "2" )
  • Nach Zuordnung der Hosts zu den Gruppen startet man mit dem ARP-Poisoning, durch Auswahl des Menüpunkts Mitm->ARP-Poisoning
  • Ettercap bietet zusätzlich die Funktion eines Passwort-Sniffers, welcher alle im Klartext übertragende Passwörter mit-"snifft" und diese auf dem Bildschirm ausgibt. Den Sniffer startet man über den Menüpunkt Start->Start sniffing
  • Wenn nun Client C eine Passwort-Authentifizierung ( z.B. via FTP ) am Server durchführt, wird diese im Klartext übertragen und von ettercap aufgefangen. Die wie folgt ausehen Password captured!

[bearbeiten] Schutz des eigenen Rechners

Ein sehr wichtiger Punkt in der IT-Sicherheit ist der Schutz des eigenen Rechners. Wenn dieser nicht gegen Angriffe abgesichert ist, haben Angreifer ein leichtes Spiel, um an die gewünschten Daten zu gelangen. Der Rechner kann auf verschiedene Möglichkeiten gesichert werden.

Zum einen sollte nicht jeder Benutzer root-Rechte haben. Er sollte nur Zugang zu den Bereichen haben, die er auch benutzen darf. Ausschließlich Administratoren sollten Zugang zu allen Bereichen des Rechners haben. Desweiteren sollten unnötige Benutzer, welche z.B. nach Installation einiger Programme automatisch erstellt werden könnten, wieder entfernt werden. Passwörter sollten eine Anreihung von Zahlen, Buchstaben und Sonderzeichen sein, die keinen Zusammenhang zueinander haben. Namen oder Geburtsdaten sollten stets vermieden werden, da Tools, welche Passwörter knacken sollen, eine Bibliothek besitzen, in der Namen und andere viel benutzte Passwörter gespeichert sind.

Programme sollten stets auf dem neusten Stand sein. Ältere Versionen könnten Fehler beinhalten, die es einem Angreifer ermöglichen, sich unbemerkt auf dem Rechner auszubreiten.

Um keinerlei Virenbefall zu haben, sollte ein aktueller Virenscanner, sowie ein Anti-Spyware Tool auf dem Rechner vorhanden sein. Diese Tools sollten immer auf dem neusten Stand sein, da ständig neue Viren erfasst werden. Eine Möglichkeit Viren zu bekommen ist das Öffnen von unbekannten e-mails. Hier sollte man vorsichtig sein und nicht die Anhänge von e-mails öffnen, deren Absender unbekannt ist.

Der Rechner sollte auch nie direkten Zugang zum Internet haben, sondern hinter einer Firewall sitzen, die nur die nötigsten Protokolle durchlässt. Verbindungen zu anderen Rechnern sollten stets über ein sicheres Protokoll wie z.B. ssh erfolgen. Hier wird das Passwort verschlüsselt gesendet, so dass ein eventueller Mithörer nichts mit den Daten anfangen kann. Wer W-LAN benutzt, sollte darauf achten, dass die Verbindung sicher verschlüsselt ist. WPA gilt momentan als sicher, wohingegen WEP mit Programmen aus dem Internet schon innerhalb weniger Minuten geknackt werden kann.


[bearbeiten] John the Ripper

John the Ripper Beschreibung:

John the Ripper ist dafür vorgesehen, verschlüsselte Passwörter eines Systems durch Brute-Force oder durch „Wortlistenangriff“ (Dictionary-Attack, Passwörter aus einer Textdatei auslesen) zu entschlüsseln. Dies funktioniert durch Verschlüsseln eines Textstrings und darauf folgendem Vergleich des verschlüsselten Textstrings mit dem schon verschlüsselten Passwort. Sind beide gleich, so wurde das Passwort gefunden. Im «Incremental Mode» entschlüsselt John jedes existierende Passwort, unabhängig davon, ob es aus Buchstaben, Sonderzeichen, Zahlen oder Kombinationen besteht. Diese Methode ist unter dem Begriff «Brute Force»-Attacke bekannt und dauert unter Umständen sehr lange.

Installation:

Wie die meisten Programme lässt es sich mit

apt-get install john

installieren

Anwendung:

Dazu benötigen wir eine Passwort Datei (z.B. shadow-Datei ) und es muss herausgefunden werden welches Verschlüsselungsverfahren die Passwörter haben. In den meisten Fällen ist unter Linux MD5 oder DES im Einsatz, wobei sich diese beiden Verfahren darin unterscheiden, dass DES nur die ersten acht Zeichen eines Passwortes verwendet, MD5 dagegen alle Zeichen.

Weiterhin ist es möglich, entweder alle Passwörter in der Shadow Datei zu knacken oder nur ein bestimmtes. Dies lässt sich über den Parameter

-user:xxx

angeben, wobei xxx für den Benutzernamen steht. Gibt man diesen Parameter nicht mit an, wird versucht, alle im File hinterlegten Passwörter zu knacken. Der zugehörige Befehl lautet:

john -format:MD5 [-user:xxx] shadow

Sobald john ein Passwort gefunden hat, wird es ausgegeben. Das Programm merkt sich bereits geknackte Passwörter, sodass bei einem neuen Start diese nicht neu geknackt werden müssen. Bereits gefundene Passwörter lassen sich mit dem Befehl

john -show shadow

erneut anzeigen.

Um den Prozess evtl. zu beschleunigen, ist es möglich, Wortlisten anzugeben, die dann zuerst durchprobiert werden. Dies erfolgt durch Angabe des Parameters

-wordfile:FILE

Verschiedene Wordfiles können über den Befehl

apt-cache search wordlist

angezeigt und anschliessend mit

apt-get install WORDFILE

installiert werden.

Beispiel:

Hier eine Beispiel Shadow-Datei

Bild:shadow1.jpg


Hier die verschieden Option bei john

Bild:johnoptionenn.jpg


Start von john

Bild:johnstart2.jpg


Das erste Passwort wurde gefunden

Bild:1gefundenn.jpg


Das zweite Passwort wurde gefunden

Bild:2gefundenn.jpg


Nach dem Beenden werden die schon gefunden Passwörter in der john.pot Datei gespeichert

Bild:potdatein.jpg


Fazit:

Gut für Eindringlinge sind Accounts mit Account-Namen als Passwort, Gast- und Demoaccounts ohne Passwort oder Accounts mit voreingestellten Passwörtern. Es sollte zudem verhindert werden, daß die Passwortdatei von Unbefugten gelesen werden kann. Für die Auswahl eines Passworts gilt:

  • keine Login-Namen
  • keine anderen Namen
  • keine Wörter oder Abkürzungen, die im Wörterbuch zu finden sind
  • keine persönlichen Informationen (Geburtstag, Telefonnummer usw.)
  • keine Variante der oben genannten schlechten Passwörter (z.B. rückwärts oder Großbuchstaben usw.)
  • nicht nur Ziffern nutzen

Gut sind Passworte mit einer Mischung aus Groß- und Kleinbuchstaben, die mindestens 8 Zeichen lang sind und aus einer zufälligen Auswahl von Ziffern und Buchstaben bestehen (auch Sonderzeichen).

Wenn möglich, sollten Passwortdateien überprüft werden, ob die Passworte sicher sind und regelmäßig geändert werden (so oft wie möglich).

Quellen:

http://wikipedia.org/

http://www.netzmafia.de

Download john the ripper:

http://www.openwall.com/john/

[bearbeiten] Systemdienste und Sicherheit

In diesem Modul werden wir uns mit den lokalen Systemdiensten befassen. Welche Dienste laufen überhaupt lokal auf dem Rechner?

Welche Dienste sind sinnvoll?

Warum und inwiefern ist ein Systemdienst gefährlich für die lokale Sicherheit?

Diese und weitere Fragen aus dem Bereich der Systemdienste werden in diesem Abschnitt behandelt.

Zu Demonstrationszwecken werden einige Beispiele von unserem Standard Rechner gezeigt.

[bearbeiten] Lokale Dienste

Zuerst einmal muss man wissen, welche Dienste auf dem lokalen Rechner überhaupt laufen. Diese Dienste werden auch Daemons genannt. Sie können auf zwei verschiedene Arten gestartet werden:

a) per rc-script beim Systemstart

b) per inetd Super daemon

Je nachdem was genau der Daemon leisten soll, entscheidet darüber, wie er gestartet wird. Beispielsweise wäre es nicht sinnvoll einen Samba-Daemon (Windows Dateifreigabe) via inetd zu starten, andererseits wäre der inetd für einen Telnet daemon sinnvoll.

[bearbeiten] Welche Dienste laufen gerade?

Um herauszufinden, welche Daemons gerade laufen, gibt es mehrere Möglichkeiten. Eine Möglichkeit wäre z.B. einen Portscanner auf dem Rechner laufen zu lassen, wie zum Beispiel nmap.

nmap -sS -sV b4:

Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-05-18 16:11 CEST
Interesting ports on b4.ezsnet.kr.hs-niederrhein.de (192.168.50.124):
(The 1653 ports scanned but not shown below are in state: closed)
PORT    STATE SERVICE     VERSION
22/tcp  open  ssh         OpenSSH 3.6.1p2 Debian 1:3.6.1p2-3 (protocol 1.99)
25/tcp  open  smtp        Postfix smtpd
68/tcp  open  dhcpclient?
80/tcp  open  http        Apache httpd 2.0.46 ((Debian GNU/Linux))
111/tcp open  rpcbind     2 (rpc #100000)
139/tcp open  netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
445/tcp open  netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
487/tcp open  saft?
631/tcp open  ipp         CUPS 1.1
901/tcp open  samba-swat?

Auf unserem Beispielrechner läuft also - ssh (der OpenSSH daemon, für remote logins) - smtp (der lokale E-Mail daemon) - dhcpclient (Client für DHCP) - http (Apache Webserver) - rpcbind (Remote Procedure Call) - netbios-ssn (SAMBA - Windows Dateifreigabe für Unix) - microsoft-ds (SAMBA - Windows Dateifreigabe für Unix) - saft (Simple-Asynchronous-File-Transfer) - ipp (Internet Printing Protocol) - samba-swat (SAMBA - Konfigurationstool)

Weitere Informationen erhält man mit einem Blick auf die Ausgabe von

ps xfa

Der Befehl listet alle zur Zeit laufenden Prozesse.

Tools: ps, nmap, netstat

[bearbeiten] Übungen: Experimente mit ps, netstat und nmap auf dem lokalen Rechner

[bearbeiten] Welche Gefahren gehen von den Daemons aus?

Ein Daemon läuft grundsätzlich in einem eigenen Benutzeraccount mit weniger priviligierten Rechten. Selten kommt es vor, dass ein Dienst mit root-Rechten (also Administrator-Rechten) läuft. Dies wäre der denkbar schlechteste Fall, denn wenn durch einen Fehler im Programmcode des Daemons Schadcode eingeschleust werden kann, dann läuft er mit den Rechten des Daemons. Deswegen lässt man einen Daemon normalerweise nicht mit root Rechten laufen.

Ein anderes Problem wäre der direkte Zugriff auf eine Console, oder auch auf Dateien. In unserem Beispiel kann man hier OpenSSH und Samba nennen.

Cups, Apache und Postfix sind weniger für diese Attacken empfänglich. Hier kommen die Denial- of-Service Attacken als Problem auf.

Ein gutes Tool um herauszufinden welche Sicherheitslücken die Daemons öffnen ist Nessus. Es untersucht einen Rechner auf Dienste und mögliche Exploits zu diesen und gibt einen Lösungs- vorschlag zu dem Problem.

Tools: nessus

[bearbeiten] Übung: nessus lokal laufen lassen

[bearbeiten] Was kann ich als Administrator dagegen tun?

Grundsätzlich sollten immer so wenig Daemons wie möglich laufen. Wenn man alles deaktiviert, was man nicht benötigt, hat man schonmal einige Sicherheitsprobleme beseitigt. Also sollte man sein System daraufhin untersuchen, welche Dienste der Rechner anbieten soll. Auf einem Webserver ist ein Druckerspooler wie Cups schon weniger sinnvoll. Auch der Samba-daemon sollte hier deaktiviert werden.

Remote Dienste wie rsh und rcp gelten generell als unsicher und sollten nicht mehr benutzt werden. Man kann deren Funktionalität weitestgehend durch OpenSSH ersetzen.

Viele Daemons lassen sich Netzwerk- und Berechtigungstechnisch konfigurieren. Man kann z.B. konfigurieren welcher Rechner von wo auf den Dienst zugreifen darf.

Ein weiterer Schritt wäre dann noch die Konfiguration von OpenSSL um die Übertragung zu verschlüsseln.

[bearbeiten] Sicherheitspatches

Ein weiterer wichtiger Punkt sind Sicherheitspatches! Um als Administrator ist es Beispielsweise ratsam, sogenannte Security Bulletins und Newsletter zu abonnieren um auf dem laufenden zu sein. Jede Linux-Distribution bietet diesen Dienst kostenlos an.

[bearbeiten] Beispiel: Einrichten des security Mirrors bei Debian

[bearbeiten] Exkurs: chroot() - den Daemon einsperren!

Wie kann man sicherstellen, dass ein Daemon keinen Schaden anrichten kann, bzw. ein Angreifer damit keinen Schaden anrichten kann, falls der Daemon doch mal gehackt wurde? Hier kommt ein sogenanntes chroot-jail als Lösung zum Einsatz.

[bearbeiten] Deamons/Dienste

TCP Verbindungen
TCP Verbindungen

Durch den folgendem Befehl läst sich aufzeigen welche Prozesse gerade auf einen Port lauschen und ob eine Verbindung besteht.

Erkennbar sind die lokalen und entfernten IP-Adressen inklusive der Ports und den Status der Verbindung.

LISTEN
Der jeweilige Prozess lauscht auf Verbindungen aus dem Netz.
ESTABLISHED
Es besteht eine aufgebaute Verbindung.
netstat -tunap

[bearbeiten] Firewall

[bearbeiten] Allgemeines

Firewall
Firewall

Als Firewall bezeichnet man ein System das meist als Schnittstelle zwischen Computernetzwerken eingerichtetist, um ungewünschten Netzverkehr zu filtern und erlaubten durchzulassen. Firewalls findet man sowohl nur in Hardware als auch nur in Software umgesetzt, jedoch meist wird eine Kombination aus beiden genutzt. Eine Hardwarevariante ist oft in einem Routern oder einem Switchen vorzufinden. Softwarevarianten sind beisplw. Packetfilter oder Proxy's.

Der häufigste Grund eine Firewall einzusetzen, ist den Netzverkehr zwischen dem localem Netz und dem Internet zu kontrollieren.

Eine Firewall wird aber auch eingesetzt um verschieden locale Netzbereiche zu trennen und an deren Schnittstellen den Traffic zu überwchen und kontrollieren zu können.

DMZ
DMZ

Ein Spezailfall davon stellt die DMZ (demilitarisierte Zone)) dar. Dabei handelt es sich eim ein kleines Netz das Netzressourcen beinhaltet, die sowohl relativ freien Zugang aus bzw. in das Internet brauchen, aber trotzdem nicht völlig frei an das Internet angeschlossen werden sollen. Als Beispiel wären da z.B. Web- oder Mail-Server, diese müssen sowohl eine Verbindung aus dem eigenem Netz als auch eine an das Internet haben, sollen aber nicht direkt an das Internet angeschlossen sein.

[bearbeiten] Firewalltechnologien

[bearbeiten] Paket Filter

Ein Paketfilter behandelt den Netzverkehr anhand der Informationen in den Paket Headern. Hauptsächlich werden hierbei die OSI-Layer 3 und 4 Header ausgewertet.

Dabei sind folgende Aktionen möglich:

DENY oder DROP 
Ein unzulässiges Paket, welches den Filter nicht passieren darf, wird ignoriert
REJECT 
Ein unzulässiges Paket, welches den Filter nicht passieren darf, an den Absender zurückgeschickt, mit der Bemerkung, dass der Zugriff unzulässig war
FORWARD oder PERMIT 
Ein zulässiges Paket, welches den Filter passieren darf, wird weitergeleitet
[bearbeiten] Beispiele für Paketfilter:
  • IPFilter portabler Paketfilter für Solaris, FreeBSD u.a.
  • pf Paketfilter von allen BSD-Derivaten, vornehmlich OpenBSD
  • ipfw Paketfilter von FreeBSD
  • ipfwadm (Linux 2.0)
  • ipchains (Linux 2.2)
  • iptables (Linux 2.4 + 2.6)
[bearbeiten] Statefull Inspection

Stateful Paket Inspection (Zustandsgesteuerte Filterung) ist eine erweiterung des Paketfilters und stellt eine dynamische Paketfilterungstechnik dar. Dabei wird nicht nur jedes Datenpaket analysiert, sondern auch der Zustand der zugehörigen Verbindung. Dadurch können neue Pakte einem bestimmten Datenstrom zugeordnet werden.

Dadurch ist es zB. möglich die Filterung von Paketen die von aussen kommen recht streng zu handhaben, aber Pakete die zu einer Verbindung gehören die von innen aufgebaut wurde, trotzdem durchzulassen. Oder Pakete die evtl. eine Denial of Service (DoS) darstellen, entsprechend zu behandeln.

[bearbeiten] Application-Layer-Firewall

Application-Layer-Firewall arbeitet auf schicht 7 (Applikationsschicht) des OSI-Modells, d.h. sie kann nicht erwünschte Anwendungsprotokolle (zum Beispiel peer-to-peer) blockieren. An sich sind die Möglichkeiten einer Application-Layer-Firewall nur Verbidnungen zu Unterbinden an Hand von Blacklisten. Jedoch wird meist zusätzlich ein Proxy verwendet.

Ein Proxy hohlt stellvertretend für den Client Inhalte aus dem Internet und speicher sie zwischen, bevor er sie an den Client der sie angefordert hat zurück sendet. So kann die Application-Layer-Firewall den Datenverkehr entsprechend analysieren. damit beschränkt sich die Fähigkeit der Application-Layer-Firewall mit der durch die jeweils verwendeten unterstützden Protokolle der Proxy's. Es gibt aber Proxy's für die meisten Protokolle wie zB. FTP, DNS, HTTP, SMTP, SQL*Net, POP3, MS-RPC usw.

[bearbeiten] Personal Firewall

Eine Personal Firewall (PFW) oder auch Desktop-Firewall filtert nur den ein- oder ausgehenden Verkehr eines Desktops.

Streng genommen ist es gar keine Firewall, da sie auf einem Desktop-PC läuft und nicht als Schnittsetllen zwischen zwei Netzsegmenten eingesetzt wird. Der durch eine Personal Firewall gebotene Schutz bzw. dessen Wirkung ist ebenfalls stark umstritten. Experten behaupten das eine Personal Firewall nur gegen Angriffe schützt die sich keine besondere Mühe geben. Nicht ohne Grund jedoch empfiehlt das Bundesamt für Sicherheit in der Informationstechnik (BSI) den Einsatz einer Personal Firewall auf einem Windows-PC. Um den Zugriff von localen Programme auf das Internet zu unterbinden ist sie gut geeignet.

Weiter Informationen sind hier zu finden:

[bearbeiten] Bekannte Personal Firewall
[bearbeiten] IDS und IPS

Intrusion Detection Systeme und Intrusion Prevention Systeme werden oft in Verbindung mit Firewalls genannt. Intrusion Detection Systeme versuchen an Hand von bestimmten Mustern Einbrüche und Angriffe auf Computer bzw. Netzwerken zu erkennen, daher gehören sich im eigentlichem Sinne nicht zur Gruppe er Firewalls. Intrusion Prevention Systeme gehen jedoch einen Schritt weiter und versuchen für die erkannten Einbrüche und Angriffe entsprechende Gegenmassnahmen einzuleiten, wie zB. das Sperren bestimmter Ports oder IP's. Das macht sie damit zu einer Firewalltechnologie.

[bearbeiten] Weblinks

[bearbeiten] Firewalls

  • BrazilFW ist eine selbst auf älteren PCs lauffähige Linux-Firewall, die sich auch mit einer Diskette begnügen kann.
  • Endian Firewall ist eine Open Source Linux-Distribution für Firewall-Systeme.
  • IPCop ist eine einfach zu bedienende Linux-Distribution, die zum Ziel hat, eine durch und durch sichere Firewall zu sein.
  • M0n0wall ist eine BSD basierende Firewall, die teilweise mit ihren Funktionen an Profi-Firewalls herankommt und trotzdem sehr einfach zu konfigurieren ist.
  • Smoothwall ist eine für Firewall-Systeme optimierte Linux-Distribution.
  • Astaro Security Linux ist eine kommerzielle Linux-Distribution für Firewall-Systeme.
  • Securepoint ist eine kommerzielle Linux-Distribution für Firewall-Systeme.
  • Microsoft Internet Security and Acceleration Server ist eine kommerzielle Firewall von Microsoft.

[bearbeiten] Bücher

  • Das Firewall-Buch
Wolfgang Barth
Millin Verlag; Auflage: 3., aktualis. u. erw. Aufl. (November 2004)
ISBN: 3899901282
Amazon Suche
  • Linux-Firewalls - Ein praktischer Einstieg
Andreas Lessing
O'Reilly; 2. Auflage 2006,
ISBN: 3897214466
Download der LaTeX-Quellen
Amazon Suche

[bearbeiten] Netfilter/iptables

Netfilter ist eine Software innerhalb des Linux-Kernels, die es erlaubt, Netzwerkpakete abzufangen und zu manipulieren. Es bildet damit das Herzstück einer Firewall auf Basis von Linux.

Iptables ist das dazugehörige Dienstprogramm zur Konfiguration von Netfilter.


Netfilter ist eine Vorgabe, wie Datenpakete durch/in oder aus einen PC/Linux-Firewall laufen sollen. Ein ankommendes Paket durchläuft verschiedene Ketten, je nachdem für welches Ziel das Paket gedacht ist. Ist ein Paket für die Firewall gedacht durchläuft ein Paket die Ketten PREROUTING -> INPUT -> OUTPUT -> POSTROUTING. Ist allerdings ein Paket für die Durchreise gedacht, sprich soll auf ein anderes Interface geroutet werden, durchläuft das Paket die Ketten PREROUTING -> FORWARD -> POSTROUTING.

Bild:Netfilter.png

Ob ein Paket für die Firewall selber gedacht ist oder für die Durchreise findet im Block "Routingentscheidung" statt und wird vom Betriebssystem selber gesteuert (nicht veränderbar). Allerdings sind die anderen Ketten via iptables konfigurierbar. D.h. mittels iptables ist man in der Lage Filter-Regeln auf die dem entsprechenden Ketten zu legen und somit aktiv den Datenverkehr zu steueren.


Iptables ist in der Lage die Regeln auf Ketten anzuwenden. Siehe dazu folgendes kleines Beispiel:

Es sei geben folgende Netzstrukrutur gegeben:

Bild:Firewall2.PNG

Bild:ip_tabelle.png


Es soll folgende Regeln auf die Firewall angewendet werden:

  • Host B3 darf nur via HTTP auf Host A4 zugreifen
  • Host B4 darf nur via SSH und Telnet auf Host A4 zugreifen
  • Alles andere soll verboten werden


# Damit Paketweiterleitung zwischen Interfaces funktioniert
1.)  echo "1" > /proc/sys/net/ipv4/ip_forward   

# --- Standard Policy DROP ----
2.)  iptables -P PREROUTING DROP

# --- Schon aufgebaute Sitzungen zulassen ----
3.)  iptables -A PREROUTING -t nat -m state --state ESTABLISHED,RELATED -j ACCEPT

#---- B3 -> HTTP -> A4 ----
4.)  iptables -A PREROUTING -t nat -s 192.168.50.2 -d 172.16.10.5 -p TCP --dport 80 -j ACCEPT

#---- B4 -> SSH/Telnet -> A4 ----
5.)  iptables -A PREROUTING -t nat -s 192.168.50.3 -d 172.16.10.5 -p TCP --dport 22 -j ACCEPT
6.)  iptables -A PREROUTING -t nat -s 192.168.50.3 -d 172.16.10.5 -p TCP --dport 23 -j ACCEPT

Erläuterung

zu 1.) Mann mus Linux sagen, dass er Pakte von einem Interface zu einem anderen weiterleiten ( routen ) darf. Anderfalls könnte kein Routing stattfinden.

zu 2.) Setze Standard-Policy auf DROP. Alle Pakete auf die keine Filter-Regel zutriffen, werden nach der Standard Policy behandelt. D.h. DROP -> Verwerfen , ACCEPT -> Zulassen

zu 3.) Alle bestehende Verbindungen ( initialisierte ) werden zugelassen. Es wurden unter 4.-6.) Regeln aufgesetzt die den Verkehr von einer Seite auf die andere zulassen, aber was mit dem Rückweg? Die Absender IP-Adresse ist unterschiedlich ( je nach Kommunikationsrichtung ) und würde sonst verworfen.

zu 4.) Lasse den Verkehr von 192.168.50.2 (B3) nach 172.16.10.5 (A4) via Port 80 (HTTP) zu (ACCEPT)

zu 5.) Lasse den Verkehr von 192.168.50.3 (B4) nach 172.16.10.5 (A4) via Port 22 (SSH) zu (ACCEPT)

zu 6.) Lasse den Verkehr von 192.168.50.3 (B4) nach 172.16.10.5 (A4) via Port 23 (Telnet) zu (ACCEPT)


Übung

* Baue eine Netzwerkstruktur wie im Bild ( s.o.) auf, d.h. Verkablung/Adressierung.
* Kontrolliere Verbindung ( ohne Firewall-Regeln ). D.h. ein Ping von jedem Rechner auf jeden anderen sollte möglich sein!
* Setze folgende Firewall-Regeln auf:

  * Host B3 darf via SSH auf A3 zugreifen
  * Host B4 darf via SSH auf A3 zugreifen
  * Host B3/B4 dürfen via HTTP auf auf A4 zugreifen


[bearbeiten] Weblinks

[bearbeiten] Zusammenfassung/Fazit

Der Inhalt dieser E-Learning-Plattform sollte Sie auf die Gefahren von schlecht oder mangelhaft konfigurierten und/oder nicht aktualisierten Betriebssystemen und Diensten hinweisen. Zudem sollten Sie erkannt haben, welche Gefahren von nicht eingespielten Sicherheitspatches oder von nicht genutzten (Security-)Tools ausgehen.

Nachdem Sie sich mit den einzelnen Kapiteln unserer E-Learning-Plattform beschäftigt und vielleicht auch die Übungen genutzt haben, sollten Sie nun wissen und verstanden haben:

  • welche vielfältigen Angriffsmöglichkeiten es für externe Hacker auf Ihrem Rechner oder in Ihrem angeschlossenen Netzwerk gibt
  • wie man seinen eigenen Rechner mit Tools wie beispielsweise Nessus, Telnet oder nmap auf Sicherheitslücken hin überprüft
  • wie man seinen eigenen Rechner generell absichert, u. a. durch gut gewählte Passwörter, Anti-Viren-Software oder Anti-Spyware
  • unnötige Dienste identifiziert und deaktiviert
  • die Konfiguration von schlecht oder falsch konfigurierten Diensten optimiert


Insofern bei Ihnen dennoch bezüglich bestimmter Themen Unklarheiten oder Verständnisfragen aufkommen sollten oder aufgekommen sind, empfehlen wir die von uns zu jedem Thema gestellten Übungsaufgaben und -fragen, die von uns vorgeschlagenen Bücher oder aber die Links auf detailiertere Internet-Seiten zu den jeweiligen Themengebieten.

Persönliche Werkzeuge