Video-Tipp #53: Mit der PowerShell die Windows-Sicherheit erhöhen Mit der PowerShell nach offenen Ports suchen

Von Thomas Joos

Anbieter zum Thema

Wenn es darum geht nach offenen Ports in Windows zu suchen, sind nicht immer komplexe oder teure Zusatztools notwendig. Mit der PowerShell und auch mit der Eingabeaufforderung lassen sich mit wenigen, kurzen Befehlen die notwendigen Informationen auslesen. In diesem Video-Tipp zeigen wir, wie das geht.

Mit Bordmitteln und der PowerShell können Administratoren die Sicherheit in Windows recht einfach erhöhen.
Mit Bordmitteln und der PowerShell können Administratoren die Sicherheit in Windows recht einfach erhöhen.
(Bild: Yingyaipumi - stock.adobe.com)

Mit der PowerShell ist es möglich geöffnete Ports und Verbindungen zu testen, genauso wie mit der Befehlszeile. Die PowerShell bietet dazu natürlich noch mehr Möglichkeiten. Das hilft dabei zu analysieren, wo Ports geöffnet sind und von welchen Programmen oder Diensten. Für diese Abfragen sind keine zusätzlichen Module oder Anwendungen notwendig. Das wichtigste, interne Modul für die Abfrage und das Setzen von IP-Informationen ist das Modul NetTCPIP. Die Cmdlets aus diesem Modul zeigt die PowerShell mit dem folgenden Befehl an:

Get-Command -modul NetTCPIP

Wie man mit der PowerShell offene Ports in Windows findet, zeigen wir hier im Video-Tipp und in der Bildergalerie.

Bildergalerie
Bildergalerie mit 9 Bildern

Offene Ports lassen sich in sekundenschnelle identifizieren

Ein Beispiel dafür ist das Testen von Endpunkten, die auf einem Rechner im Netzwerk offen sind. Kommt zum Beispiel ein Client für Multicast DNS (mDNS) zum Einsatz, ist auf dem Rechner der UDP-Port 5353 offen. Dieser Port kann speziell getestet werden, genauso wie andere Ports. Das CMDlet dazu ist:

Get-NetUDPEndpoint -LocalPort 5353

Mit diesem Cmdlet ist sofort klar, auf welchen IP-Adressen eines Computers der Port 5353 offen ist. Sollen auch noch verifiziert werden, welche Anwendungen diesen Port nutzen, kann der Befehl mit typischen PowerShell-Parametern auch erweitert werden:

Get-NetUDPEndpoint -LocalPort 5353 | Select-Object LocalAddress,LocalPort,OwningProcess,@{ Name="ProcessName"; Expression={((Get-Process -Id $_.OwningProcess).Name )} }

Mit PowerShell-Cmdlets und Skripts können Netzwerkprobleme eingegrenzt und behoben werden. Es lohnt sich die Möglichkeiten der verschiedenen Netzwerk-Cmdlets zu kennen, um Fehlerquellen zu erkennen und Probleme zu lösen. Mit dem gleichen Cmdlet ist es auch möglich alle offenen UDP-Ports auf allen IP-Adressen eines Rechners anzuzeigen:

Get-NetUDPEndpoint

Auch das Abfragen der einzelnen IP-Adressen ist möglich, zum Beispiel mit:

Get-NetUDPEndpoint -LocalAddress 127.0.0.1

Informationen zu Netzwerkadaptern anzeigen

Für das Abfragen von Ports sollten natürlich zunächst die lokalen IP-Adressen und die Netzwerkadapter bekannt sein. Dazu stehen in der PowerShell die beiden Cmdlets Get-NetIPAddress und Get-NetIPConfiguration zur Verfügung, um Informationen zur Netzwerkkonfiguration eines Computers anzuzeigen. Mit dem Parameter „-Verbose“ zeigt die PowerShell noch mehr Informationen an.

Mit den beiden Cmdlets sind alle Informationen, die über die lokale Netzwerkkonfiguration eines Rechners zur Verfügung stehen abrufbar. Um noch mehr Daten zu den verbauten Netzwerkadaptern anzuzeigen, wird noch das Cmdlet Get-NetAdapter verwendet. Alle diese Cmdlets ermöglichen auch das Weiterleiten der Informationen zu Format-List oder Format-Table, zum Beispiel:

