Nmap

Aus Foxwiki

Network Mapper (nmap)

  • ist ein freier Netzwerk-Scanner

Netzwerke scannen

Was ist Network Scanning?

  • Netzwerke scannen und analysieren
  • angeschlossene und aktiven Systeme erkennen
  • Details zu Diensten, Konfigurationen und Versionen bestimmen
  • Netzwerk-Inventarisierung
  • Dienste-Aktualisierungen prüfen
  • Überwachung von Betriebszeiten, Hosts oder Diensten

Syntax

nmap [Scan Type(n)] [Optionen] {Ziel}

Einfacher Portscan

nmap ohne Optionen

  • Es geht darum herauszufinden, ob ein Port offen ist, welche Anwendung dahinter läuft und ob dort Sicherheitslücken und Schwachstellen zu vermuten sind.
  • Ein einfacher Port-Scanner wird alle Ports pauschal in zwei oder drei Zustände einteilen:
  1. offen,
  2. geschlossen,
  3. gefiltert (offen/geschlossen).

Bedeutung der Ausgabe

  • Der Zustand "Offen" bedeutet, dass eine Anwendung oder ein Dienst bereit ist TCP-Verbindungen oder UDP-Pakete auf diesem Port anzunehmen.
  • Um Kommunikationsverbindungen betreiben zu können bedarf es offener Ports.
  • Anzahl offener Ports begrenzen, um die Angriffsfläche so klein wie möglich zu halten.
  • Offene Ports werden zusätzlich geschützt oder Verbindungsmöglichkeiten eingeschränkt.
  • Der Zustand "Geschlossen" bedeutet, dass keine Anwendung und kein Dienst an diesem Port auf eingehende Datenpakete und Verbindungsversuche lauscht bzw. hört.
  • Auf ihm sind keine Kommunikationsverbindungen möglich.
  • Ein geschlossener Port ist nur so lange geschlossen, wie eine Anwendung auf diesen Port hört und Verbindungen und Pakete annimmt.
  • Um offene, aber auch geschlossene Ports zu schützen, setzen Systemadministratoren einen Portfilter (Firewall) ein.
  • So verhindert man z.B. die Verbindungsversuche durch Port-Scans.
  • Ein Port-Scan soll nur den Zustand eines Ports ermitteln, aber keine echte Verbindung aufbauen.
  • Weil er die dahinterliegende Anwendung nicht kennt, kann er nur Testpakete an einen Port schicken.
  • Der Filter verhindert, dass diese Testpakete durchkommen.
  • In der Regel werden diese Pakete verworfen.
  • Dann kann für diesen Port weder der Status "offen" oder "geschlossen" gelten.
  • Dafür gibt es den Zustand "gefiltert" oder "blockiert".

Ziele festlegen

  • NMAP ist bei der Angabe des Scan-Ziels sehr flexibel.
  • Das kann ein Domain-Name sein, eine IP-Adresse oder ein ganzes Subnetz.
   Domain: www. XXX.XX
   IP-Adresse: 192.168.1.1
   Subnetz: 192.168.1.1/24
   Subnetz: 192.168.1.*
  • Man sollte einen Port-Scan nicht auf ein ganzes Subnetz anwenden.
  • Ein ganzes Subnetz zu scannen, kann sehr lange dauern, wenn die Hosts gefilterte Ports haben.
  • Die Anzahl der Ports reicht von 1 bis 65.535.
  • NMAP scannt standardmäßig nur etwa 1.000 der meistgenutzten Ports, die in der Datenbank "nmap-services" aufgelistet sind.
  • Mit der Option "-F" (für engl. fast, dt. schnell) kann man den Port-Scan sogar auf die 100 meistgenutzten Ports beschränken.
  • Interessante Ports scannen mit der Option "-p":
    • Für den Port 22 verwendet man die Option "-p22".
    • Für die Ports 22, 25 und 80 verwendet man die Option "-p22,25,80".
    • Für die Ports von 1 bis 100 verwendet man die Option "-p-100".
    • Für die Ports von 80 bis 88 verwendet man die Option "-p80-88".
    • Für alle Ports über 60.000 verwendet man die Option "-p60000-".
    • Alle Ports von 1 bis 65.535 scannen: Option "-p-".

Einzelne Rechner

  • Der Zielbereich ist eine einzelne IP-Adresse
  • Standardmäßig arbeitet Nmap mit IPv4 (es geht aber auch IPv6)
  • Hier wurde ein Linux-PC von einem Windows-7-Rechner aus gescannt:
    • nmap 172.16.24.102
  • Die IP-Adresse gehört also dem Linux-Rechner, den wir mit Nmap auf offene Ports hin überprüfen.
  • Das Ergebnis: Drei Ports sind offen; 21 für FTP, 80 für einen Webserver (in unserem Fall ein Apache) und 110 für POP3.
  • 997 well known Ports erkennt Nmap als geschlossen.

Netzwerkbereiche

Bereich auswählen

  • Nmap betrachtet alles in der Kommandozeile, was keine Option (oder ein Argument einer Option) ist, als Bezeichnung eines Zielhosts.
  • Der einfachste Fall ist die Beschreibung einer IP-Zieladresse oder eines Zielhostnamens zum Scannen.
  • Manchmal möchten Sie ein ganzes Netzwerk benachbarter Hosts scannen.
  • Dafür unterstützt Nmap Adressen im CIDR-Stil.
  • Sie können an eine IPv4-Adresse oder einen Hostnamen angefügt werden, und Nmap wird alle IP-Adressen scannen, bei denen die ersten <numbits> mit denen der gegebenen IP oder des gegebenen Hostnamens übereinstimmen.
  • Z.B: würde 192.168.10.0/24 die 256 Hosts zwischen 192.168.10.0 (binär: 1100.0000.1010.1000.0000.1010.0000.0000) und 192.168.10.255 (binär: 1100.0000.1010.1000.0000.1010.1111.1111, inklusive) scannen.
  • 192.168.10.40/24 würde genau dieselben Ziele scannen.
  • Dadurch, dass der Host
 scanme.nmap.org

die IP-Adresse 64.13.134.52 hat, würde die Angabe

 scanme.nmap.org/16 

die 65.536 IP-Adressen zwischen 64.13.0.0 und 64.13.255.255 scannen.

  • Der kleinste erlaubte Wert ist /0, der das gesamte Internet scannt.
  • Der größte Wert ist /32 und scannt lediglich den Host mit angegebenem Namen oder IP-Adresse, da alle Adressen-Bits festgelegt sind.

Teilbereich auswählen

  • Die CIDR-Notation ist kurz, aber nicht immer flexibel genug.
  • Möcht man z.B. 192.168.0.0/16 scannen, aber IPs auslassen, die mit .0 oder .255 enden, weil sie als Unternetzwerk und Broadcast-Adressen benutzt werden können.
  • Nmap unterstützt das in Form einer Oktett-Bereichsadressierung.
  • Statt eine normale IP-Adresse anzugeben, können Sie eine mit Kommata getrennte Liste von Zahlen oder Bereichen für jedes Oktett angeben.
  • Z.B. überspringt 192.168.0-255.1-254 alle Adressen im Bereich, die mit .0 oder .255 enden, und 192.168.3-5,7.1 scannt die vier Adressen 192.168.3.1, 192.168.4.1, 192.168.5.1 und 192.168.7.1.
  • Beide Bereichsgrenzen können weggelassen werden, die Standardwerte sind 0 für die linke und 255 für die rechte Grenze.
  • Wenn Sie allein -benutzen, ist das identisch mit 0-255.
  • Im ersten Oktett dann 0- benutzen, damit die Zielangabe nicht wie eine Kommandozeilenoption aussieht.
  • Die Angabe 0-255.0-255.13.37 führt einen internetweiten Scan über alle IP-Adressen aus, die mit 13.37 enden.
  • Diese Art von breiter Abtastung kann bei Internet-Umfragen und -Forschungen hilfreich sein.

IPv6

  • IPv6-Adressen können nur durch ihre vollständige IPv6-Adresse oder ihren Hostnamen angegeben werden.
  • CIDR und Oktettbereiche werden für IPv6 nicht unterstützt, weil sie selten nützlich sind.

Zielauswahl

  • Auch wenn Ziele normalerweise in der Kommandozeile angegeben werden, gibt es auch die folgenden Optionen, um die Zielauswahl zu steuern:
 -iL <inputfilename> (Eingabe aus einer Liste)
  • Eine sehr lange Liste von Hosts in der Kommandozeile anzugeben ist oft sehr umständlich, kommt aber sehr häufig vor.
  • Der DHCP-Server z.B. exportiert vielleicht eine Liste von 10.000 aktuellen Adresszuweisungen (engl. leases), die Sie scannen möchten.
  • Möchte man alle IP-Adressen außer denjenigen scannen, um Hosts zu finden, die unautorisierte statische IP-Adressen benutzen.
  • Die Liste der zu scannenden Hosts und übergibt deren Dateinamen als Argument zur Option -iL an Nmap.
  • Die Einträge dürfen alle Formate haben, die Nmap auf der Kommandozeile akzeptiert (IP-Adresse, Hostname, CIDR, IPv6 oder Oktettbereiche).
  • Alle Einträge müssen durch ein oder mehrere Leerzeichen, Tabulatoren oder Zeilenumbrüche getrennt sein.
  • Wenn man einen Bindestrich (-) als Dateinamen angibt, liest Nmap die Hosts von der Standardeingabe statt aus einer normalen Datei.
 -iR <num hosts> (zufällige Auswahl von Zielen)

