Existe uma maneira de determinar qual serviço (no svchost.exe) faz uma conexão de saída?

12

Estou refazendo minha configuração de firewall com políticas mais restritivas e gostaria de determinar a proveniência (e / ou destino) de algumas conexões de saída.

Eu tenho um problema porque eles vêm do svchost.exe e vão para provedores de entrega de conteúdo / aplicativos da web - ou similares:

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

Portanto, é possível saber qual serviço faz uma conexão específica? Ou qual é a sua recomendação sobre as regras aplicadas a essas?

(Comodo Firewall e Windows 7)

Atualizar:

netstat -anoe tasklist /svcme ajude um pouco, mas eles são muitos serviços em um svchost.exe, por isso ainda é um problema. além disso, os nomes de serviço retornados por "tasklist / svc" não são de fácil leitura.

(Todas as conexões são HTTP (porta 80), mas não acho relevante)

fluxtendu
fonte

Respostas:

9

Encontrei um método nesta resposta de falha do servidor (sobre serviços e uso de memória) que eu poderia usar para analisar individualmente o uso de serviços de rede (com qualquer ferramenta de rede)

Peter Mortensen:

Divida cada serviço para executar em seu próprio processo SVCHOST.EXE e o serviço que consome os ciclos da CPU será facilmente visível no Gerenciador de Tarefas ou no Process Explorer (o espaço após "=" é necessário):

SC Config Servicename Type= own

Faça isso em uma janela de linha de comando ou em um script BAT. São necessários privilégios administrativos e é necessário reiniciar o computador antes que ele entre em vigor.

O estado original pode ser restaurado por:

SC Config Servicename Type= share
fluxtendu
fonte
7

O SysInternals Process Explorer pode fazer isso por você.

Abra as propriedades do processo da svchost.exeinstância que você está tentando analisar. Clique na guia TCP / IP . Clique duas vezes na conexão que você deseja descobrir para exibir um rastreamento de pilha da conexão. Você poderá rastrear a pilha de volta para a DLL que implementa o serviço. Aqui está um trecho do arquivo de ajuda sobre o tópico Process Properites :

TCP / IP:

Quaisquer terminais ativos de TCP e UDP pertencentes ao processo são mostrados nesta página.

No Windows XP SP2 e superior, esta página inclui um botão Pilha que abre uma caixa de diálogo que mostra a pilha do encadeamento que abriu o terminal selecionado no momento da abertura. Isso é útil para identificar a finalidade dos terminais no processo do sistema e nos processos Svchost, porque a pilha incluirá o nome do driver ou serviço responsável pelo terminal

Também em Configurando símbolos

Configurar símbolos: no Windows NT e superior, se você quiser que o Process Explorer resolva endereços para endereços de início de thread na guia threads da caixa de diálogo de propriedades do processo e na janela da pilha de threads, configure os símbolos baixando primeiro o pacote Debugging Tools for Windows da Web da Microsoft site e instalá-lo em seu diretório padrão. Abra a caixa de diálogo Configurar símbolos e especifique o caminho para o dbghelp.dll que está no diretório Debugging Tools e faça com que o mecanismo de símbolos faça o download de símbolos sob demanda da Microsoft para um diretório em seu disco, inserindo uma cadeia de servidores de símbolos para o caminho do símbolo. Por exemplo, para fazer o download de símbolos para o diretório c: \ symbols, insira esta sequência:

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

Nota: Pode ser necessário executar o Process Explorer como administrador para poder ver a pilha do encadeamento.

pesado
fonte
Muito interessante, mas infelizmente o PE v11.33 parece não suportar pilhas TCP / IP no Windows 7: - / "Pilhas não disponíveis nesta versão do Windows". Eu não ter encontrado a confirmação na web, mas eu tenho certeza que eu tenha configurado símbolos corretamente ...
fluxtendu
Mesmo resultado com o novo PE 12: - /
fluxtendu 26/03/10
1
Hmm .. eu recebo o mesmo no 7. Estranho, funciona bem no XP.
heavyd
1
A guia TCP / IP deve ter uma coluna "Serviço" que, por exemplo, enquanto observa uma instância do svchost.exe, informa qual serviço possui cada conexão (entre os serviços agrupados no mesmo PID). No momento, estou usando o PE 12.00 e, neste momento, não posso verificar se a coluna "Serviço" estava na versão anterior, mas vale a pena tentar.
TataBlack
Tudo que você está certo. Para mim, esse recurso funciona apenas no XP. Seria bom investigar o que mudou no w7 a esse respeito, para que não funcione.
saulius2
2

