Material zum Praktikumsversuch Benutzung der Softwaretools

Werbung
Material zum Praktikumsversuch
Stand: Mai. 2005,
zusammengestellt von: Ulrich Greveler (Lehrstuhl NDS)
Version 1.1
Grundpraktikum zur IT-Sicherheit
Benutzung der Softwaretools Nessus und
nmap zum Aufspüren von
Sicherheitsschwachstellen
Lehrstuhl für
Netz- und Datensicherheit
ruhr-universität bochum
Bitte beachten Sie, dass dieser Versuch im Raum IC4/58 stattfindet.
Praktikumsversuch Nessus, Nmap
Lehrstuhl Netz- und Datensicherheit
1
Portscanner
(aus Wikipedia, der freien Enzyklopädie)
Ein Portscanner ist eine Software mit der überprüft werden kann, welche Dienste ein mit
TCP/IP arbeitendes System anbietet. Der Portscanner nimmt dem Anwender dabei die Arbeit
ab, das Antwortverhalten eines Systems selbst mit einem Sniffer zu untersuchen und zu
interpretieren. Oft bieten Portscanner auch Zusatzfunktionen, z.B. Betriebssystem- und
Diensterkennung an.
Bei einem Portscan wird auf den gewünschten Ports versucht, eine Verbindung zu dem
Rechner aufzubauen und das Antwort-Verhalten des Zielsystems je nach verwendeten
Protokoll interpretiert. Im Falle von TCP z.B. werden i.d.R. SYN-Pakete von dem
Portscanner verschickt, ein Port, der mit einem SYN/ACK-Paket antwortet, wird als offen
bezeichnet, ein Port der mit einem RST/ACK-Paket antwortet, als geschlossen und ein Port,
der nicht antwortet, als gefiltert.
Um auszuschliessen, das Antwort-Pakete übersehen werden, überprüfen Portscanner im
letzteren Fall einen Port i.d.R. mehrfach, und passen ihren Timeout dynamisch an. Das
Verfahren wird für alle zu untersuchenden Ports wiederholt, wobei um Zeit zu sparen mehrere
Ports parallel geprüft werden.
SYN-Scans, bei denen der Portscanner ein erhaltenes SYN/ACK Paket mit einem RST-Paket
terminiert, wurden in der Vergangenheit auch als "Stealth-Scans" bezeichnet, da die
Anwendung, die den entsprechenden Port bedient, in diesem Fall keinen Verbindungsversuch
wahrnimmt und dies nicht protokollieren kann. Praktisch jede halbwegs aktuelle FirewallSoftware kann jedoch die Pakete erfassen und über deren Protokoll-Dateien kann der SYNScan erkannt werden.
Da es sich dabei um ein völlig protokollkonformes Verhalten handelt (Siehe TCP/IP), sind
Portscans teilweise legal. Ausnahmen bestehen, wenn durch Portscans ein Denial of Service
Angriff ausgelöst wird, wenn z.B. die dem Ziel zur Verfügung stehende Bandbreite
verbraucht wird.
Die o.g. Zusatzfunktionen wie Betriebssystems- OS-Fingerprinting und Dienst-Erkennung,
für die z.B. der Portscanner nmap bekannt ist, sind strenggenommen keine Portscans mehr
und ihr Einsatz kann aufgrund eines nicht ganz auszuschliessenden Absturzrisikos beim Ziel
problematisch sein.
NMAP
MiniHowTo (von P. Südmeyer)
NMAP ist ein sehr umfassender und vermutlich der bekannteste Portscanner, insbesondere
auf Unix-Systemen. Mit seinen vielfältigen Scantechniken ist er auch als Scan-Engine für
andere Programme, wie den Sicherheisscanner Nessus, sehr weit verbreitet. Es steht das
grafisches Frontend nmapfe zur Verfügung, mit dem sich alle Einstellungen sehr komfortabel
Praktikumsversuch Nessus, Nmap
Lehrstuhl Netz- und Datensicherheit
2
vornehmen lassen. Darüber hinaus gibt einem das Programm immer den äquivalenten ShellBefehl an. Um NMAP in vollem Umfang nutzen zu können werden root-Rechte gefordert.
Für den sinnvollen Umgang mit NMAP ist zumindest grundlegende Kenntnis der
verschiedenen Scantechniken nötig, die im Folgenden vermittelt werden soll.
Scannen allgemein
Für das Scannen eines Hosts oder IP-Bereichs gibt es genauso unterschiedliche Motivationen
wie Techniken. Die ursprüngliche Motivation liegt darin begründet, die Verfügbarkeit von
Ressourcen im Netzwerk zu überprüfen. Zu diesem Zweck steht zunächst das Inernet Control
Message Protocol (ICMP) zur Verfügung, welches unter anderem den echo request bzw.
reply, bekannter unter der Bezeichnung ping, definiert.
Darüber hinaus bietet das Transmission Control Protocol (TCP) eine gute Möglichkeit,
detailierteren Aufschluss über die auf dem Host arbeitenden Dienste zu erlangen. Dazu wird
ganz einfach ein Verbindungsaufbau auf einem bestimmten Port vorgenommen und die
Reaktion abgewartet. Diese kann üblicherweise aus einer Verbindungsannahme oder
Abweisung bestehen. Es ist auch denkbar, dass keinerlei Reaktion wahrzunehmen ist. In
diesem Fall wurde das Paket vermutlich von einem Paketfilter (z.B. einer Firewall) fallen
gelassen Theoretisch denkbar ist auch, dass das Paket sein Ziel nicht erreicht hat, wobei dann
zumeist wieder das ICMP-Protokoll zum Tragen kommt und eine Fehlermeldung an den
Absender richtet. Abschließend dazu ist zu sagen, dass der Port auf den eine Verbindung
vorgenommen wird, nur in so weit aussagekräftige Informationen liefern kann, als dass den
gängigen Diensten – also z.B. http, ftp, ssh, pop,… - durch die Internet Assigned Numbers
Authority (IANA, www.iana.org) jeweils ein so genannter Well Known Port zugewiesen wird,
unter dem sie sich üblicherweise auch ansprechen lassen – wenn sie überhaupt arbeiten.
Im Zeitalter globaler Vernetzung gerät eine weitere Motivation immer mehr in den
Mittelpunkt: das Ausspähen fremder Netzwerkinfrastrukturen und von fremden Hosts
angebotener Dienste, sowie der daraus eventuell resultierenden Schwachstellen im System.
Diese Information ist die grundlegende Basis für einen Angriff. So ist das Scanning auf der
einen Seite interessant für den potentiellen Angreifer, auf der anderen Seite, zur
Gewährleistung eines hohen Sicherheitsniveaus, wichtig für den System-Administrator.
Im Laufe der vergangenen Jahre sind neben den oben genannten „regulären“ Scan-Techniken,
die so genannten „Stealth“-Techniken immer populärer geworden. Ziel ist es dabei, möglichst
unbemerkt einen Scan durchzuführen, damit das potentielle Opfer keine Gefahr wittern und
im Vorfeld Gegenmaßnahmen einleiten kann. An dieser Stelle sei auf die heutzutage weit
verbreitete Nutzung so genannter Intrusion Detection Systems (IDS) hingewiesen, welche
unter anderem aggresive Portscanns detektieren.
Stealth-Techniken
Die folgenden Scantechniken beziehen sich immer auf TCP-Verbindungen.
Der halboffene Scan ist die bekannteste und zugleich simpelste Methode eines Stealth-Scans.
Hierbei wird lediglich ein Verbindungsaufbau initiiert, nach dem Erhalt der Bestätigung aber
nicht weiter vollzogen. Das hat den gravierenden Vorteil, dass dieser „missglückte“
Verbindungsaufbau bei der Gegenstelle im Allgemeinen nicht protokolliert wird.
Die Tatsache, dass die TCP-Richtlinien (RFC 793) die Beantwortung eines fehlerhaft
empfangenen Paketes vorschreiben, machen sich die Scan-Techniken X-Mas-, Fin- und NullScan zu nutze.
Praktikumsversuch Nessus, Nmap
Lehrstuhl Netz- und Datensicherheit
3
Beim X-Mas-Scan wird ein Paket mit gesetztem URG-, PSH- und FIN-Flag gesetzt. Im Falle
des FIN-Scans wird nur das FIN-Flag gesetzt und beim Null-Scan wird gar kein Flag gesetzt.
Die Unterschiedlichen Scantechniken lassen sich hervorragend mit Hilfe von Ethereal
nachvollziehen.
UDP-Scan
Das Scannen eines Hosts auf Basis des User Datagram Protocols (UDP) ist im Allgemeinen
weniger interessant, als ein TCP-Scan. Das hängt in erster Linie damit zusammen, dass UDP
ein verbindungsloses Protokoll ist. Das nicht vorhanden sein eines Dienstes wird in diesem
Fall durch die ICMP-Meldung „Destination unreachable“ signalisiert. Nachdem die Internet
Engineering Task Force aber in Ihrer Richtlinie für IPv4-Routing (RFC 1812) die
Verminderung von ICMP-Meldungen fordert, ist der UDP-Scan ein zumeist sehr langwieriger
Prozeß. Es gibt jedoch einige Ausnahmen, die den UDP-Scan wieder sehr interessant machen
können. Dazu zählen trojanische Pferde, wie das inzwischen in die Tage gekommene Back
Orifice, welche oftmals auf UDP-Ports lauschen.
NMAP-Parameter
Die folgende Tabelle fasst zu allen in diesem HowTo aufgeführten Scantechniken die
entsprechenden Parameter beim Aufruf von NMAP zusammen. Darüber hinaus gibt es noch
viele weitere Möglichkeiten NMAP zu nutzen, die Sie beispielsweise durch aufrufen der manPages (man nmap) erfahren können.
Parameter
-sP
-sT
-sS
-sX
-sF
-sN
-sU
Bedeutung
Scan durch ICMP-Echo-Request
Einfacher TCP-Connect-Scan
Halboffener Scan bzw. SYN-Scan
X-Mas-Scan
FIN-Scan
Null-Scan
UDP-Scan
Um tiefgründigere Informationen über die Protokolle TCP, UDP und ICMP zu erhalten sei
auf den jeweiligen Request for Comment (RFC) verwiesen. RFCs geben die de facto
Standards eines jeden Internet-Protokolls wieder. Sie werden von der Internet Engineering
Task Force (IETF) verwaltet.
Transmission Control Protocols
User Datagram Protocol
Internet Control Message Protocol
RFC 793, zzgl. RFC 1122, RFC
1323
RFC 768
RFC 792
Alle RFCs lassen sich von den Webseiten der IETF abrufen:
http://www.ietf.org/rfc.html
Praktikumsversuch Nessus, Nmap
Lehrstuhl Netz- und Datensicherheit
4
NESSUS(D)
MiniHowTo
(von P. Südmeyer)
Der Server (nessusd)
Um mit nessus arbeiten zu können ist zunächst das Anlegen eines Benutzers
nötig:
$ nessus-adduser
Dabei besteht die Möglichkeit, jedem Benutzer spezielle Scanrechte zu
erteilen, bzw. zu entziehen. Prinzipiell lassen sich Rechte mit dem
Schlüsselwort accept erteilen und mit deny entziehen. Für genauere
Informationen sei auf die Anleitung ($ man nessus-adduser) verwiesen. Auf
dem System wurden bereits die Benutzer root und praktikum (pw je 12345) mit
vollen Scanrechten bzw. mit Einschränkung auf das Prakikumsnetz angelegt.
Die Kommunikation zwischen Client und Server findet über eine
unverschlüsselte Verbindung statt. Prinzipiell ist auch eine verschlüsselte
Verbindung konfigurierbar.
Der Dienst wird beim Hochfahren des Rechners nicht automatisch gestartet,
sondern muss manuell aufgerufen werden:
$ nessusd –D
Alle den Daemon betreffenden Befehle sind als root auszuführen, der Client
lässt sich von jedem Benutzer starten. Nessus ist, wie jeder andere
Sicherheits-Scanner, auf das vorhanden sein von Exploits angewiesen. Dabei
zeichnet sich nessus insbesondere dadurch aus, dass es zum einen frei
erhältlich ist und zum anderen immer mit sehr aktuellen Exploits versorgt
wird. Diese Exploits werden innerhalb von nessus Plugins genannt. Ein
update der Plugins ist mit folgendem Befehl möglich:
$ nessus-update-plugins
Der Client (nessus)
Der Server lässt sich von allen im Netz befindlichen Clients nutzen. Dazu
ist eine entsprechende Client-Software nötig. Der Standard-Client für
Linux-Systeme ist bereits auf dem Image installiert. Er lässt sich über die
Shell starten:
$ nessus
oder, als Benutzer praktikum, über das Startmenü in KDE.
Darüber hinaus gibt es zum einen noch Alternativen für Linux, zum anderen
aber auch einen Client für Windows. Dieser ist unter der URL
http://nessuswx.nessus.org erhältlich.
Um mit dem Client arbeiten zu können, muss man sich zunächst am Server
anmelden. Anschließend stehen viele Optionen zur Verfügung, von denen hier
nur die grundlegendsten genannt werden sollen.
Nach dem Starten des nessus-Client kann durch den Benutzer eine Auswahl der
anzuwendenden Plugins (vgl. Abb. 1) getroffen werden. Dabei macht es evtl.
Sinn, nur die Ungefährlichen, oder nur eine bestimmte Plugin-Kategorie zu
verwenden. Da ein allumfassender Scan nicht sehr lange dauert, ist es
jedoch nicht dringend erforderlich, eine Vorauswahl zu treffen. Darüber
hinaus sind die Kategorien zum Teil nicht sehr eindeutig, was eine
wunschgerechte Vorauswahl erschwert.
Üblicherweise wird durch nessus zunächst ein Portscan durchgeführt, der
feststellt, welche Dienste laufen. Anschließend werden nur noch die
einschlägigen Plugins genutzt, zzgl. der durch den Benutzer gewählten. Der
Portscan wird durch das Plugin Misc./Services realisiert. Die Scantechnik
lässt sich, neben vielen anderen „Feineinstellungen“, darüber hinaus unter
dem Reiter Prefs. einstellen.
Um schlussendlich einen Scan durchzuführen, besteht unter dem Reiter Target
selection (vgl. Abb. 2) die Möglichkeit, die zu scannenden Hosts
Praktikumsversuch Nessus, Nmap
Lehrstuhl Netz- und Datensicherheit
5
einzugeben. Dabei kann sowohl eine einzelne IP (z.B. 192.168.1.1), als auch
ein ganzer IP-Bereich (z.B. 192.168.1.1-100, 192.168.1.1-192.168.2.50)
angegeben werden.
Plugins
Plugins können sowohl vom Administrator erstellt, als auch in fertiger Form
aus dem Internet herunter geladen werden. Sie lassen sich grundsätzlich in
unterschiedlichen Sprachen programmieren, üblich ist jedoch die nessuseigene Sprache NASL (Nessus Attack Scripting Language).
Im Allgemeinen ist es aber nicht nötig, eigene Plugins zu schreiben, da die
frei verfügbaren sehr aktuell gehalten werden. Üblicherweise steht zu einem
veröffentlichten Exploit innerhalb weniger Tage das passende Plugin zur
Verfügung.
Die Plugins werden auf zwei verschiedene Arten unterschieden. Zunächst wird
zwischen solchen Plugins unterschieden, die den gescannten Rechner, bzw.
einen darauf laufenden Dienst, zum Absturz bringen können und solchen, die
das nicht tun. Dazu ist anzumerken, dass die Unterscheidung vom jeweiligen
Programmierer vorgenommen wird und durchaus Fehler denkbar sind! In der
Grundeinstellung benutzt nessus lediglich die ungefährlichen Plugins.
Die andere Unterscheidung besteht in unterschiedlichen Sparten, wie
Windows, Netware, Remote file access, etc.
Abb 1: Übersicht der verfügbaren Plugins
Praktikumsversuch Nessus, Nmap
Abb 2: Eingabe der zu scannenden Adresse
Lehrstuhl Netz- und Datensicherheit
6
Versuch
Versuchsaufbau
Nach den einleitenden Informationen erhalten Sie nun eine konkrete Versuchsbeschreibung.
Auf den Rechnern ist SuSE 9.1 oder höher (d.h. Linux) installiert. Sie bearbeiten den Versuch
mit Kommandozeilen-Befehlen und GUIs. Sie können eine Shell und einen Editor Ihrer Wahl
benutzen: falls Sie keine Präferenz bzw. Kenntnisse haben, wird bash und pico
vorgeschlagen.
Sie erhalten vom Versuchsleiter eine Liste von IP-Adressen, unter denen Rechner
erreichbar sind, die Sie untersuchen sollen. Scannen Sie auf keinen Fall irgendwelche
anderen Adressen außer diesen oder Ihrer eigene Rechneradresse. Arbeiten Sie in dieser
Hinsicht besonders sorgfältig.
Bitte keine Passwörter verändern, da der Versuchsaufbau noch benötigt wird! Für diesen
Versuch arbeiten Sie unter root und praktikum. Das Passwort wird für den Versuch jeweils
auf 12345 gesetzt.
Zum einfachen Datenaustausch zwischen den Usern bitte das Verzeichnis /tmp/ benutzen.
Die Beschreibungen der einzelnen Schritte enthalten die Vorgabe in fetter Schrift und die
Erläuterungen dazu jeweils in normaler Schrift. Falls Sie etwas nicht verstehen, fragen Sie
bitte zu Beginn den Mitarbeiter, der das Praktikum betreut. Ziel ist es, dass Sie die Vorgabe
jedes Schrittes erfüllen und das Ergebnis für sich dokumentieren. Schreiben Sie am besten
bei jedem Schritt das Zwischenergebnis auf, damit der Bericht vollständig den Versuch
abdeckt. Unvollständige Berichte werden vom Versuchsleiter nicht akzeptiert, was dazu
führen kann Sie die Schritte dann noch mal durchführen müssen.
Bereiten Sie sich bitte darauf vor, ggf. eine neue Version der Tools selbst zu installieren,
wenn die im Labor vorhandene Version bereits zu alt ist.
Tipp: Während Sie einen Fortschrittsbalken beobachten, können Sie bereits dokumentieren
und vorausplanen.
Schritt 1:
Stellen Sie einen kurzen Plan zur Vorgehensweise auf, wie Sie mit beiden Tools
möglichst schnell (und ggf. oberflächlich) die vorgegeben Adressen untersuchen. Es geht
zunächst darum, sich ein Bild von der Lage zu machen, ohne viel Netzwerktraffic zu erzeugen
(welche Rechner existieren; was sind es für Funktionen, Betriebssysteme, Server, Namen,
Netzwerktopologie…?) .
Dokumentieren Sie diesen Plan stichpunktartig und erläutern Sie ihn auf Nachfrage
dem Bereuer. Führen Sie den Plan durch; falls es wieder erwarten zu lange dauert
(höchstens 15 Minuten verbrauchen), brechen Sie ab, modifizieren Sie den Plan und
beginnen erneut.
Praktikumsversuch Nessus, Nmap
Lehrstuhl Netz- und Datensicherheit
7
Schritt 2:
Sie sollen nun für jeden ermittelten Computer (gemäß Ergebnissen aus Schritt 1) eine
möglichst exakte Liste von Schwachstellen (geordnet nach Priorität) ermitteln. Dazu
sollen beide Tools benutzt werden. Machen Sie einen Plan, mit welchen Einstellungen
Sie die Untersuchung durchführen wollen und behalten Sie die Zeit im Auge. Bitte
benutzen Sie möglichst aktuelle PlugIns. Falls Sie Zeitnot erwarten, reagieren Sie
möglichst früh, um den Plan abändern zu können. Sie können sich auch mit einem
anderen Team zusammentun und die Aufgabe parallelisieren, wenn die Pläne
hinreichend ähnlich sind.
Das erfolgreiche Team, das zuerst Schritt 2 abgeschlossen hat, soll die Ergebnisse den
anderen (deren Rechner noch scannen) präsentieren. Eine kurze Diskussion wird folgen.
(Bitte max. 90 Minuten für Schritt 2 verbrauchen.)
Schritt 3:
Stellen Sie anhand der gewonnen Informationen fest, wie die entdeckten Schwachstellen
beseitigt werden können und mit welchem Aufwand dies in etwa verbunden wäre
(Internetrecherche notwendig). Welche der gefundenen Schwachstellen würden Sie unter
vermutlich „False Positive“ einordnen? Begründen Sie diese Entscheidung ausführlich.
Das erfolgreiche Team, das zuerst Schritt 3 abgeschlossen hat, soll die Ergebnisse den
anderen präsentieren, dabei sollen unterschiedliche Einschätzungen diskutiert werden.
(Bitte max. 30 Minuten für Schritt 3 verbrauchen.)
Schritt 4:
Vergleichen Sie die Ergebnisse bzgl. schwerwiegender Schwachstellen mit den anderen
Teams. Falls es Unterschiede gibt: Geben Sie Gründe an, die diese Unterschiede
erklären.
(Bitte max. 30 Minuten für Schritt 4 verbrauchen.)
Schritt 5:
Erläutern Sie stichpunktartig unter Berücksichtigung der Erfahrungen und Ergebnisse
der Versuchsdurchführung die Vor- und Nachteile der von Ihnen gewählten Pläne zur
Sicherheitsuntersuchung.
Bewerten Sie die Nützlichkeit der verwendeten Tools.
Praktikumsversuch Nessus, Nmap
Lehrstuhl Netz- und Datensicherheit
8
Voraussetzungen für die Teilnahme an diesem Versuch
•
•
•
•
Grundkenntnisse zum Arbeiten unter Linux
Sie müssen mit Kommandozeilen umgehen können!
Dieses Dokument muss vorher gelesen werden; siehe Kontrollfragen zum Verständnis
des Dokumentes
Machen Sie sich mit der Dokumentation vertraut (es folgen einige Vorschläge, wo
es eine Dokumentation gibt. Bei veralteten Links benutzen Sie bitte eine
Suchmaschine Ihrer Wahl und suchen Sie nach einer aktuellen Dokumentation!):
http://nessus.org/documentation/
http://www.computec.ch/dokumente/scanning/nmap_man-page/nmap_manpage-de.html
http://www.computec.ch/dokumente/scanning/nmap/nmap.html
•
Beachten Sie unbedingt, dass Sie sich strafbar machen können, wenn Sie Rechner
außerhalb der Laborumgebung scannen (zum Beispiel: §303a+b StGB):
http://dejure.org/gesetze/StGB/303a.html
http://dejure.org/gesetze/StGB/303b.html
Wir haben Sie gewarnt! Sie sind für sich selbst verantwortlich. Falls etwas unklar
ist, sprechen Sie den Versuchsbetreuer an.
Kontrollfragen
Eingangstestat: Sie sollten mindestens folgende Fragen beantworten können (bevor der
Versuch beginnt):
•
•
•
•
•
•
•
•
Was ist ein Port, was ist ein Portscanner?
Welche Art von Sicherheitslücken kann ein Portscanner finden?
Welche Sicherheitslücken kann ein Portscanner nicht finden?
Welche Scan-Techniken gibt es?
Was bedeutet Stealth-Scan? Erläutern Sie den (möglichen) Ablauf.
Wozu dienen die Protokolle ARP, IP, TCP, ICMP, UDP, DNS?
Was ist ein Exploit?
Warum werden Sie aus dem Praktikum ausgeschlossen, wenn Sie Rechner außerhalb
des Labors scannen? Welche rechtlichen Konsequenzen müssen Sie fürchten?
Schriftliche Versuchsauswertung
Jedes Team fertigt eine schriftliche Auswertung an. Diese sollte insbesondere die bei jedem
Schritt verwendeten Befehle enthalten (also unbedingt dokumentieren, was Sie bei der
Versuchsdurchführung getan haben) und die Ausgabe der Befehle erläutern.
Geben Sie bitte Ihre Einschätzung als Versuchsteam wieder, was Sie von diesen Tools halten.
Bitte geben Sie auch Feedback, ob Sie den Praktikumsversuch als interessant empfunden
haben und ob dieses Dokument für Sie bei der Versuchsdurchführung hilfreich war. Verbesserungsvorschläge sind willkommen!
Die Versuchsauswertung ist schriftlich beim nächsten Termin mitzubringen.
Praktikumsversuch Nessus, Nmap
Lehrstuhl Netz- und Datensicherheit
9
Herunterladen