Netzwerke prüfen mit Nmap
Security: Ports im Visier

CloudKomponentenNetzwerkeServerWorkspace

Auch über einen scheinbar nicht erreichbaren Rechner lassen sich interessante
Details herausfinden. Mit dem Portscanner Nmap erhalten Administratoren
detallierte Informationen, beispielsweise wie sich ihre Rechner bei Verbindungsversuchen
verhalten.

Sicherheitslöcher

Netzwerke prüfen mit Nmap

Einem erfolgreichen Einbruch ins Netzwerk geht immer ein sorgfältiges Abklopfen der Rechner voraus. Der Angreifer sucht mit einem Scanner nach offenen Ports oder bestimmten Betriebssystemen. Setzen Administratoren einen Netzwerkscanner wie Nmap ein, kommen sie den Einbrechern zuvor. Mit Nmap klopfen Sie Ihr lokales Netzwerk auf Sicherheitslöcher ab und suchen offene Ports. Nebenbei lernen Sie zudem Details über das Verhalten der eigenen Rechner bei Netzwerkanfragen. Die meisten Nmap-Funktionen in diesem Workshop funktionieren nur, wenn Sie das Programm als Benutzer root verwenden. Außerdem sollten Sie die Beispiele nur im eigenen Netzwerk ausprobieren, um sich nicht den Unmut von Administratoren anderer Netzwerke zuzuziehen. Das Programm Nmap gehört bei fast allen Distributionen zur Standardausstattung. Die aktuelle Version finden Sie unter http://www.insecure.org, der Website des Autors Fyodor.

Jemand zu Hause?
Der einfachste Scan ist der Ping-Suchlauf. Dabei suchen Sie ein komplettes Subnetz nach Hosts ab. Den Suchlauf leiten Sie mit dem Parameter »-sP« ein. Als Argument dient der Adressbereich des Subnetzes, für das Sie sich interessieren:

nmap -sP 192.168.169.0/24

Nmap sendet an jede Adresse im angegebenen Bereich (192.168.169.0/24) ein Ping und zeichnet alle Adressen auf, von denen eine Antwort zurückkommt. Nmap 3.7 zeigt neben den Hostnamen und den IP-Adressen auch die MACAdresse der gefundenen Rechner an. Der Administrator stellt sich somit eine Liste aller Hosts zusammen, die im gegebenen Subnetz momentan verfügbar sind. Dies funktioniert jedoch nur, wenn die Hosts auch auf die Pinganforderungen antworten. Falls sich die Rechner nicht so auskunftsfreudig geben, setzt der Angreifer auf andere Scantechnik, um mehr über so einen Rechner zu erfahren.


Verbindung möglich

Netzwerke prüfen mit Nmap

Mit dem Schalter »-sT« führt Nmap einen reinen TCP-Scan durch. Dabei baut der Portscanner eine echte Verbindung zum Zielrechner auf, einschließlich des kompletten Handshakes. Nmap schickt dazu ein SYN-Paket an der Server, welcher den Empfang mit SYN/ACK quittiert. Anschließend wartet er auf eine weitere Bestätigung per ACK.
Die Verbindung stellt Nmap mit allen interessanten Ports auf dem Zielrechner her, darum ist dieser Scan auch einfach vom Administrator zu bemerken. Als Resultat liefert Nmap eine Liste aller Ports, die bereit sind, ein SYN anzunehmen. Im Beispiel hat Nmap 1660 Ports geprüft und drei gefunden, mit denen sich das Programm verbinden konnte. Zum Port selbst gibt der Scanner gleich noch den standardmäßig hinter diesem Port betriebenen Dienst aus. Diese bewahrt Linux in der Datei »/etc/services« auf. Ob es sich tatsächlich um diesen Dienst handelt, prüft Nmap allerdings nicht. Ähnlich wie bei der Option »-sP« stellt Nmap mit »-sT« vor dem Scan mit einem Ping sicher, dass der Rechner überhaupt verfügbar ist. Antwortet der Rechner nicht auf das Ping, gibt Nmap einen entsprechenden Hinweis aus und bricht die Prüfung ab. Immerhin teilt es dem Anwender mit, dass er es noch mit der Option »-P0« versuchen sollte. Die Option »-P0« schaltet den initialen Ping ab und Nmap scannt das System ganz normal.

Ping wird blokiert
Der Rechner war im Beispiel also sehr wohl online und blockierte einfach nur die Pingaufforderung. Ein hartnäckiger Angreifer hätte mit der Option »-P0« herausgefunden, dass sich hinter der angegebenen Adresse offenbar ein Webserver befindet, denn Port 80 auf dem System ist geöffnet. Außerdem bekommt der User noch eine interessante Zusatzinformation. Nmap weist darauf hin, dass die gescannten Ports einem Filter unterliegen (state: filtered). Wahrscheinlich wacht auf dem System irgendeine Art von Firewall. Letztlich zeigt dieses Beispiel jedoch, dass sich ein System nicht sichern lässt, indem Sie die Antwortpings filtern. Im Wesentlichen blähen sich nur die Logdateien weniger auf. Allerdings berauben Sie sich auch wichtiger Diagnosemöglichkeiten, die Sie eventuell für Ihre administrativen Tätigkeiten benötigen.

Altes Windows identifizieren
Beim SYN-Stealth-Scan stellt Nmap die Verbindung mit dem Server nicht vollständig her. Stattdessen sendet das Programm als Antwort beim Drei-Wege- Handshake (SYN, SYN/ACK, ACK) immer ein RST/ACK zurück (Bild 5). Der Anwender erhält mit diesem Scan vor allem dann andere Informationen als bei den bisherigen Scans, wenn es sich bei den Zielrechnern um ältere Windows- Versionen handelt. Bei diesen liefert Nmap teilweise recht merkwürdige Ergebnisse, die auf Fehler in der TCP-Implementierung von Windows 98 und früher zurückzuführen sind. Zu recht viel mehr als eine veraltete Windows-Installation zu identifizieren, lässt sich diese Scantechnik auch nicht einsetzen.


Kaum zu entdecken

Netzwerke prüfen mit Nmap

Mit der Option »-sF« führt Nmap einen für den gegnerischen Administrator nahezu unsichtbaren Scan durch. Bei diesem sendet der Portscanner ein FIN an die Zielrechner. Diese sollten mit einem RST für alle geschlossenen Ports antworten. FIN-Pakete kommen normalerweise erst beim Abbau einer Verbindung zum Zug, daher gehört der FIN-Scan auch in die Gruppe der »Stealth«-Scans. Solche Pakete protokolliert kaum ein Administrator und der Angriff fällt daher selten auf. Dieser Scan findet offene Ports jedoch nur dann, wenn die Zielsysteme mit einem korrekt funktionierenden TCP-Stack ausgestattet sind. Ältere Windows-Systeme lassen sich somit nicht in die Karten schauen. Neuere Windows-Versionen wie XP oder 2003 enthalten hingegen einen fehlerfrei implementierten TCP-Stack, und hier liefert Nmap dann auch korrekte und brauchbare Ergebnisse.

Xmas-Tree-Port-Scan
Beim Xmas-Tree-Port-Scan schickt Nmap gleich drei Pakete an alle Ports des gescannten Rechners: Erst ein FIN, dann ein URG und zum Schluss ein PUSH-Paket. Nach RFC 792 müsste der Rechner mit je einem RST-Paket für alle geschlossenen Ports antworten. Ähnlich wie der FIN-Port-Scan funktioniert dies hauptsächlich mit Unix-Systemen oder neueren Windows- Versionen.
Wie bei den anderen Beispielen liefert der Xmas-Tree-Scan die gleichen Werte: Das muss aber nicht so sein, denn äußere Parametern wie der TCP-Stack haben gehörigen Einfluss auf das Resultat. Falls der Scan unbrauchbar ist, könnte der Null-Port-Scan (»-sN«) erfolgreich sein. Dieser erwartet ebenfalls ein RSTPaket für alle geschlossenen Ports vom gescannten Zielsystem, funktioniert in der Regel aber auch nur mit Unix-Varianten oder neuen Windows-Systemen.

Nmap versteckt sich
Beim Scannen von fremdem Rechnern kann der Anwender auch ein vom Autor als »Idle-Scanning« bezeichnetes Verfahren verwenden. Dazu braucht er als Scanparameter den Wert »-SI« und einen weiteren Rechner. Diese Technik ist deshalb so interessant, weil sie Nmap erlaubt, einen Rechner zu scannen, ohne diesem auch nur ein einziges Paket zu senden. Stattdessen gehen alle Pakete den Umweg über einen so genannten Zombie- Rechner. Der Zombie muss dabei noch nicht einmal unter der Kontrolle des Angreifers stehen. Es reicht, dass der Zombie online ist und Pakete verschicken kann. Allerdings sollte er nicht allzu viel Traffic bewältigen müssen.
Das Prinzip des Idle-Scanning beruht auf der IPID-Nummer, die in den IP-Paketen enthalten ist. Viele ältere Systeme erzeugen diese Nummer, indem sie die Zahl für jedes Paket um eins erhöhen. Erhält ein Scanner zwei Pakete vom gleichen Host, kann er darüber erkennen, wie viele andere Pakete dieser Host zwischen diesen beiden verschickt hat. Neuere Systeme hingegen nullen die IPID in vielen Fällen aus oder erzeugen Zufallszahlen. Zählt eine Maschine jedoch die IPIDNummer korrekt, hat der Angreifer den perfekten Zombie für einen Idle-Scan gefunden.

Ein Paket für den Zombie
Demnach schickt der Angreifer zunächst ein Paket an den Zombie, um die aktuelle IPID-Nummer herauszufinden. Anschließend se
ndet er ein Paket an den eigentlichen Zielrechner, fälscht aber die Absender-IP und gibt statt der eigenen die des Zombies an.
Der Zielrechner kann nun zwei Dinge tun. Entweder der angeforderte Port ist geschlossen, dann sendet der Zielrechner ein RST an den Zombie. Oder der Port ist geöffnet, dann antwortet der Zielrechner dem Zombie mit SYN/ACK. Mit dem RST (Fall 1) kann der Zombi nicht viel anfangen und tut deshalb gar nichts. Im Fall zwei beschwert sich der Zombie beim Zielrechner über eine falsche Session, schließlich hat er die nicht angefordert. Es wird also ein RST an den Zielrechner geschickt. Nun sendet der Angreifer wieder ein Paket an den Zombie. In der Antwort ist die IPID entweder um eins größer oder um zwei. Ist die IPID um zwei höher als zu Beginn, dann ist der Port auf dem Zielrechner offen, ansonsten ist er geschlossen.


Wer Zeit hat

Netzwerke prüfen mit Nmap

Beim UDP-Scan (»-sU«) sendet der Benutzer ein UDP-Paket zum Zielport. Zwei mögliche Antworten kommen in Frage: »ICMP Port unreachable« oder Totenstille. Ist der Port nicht erreichbar (unreachable), ist der Port auf dem Zielsystem geschlossen. Stellt sich der Rechner hingegen tot, horcht er auf diesem Port wahrscheinlich auf Anfragen. Für Angreifer ist der UDP-Scan etwas problematisch, da das Protokoll verbindungslos ist. Dies führt dazu, dass die Genauigkeit des Scans von vielen Faktoren abhängt, unter anderem von der Auslastung des Netzwerks. Zudem dauern UDP-Scans tendenziell deutlich länger als TCP-Scans. Das Abklopfen auf interessante Ports über das Internet setzt viel Geduld voraus. Wo TCPScans schon nach ein paar Sekunden Ergebnisse liefern, braucht der UDP-Scan hingegen knapp 1500 Sekunden.

Weitere Optionen
Benutzer können bei Nmap neben den verschiedenen Scans auch noch aus unterschiedlichen Optionen wählen. Diese sind in erster Linie dazu da, einen Scan vor dem Betreiber eines Servers zu verstecken. Die erste Option (»-P0«) haben Sie bereits zu Beginn des Artikels kennen gelernt. Sie dient dazu, den gescannten Server nicht vor dem Scan per Ping zu untersuchen. Eine interessante Option ist »-f«. Diese sorgt dafür, dass Nmap nur stark fragmentierte Pakete an den gescannten Server sendet. Die Überlegung dahinter war, dass Intrusion-Detection-Systeme (IDS) oder Firewalls solche Pakete nicht weiter untersuchen. Heute gilt dies immer noch für alte Systeme. Aktuelle IDS oder Firewalls schicken die Pakete hingegen in eine eigene Warteschlange und beginnen mit der Untersuchung erst dann, wenn alle Fragmente vorliegen. Nmap erlaubt es dem Anwender auch, seine eigentliche IP-Adresse zu verbergen (Spoofing). Dazu dient die Option »-S«, die als Parameter eine IP-Adresse erwartet. Nmap schreibt den IP-Header dann so um, dass die angegebene IP-Adresse darin als Absender fungiert. Das bedeutet natürlich auch, dass der gescannte Rechner seine Antworten an den Rechner mit dieser IP-Adresse zurücksendet. Daher ist das Spoofen der Adresse auch nicht mit allen Scans möglich. Außerdem kann der Scanner bei einer falschen IP-Adresse nicht entscheiden, über welches Netzwerkdevice der Scan laufen soll. Dazu gibt es sogar eigens eine Fehlermeldung. Für den Fall von gespooften IP-Adressen bietet Nmap mit »-e« noch eine weitere Kommandozeilenoption an. Damit legt der Anwender dann fest, welche Netzwerkkarte Nmap für die Scans benutzen soll. Mögliche Werte sind neben der LAN-Netzwerkkarte »eth0« auch »ppp0« für ein Modem beziehungsweise »ippp0« für die ISDN-Karte.

Betriebssysteme erkennen

Nmap eignet sich aber noch zu deutlich mehr, als nur geöffnete Ports auf einem System aufzuspüren. Mit Hilfe der Option »-O« kann das Programm auch gleich die Betriebssysteme auf den betreffenden Rechnern erkennen. Ist der Scan erfolgreich, liefert Nmap neben dem Betriebssystem auch noch Details wie die Kernel-Version oder den Service-Pack- Level bei Windows-Systemen. Jedes Betriebssystem ? gleich, ob Windows, Linux oder Mac OS ? leidet unter einer Reihe an Fehlern, die Angreifern bekannt sind. Ein Hacker oder Administrator braucht also nicht alle erdenklichen Tests durchführen. Vielmehr lässt sich mit dem Wissen der Betriebssystemversion bequem nach angreifbaren Stellen fahnden und diese ausnutzen. In einschlägigen Foren finden sich dazu Informationen und ausführlich dokumentierte Angriffe, die einen erfolgreichen Einbruch erklären.