Netstat mit der PowerShell

Im letzten Blogeintrag haben wir uns angesehen, man den nslookup Befehl aus der CMD Shell mit der PowerShell ablösen kann.

In diesem Blogeintrag schauen wir uns an, wie man den netstat Befehl aus der CMD Shell mit der PowerShell ablösen kann.

Der Befehl netstat (Network Statistics) zeigt alle offenen Netzwerkverbindungen an. Es wird jeweils die Quelladresse mit Quell-IP und die Zieladresse mit Ziel-IP ausgegeben. Außerdem der Status der Verbindung
In der CMD Shell sieht das folgendermaßen aus.

netstat

Aktive Verbindungen
Proto Lokale Adresse Remoteadresse Status
TCP 127.0.0.1:49711 bbirneder:49713 HERGESTELLT
TCP 192.168.42.85:64735 37.208.109.105:5721 HERGESTELLT
TCP 192.168.42.85:64739 odo:https HERGESTELLT
TCP 192.168.42.85:64740 ec2-54-229-20-66:https WARTEND
TCP 192.168.42.85:64741 ec2-54-229-20-66:https FIN_WARTEN_1
TCP [fe80::746b:96a5:58ca:963c%4]:64711 [fe80::a96:d7ff:fe2a:b37a%4]:49000 WARTEND
…

 

Mit weiteren Parametern kann man auch gezielt nach Verbindungen von Applikationen suchen. Allerdings bekommt man immer alle Applikationen auf einmal angezeigt und eine Suche ist sehr mühselig.

Zeige alle Adressen als IP und die Datei, die die Verbindung aufgebaut hat:

Netstat –nb

Im Bildausschnitt sehen sie die TCP-verbindung von meinem Firefox zur Powershell-User Webseite.

Viel eleganter lässt sich das Ganze mit der PowerShell lösen.

Der Befehl Get-NetTCPConnection liefert ohne weitere Parameter eine ähnliche Antwort, allerdings zeigt er nur IP Adressen an und keine Domain Namen

Get-NetTCPConnection |ft LocalAddress,LocalPort,RemoteAddress,RemotePort,State -a

LocalAddress LocalPort RemoteAddress RemotePort State
------------ --------- ------------- ---------- -----
127.0.0.1 63289 127.0.0.1 63288 Established
192.168.42.85 64714 37.208.109.105 5721 Established
192.168.42.85 64713 37.208.109.72 443 Established
192.168.42.85 64708 40.77.229.72 443 Established
192.168.42.85 64702 40.77.229.20 443 Established
192.168.42.85 64133 37.208.109.68 80 CloseWait
…

 

Da es sich hier aber um eine Objekt-Liste handelt, kann ich mir wunderbar die Informationen zusammenfiltern.

Zuerst schaue ich mir eine Zeile im Detail an (Die Verbindung vom Firefox mit der Powershell-User Webseite).

Durch die Stern-Formatierung | fl * sehen wir auch die Attribute, die standardmäßig nicht in der Konsole ausgegeben werden.

$con = Get-NetTCPConnection |where {($_.RemoteAddress -like "37.208.109.68") -and ($_.RemotePort -eq 80)}
$con[0] |fl *  # Nimm das erste Element der Objektliste und zeige mir alle Details


 

Folgende Attribute sehen nützlich aus

  • State
  • CreationTime
  • LocalAddress
  • LocalPort
  • OwningProcess
  • RemoteAddress
  • RemotePort

Wenn ich alle aktiven Sessions auf Webseiten mit Startzeit sehen will, kann ich das folgendermaßen machen.

Get-NetTCPConnection |where {($_.state -eq "Established") -and ($_.RemotePort -eq 80)} | `
FT CreationTime,LocalAddress,LocalPort,RemoteAddress,RemotePort,State -a

CreationTime LocalAddress LocalPort RemoteAddress RemotePort State
------------ ------------ --------- ------------- ---------- -----
11.04.2018 13:55:26 192.168.42.85 49433 37.208.109.68 80 Established
11.04.2018 13:55:26 192.168.42.85 49431 216.58.207.74 80 Established

 

 

Power-TIP:
So kann ich herausfinden, welche Applikationen eine Verbindung zu www.powershell-user.de aufbauen. Hierfür nutze ich zusätzlich Resolve-DNSName und Get-Process. Der select –unique am Ende sorgt dafür, dass jede Applikation nur einmal aufgelistet wird.

Get-NetTCPConnection |where {$_.RemoteAddress -like (Resolve-DNSName –Name www.powershell-user.de).IPAddress} | `
Foreach {(Get-Process -Id $_.OwningProcess).ProcessName} |select -unique

powershell
firefox

Im nächsten Blogeintrag beschäftigen wir uns damit, wie man den ipconfig Befehl mit der PowerShell umsetzen kann.

4 Kommentare

  • Antworten Gregor |

    Hi Boris,

    sehr interessanter Beitrag, allerdings habe ich einen Verbesserungsvorschlag:

    Ich fände es gut, wenn Du die verwendeten Kommandos auch textuell zur Verfügung stellt, da man sie halt aus den Screenshots nicht kopieren kann.

    Ansonsten top!

    • Antworten Boris Birneder |

      Hallo Gregor,

      im Normalfall hinterlege ich Screenshots und auch die Kommandos für copy&paste.
      Das ist immer in den blauen Boxen.

      Grüße Boris

  • Antworten Rolf |

    Hallo,
    gibt es auch eine Methode um eine IP zu einer bestimmten, fremden E-Mail-Adresse in Erfahrung zu bringen. Bzw. war ist der einfachste Weg dazu ?

    Grüße Rolf

    • Antworten Boris Birneder |

      Hallo Rolf,
      bei den meisten Maildomains kann man sich nicht sicher sein, ob der Absender auch der Besitzer der E-Mail-Adresse ist. Von daher würde die IP nicht viel nutzen. Und auch die absendende IP selber ist im Datenpaket manipulierbar. Also: keine/wenig Chancen, den Absender zu finde. Grüße

Was denken Sie?

Pflichtfelder sind mit einem * markiert.