cmd Portscan - Geräte im Netzwerk auf deren Services testen.

This page is also available in English

Netzwerkgeräte verwenden für die Kommunikation bestimmte Netzwerkports. Als Beispiel wird für den Aufruf einer Webseite eines Webservers der Port 80 oder 443 verwendet. Um mit einem Webserver eine Verbindung aufbauen zu können, horcht dieser auf den entsprechenden Port, im Falle eines Webservers auf 443. Theoretisch könnte für den Verbindungsaufbau ein beliebiger Port seitens des Webserver-Betreibers verwendet werden, dennoch sind die Port-Nummern standardisiert und bestimmte Nummern sollten für bestimmte Protokolle verwendet werden, wie zum Beispiel Port 80 für einen unverschlüsselten Webserver-Zugriff: http und 443 für einen verschlüsselten Webserverzugriff: https.

Ziel dieses Beitrages

über das Netzwerk bestimmte Geräte abfragen,
ob diese auf bestimmte Netzwerkports antworten

Aufwand

Lesedauer: ca. 4 Minuten

Voraussetzung

Windows-PC im Netzwerk
Für das Testen eines bestimmten Ports in PowerShell kann der Befehl "Test-NetConnection" verwendet werden, siehe auch PING Port - Windows cmd: PsPing - PowerShell Test-Netconnection. Um zu testen welche Ports bei einem bestimmten Gerät offen sind, welche Netzwerkservices das Gerät als anbietet, kann das Command-Line-Tool Nmap verwendet werden:

Das Tool für Netzwerkscans: Nmap

Mit Hilfe des Command-Line-Tools Nmap können unter anderem sehr einfach Portscans durchgeführt werden. Nmap kann von der Herstellerseite kostenlos heruntergeladen werden: nmap.org/download.html und ist neben Linux auch für Windows verfügbar. Für Windows kann das .zip-Archiv heruntergeladen, extrahiert und ohne Installation gestartet werden, dazu in die Eingabeauforderung:

Um alle Ports der IP-Adresse 192.168.1.5 zu scannen kann, nach dem Wechsel in das Verzeichnis mit den entpackten nmap-Dateien (cd Ordnername), folgender Befehl verwendet werden:

nmap 192.168.1.5 -p-

Ausgabe:

[+]
cd C:\temp\nmap-7.91-win32
C:\temp\nmap-7.91-win32>nmap 192.168.1.5 -p-
Starting Nmap 7.91 ( https://nmap.org ) at 2020-11-26 17:18 Mitteleuropäische Zeit
Nmap scan report for scratch.test (192.168.1.5)
Host is up (0.0090s latency).
Not shown: 65515 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
80/tcp    open  http
83/tcp    open  mit-ml-dev
90/tcp    open  dnsix
111/tcp   open  rpcbind
443/tcp   open  https
3000/tcp  open  ppp
3001/tcp  open  nessus
3306/tcp  open  mysql
5983/tcp  open  unknown
6379/tcp  open  redis
6380/tcp  open  unknown
8081/tcp  open  blackice-icecap
8082/tcp  open  blackice-alerts
8086/tcp  open  d-s-n
8123/tcp  open  polipo
9081/tcp  open  cisco-aqos
9082/tcp  open  unknown
40799/tcp open  unknown
54327/tcp open  unknown
MAC Address: 00:00:xx:xx:xx:xx (ASRock Incorporation)

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

Bei dem gescannten Gerät handelt es sich um meine NAS, auf der ich alle möglichen Services installiert habe. Neben bekannten Ports werden  auch unbekannte Ports angezeigt. Die unbekannten Ports sind unterschiedlichste Services bei denen ich willkürliche Portnummern verwendet habe. Die verwendete Portnummer ist also keine Garantie dafür, dass wirklich das Protokoll verwendet wurde welches laut Standard verwendet werden sollte. Mit dem Befehl kann zum Beispiel auch ein Server im Internet auf dessen Services getestet werden.

Windows integriert: PowerShell

Alternativ, wenn auch wesentlich langsamer, kann auch Windows PowerShell für den Portscan verwendet werden: 

Net.Sockets.TcpClient anstelle von Test-NetConnection

Test-NetConnection ist nett um einen Port zu überprüfen, etwas schneller ist der Test über Net.Sockets.TcpClient. Hier ein Beispiel um die ersten 1024 Ports der IP-Adresse 192.168.1.5 zu scannen:

1..1024 | % {write-host ((new-object Net.Sockets.TcpClient).Connect("192.168.1.5",$_)) "Port $_ ist offen"} 2>$null

Legende:

1..1024 Start und End-Port für die Prüfung
192.168.1.5  ist hier ein Beispiel für die IP-Adresse des Rechners der gescannt werden soll.


Ausgabe:

PS C:\Users>1..1024 | % {write-host ((new-object Net.Sockets.TcpClient).Connect("192.168.1.5",$_)) "Port $_ ist offen"} 2>$null
 Port 22 ist offen
 Port 80 ist offen
 Port 83 ist offen
 Port 90 ist offen
 Port 111 ist offen

Wer die Befehltszeile getestet hat wird feststellen, dass die Überprüfung extrem langsam ist, dabei werden in dem Beispiel von den möglichen 65535 Ports gerade mal 1024 gescannt. Das liegt daran, dass ein Port nach dem anderen getestet wird.

PowerShell >= 7

Ab der PowerShell Version 7 ist es möglich den Parameter "-Parallel" in Foreach zu verwenden, entsprechend können mehrere Ports gleichzeitig: parallel überprüft werden, was die Geschwindigkeit enorm steigert. Powershell kann in puncto Performance aber dennoch mit nmap nicht mithalten. Zudem ist PowerShell 7 leider derzeit noch nicht als Standard in den aktuellen Windows-Versionen vorhanden und muss gesondert installiert werden.

Wer PowerShell 7 installiert hat, kann für den Portscan folgenden Befehl verwenden:

1..65335 | % -ThrottleLimit 500 -Parallel {write-host ((new-object Net.Sockets.TcpClient).Connect("192.168.1.5",$_)) "Port $_ is open!"} 2>$null

In älteren PowerShell-Versionen ist das zwar auch möglich, aber nicht in einer Zeile:

PowerShell > 4

PowerShell-Versionen kleiner 7 können die Funktion über einen RunspacePool abbilden, als Beispiel für einen PowerShell-PortScanner bin ich auf GitHub fündig geworden:

github.com/BornToBeRoot/PowerShell_IPv4PortScanner/blob/master/Scripts/IPv4PortScan.ps1

weitere Artikel zu Windows-Powershell, siehe: Windows PowerShell

Fazit

Wer einen Überblick über das lokale Netzwerk bekommen möchte, kann mit einfachen Befehlen alle Geräte des lokalen Netzwerks auflisten, siehe: Alle Geräte - IP Adressen im Netzwerk anzeigen. Mit den hier angeführten Befehlen können einzelne Geräte auf offen Ports (Services) getestet werden: Nmap.

 

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!


Top-Artikel in diesem Bereich

Preview IP Adressen im Netzwerk finden, auch wenn deren Firewall aktiviert ist

IP Adressen im Netzwerk finden, auch wenn deren Firewall aktiviert ist

geändert: 02.04.2022 von Bernhard (Erstveröffentlichung: 08.11.2015)

Wer einen schnellen Überblick über alle aktiven Geräte in einem Netzwerk bekommen will, kann dies mit der Netzwerkerkennung, mit Befehlen in der Eingabeaufforderung, in PowerShell oder mit speziellen IP-Scannern. Die zu Beginn dieses Beitrages zusammengestellten PowerShell-Befehle geben einen schnellen Überblick über alle Geräte im lokalen Netzwerk und machen spezielle Programme für das Scannen des Netzwerks eventuell überflüssig. Wer die Befehle gerne in Aktion sehen will, kann dies in meinem Y... ... weiterlesen

Preview cmd Befehle für die Netzwerkanalyse

cmd Befehle für die Netzwerkanalyse

geändert: 07.04.2022 von Bernhard (Erstveröffentlichung: 29.07.2012)

Mit einfachen Befehlen kann ein schneller Überblick über die aktuellen Netzwerkeinstellungen ausgelesen werden und dadurch eventuelle Verbindungsfehler gefunden, oder ein Überblick über andere Geräte im Netzwerk verschafft werden. Die hier beschriebenen Befehle sind cmd-Befehle. Die Eingabe erfolgt über die Eingabeaufforderung: cmd, siehe auch das zugehörige YouTube-Video. ... weiterlesen

Preview PING mit Port - Windows cmd | PowerShell: Test-Netconnection

PING mit Port - Windows cmd | PowerShell: Test-Netconnection

geändert: 02.04.2022 von Bernhard (Erstveröffentlichung: 27.04.2014)

Mit dem Tool ping kann bekanntlich der Zugriff zu einem bestimmten Netzwerkgerät und dessen Antwortzeit getestet werden. Nicht alle Geräte antworten auf einen ping, möglicherweise aber auf einen bestimmten Port, falls darüber ein bestimmter Netzwerkservice zur Verfügung gestellt wird. Windows PowerShell ermöglicht es einen bestimmten Port mit Windows Boardmitteln zu testen. Das Tool psping kann zudem die Antwortzeit auf einen bestimmten Port messen. Wer die Befehle gerne in Aktion sehen will, ka... ... weiterlesen


Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details