Get-NetIPAddress | Format-Table

Verbindungen zu IP-Adressen und Ports testen

Mit dem Cmdlet Test-NetConnection lassen sich Verbindungen zwischen IP-Adressen und auch zwischen den verwendeten Ports testen. Das Tool kommt vor allem dann zum Einsatz, wenn eine Netzwerkverbindung zwischen zwei IP-Adressen getestet werden soll. Das funktioniert mit IP-Adressen und auch mit Namen, wenn die Namensauflösung im Netzwerk richtig konfiguriert ist:

Test-NetConnection 192.168.1.1

Mit diesem Cmdlet ist es auch möglich eine Verbindung zu einem bestimmten Port auf dem entfernen Computer zu öffnen, um zu testen, ob dieser geöffnet ist. Dazu kommt der Parameter „-Port“ zum Einsatz, zum Beispiel:

Test-NetConnection 192.168.1.1 -Port 443

Ausführlichere Informationen zeigt der folgende Befehl an:

Test-NetConnection -InformationLevel "Detailed"

Soll die Route zu einem Computer diagnostiziert werden, ist folgender Befehl nützlich:

Test-NetConnection -ComputerName www.contoso.com -DiagnoseRouting -InformationLevel Detailed

Wie man mit der PowerShell offene Ports in Windows findet, zeigen wir hier im Video-Tipp und in der Bildergalerie.

Bildergalerie
Bildergalerie mit 9 Bildern

Interessant ist an dieser Stelle aber nicht nur die Verknüpfung mit einem einzelnen Computer per Netzwerkverbindung, sondern das Anzeigen aller Verbindungen, inklusive der geöffneten Ports. Dazu dient wiederum das Cmdlet:

Get-NetTCPCOnnection

Sollen wiederum aktive Verbindungen in der PowerShell angezeigt werden, kann der folgende Befehl zum Einsatz kommen:

Get-NetTCPConnection -State Established

Um Verbindungen und Ports zum Internet zu testen, sind wiederum folgende Parameter mit dem Cmdlet geeignet:

Get-NetTCPConnection -AppliedSetting Internet

Es ist auch möglich in der PowerShell alle Ports anzeigen zu lassen, die ein bestimmter Prozess nutzt. Dazu ist die PID des Prozesses notwendig. Diese zeigt die PowerShell mit dem Cmdlet Get-Process an. Am Beispiel des Prozesses 3868 auf einem Rechner sieht der Befehl folgendermaßen aus:

Get-NetTcpConnection -OwningProcess 3868

Wie man mit der PowerShell offene Ports in Windows findet, zeigen wir hier im Video-Tipp und in der Bildergalerie.

Bildergalerie
Bildergalerie mit 9 Bildern

IP-Adresse des Gateways in der PowerShell anzeigen

Für das Nachverfolgen von Routen und dem Testen von Ports kann es sinnvoll sein die externe IP-Adresse des Gateways zu kennen. Das kann in der PowerShell mit dem folgenden Befehl erfolgen:

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zur IT-Sicherheit

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung
Invoke-RestMethod http://ipinfo.io/json | Select -exp ip

Um alle Infos des Anschlusses einzuholen kann der folgende Befehl zum Einsatz kommen:

In der PowerShell mit Befehlen aus der Eingabeaufforderung arbeiten

In der PowerShell ist es auch möglich offene Ports mit Befehlen aus der PowerShell anzuzeigen. Dazu kommt der folgende Befehl zum Einsatz:

netstat -an

Der Befehl zeigt alle geöffneten Ports auf einem Rechner an. Um mehr Informationen anzuzeigen, kann noch der folgende Befehl genutzt werden:

netstat -banvo

Einfacher lassen sich die Daten auch in der grafischen Oberfläche anzeigen. Mit dem Tool TCPView von Microsoft ist die Anzeige der geöffneten Ports parallel durchaus sinnvoll, vor allem da das Tool nicht installiert werden muss. Damit lassen sich geöffnete Ports ohne Installation auslesen, und zwar in Echtzeit.

Wie man mit der PowerShell offene Ports in Windows findet, zeigen wir hier im Video-Tipp und in der Bildergalerie.

Bildergalerie
Bildergalerie mit 9 Bildern

(ID:48502867)