Wie prüft man mit der PowerShell geöffnete Ports

Mit der Windows PowerShell und einen kleinen Script offene Ports prüfen

Was sind in der Netzwerktechnik Ports

Möchte man mehrere Ports prüfen, so muss man nicht unbedingt verschiedene Drittanbieter Tools installieren. Mit der Windows PowerShell ist das sehr einfach möglich.

Hinter dem Begriff Ports verbergen sich im Prinzip nur verschiedene Dienste, die damit angesprochen werden. Da die IP-Adresse eines Servers oder Computers gleich ist, wird ein Unterscheidungsmerkmal benötigt, damit man weiß, welcher Dienst vom Server oder Computer angesprochen werden soll.

So verbirgt sich z. B. hinter dem http Protokoll (Aufruf von Webseiten) der Port 80. Hinter dem https Protokoll der Port 443. Das sind nur zwei kleine Beispiele. Mehr Informationen zu der Thematik Ports findest du im Artikel: Wie du in 3 Minuten verstanden hast, was man im Bereich Netzwerktechnik unter Ports versteht.

Im Folgenden geht es um das Auffinden geöffneter Ports mithilfe der Windows PowerShell. Dafür wird in dieser Anleitung ein kleines PowerShell Skript erstellt. Hierfür werden mehrere Elemente der Windows PowerShell benötigt, welche einzeln im Laufe des Artikels erläutert werden, sodass am Ende das fertige PowerShell Skript als Ergebnis erstellt werden kann.

Die Elemente, welche hier benötigt werden, sind dabei folgende:

  • Eine foreach Schleife
  • Die Prüfung einer Netzwerkverbindung (Test-NetConnection)
  • Ein Vergleichsoperator

Die PowerShell Foreach Schleife

Die Netzwerkverbindung mit der Wind...
Die Netzwerkverbindung mit der Windows PowerShell prüfen

Eine Foreach Schleife ist im Prinzip eine spezielle Schleife, mit welches es möglich ist, die Elemente eines Arrays abzufragen, auszugeben und auch weiterzuverarbeiten.

Das kleine Beispiel zeigt die allgemeine Funktionsweise der foreach-schleife. Zunächst wird allen lokalen Benutzer die Variablen $user zugewiesen. Das heißt, die kompletten Parameter der lokalen Benutzer liegen im Array $user.

Über die foreach Schleife wird nun von jedem Element der Name ausgelesen. Es wird dabei jeweils auf die Eigenschaft name zugegriffen. Der Zugriff auf das Objekt (Hier $u) erfolgt mit der Punkt Referenzierung.

$user = Get-LocalUser -Name *

foreach($u in $user)
{
$u.name
}

Powershell Cmdlet Test-Netconnection

Wenn man mit der PowerShell prüfen möchten, ob ein bestimmter Computer oder Server erreichbar ist, so gibt es dafür ein eigenes Cmdlet mit dem Namen Test-Netconnection. Aus der Eingabeaufforderung cmd ist bestimmt noch das ähnliche Tool mit dem Namen ping bekannt.

Allerdings bietet die PowerShell wesentlich mehr Optionen. Das folgende Beispiel zeigt eine kleine Anwendung des Cmdlet. Es wird geprüft, ob der Port des Servers mit dem Name sv1 erreichbar ist. Anstatt des Namens kann hier auch die IP-Adresse verwendet werden.

Test-NetConnection -ComputerName sv1 -Port 80 -InformationLevel Detailed
MIt der PowerShell die Erreichbarkeit einer IP-Adresse prüfen
MIt der PowerShell die Erreichbarkeit einer IP-Adresse prüfen

Sehr aufschlussreich ist noch die Verwendung der Option „InformationLevel“. Dadurch erhält man noch eine ausführliche Information bzgl. der Erreichbarkeit des Rechners. Bei der Ausgabe gibt es jetzt verschiedene Attribute.

Im Falle der Erreichbarkeit ist die Eigenschaft tcpTestsucceeded von Interesse. Hier steht über True oder False, ob der Computer erreichbar ist oder nicht. Falls man sich mit dem Cmdlet Test-NetConnection noch nie beschäftigt hat, sollte man das auf jeden Fall tun. Vor allem für die Netzwerkanalyse liefert dieser Befehl viel mehr aufschlussreiche Informationen.

