Nmap

12 Minuten zum lesen

console.log('It´s time to hack');

Hallo,

Heute möchte ich euch kurz den Netzwerk/Portscanner Nmap vorstellen. Der mittels CLI Interface oder GUI Zenmap sehr komfortabel gesteuert werden kann. Nmap dient Primär zur Aufklärung und Erkennung von Schwachstellen in einem Netzwerk.

Grundlagen Portscanning

image-center

Primäre Aufgaben von Nmap:

  • Durchführen von Netzwerksscans
  • Prüfen welche Ports am Zielsystem geöffnet sind
  • Erkennug der Dienste die hinter den offenen Ports laufen
  • Schwachstellenerkennung mittels NSE skripten
  • uvm.

Installation

Der einfachste weg ist es die Kali Linux Distribution von Kali.org herunter zu laden. Die Distribution gibt es als live Image oder als Abild einer Virtuelle Maschine für die Hypervisoren Vmware Player/Virtual Box auf der Seite von Offense Security.

Es ist jedoch auch ohne weiteres möglich Nmap wie jedes andere Programm zu installieren. Nmap stellt die Binaries für alle gängigen Betriebssysteme(Linux, MacOS, Windows) zur verfügung.

Bitte führen sie keine Netzwerk oder Portscan in fremden Netzwerken oder in deren sie nicht berechtigt sind.

Grundlegende Port-Scanning Methoden

  • -sS TCP-SYN-Scan Der SYN-Scan ist aus gutem Grund die Standardeinstellung und die beliebteste Scan-Methode. Er kann schnell durchgeführt werden und scannt dabei Tausende von Ports pro Sekunde, wenn das Netzwerk schnell ist und nicht von einer intrusiven Firewall behindert wird. Der SYN-Scan ist relativ unauffällig, da er TCP-Verbindungen niemals abschließt. Außerdem funktioniert er auch bei allen konformen TCP-Stacks und ist unabhängig von spezifischen Eigenarten von Plattformen, wie es bei den FIN-/NULL-/Xmas-, Maimon- und Idle-Scans in Nmap der Fall ist. Er erlaubt auch eine klare, zuverlässige Unterscheidung zwischen den Zuständen offen, geschlossen und gefiltert. Diese Methode wird oft als halboffenes Scannen bezeichnet, weil keine vollständige TCP-Verbindung hergestellt wird. Sie senden ein SYN-Paket, als ob Sie eine echte Verbindung herstellen würden, und warten dann auf eine Antwort. Ein SYN/ACK zeigt, dass jemand auf dem Port lauscht (dass er offen ist), während ein RST (Reset) anzeigt, dass niemand darauf lauscht. Falls nach mehreren erneuten Übertragungen keine Antwort erhalten wird, wird der Port als gefiltert markiert. Der Port wird auch dann als gefiltert markiert, wenn ein ICMP Unreachable-Fehler (Typ 3, Code 1, 2, 3, 9, 10 oder 13) empfangen wird.

  • -sT TCP-Connect-Scan Der TCP-Connect-Scan ist der standardmäßig eingestellte TCP-Scan-Typ, falls der SYN-Scan(-sS) nicht möglich ist. Das ist dann der Fall, wenn der Benutzer kein Recht hat, rohe Pakete zu senden, oder wenn er IPv6-Netzwerke scannt. Statt rohe Pakete zu schreiben, wie es die meisten anderen Scan-Typen machen, bittet Nmap das darunterliegende Betriebssystem, eine Verbindung mit dem Zielrechner und -port herzustellen, indem es einen Systemaufruf namens connect benutzt. Das ist derselbe Systemaufruf auf höherer Ebene, den Webbrowser, P2P-Clients und die meisten anderen netzwerkfähigen Anwendungen benutzen, um eine Verbindung herzustellen. Er ist Teil einer Programmierschnittstelle, die unter dem Namen Berkeley Sockets-API bekannt ist. Statt Antworten in Form roher Pakete von der Leitung zu lesen, benutzt Nmap diese API, um zu jedem Verbindungsversuch eine Statusinformation zu erhalten. Wenn der SYN-Scan verfügbar ist, ist er normalerweise die bessere Wahl. Nmap hat weniger Einfluss auf den connect-Systemaufruf als auf rohe Pakete, wodurch es weniger effizient wird. Der Systemaufruf beendet Verbindungen zu offenen Ziel-Ports vollständig, statt sie in halboffenen Zustand zurückzusetzen, wie es der SYN-Scan macht. Das dauert nicht nur länger und erfordert mehr Pakete, um an dieselbe Information zu gelangen, sondern es ist sehr viel wahrscheinlicher, dass die Zielrechner die Verbindung protokollieren.

Standardports und die dahinter stehenden Dienste:

Portnummer Service
20 FTP-Datenübertragung
22 FTP-Steuerung
22 SSH
23 Telnet
25 SMTP (Email)
53 DNS
80 HTTP
137-139 NetBIOS
443 HTTPS
445 SMB
1433 MSSQL
3306 MySQL
3389 RDP
5800 VNC über HTTP
5900 VNC