Internetumfragen

  • Für internetweite Umfragen und andere Forschungsaktivitäten möchte man Ziele vielleicht zufällig auswählen.
  • Das kann man mit der Option -iR, die als Argument die Anzahl der zu erzeugenden IPs annimmt.
  • Nmap lässt automatisch bestimmte unerwünschte IPs aus, wie solche in privaten, Multicast- oder unbesetzten Adressbereichen.
  • Für einen endlosen Scan kann man das Argument 0 angeben.

Beispiele

  • Befehl
 nmap -sS -PS80 -iR 0 -p 80

sucht Webserver , auf denen man herumstöbern kann.

  • Befehl
 --exclude <host1>[,<host2>[,...]] (Ziele ausklammern)

gibt eine mit Kommata getrennte Liste von Zielen an, die vom Scan ausgeschlossen sein sollen, selbst wenn sie in den angegebenen Netzwerkbereich fallen.

  • Die übergebene Liste benutzt die normale Nmap-Syntax und kann folglich Hostnamen, CIDR-Netzblöcke, Oktettbereiche usw. enthalten.
  • Das kann nützlich sein, wenn das zu scannende Netzwerk hochkritische Server und Systeme enthält, die man nicht anfassen darf, weil sie bekanntermaßen ungünstig auf Port-Scans reagieren.
  • Oder Unternetze, die von anderen Leuten administriert werden.
  • Befehl
 --excludefile<-exclude_file> (Liste aus Datei ausklammern)
  • Das bietet dieselbe Funktionalität wie die Option --exclude.
  • Unterschied: die ausgeklammerten Ziele in der mit Zeilenumbrüchen, Leerzeichen oder Tabulatoren getrennten Datei <exclude_file> statt auf der Kommandozeile angegeben werden.

Dienste identifizieren

Zenmap

  • Neben der textbasierten Variante gibt es noch die grafische Benutzeroberfläche NmapFE zur komfortablen Einstellung von Nmap.
  • Wurde mittlerweile durch die Zenmap genannte GUI abgelöst.

Ausgabe steuern

Weitere Informationen

Funktionen

Target Enumeration

Ping-Scanning (Host-Discovery)

  • Klassischer Ping-Scan (Network-Scan)
 nmap -PE -sn -oG - 192.168.0.1/24
  • Der klassische Ping-Scan mit ICMP—Echo-Requests (-PE), aber ohne Port-Scan (-sn).
  • Erweiterter Ping-Scan (Network-Scan)
 nmap -sP -oG - 192.168.0.1/24
  • Dieser TCP-Ping-Scan ist eigentlich kein Ping-Scan, sondern eher eine sinnvolle Erweiterung zu einem klassischen Ping.
  • Der TCP-Ping-Scan kombiniert den klassischen Ping (ICMP-Echo) mit dem TCP-SYN-Scan.
  • Damit funktioniert der TCP-Ping-Scan manchmal besser als ein klassischer Ping bzw. ein einfacher ICMP-Echo-Request.

Port-Scanning

Service- und Versionserkennung (Service Identification)

Betriebssystemerkennung (OS Identification)

Scan-Typen

Ping-Scan

1. ICMP-Echo-Ping (klassischer Ping)

nmap -PE 10.10.0.1 für Subnet  nmap -PE 10.10.0.1/24 oder  nmap -PE 10.10.0.*

2. TCP-Ping-Scan

nmap -sn 10.10.0.1

3. TCP-SYN-Ping

nmap -PS 10.10.0.1

4. TCP-ACK-Ping nmap -PA 10.10.0.1 5. UDP-Ping

nmap -PU 10.10.0.1

6. ICMP-Timestamp-Scan

nmap -PT 10.10.0.1

7. ICMP-Address-Scan

nmap -PM 10.10.0.1

TCP-Full-Connect-Scan

  • Connect-Scan verwendet den gleichnamigen Systemaufruf zum Scannen von Rechnern, anstatt sich auf rohe Pakete zu verlassen, wie es die meisten anderen Methoden tun.
  • Es wird normalerweise von unprivilegierten Unix-Benutzern und gegen IPv6-Ziele verwendet, da der SYN-Scan in diesen Fällen nicht funktioniert.
nmap -sT 10.10.0.1

