Есть ли способ определить, какая служба (в svchost.exe) выполняет исходящее соединение?

20238
fluxtendu

Я изменяю конфигурацию своего брандмауэра с помощью более строгих политик и хотел бы определить происхождение (и / или назначение) некоторых исходящих соединений.

У меня есть проблема, потому что они приходят из svchost.exe и переходят к поставщикам веб-контента / доставки приложений - или аналогичным:

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 

Так можно ли узнать, какой сервис выполняет конкретное соединение? Или каковы ваши рекомендации относительно правил, применяемых к этим правилам?

(Comodo Firewall & Windows 7)

Обновить:

netstat -anoИ tasklist /svcпомогите мне немного, но в одном файле svchost.exe много служб, так что это все еще проблема. Более того, имена служб, возвращаемые "tasklist / svc", не легко читаются.

(Все соединения HTTP (порт 80), но я не думаю, что это актуально)

12

8 ответов на вопрос

9
fluxtendu

В этом ответе «Ошибка сервера» я нашел метод (об услугах и использовании памяти), который я мог бы использовать для индивидуального анализа использования услуг в сети (с помощью любого сетевого инструмента).

Питер Мортенсен:

Разделите каждую службу для запуска в своем собственном процессе SVCHOST.EXE, и служба, потребляющая циклы ЦП, будет легко видна в диспетчере задач или в проводнике процессов (требуется пробел после "="):

SC Config Servicename Type= own 

Сделайте это в окне командной строки или поместите в скрипт BAT. Требуются права администратора и перезагрузка компьютера, прежде чем он вступит в силу.

Исходное состояние может быть восстановлено:

SC Config Servicename Type= share 
7
heavyd

SysInternals Process Explorer может сделать это за вас.

Откройте свойства процесса svchost.exeэкземпляра, который вы пытаетесь проанализировать. Нажмите на вкладку TCP / IP . Дважды щелкните соединение, которое вы хотите обнаружить, чтобы вызвать трассировку стека соединения. Вы должны быть в состоянии проследить стек до библиотеки DLL, которая реализует службу. Вот выдержка из файла справки по теме « Свойства процесса» :

TCP / IP:

Любые активные конечные точки TCP и UDP, принадлежащие процессу, показаны на этой странице.

В Windows XP с пакетом обновления 2 (SP2) и выше эта страница содержит кнопку «Стек», которая открывает диалоговое окно, в котором отображается стек потока, который открыл выбранную конечную точку во время открытия. Это полезно для определения назначения конечных точек в системном процессе и процессах Svchost, поскольку в стеке будет указано имя драйвера или службы, которая отвечает за конечную точку

Также о настройке символов

Настройте символы: в Windows NT и более поздних версиях, если вы хотите, чтобы Process Explorer разрешал адреса для начальных адресов потоков на вкладке потоков в диалоговом окне свойств процесса и в окне стека потоков, а затем настраивал символы, сначала загрузив пакет средств отладки для Windows из веб-сайта Microsoft. сайт и установить его в каталог по умолчанию. Откройте диалоговое окно «Настроить символы» и укажите путь к файлу dbghelp.dll, который находится в каталоге «Инструменты отладки», и заставьте механизм символов загружать символы по требованию из Microsoft в каталог на диске, введя строку сервера символов для пути символа. Например, чтобы загрузить символы в каталог c: \ symbols, вы должны ввести следующую строку:

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

Примечание. Для просмотра стека потока может потребоваться запустить Process Explorer от имени администратора.

Очень интересно, но, к сожалению, PE v11.33, похоже, не поддерживает стеки TCP / IP в Windows 7: - / "Стеки недоступны в этой версии Windows". Я не нашел подтверждения в Интернете, но уверен, что правильно настроил символы ... fluxtendu 14 лет назад 0
Тот же результат с новым PE 12: - / fluxtendu 14 лет назад 0
Хм .. У меня такое же на 7. Странно, на ХР работает нормально. heavyd 14 лет назад 1
На вкладке TCP / IP должен быть столбец «Служба», в котором, например, при просмотре экземпляра svchost.exe указывается, какой службе принадлежит каждое соединение (среди служб, сгруппированных по одному и тому же PID). Прямо сейчас я использую PE 12.00, и в данный момент я не могу проверить, был ли столбец «Сервис» в предыдущей версии, но стоит попробовать. TataBlack 14 лет назад 1
Все, что ты прав. Для меня эта функция работает только в XP. Было бы неплохо выяснить, что изменилось в w7 в этом отношении, чтобы он не работал. saulius2 9 лет назад 0
2
bugtussle

Попробуйте использовать tasklist /svcи netstatили netstat -anиз командной строки.

Это покажет вам программы, которые используют svchost.exe и порты. Используя номера портов, вы сможете найти протокол, который обычно использует этот номер. См. Список номеров портов TCP и UDP .

Да, но один экземпляр svchost.exe часто содержит 10-20 сервисов, и трудно определить, какая из сервисов виновата. Однако есть [способ получить эту информацию] (https://serverfault.com/questions/12278/how-to-find-memory-usage-of-individual-windows-services/21452#21452). Peter Mortensen 6 лет назад 0
2
harrymc

TCPView - это графический инструмент, который покажет вам сервис, PID и TCP-соединение (локальное и удаленное):

Image

Как и 'netstat -ano & tasklist / svc', этот инструмент различает разные соединения в одном PID svchost, но не показывает, какая служба стоит за ними ... Это уже лучше, потому что он связывает PID и соединения (и распознает некоторые хорошо известные порты) но это все еще не то, что я ищу. (Более того, в нем отсутствуют фильтры и функции журналов ...) fluxtendu 14 лет назад 0
Downvote как это не решает проблему Chris Dale 9 лет назад 0
@ChrisDale: я не согласен. Этот ответ показывает, какая служба подключается, и поэтому дополняет принятый ответ. harrymc 9 лет назад 0
@Harrymc TCPView показывает только svchost.exe прослушивания или подключения. svchost - это не служба, а контейнер для нескольких служб. Если вам нужно знать, какой сервис устанавливает соединения, вы только умнее, если знаете, что один из многих устанавливает соединение. Справедливо, это дополняет ответ, но немного. У меня была та же самая проблема, и TCPView не сделал это для меня :) Хотя Sysinternals Process Explorer сделал это. Chris Dale 9 лет назад 0
@ChrisDale: он показывает pid, из всего остального следует. harrymc 9 лет назад 1
Какой смысл изображения? Это слишком мало, чтобы быть полезным. bshea 8 лет назад 0
@bshea: Исходное изображение можно найти по ссылке. harrymc 8 лет назад 0
2
AKsik

Я знаю, что это может быть устаревшим, но все же эта страница занимает высокое место в поиске "svchost соединений", поэтому я оставлю здесь свой вклад. Существует инструмент под названием Svchost Process Analyzer, он может помочь: http://www.neuber.com/free/svchost-analyzer/index.html

1
hurikhan77

Используйте диспетчер задач для просмотра столбцов PID для каждого процесса в списке процессов. Затем запустите netstat -anoдля просмотра активных соединений и связанных с ними PID (= идентификатор процесса).

1
harrymc

Утилита NirSoft CurrPorts делает все, что вы хотите, включая фильтрацию и предоставление списка служб процесса.

Фактически, единственная проблема заключается в том, как выбрать среди огромного количества информационных столбцов, которые он потенциально может отображать.

image

Пока это лучшее решение, но оно не выполняет того, что мне нужно: столбец «Службы процессов» группирует все возможные службы ... fluxtendu 14 лет назад 0
1
bshea

Как уже упоминалось, найти SVCHOST PID из данного процесса SVCHOST и / или использовать 3 приложения сторонних как: Currports, ProcessExplorerпоможет определить услуги в рамках данного процесса (svchost.exe или что - нибудь еще). Кроме того, Svchost Viewer или Svchost Analyzer строго покажет вам информацию svchost.

Я также хотел добавить: новые версии встроенного диспетчера задач Windows, по крайней мере, покажут, покажут вам некоторую ограниченную информацию о сервисах, запущенных под svchost (не нужно ничего устанавливать):

Сначала выберите процесс svchost в разделе Процессы.
Щелкните правой кнопкой мыши по данному процессу svchost и выберите «Перейти к службам».
Он перейдет непосредственно на вкладку служб и выделит определенные службы, работающие в этом процессе svchost.

Другой метод:
Использование приглашения CMD администратора:
tasklist /svc /fi "IMAGENAME eq svchost.exe" > svchost_services.txt
notepad svchost_services.txt
это также быстрый способ получить PID данного svchost / service, о котором идет речь.

Похожие вопросы