PowerShell Vergleichsoperatoren

Zu guter Letzt wird auch noch ein Vergleichsoperator benötigt. Es geht letztlich darum zu prüfen, ob ein Port offen ist oder nicht. Das heißt, wenn die Ergebnisse $true sind soll eine Meldung ausgegeben werden, aber auch genauso, wenn die Ergebnisse $false sind.

Diese Prüfung kann dabei mit dem Vergleichsoperator (equal) geprüft werden. Die Windows PowerShell bietet auch noch viele weitere Vergleichsoperatoren an. Die kleine Tabelle liefert einen Überblick.

-eqGleich
-neUngleich
-gt, -geGrößer als / Größer oder gleich
-lt , -leKleiner als / Kleiner oder gleich
-matchEntspricht
-nomatchEntspricht nicht

Arten von verschiedenen Ports

Wie Eingangs bereits erwähnt, steckt hinter einem Port ein spezieller Dienst. Um die Ports zu strukturieren, gibt es dafür eine klare Unterscheidung. Sie werden dabei in drei verschiedene Klassen eingeteilt.

Well Known Ports

Der wichtigste Bereich sind die Well Know Ports. Dabei sind der Portbereich 0 bis 1023 gemeint. Diese sind nämlich für systemnahe Dienste reserviert. Das bedeutet dahinterstecken Dienste wie https, https, DNS, SMB, CIFS, SSH, SFTP etc.

Registered Ports

Dieser Bereich erstreckt sich vom Portbereich 1024 – 49141. Damit werden Dienste gekennzeichnet, welche offiziell bei der IANA angemeldet werden können. Vom Prinzip läuft die Anwendung wie bei der Domänenregistrierung.

Private Ports

Dieser restliche Bereich 49152 – 65535 ist frei. Was bedeutet, die Ports können für beliebige Anwendungen, und selbst entwickelte Applikationen verwendet werden.

Am meisten von Interesse sind in erster Linie die Well-Knows Ports. Nachdem alle einzelnen Element für das Skript erläutert wurden, können diese nun in Einklang gebracht werden.

Im Beispiel Skript sollen jetzt vom Computer (Hier handelt es sich um eine Fritzbox) mit der IP-Adresse 192.168.178.1 die Ports zwischen 442 und 445 abgefragt werden. Im Falle einer Erfolgsmeldung wird dann anschließend die Meldung ausgegeben, dass der Port offen ist.

Sollte der Port jedoch geschlossen sein, so wird keine Meldung ausgegeben. Je nach Anzahl der zu scannenden Ports kann der Vorgang auch länger dauern.

foreach ($port in 442..445) {
		If (($a=Test-NetConnection 192.168.178.1 -Port $port -WarningAction SilentlyContinue).tcpTestSucceeded -eq $true)
			{ "TCP port $port ist offen!"}
		}
Mithilfe der PowerShell mehrere Ports scannen
Mithilfe der PowerShell mehrere Ports scannen
Mit der PowerShell offene Ports ausgeben
Mit der PowerShell offene Ports ausgeben

Das komplette Skript kann auch direkt über Github heruntergeladen werden.

Ports Scannen und Hacking

Ports sind im übrigen immer ein Einfallstor in ein System. Man sollte daher sehr sorgfältig prüfen, welche Port offen sein müssen und welche man nicht benötigt und daher geschlossen bleiben können. Erste Hackerangriffe auf Systeme laufen in der Regel so ab, dass zunächst ein Port-Scann durchgeführt wird, um zu prüfen, welche Dienste der Server oder Computer anbietet.

Im Übrigens ist das obige Skript im Prinzip genau das. Nämlich ein Port-Scan. Weit verbreitete Programm für Port-Scans sind z. B. nmap. Bzgl. der Durchführung sollte man dies nicht auf öffentlichen Systemen tun. Schnell gerät man dadurch mit dem Hackerparagraphen in Konflikt. Aber auf dem eigenen System kann mal geprüft werden, ob alles korrekt eingerichtet wurde.

Das könnte dich auch interessieren

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*