TCP-SYN-Scan

  • Dies ist bei weitem der populärste Scan-Typ, weil es die schnellste Art ist, Ports des populärsten Protokolls (TCP) zu scannen.
  • Er ist stealthier als der Verbindungs-Scan, und er funktioniert gegen alle funktionierenden TCP-Stapel (im Gegensatz zu einigen Spezial-Scans wie dem FIN-Scan).
nmap -sS 10.10.0.1

3. TCP-FIN-Scan

nmap -sF 10.10.0.1

4. TCP-XMAS-Scan

nmap -sX 10.10.0.1

5. TCP-NULL-Scan

nmap -sN 10.10.0.1

UDP-Scan

UDP-Ports bieten viele Sicherheitslücken

nmap -sU 10.10.0.1

TCP-ACK-Scan

  • Der ACK-Scan wird häufig zur Abbildung von Firewall-Regelsätzen verwendet.
  • Insbesondere hilft er zu verstehen, ob Firewall-Regeln zustandsbehaftet sind oder nicht.
  • Der Nachteil ist, dass er nicht zwischen offenen und geschlossenen Ports unterscheiden kann.
nmap -sA 10.10.0.1

TCP-Window-Scan

Der Window-Scan ist wie der ACK-Scan, außer dass er in der Lage ist, offene gegenüber geschlossenen Ports gegen bestimmte Rechner zu erkennen.

nmap -sW 10.10.0.1

TCP-Maimon-Scan

Dieser obskure Firewall-evading-Scan-Typ ähnelt einem FIN-Scan, enthält aber auch das ACK-Flag. Dadurch kann er durch mehr Paketfilter-Firewalls hindurchkommen, mit dem Nachteil, dass er gegen noch weniger Systeme funktioniert als der FIN-Scan.

nmap -sM 10.10.0.1

TCP-Idle-Scan

Der Leerlauf-Scan ist der heimlichste Scan-Typ von allen und kann manchmal vertrauenswürdige IP-Adressenbeziehungen ausnutzen. Leider ist er auch langsam und komplex.

nmap -sI 10.10.0.1

IP-Protokoll-Scan

  • Protokoll-Scan bestimmt, welche IP-Protokolle (TCP, ICMP, IGMP usw.) vom Zielcomputer unterstützt werden.
  • Technisch gesehen handelt es sich hierbei nicht um einen Port-Scan, da die IP-Protokollnummern und nicht die TCP- oder UDP-Portnummern durchlaufen werden.
  • Dennoch verwendet er nach wie vor die Option -p zur Auswahl der gescannten Protokollnummern, meldet seine Ergebnisse mit dem normalen Port-Tabellenformat und verwendet sogar dasselbe zugrunde liegende Scan-Modul wie die echten Port-Scan-Methoden.
  • Es ist also nahe genug an einem Port-Scan, dass es hierher gehört.
nmap -sO 10.10.0.1

Ohne angaben werden die 1000 wichtigsten Ports gescannt. -F steht für die 100 wichtigsten Ports -p steht für Port selektiv ( -p25 oder -p25-100 oder -p25,80,100 oder alle Ports über -p6000-) -p- um alle Ports zu scannen.

OS & Service Identication mit NMAP

1. OS-Scan (OS-Detection)

nmap -O 10.10.0.1

2. Service-Scan / Versions-Scan

nmap -sV 10.10.0.1

3. RPC-Scan

nmap -sR 10.10.0.1

4. Kombinierter OS- & Service-Scan

nmap -O -sV 10.10.0.1

Anwendungsbeispiele

1. Klassischer Ping-Scan

nmap -PE -sn -oG – 10.10.0.1/24

2. Erweiterter Ping-Scan

nmap -sP -oG – 10.10.0.1/24

3. SYN-TOP100-Port-Scan

nmap -sS -F 10.10.0.1

4. SYN/Version-All-Port-without-Ping-Scan

nmap -sV -Pn -p0- --reason --stats-every 60s 10.10.0.1

5. Aggressive-All-Host-All-Port-Scan

nmap -sV -Pn -p0- -T4 -A -oG - --reason --stats-every 60s 10.10.0.1/24

6. TCP-ACK-Scan

nmap -sA -F 10.10.0.1

7. TCP-FIN-Scan

nmap -sF -F 10.10.0.1

8. UDP-Port-Scan

nmap -sU -F 10.10.0.1

9. UDP-All-Port-Scan

nmap -sU -p0- --reason --stats-every 60s --max-rtt-timeout 100ms --max-retrie 1 10.10.0.1

10. List­-Scan

nmap -sL 10.10.0.1/24

Links

intern

extern