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

12

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

У меня есть проблема, потому что они приходят из 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), но я не думаю, что это актуально)

fluxtendu
источник

Ответы:

9

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

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

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

SC Config Servicename Type= own

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

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

SC Config Servicename Type= share
fluxtendu
источник
7

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 от имени администратора, чтобы увидеть стек потока.

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

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

AKsik
источник
2

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

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

bugtussle
источник
Да, но один экземпляр svchost.exe часто содержит 10-20 сервисов, и трудно определить, какая из сервисов виновата. Однако есть способ получить эту информацию .
Питер Мортенсен
2

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

Образ

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

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

hurikhan77
источник
1

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

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

образ

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

Как уже упоминалось, найти 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, о котором идет речь.

bshea
источник