Der Network Mapper (nmap) dient zur Untersuchung von Netzwerken und zum durchführen von Security Audits. Es können sowohl große Netzwerke als auch einzelne Hosts untersucht werden. Weiters kann mit nmap festgestellt werden, welche Hosts in einem Netzwerk vorhanden sind, welche Dienste sie anbieten, unter welchem Betriebssystem sie laufen und noch vieles weiteres.
Dieser Artikel beschreibt wie nmap eingesetzt werden kann um laufende Dienste und offene Ports im eigenen Netzwerk zu erkennen, um diese dann in der weiteren Folge gegen potentielle Angriffe absichern zu können.
Bei nmap handelt es sich um einen Portscanner der auch zur Planung von Angriffen auf fremde Server und Netzwerke eingesetzt werden kann.
Da das Scannen von fremden Computern bereits als Angriff gewertet werden kann und damit eine Strafbare Handlung darstellt, ist in jedem Fall ein scannen von Computern ohne ausdrückliche Erlaubnis eines Verantwortlichen zu unterlassen!
Der einfachste Anwendungsfall für nmap ist das aufspüren von laufenden Diensten auf einem Host.
$ nmap -A -T4 <hostname>
Dadurch werden die laufenden Dienste aufgelistet und auch namentlich genannt, so sie erkannt werden. Weiters werden auch Informationen zu den laufenden Diensten Angezeigt, wie die Version des Servers oder der Host-Key eines SSH-Servers.
Falls ein Firewall auf dem Zielrechner läuft liefert der obige Scan unter Umständen kein Ergebnis. Um den Netzwerkscan trotz Firewall durchführen zu können, kann zusätzlich der Parameter -PN angegeben werden.
$ nmap -A -T4 -PN <hostname>
Das Scannen von UDP-Ports erfolgt mit dem Befehl:
$ nmap -sU <hostname>
Um das Betriebssystem des Zielsystems heruas zu finden, dient der Parameter -O. Dieser Scan muss allerdines als root ausgeführt werden.
$ nmap -O <hostname>
Dieser Befehl zeigt die geöffneten Ports sowie das Betriebssystem und dessen Version (soweit möglich) an.
Die Standardmethode zum Scannen von Hosts (TCP SYN scan) ist schnell und für den Zielrechner relativ schwer zu erkennen, da keine TCP-Verbindungen aufgebaut und daher auch nicht geloggt werden.
Um den Ausgangspunkt einen Netzwerkscans noch weiter zu verschleiern dient der Idle-Scan dabei wird die Verbindung über einen sogenannten Zombie-Host aufgebaut. Es werden somit keine Pakete direkt an den Zielrechner geschickt.
$ nmap -PN -sI <zombie-host> <host>
Auf dem Zombie-Host muss ein Webserver laufen über den die Pakete weitergeleitet werden können.
Mit dieser Methode können Intruder-Detection-Systeme auf ihre Funktion getestet werden. Es dient auch der Überprüfung ob eigene Server als Zombie-Hosts eingesetzt werden können.
Um alle Clients in einem Netzwerk aufzufinden, kann ein einfacher Scan mittels ICMP-Ping durchgeführt werden.
$ nmap -sP <network-range>
Der Netzwerk-Range wird durch Wildcards (*) angegeben. So wird durch 192.168.0.* das gesamte Klasse-C Netzwerk mittels Ping gescannt und die gefundenen Hosts gelistet.
Nachteil: Falls die Firewall eines Hosts ICMP-Pakete blockiert (ping) wird der betreffende Host nicht gefunden.
Eine Suche nach aktiven Clients auf der Basis eines TCP-Pings kann mit der Option -PS durchgeführt werden, dabei werden bereits die offenen Ports der gefundenen Hosts angezeigt.
$ nmap -PS <network-range>
Auch dabei kann das Auffinden des Clients unter Umständen durch eine Firewall verhindert werden.
Eine weitere Methoden eine vollständige Liste der Clients zu ermitteln ist ein IP-Protokoll-Ping.
$ nmap -PO <network-range>
Diese Methode führt in den meisten Fällen zum erfollg.
Diskussion