Eu sei que isso pode estar desatualizado, mas ainda assim, esta página está em alta na pesquisa por "conexões svchost", então eu lançarei minha opinião aqui. Existe uma ferramenta chamada Svchost Process Analyzer, que pode ajudar: http://www.neuber.com/free/svchost-analyzer/index.html

AKsik
fonte
2

Tente usar tasklist /svce netstatou netstat -anna linha de comando.

Isso mostrará os programas que estão usando svchost.exe e as portas. Usando os números de porta, você poderá procurar o protocolo que normalmente usa o número. Consulte Lista de números de porta TCP e UDP .

bugtussle
fonte
Sim, mas uma única instância do svchost.exe geralmente hospeda de 10 a 20 serviços e é difícil descobrir qual serviço está com defeito. Existe uma maneira de obter essa informação , no entanto.
Peter Mortensen
2

O TCPView é uma ferramenta gráfica que mostra o serviço, o PID e a conexão TCP (local e remota):

Imagem

harrymc
fonte
Como 'netstat -ano & tasklist / svc', esta ferramenta distingue conexões diferentes em um PID svchost, mas não mostra qual serviço está por trás deles ... Já é melhor porque vincula PID e conexões (e reconhece algumas portas conhecidas) mas ainda não é o que estou procurando. (Além disso, carece de filtros e registros recursos ...)
fluxtendu
Downvote pois isso não resolve o problema
Chris Dale
@ ChrisDale: Eu não concordo. Esta resposta mostra qual serviço está se conectando e, portanto, complementa a resposta aceita.
21815 harrymc
@Harrymc TCPView mostra apenas svchost.exe ouvindo ou fazendo as conexões. svchost não é o serviço, apenas um contêiner para vários serviços. Se você precisar saber qual serviço está fazendo as conexões, você é apenas mais esperto, pois sabe que um dentre muitos está fazendo a conexão. É justo, complementa a resposta, mas apenas um pouco. Eu tinha o mesmo problema e o TCPView não o identificou para mim :) O Sysinternals Process Explorer o fez.
Chris Dale
1
@ ChrisDale: Ele mostra o pid, de tudo o que segue.
harrymc
1

Use o gerenciador de tarefas para visualizar as colunas do PID de cada processo na lista de processos. Em seguida, execute netstat -anopara visualizar as conexões ativas e o PID associado (= identificação do processo).

hurikhan77
fonte
1

O utilitário NirSoft CurrPorts faz tudo o que você deseja, incluindo filtrar e fornecer a lista de serviços de um processo.

De fato, o único problema é como escolher entre o enorme número de colunas de informações que ele pode exibir potencialmente.

imagem

harrymc
fonte
É a melhor solução até agora, mas não faz a coisa essencial que eu estou procurando: Os "Process Services" grupos de colunas todos os possíveis serviços ...
fluxtendu
1

Como mencionado, encontrar o PID svchost de determinado processo svchost e / ou usar 3o partido apps como: Currports,ProcessExplorer irá ajudá-lo a identificar os serviços no âmbito do processo dada (svchost.exe ou qualquer outra coisa). Além disso, o Svchost Viewer ou o Svchost Analyzer também mostrarão estritamente as informações do svchost.

Eu também queria acrescentar: As versões mais recentes do Gerenciador de Tarefas do Windows, pelo menos, mostrarão algumas informações limitadas sobre os serviços em execução no svchost (não é necessário instalar nada):

Primeiro, escolha o processo svchost em Processos.
Clique com o botão direito do mouse no processo svchost e selecione "Ir para o (s) Serviço (s)".
Ele irá diretamente para a guia serviços e destacará os serviços prestados em execução no processo svchost.

Outro método:
Usando o prompt do administrador CMD:
tasklist /svc /fi "IMAGENAME eq svchost.exe" > svchost_services.txt
notepad svchost_services.txt
Esta também é uma maneira rápida de obter o PID do svchost / service em questão.

bshea
fonte