Basis Scan via CLI

Im folgenden Beispiel scannen wir einen Netzwerkteilnehmer mit der Adresse 192.168.1.100 und verwenden dabei die TCP-SYN-Scan Methode. In meinem Netzwerk ist unter dieser Adresse meine Heizungssteuerung (Möhlenhoff Alpha) zu erreichen. Da die TCP-SYN Scan Methode Root bzw. Admin Rechte erfordert muss dem befehl bei Debian Distributionen ein “sudo” vorangestellt um den Befehl erfolgreich auszuführen.

$ sudo nmap -sS -Pn 192.168.1.100  

Wurde der Scan erfolgreich abgeschlossen sollten wir eine Ausgabe mit den offenen Ports erhalten und auch welche Service sich dahinter verbirgt

Nmap scan report for 192.168.1.100
Host is up (0.0033s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
23/tcp   open  telnet
80/tcp   open  http
8080/tcp open  http-proxy
MAC Address: 38:DE:60:01:xx:xx (Mohlenhoff GmbH)

Da aber nicht immer Root bzw. Admin Rechte vorhanden sind, kann auch ein TCP-Connect-Scan durchgeführt werden.

$ nmap -sT -Pn 192.168.1.100

Wie erhalten die selbe Ausgabe wir zuvor. Jedoch wird der durchgeführte mit sehr hoher Wahrscheinlichkeit in einer Log-Datei mitprotokolliert. Daher sollte der TCP-SYN-Scan dieser Methode immer vorgezogen werden.

Nmap scan report for 192.168.1.100
Host is up (0.0070s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
23/tcp   open  telnet
80/tcp   open  http
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 2.45 seconds

Um eine gesamtes Subnet zur scannen können folgende Befehle verwendet werden. Bitte beachtet das der scan eines kompletten Subnets bis zu 15 Minuten dauern kann.

$ nmap -sS -Pn 192.168.1.1-254
$ nmap -sS -Pn 192.168.1.1/24

Hier sehen wir kleinen Auszug den ich von Scan meines Netzwerk erhalte:

Nmap scan report for router.asus.com (192.168.x.x)
Host is up (0.00049s latency).
Not shown: 925 closed ports, 70 filtered ports
PORT     STATE SERVICE
53/tcp   open  domain
80/tcp   open  http
515/tcp  open  printer
8443/tcp open  https-alt
9100/tcp open  jetdirect
MAC Address: BC:EE:7B:8E:xx:xx (Asustek Computer)

Nmap scan report for android-xxxxx (192.168.1.xx)
Host is up (0.062s latency).
All 1000 scanned ports on android-xxxxxx (192.168.1.xx) are closed
MAC Address: C4:43:8F:AF:xx:xx (xx Electronics)

Nmap scan report for 192.168.1.100
Host is up (0.0035s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
23/tcp   open  telnet
80/tcp   open  http
8080/tcp open  http-proxy
MAC Address: 38:DE:60:01:xx:xx (Mohlenhoff GmbH)

...

Nmap done: 254 IP addresses (8 hosts up) scanned in 969.88 seconds

Um die durchgeführten Scans zu dokumentieren empfiehlt es das Ergebnis in eine Datei umzuleiten.

$ nmap -sT -Pn 192.168.1.100 > scan.txt

Oder man nutzt die bereits in Nmap integrierten flags um die Ergebnise formatiert in eine Datei auszugeben und zu speichern.

Nmap Output Flags

Output flag Beschreibung
-oN Normale Ausgabe in eine Datei
-oX XML Ausgabe in eine Datei
-oS ScRipT KIddi 3-Ausgabe
-oG grepbare Ausgabe
-oA Ausgabe in allen Formaten
$ nmap -sT -Pn -oN 192.168.1.100 
$ nmap -sT -Pn -oX 192.168.1.100 
$ nmap -sT -Pn -oS 192.168.1.100 
$ nmap -sT -Pn -oG 192.168.1.100 
$ nmap -sT -Pn -oA 192.168.1.100 

NSE Schwachstellen Scan

Nun wollen wir einen Teilnehmer im Netzwerk auf bekannte Schwachstellen prüfen. Den dafür stellt die NSE Nmap Script Engine einige Standard Skripte zur Verfügung. Der Übersichtlichkeit halber sind die NSE-Skripte in Kategorien eingeteilt. Zurzeit gibt es die Kategorien auth , broadcast , brute , default , discovery , dos , exploit , external , fuzzer , intrusive , malware , safe , version und vuln.

Information
Die NSE und ihre Skripts sind in Nmap eingebaut. Sie müssen daher nichts zusätzlich installieren oder konfigurieren.

Will man nur ein bestimmtes script ausführen gibt man einfach den Namen des auszuführenden Skriptes an. Zum Beispiel:

$ nmap -script smb-vuln-ms08-067 192.168.1.110

Mit den flags “–script vuln” werden alle Skripte in der Kategorie vuln ausgeführt.

$ nmap --script vuln 192.168.1.100

Ausgabe des Scan aus der Kategorie vuln:

Pre-scan script results:
| broadcast-avahi-dos: 
|   Discovered hosts:
|     192.168.1.236
|     192.168.1.1
|     192.168.1.131
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Nmap scan report for 192.168.1.100
Host is up (0.0066s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
23/tcp   open  telnet
80/tcp   open  http
|_http-cross-domain-policy: ERROR: Script execution failed (use -d to debug)
|_http-csrf: Couldn t find any CSRF vulnerabilities
|_http-dombased-xss: Couldn t find any DOM based XSS.
|_http-fileupload-exploiter: 
|_http-frontpage-login: false
|_http-stored-xss: Couldn t find any stored XSS vulnerabilities.
|_http-vuln-wnr1000-creds: ERROR: Script execution failed (use -d to debug)
8080/tcp open  http-proxy
|_http-cross-domain-policy: ERROR: Script execution failed (use -d to debug)
|_http-frontpage-login: false
|_http-vuln-wnr1000-creds: ERROR: Script execution failed (use -d to debug)

Nmap done: 1 IP address (1 host up) scanned in 53.34 seconds

Wie man hier schön sehen kann ist meine Heizungssteurung nicht angreifbar, sie ist nur anfällig für einen Denial of Service(Dos) Angriff CVE-2011-1002.

Um euch jedoch zu zeigen welche Ausgabe wir erhalten wenn wir einen Host scannen der Sicherheitslücken aufweist, seht ihr in der Ausgabe einen Scan von einer Virtuellen Windows XP Maschine SP1. Diese VM Maschine weist einige Sicherheitslücken auf und mit diesen wissen kann man sich in der Metasploit Datenbank auf die Suche nach einen geeigneten Exploits (Metasploit ms08-067) machen. Metasploit werd ich euch in einem meiner nächsten Artikel vorstellen.

Nmap scan report for ie6winxp (192.168.x.x)
Host is up (0.0065s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
3389/tcp open  ms-wbt-server
|_ssl-ccs-injection: No reply from server (TIMEOUT)

Host script results:
| smb-vuln-cve2009-3103: 
|   VULNERABLE:
|   SMBv2 exploit (CVE-2009-3103, Microsoft Security Advisory 975497)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2009-3103
|           Array index error in the SMBv2 protocol implementation in srv2.sys in Microsoft Windows Vista Gold, SP1, and SP2, 
|           Windows Server 2008 Gold and SP2, and Windows 7 RC allows remote attackers to execute arbitrary code or cause a 
|           denial of service (system crash) via an & (ampersand) character in a Process ID High header field in a NEGOTIATE 
|           PROTOCOL REQUEST packet, which triggers an attempted dereference of an out-of-bounds memory location, 
|           aka "SMBv2 Negotiation Vulnerability." 
|           
|     Disclosure date: 2009-09-08
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3103
|_      http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3103
| smb-vuln-ms08-067: 
|   VULNERABLE:
|   Microsoft Windows system vulnerable to remote code execution (MS08-067)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2008-4250
|           The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2, 
|           Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary 
|           code via a crafted RPC request that triggers the overflow during path canonicalization.
|           
|     Disclosure date: 2008-10-23
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
|_      https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: false

Nmap done: 1 IP address (1 host up) scanned in 40.75 seconds

Basis Scan via Zenmap

Durch die Graphische Oberfläche(Zenmap) wir die Bedienung von Nmap um einiges erleichtert. Jedoch schadet es nicht wie oben beschrieben auch einmal Nmap via CLI zu bedienen. Denn komplexere Scanaufträge lassen sich auch nur via CLI wirklich vernünftig durchführen.

Zenmap ist in Kali Linux enthalten und kann direkt aus denn Anwedungsfenster gestartet werden.

placeholder-2

In der Zeile Target tragen wir ein einzelnes Ziel 192.168.1.100 ein oder einen Teilbereich z.B: 192.168.1.1-50. Im rechten Dropdown Menü wählen wir die Scan Methode aus und mit Klick auf den Button Scan starten wir den Scanvorgang.

placeholder-2

Im Reiter Nmap Output erhalten wir die selben Informationen wie im Ausgabe Fenster der Konsole.

placeholder-2

Im Reiter Ports/Host werden die offen Ports und die dahinter stehenden Dienste Grafisch angezeigt.

placeholder-2

Im Reiter Host Details erhalten wie detaillierte Informationen zum Host wenn diese ausgelesen werden können.

placeholder-2

Der Vorteil von Zenmap kommt eigentlich erst zu tragen wenn man größere Segmente oder sogar mehrere Netzwerke scannt. Jeder einzelne Scanvorgang kann unter Scan -> Save gespeichert werden. Zusätzlich lässt sich die Grafische Ausgabe auch Filtern um die Ergebnisse auf die wichtigsten Ziele zu beschränken.

placeholder-2

Mehr Informationen

Eine Sammlung der Wichtigsten Nmap Befehlen
Nmap Kommandoreferenz

Die offiziele Dokumentation von Nmap
Nmap Official Docs

console.log('See you !');

Aktualisiert: