Portscanner Nmap: die wichtigsten Funktionen im Überblick


    Tags: , ,

    nmap-LogoNmap ist ein populärer Portscanner, der ermitteln kann, welche Server, Clients und andere Systeme in einem Netzwerk aktiv sind. Er erkennt  auch, welche Betriebs­systeme dort laufen und welche Ports von außen erreichbar sind. Daher ist Nmap nicht nur ein Werkzeug für Hacker, sondern auch für Penetration-Tests.

    Da Portscanner wie Nmap sowohl für echte Angriffe während der Reconnaissance-Phase als auch für Penetrations­tests von Security-Teams zum Einsatz kommen, sollten Sie sich vor dem Einsatz des Tools unbedingt rechtlich absichern.  Am besten holen Sie sich die Zustimmung vom Auftraggeber ein.

    Da Intrusion Detection Systems oder Firewalls den Einsatz von Nmap als Erkundungsangriff bewerten, erzeugen die genannten Tools auch entsprechende Log-Einträge. Dies wiederum erkennt ein guter Admin oder dies führt idealerweise auch zu einem Vorfall (Incident) in einen SIEM-Tool.

    Was ist Nmap?

    Der Name Nmap steht für Network Mapper. Das Tool wurde von Gordon Lyon entwickelt, der aber besser unter seinem Pseudonym Fyodor Vaskovich bekannt ist. Version 1.0 wurde im September 1997 für Linux unter der GPL-Lizenz veröffentlicht.

    Nmap kann horizontal oder vertikal scannen. Der horizontale Scan läuft über mehrere Systeme im Netzwerk um zu ermitteln, welche davon erreichbar sind, während der vertikale Scan ein einzelnes System auf erreichbare TCP-/UDP-Ports untersucht.

    Das Tool versteht mehr als 100 Parameter bzw. Optionen beim Aufruf, so dass es unterschiedlichste Szenarien abdecken kann. Diese dienen unter anderem zum Einstellen des Scan-Typs oder der Performance-Optimierung. Zudem verfügt Nmap über eine Script-Engine (NSE), mit deren Hilfe man Scripts einbinden kann.

    Die grundsätzliche Syntax von Nmap ist aber relativ einfach:

    nmap <Scantyp> [<Optionen>] <Ziele>

    Die Angabe von Optionen ist nicht zwingend. Unter Windows können Sie auch die grafische Nmap-Oberfläche Zenmap verwenden.

    Host-Erkennung

    Üblicherweise beginnt man mit einem horizontalen Scan, um zu ermitteln, welche potentiellen Ziele überhaupt erreichbar sind. Diese kann man im Rahmen eines vertikalen Scans dann genauer abklopfen. Man bezeichnet diesen ersten Schritt auch als Host Discovery. Nur bei Systemen, die sich mit einem horizontalen Scan identifiziert lassen, lohnt sich ein vertikaler Scan.

    Hosts (Clients wie Server) geben sich allerdings nicht immer in der gleichen Weise und auch nicht unbedingt freiwillig zu erkennen, weshalb es unterschiedliche Verfahren für das Host Discovery gibt.

    Für einen horizontalen Scan (Host Discovery) verwenden Sie -sN für den so genannten TCP Null Scan. Das bedeutet, dass nur ein horizontaler Scan (Host Discovery) ohne einen eigentlichen Port-Scan durchgeführt wird. Als erstes Ziel bietet sich scanme.nmap.org an:

    nmap -sN scanme.nmap.org

    Dieser Aufruf ermittelt, ob der betreffende Host (hier: scanme.nmap.org)  erreichbar ist ("Host is up").

    Ein einfacher, so genannter TCP-Null-Scan mit DNS-Auflösung

    Auf diese Weise kann man beispielsweise ein komplettes Netzwerksegment scannen:

    nmap -sN 172.20.10.0/24

    Das Ergebnis könnte so aussehen wie in der folgenden Abbildung.

    Das Scannen einen Netzwerksegments

    Im obigen Beispiel konnten fünf Systeme ("Host is up") identifiziert werden. Bei den ersten drei handelt es sich um VMware-Linux-VMs, die Teil eines Kubernetes-Clusters sind, und Ihre MAC-Adresse preisgeben. Das vorletzte System ist ein physischer Router, der ebenfalls seine MAC-Adresse offenbart. Das letzte System, eine VMware-VM mit Windows, verbirgt ihre MAC-Adresse.

    Ports-Scan (vertikales Scanning)

    Der eigentliche Einsatzzweck von Nmap ist aber das Scannen von Ports (vertikales Scanning). Hier prüft es den Zustand der erreichbaren TCP- oder UDP-Ports, denn die weitaus meisten Dienste in einem TCP/IP-Netzwerk (Web-, Mail-, SQL-Server) binden sich an einen oder mehrere Ports. Dort lauschen sie auf Verbin­dungs­anfor­derungen.

    Nmap kann nicht nur feststellen, ob ein TCP- oder UDP-Port einfach nur offen ist, sondern unterscheidet mehrere Zustände:

    • open: Der Port ist erreichbar, er antwortet also mit SYN/ACK bei TCP oder mit einer dem UDP-Dienst entsprechenden Antwort;
    • closed: Der Port ist nicht erreichbar und antwortet mit einem RST/ACK-Paket bei TCP oder bei UDP mit dem ICMP-Typ 3 für "Port Unreachable (UDP)";
    • filtered: Der Port antwortet bei TCP entweder gar nicht oder so, dass die Vermutung naheliegt, dass der betreffende Port durch eine Firewall geblockt wird. Bei UDP können das verschiedene ICMP-Typ3-Codes sein;
    • unfiltered: Dieser seltsam anmutende Zustand sagt einerseits aus, dass Nmap den Port zwar grundsätzlich erreichen, aber nicht bestimmen kann, ob der Port offen oder geschlossen ist. Dies können Sie dann nur mit einem TCP-ACK-Scan herausfinden. Sie benötigen also weitere Scan-Typen (etwa SYN-Scan), um sich mehr Klarheit zu verschaffen;
    • open|filtered: Als open|filtered stuft nmap einen Port ein, bei dem das Tool nicht bestimmen kann, ob der Port offen ist oder gefiltert wird. Das kann bei UDP-, IP-, FIN-, NULL- und XMAS-Scans vorkommen;
    • closed|filtered: Hier kann Nmap nicht feststellen, ob ein Port geschlossen ist oder gefiltert wird.

    In der Praxis werden Sie es am häufigsten mit den Zuständen open, closed, filtered und open|filtered zu tun haben.

    Ping-Scans

    Während der Null-Scan nur dem reinen Discovery-Prozess, etwa in einem Netzwerk-Segment, dient (horizontaler Scan), kann Nmap zusätzlich andere Scan-Typen verwenden. Damit lassen sich im Rahmen des horizontalen Scans auch Systeme aufspüren, die ein Null-Scan etwa wegen einer blockierenden Firewall nicht findet.

    Ein Beispiel dafür ist der so genannte Ping-Scan. Damit testet man die Erreichbarkeit eines oder mehrerer Ziele im Netzwerk auf ähnliche Weise wie mit einem gewöhnlichen Ping-Kommando. Nmap bringt allerdings einige Schalter für weitere, spezielle Ping-Scan-Verfahren mit, die typische ICMP- oder Ping-Filter umgehen, wie sie von den meisten Firewalls implementiert werden.

    Die von Nmap unterstützen Ping-Scan-Methoden sind beispielsweise:

    • ICMP-Echo-Ping (klassischer Ping), Schalter -PE
    • TCP-Ping-Scan, Schalter -sP
    • TCP-SYN-Ping, Schalter -PS
    • TCP-ACK-Ping, Schalter -PA
    • UDP-Ping, Schalter -PU
    • ICMP-Timestamp-Scan, Schalter -PT
    • ICMP-Address-Scan, Schalter -PM

    Neben dem klassischen ICMP-Echo-Ping kommt häufig der TCP-Ping-Scan zum Einsatz. Dabei hängt es vom Standort des Zielsystems ab, wie Nmap dessen Erreichbarkeit prüft. Befindet sich dieser im eigenen Subnetz, dann nutzt der TCP-Ping-Scan gar keine ICMP-Nachrichten, sondern ARP-Requests.

    ICMP-Echo-Requests plus TCP-SYN-Paket

    Ist das Ziel hingegen in einem anderen Netzwerk, dann arbeitet Nmap mit ICMP-Echo-Requests, sendet aber zusätzlich noch ein TCP-SYN-Paket auf Port 443 und ein TCP-ACK-Paket auf Port 80 an das Zielsystem.

    Blockiert nämlich die Firewall des Zielsystems ICMP-Echo-Pakete, dann antwortet es aber möglicherweise trotzdem mit einem SYN/ACK (von Port 443) bzw. RST (von Port 80) auf die TCP-Pakete. So kann Nmap über einen Trick, also durch Provokation einer Antwort, das Zielsystem unter Umständen dennoch als erreichbar klassifizieren.

    So sendet der TCP-SYN-Ping an zahlreiche TCP-Ports ein TCP-SYN-Paket. Lauscht auf einem dieser Ports keine Anwendung, antwortet das Zielsystem mit einem TCP-RST-Paket. Ist der Port offen, was bedeutet, dass zu einer Anwendung eine Verbindung aufgebaut werden kann, antwortet die Gegenstelle mit einem TCP-ACK-SYN-Paket.

    nmap -PS 172.20.10.0/24

    TCP-ACK-Paket auf Port 80

    Ein Echo-Request gefolgt von einem TCP-SYN-Paket auf Port 443 ist eine reguläre Kommuni­kations­anfrage. Mit einem TCP-ACK-Paket auf Port 80 hingegen provoziert Nmap eine TCP-RST-Antwort, weil es sich hier nicht um eine reguläre Anfrage handelt. Diese Methode führt manchmal sogar dann zum Erfolg, wenn eine Firewall alle regulären Anfragen blockiert (nicht nur Ping), vermeintliche Antworten aber passieren lässt.

    nmap -PA 172.20.10.0/24

    Timestamp Request

    Auch der Timestamp-Request hat allein den Zweck, unzureichend konfigurierte Firewalls, die etwa nur ICMP-Typ 0 und 8 blockieren, auszukontern.

    nmap -PT 172.20.10.0/24

    Ein ICMP-Timestamp-Scan auf das ausgewählte Netzwerk-Segment

    Port-Scanning im Detail

    Grundsätzlich scannt Nmap die Ports aller Systeme, die bei der Host-Discovery als aktiv erkannt wurden. Sie können aber auch jede IP-Adresse eines Netzwerk-Segments scannen, indem Sie das Host-Discovery ausschalten. Dazu stehen wahlweise die drei Schalter -PN, -Pn oder -P0 zur Verfügung.

    Ist die Antwort ein SYN/ACK-Paket, dann wertet Nmap den Port als aktiv und an einen Dienst gebunden. Daher gibt Nmap den Portstatus open zurück. Ist die Antwort ein RST/ACK-Paket, dann gilt der Port als nicht aktiv und nicht gebunden. Daher gibt Nmap den Portstatus closed zurück. Kommt überhaupt keine Antwort, dann wird der Port von einer Firewall geblockt, und Nmap melden den Portstatus filtered.

    Ein Scan dieser Art heißt auch halboffener Scan, weil Nmap bei einer Antwort des Zielsystems den eigentlichen TCP-Handshake gar nicht mehr vervollständigt, also kein ACK-Paket mehr sendet.

    Das hat den Vorteil, dass der Scan schneller ist und mit weniger Paketen auskommt. Außerdem wird eine halboffene Verbindung auf dem Zielsystem mit geringerer Wahrscheinlichkeit protokolliert, was die Sichtbarkeit des Scan-Versuchs reduziert. Das Verfahren wird manchmal auch als Stealth-SYN-Scan bezeichnet.

    Per Default gibt Nmap auch nur die offenen und gefilterten Ports zurück, nicht die geschlossenen. In der Nmap-Referenz findet sich aber noch viele weitere Scan-Optionen, zum Beispiel für den TCP-Connect-Scan (-sT) mit vollständig durchgeführten 3-Way-Handshake oder den UDP-Scan (-sU).

    UDP-Scans sind allerdings für Nmap schwieriger zu handhaben, weil UDP keine Sitzungen aufbaut. Daher stützt sich der UDP-Scan-Typ auf ICMP-Typ-3-Rückmeldungen (DestinationUnreachable), um daraus Informationen über den Portzustand abzuleiten.

    Häufig ist es gar nicht erforderlich, sämtliche oder die standardmäßig eingestellten 1000 wichtigsten Ports zu scannen. Mit der Option -F  können Sie den Port-Scan auch auf die Top 100-Ports beschränken, was den Vorgang deutlich beschleunigt. Darüber hinaus können Sie mit der Option -p die in den Scan einzuschließenden Ports auch explizit angeben, beispielsweise mit

    nmap –sS –p 21-23,80,443 scanme.nmap.org

    Natürlich können Sie bei der Portangabe auch TCP- und UDP-Scans mit "T:" bzw. "U:" mischen:

    nmap –sS –sU –p T:21,22,80,443 U:53 scanme.nmap.org

    Mit dem Parameter exclude können Sie bestimmte Ports aus dem Scan ausschließen, etwa bei Diensten, von denen Sie ohnehin wissen, dass diese auf dem Zielsystem laufen. In diese Fall greift ohne weiteren -p-Parameter wieder das Standard­verhalten (1000 gängige Ports), abzüglich der ausge­schlossenen.

    nmap –sS --exclude-ports 25,80 172.20.10.81

    Welche aus Sicht von Nmap die 1000 wichtigsten Ports sind, steht übrigens in der Konfigurationsdatei /usr/share/nmap/nmap-services. Sie gleicht vom Aufbau und Syntax der unter Linux üblichen Datei zu /etc/services, ergänzt um eine dritte Spalte namens Open-Frequency. In der vermerkt Nmap die Häufigkeit, mit welcher der jeweilige Port bei Test-Scans geöffnet war.

    Verfügbarkeit

    Nmap ist nicht nur im Quellcode, sondern auch als RPM-Binary für Red-Hat-basierte Distributionen sowie für Mac OS und Windows erhältlich (Download).

    Das Tool braucht unter Windows Npcap. Details dazu finden Sie in diesem Beitrag über Wireshark. Das Setup für Windows kann Npcap installieren, die Registrierungs­leistung optimieren und die Dateien am ausgewählten Speicherort entpacken.

    Das Paket enthält auch das grafische Frontend Zenmap. Es kann zusätzlich die Netzwerk­struktur oder weitere Rechnerdetails visualisieren.

    Zenmap ist ein mächtiges Tool, das über den Scan hinaus weitere Optionen bietet.

    Sie können sich alternativ auch Kali-Linux als Distribution für Security- und Penetrationstests herunterladen, in dem nmap bereits vorinstalliert ist.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Thomas Drilling

    Thomas Drilling arbeitet ist seit fast 30 Jahren selb­ständig in der IT-Welt sowohl als Consultant, als auch als Redakteur, Buchautor und Journalist für viele ehe­malige und aktuelle IT-Magazine sowie Blogs.

    Aktuell bestätigt sich Thomas schwerpunktmäßig als IT-Trainer für Cloud-Computing in den Bereichen Microsoft Azure, Amazon Web Services und VMware.

    Thomas ist zertifizierter Microsoft-Trainer für nahe das gesamte Portfolio an Microsoft Azure Trainings. Thomas ist außerdem zerti­fi­zierter Microsoft Azure Solutions Architect Expert sowie VMware Certified Professional und wurde von VMware in den Jahren 2016 bis 2022 mit dem Blogger-Status vExpert ausge­zeichnet.

    Thomas führt aktuell jeden Monat zwei selbstkonziperte 4-tägigen Grund­lagenkurse in Cloud Computing mit Azure durch, die sich inhaltlich bewusst von den Microsft-Kursen abheben und vorzuweise als Bootcamp in eine besonderen Lokation stattfinden. Optional kann aber aber auch remote via Microsoft Teams teilgenommen werden.

    Das aktuelle Trainingsprogramm findet sich unter Azure-Trainings. Weitere Infor­mationen und Anmel­dung über sein Azure-Blog.

    Verwandte Beiträge

    Weitere Links