有没有办法确定哪个服务(在 svchost.exe 中)进行传出连接?

flu*_*ndu 14 windows firewall services connection svchost

我正在用更严格的策略重做我的防火墙配置,我想确定一些传出连接的来源(和/或目的地)。

我有一个问题,因为它们来自 svchost.exe 并转到 Web 内容/应用程序交付提供商 - 或类似的:

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
Run Code Online (Sandbox Code Playgroud)

那么是否有可能知道哪个服务进行了特定连接?或者您对适用于这些规则的规则有何建议?

(科摩多防火墙和 Windows 7)

更新:

netstat -ano&tasklist /svc帮助我一点,但它们在一个 svchost.exe 中有很多服务,所以它仍然是一个问题。此外,“tasklist /svc”返回的服务名称不易阅读。

(所有连接都是 HTTP(端口 80),但我认为这无关紧要)

flu*_*ndu 9

我在这个服务器故障答案(关于服务和内存使用)中找到了一种方法,我可以用它来单独分析服务的网络使用情况(使用任何网络工具)

彼得·莫腾森:

拆分每个服务以在其自己的 SVCHOST.EXE 进程中运行,并且在任务管理器或进程资源管理器中可以轻松看到消耗 CPU 周期的服务(“=”后面的空格是必需的):

SC Config Servicename Type= own
Run Code Online (Sandbox Code Playgroud)

在命令行窗口中执行此操作或将其放入 BAT 脚本中。需要管理权限,并且需要重新启动计算机才能生效。

可以通过以下方式恢复原始状态:

SC Config Servicename Type= share
Run Code Online (Sandbox Code Playgroud)


hea*_*vyd 9

SysInternals Process Explorer可以为您做到这一点。

打开svchost.exe您尝试分析的实例的流程属性。单击TCP/IP选项卡。双击您要发现的连接以显示连接的堆栈跟踪。您应该能够将堆栈追溯到实现服务的 DLL。以下是有关Process Properites主题的帮助文件的摘录:

TCP/IP:

进程拥有的任何活动 TCP 和 UDP 端点都显示在此页面上。

在 Windows XP SP2 及更高版本上,此页面包含一个堆栈按钮,可打开一个对话框,显示在打开时打开所选端点的线程的堆栈。这对于识别 System 进程和 Svchost 进程中端点的用途很有用,因为堆栈将包括负责端点的驱动程序或服务的名称

还有关于配置符号

配置符号:在 Windows NT 及更高版本上,如果您希望进程资源管理器在进程属性对话框和线程堆栈窗口的线程选项卡中解析线程起始地址的地址,则通过首先从 Microsoft 网站下载 Windows 调试工具包来配置符号站点并将其安装在其默认目录中。打开“配置符号”对话框并指定调试工具目录中 dbghelp.dll 的路径,并通过为符号路径输入符号服务器字符串,让符号引擎根据需要从 Microsoft 下载符号到磁盘上的目录。例如,要将符号下载到 c:\symbols 目录,您可以输入以下字符串:

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

注意:您可能需要以管理员身份运行 Process Explorer 才能看到线程的堆栈。