Czy istnieje sposób na określenie, która usługa (w svchost.exe) wykonuje połączenie wychodzące?

12

Powtarzam konfigurację zapory sieciowej z bardziej restrykcyjnymi zasadami i chciałbym określić pochodzenie (i / lub miejsce docelowe) niektórych połączeń wychodzących.

Mam problem, ponieważ pochodzą z svchost.exe i przechodzą do dostawców treści internetowych / dostarczania aplikacji - lub podobnych:

5 IP in range: 82.96.58.0 - 82.96.58.255      --> Akamai Technologies         akamaitechnologies.com
3 IP in range: 93.150.110.0 - 93.158.111.255  --> Akamai Technologies         akamaitechnologies.com
2 IP in range: 87.248.194.0 - 87.248.223.255  --> LLNW Europe 2               llnw.net
205.234.175.175                               --> CacheNetworks, Inc.         cachefly.net
188.121.36.239                                --> Go Daddy Netherlands B.V.   secureserver.net

Czy więc można dowiedzieć się, która usługa wykonuje określone połączenie? Lub jaka jest twoja rekomendacja odnośnie zasad stosowanych do tych?

(Comodo Firewall i Windows 7)

Aktualizacja:

netstat -ano & amp; tasklist /svc pomóż mi trochę, ale jest wiele usług w jednym svchost.exe, więc to nadal problem. ponadto nazwy usług zwracane przez „tasklist / svc” nie są łatwe do odczytania.

(Wszystkie połączenia są HTTP (port 80), ale nie sądzę, aby były istotne)

fluxtendu
źródło

Odpowiedzi:

9

Znalazłem w tym metodę Odpowiedź na błąd serwera (o usługach i wykorzystaniu pamięci), które mogę wykorzystać do indywidualnej analizy korzystania z usług przez sieć (za pomocą dowolnego narzędzia sieciowego)

Peter Mortensen:

Podziel każdą usługę na własną   Proces SVCHOST.EXE i usługa   zużycie cykli procesora będzie   łatwo widoczne w Menedżerze zadań lub   Process Explorer (spacja po „=”   jest wymagane):

SC Config Servicename Type= own

Zrób to w oknie wiersza poleceń lub   umieść go w skrypcie BAT.   Wymagane są uprawnienia administracyjne   a ponowne uruchomienie komputera to   wymagane, zanim zacznie obowiązywać.

Pierwotny stan można przywrócić:

SC Config Servicename Type= share
fluxtendu
źródło
7

SysInternals Process Explorer może to zrobić dla ciebie.

Otwórz właściwości procesu svchost.exe instancja, którą próbujesz przeanalizować. Kliknij na TCP / IP patka. Kliknij dwukrotnie połączenie, które chcesz odkryć, aby wyświetlić ślad połączenia. Powinieneś być w stanie śledzić stos z powrotem do biblioteki DLL, która implementuje usługę. Oto fragment pliku pomocy na temat Właściwości procesu :

TCP / IP:

Wszelkie aktywne punkty końcowe TCP i UDP   przez proces są pokazane na tej stronie.

W systemie Windows XP SP2 i nowszych ta strona   zawiera przycisk Stack, który otwiera a   okno dialogowe, które pokazuje stos   wątek, który otworzył wybrany   punkt końcowy w czasie otwarcia. To   jest przydatny do identyfikacji celu   punktów końcowych w procesie System i   Procesy Svchost ponieważ stos   będzie zawierać nazwę kierowcy lub   usługa, która jest odpowiedzialna za   punkt końcowy

Również na Konfigurowanie symboli

Konfiguruj symbole: w systemie Windows NT i   wyżej, jeśli chcesz Process Explorer   do rozwiązywania adresów dla rozpoczęcia wątku   adresy na karcie wątków   okno dialogowe właściwości procesu i   okno stosu wątków, a następnie skonfiguruj   symbole, najpierw pobierając   Narzędzia do debugowania dla pakietu Windows   ze strony internetowej Microsoft i   instalowanie go w domyślnym ustawieniu   informator. Otwórz Konfiguruj symbole   okno dialogowe i określ ścieżkę do   dbghelp.dll, który jest w debugowaniu   Katalog Tools i symbol   symbole pobierania silnika na żądanie   Microsoft do katalogu na dysku   wpisując łańcuch serwera symboli dla   ścieżka symbolu. Na przykład mieć   symbole do pobrania na symbole c:   katalog, w który wpisujesz ten ciąg:

srv c: symbole http://msdl.microsoft.com/download/symbols

Uwaga: Być może będziesz musiał uruchomić Process Explorer jako administrator, aby móc zobaczyć stos wątku.

heavyd
źródło
Bardzo interesujące, ale niestety PE v11.33 wydaje się nie obsługiwać stosów TCP / IP w systemie Windows 7: - / „Stosy niedostępne w tej wersji systemu Windows”. Nie znalazłem potwierdzenia w sieci, ale jestem pewien, że poprawnie skonfigurowałem symbole ...
fluxtendu
Ten sam wynik z nowym PE 12: - /
fluxtendu
1
Hmm .. Dostaję to samo na 7. Dziwne to działa dobrze na XP.
heavyd
1
Karta TCP / IP powinna mieć kolumnę „Usługa”, która na przykład podczas przeglądania instancji svchost.exe informuje, która usługa jest właścicielem każdego połączenia (wśród usług zgrupowanych w tym samym PID). W tej chwili używam PE 12.00 iw tej chwili nie mogę sprawdzić, czy kolumna „Usługa” była tam w poprzedniej wersji, ale warto spróbować.
TataBlack
Wszystko masz rację. Dla mnie ta funkcja działa tylko w XP. Byłoby miło zbadać, co się zmieniło w w7 pod tym względem, więc to nie działa.
saulius2
2

Spróbuj użyć tasklist /svc i netstat lub netstat -an z linii poleceń.

Spowoduje to wyświetlenie programów używających svchost.exe i używanych portów. Używając numerów portów, możesz być w stanie wyszukać protokół, który zwykle używa numeru. Widzieć Lista numerów portów TCP i UDP .

bugtussle
źródło
Tak, ale pojedyncza instancja svchost.exe często obsługuje 10-20 usług i trudno jest ustalić, która usługa jest winna. Jest sposób na uzyskanie tych informacji , chociaż.
Peter Mortensen
2

TCPView to narzędzie graficzne, które pokaże Ci usługę, PID i połączenie TCP (zarówno lokalne, jak i zdalne):

Image

harrymc
źródło
Like 'netstat -ano & amp; tasklist / svc 'to narzędzie wyróżnia różne połączenia w jednym svchost PID, ale nie pokazuje, która usługa jest za nimi ... Jest już lepsza, ponieważ łączy PID i połączenia (i rozpoznawanie niektórych dobrze znanych portów), ale nadal nie jest to, czego szukam. (Ponadto brakuje mu filtrów i funkcji dzienników ...)
fluxtendu
Downvote, ponieważ nie rozwiązuje to problemu
Chris Dale
@ ChrisDale: Nie zgadzam się. Ta odpowiedź pokazuje, która usługa się łączy, a więc uzupełnia zaakceptowaną odpowiedź.
harrymc
@Harrymc TCPView pokazuje tylko svchost.exe słuchając lub nawiązując połączenia. svchost nie jest usługą, a jedynie kontenerem dla wielu usług. Jeśli chcesz wiedzieć, która usługa nawiązuje połączenia, jesteś tylko mądrzejszy, ponieważ wiesz, że jeden z wielu nawiązuje połączenie. W porządku, to uzupełnia odpowiedź, ale tylko odrobinę. Miałem ten sam problem, a TCPView nie przykuł tego do mnie :) Sysinternals Process Explorer jednak to zrobił.
Chris Dale
1
@ChrisDale: Pokazuje pid, z pozostałych wynika.
harrymc
1

Użyj menedżera zadań, aby wyświetlić kolumny PID dla każdego procesu na liście procesów. Następnie uruchomić netstat -ano aby wyświetlić aktywne połączenia i skojarzony PID (= identyfikator procesu).

hurikhan77
źródło
1

Narzędzie NirSoft CurrPorts robi wszystko, co chcesz, w tym filtrowanie i podawanie listy usług procesu.

W rzeczywistości jedynym problemem jest to, jak wybrać spośród ogromnej liczby kolumn informacji, które może wyświetlić.

image

harrymc
źródło
To najlepsze rozwiązanie do tej pory, ale nie robi istotnej rzeczy, której szukam: kolumna „Usługi procesowe” grupuje wszystkie możliwe usługi ...
fluxtendu
1

Jak wspomniano, znajdź svchost PID danego procesu svchost i / lub użyj aplikacji innych firm, takich jak: Currports, ProcessExplorer pomoże zidentyfikować usługi w ramach danego procesu (svchost.exe lub cokolwiek innego). Również, Przeglądarka Svchost lub Analizator Svchost pokaże ci również informacje o svchost.

Chciałem też dodać: Nowsze wersje wbudowanego Menedżera zadań Windows przynajmniej pokażą ci ograniczone informacje o usługach uruchomionych w svchost (nie ma potrzeby instalowania niczego):

Najpierw wybierz proces svchost w obszarze Procesy.
Kliknij prawym przyciskiem myszy   proces svchost i wybierz „Przejdź do usługi”
Przejdzie bezpośrednio do   kartę usług i podświetl podane usługi uruchomione w ramach tego svchost   proces.

Inna metoda:
Korzystanie z monitu administratora CMD:
tasklist /svc /fi "IMAGENAME eq svchost.exe" > svchost_services.txt
notepad svchost_services.txt
Jest to również szybki sposób na uzyskanie PID danego svchost / danej usługi.

bshea
źródło