Quantumsoft Blog

Aktualności i praktyczne porady IT

Krótkie, konkretne wpisy o bezpieczeństwie, Microsoft 365, Windows Server, Azure, technologiach sieciowych i serwerowych oraz innych problemach, z którymi na co dzień mierzą się działy IT.

Audyt i doradztwo IT

Instalujesz nową aplikację webową, uruchamiasz konsolę zarządzającą (np. antywirusa) albo konfigurujesz certyfikat SSL. Nagle pojawia się błąd: port 443 jest już w użyciu. Jako doświadczony administrator odpalasz konsolę i wpisujesz znane i lubiane polecenie, aby namierzyć winowajcę:

Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess

Zamiast oczekiwanej nazwy aplikacji, system wypluwa jedną, irytującą odpowiedź: System (PID 4).

Ślepy zaułek? Nie do końca. Dziś pokażę Ci, dlaczego Windows ukrywa przed Tobą tę informację i jak za pomocą jednego polecenia wyciągnąć ją na światło dzienne.

Dlaczego netstat i PowerShell kłamią?

Z technicznego punktu widzenia system wcale nie kłamie. Kiedy widzisz, że port 80 lub 443 jest zajęty przez proces o ID 4 (System), oznacza to, że nasłuchuje na nim http.sys.

http.sys to sterownik trybu jądra w systemie Windows (Kernel-mode HTTP API). Wiele nowoczesnych aplikacji (takich jak serwer IIS, konsole antywirusów np. G-Data, czy usługi Exchange) nie nasłuchuje na portach bezpośrednio. Zamiast tego, rejestrują one swoje adresy URL właśnie w sterowniku http.sys. Ponieważ jest to sterownik jądra, narzędzia takie jak netstat czy standardowe polecenia PowerShell przypisują ten ruch do głównego procesu systemowego.

Jak znaleźć prawdziwą aplikację? Użyj netsh!

Aby zajrzeć "pod maskę" sterownika http.sys i zobaczyć, kto dokładnie zlecił mu nasłuchiwanie, musimy sięgnąć po narzędzie netsh.

Otwórz wiersz poleceń (cmd) lub PowerShell z uprawnieniami administratora i wpisz to jedno "magiczne" polecenie:

netsh http show servicestate

To polecenie wygeneruje sporo tekstu, ale interesują nas dwie konkretne rzeczy w sekcji Request queues (Kolejki żądań):

  1. Registered URLs (Zarejestrowane adresy URL) – tutaj zobaczysz, czy adres pasuje do usługi, której szukasz (np. https://+:443/Console/).

  2. Process IDs assigned to queue (Identyfikatory procesów przypisane do kolejki) – to jest nasz Święty Graal. Zobaczysz tu rzeczywisty PID aplikacji!

Krok końcowy: Łączymy kropki

Gdy netsh wypluje konkretny numer PID (np. 5432), wystarczy wrócić do PowerShell-a lub otworzyć Menedżer Zadań, aby sprawdzić, co to za aplikacja:

Get-Process -Id 5432

Wynik? W ułamku sekundy dowiadujesz się, że port 443 blokuje usługa GDataManagementConsole.exe (lub jakakolwiek inna, która zrobiła Ci niespodziankę). Możesz teraz zmienić jej konfigurację, zatrzymać usługę i kontynuować swoją pracę.

Znajomość netsh http show servicestate to as w rękawie, który oszczędzi Ci godzin frustracji. Zapisz to polecenie w swoim notatniku – gwarantuję, że jeszcze nie raz Ci się przyda!

Case study Active Directory i infrastruktura Microsoft

Wiedza z artykułu Cię zainteresowała a nie wiesz gdzie zacząć?

Chętnie rozwiniemy któreś z zagadnień.

Ocenimy szanse na wdrożenie i pomożemy je zrealizować jeżeli to będzie najlepszym rozwiązaniem dla Ciebie, lub wskażemy inny sposób realizacji.

Porozmawiajmy o podobnym projekcie