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