どのサービス(svchost.exe内)が発信接続を行うかを判断する方法はありますか?


12

より制限の厳しいポリシーでファイアウォール構成をやり直していますが、いくつかの発信接続の出所(および/または宛先)を判断したいと思います。

彼らは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

どのサービスが特定の接続を行うかを知ることは可能ですか?または、これらのルールに適用されるルールについて、あなたの推奨事項は何ですか?

(Comodo Firewall&Windows 7)

更新:

netstat -anotasklist /svc少し助けてください。しかし、それらは1つのsvchost.exeの多くのサービスなので、まだ問題です。さらに、「tasklist / svc」によって返されるサービス名は簡単に読めません。

(すべての接続はHTTP(ポート80)ですが、関連があるとは思いません)

回答:


9

このサーバー障害の回答(サービスとメモリ使用量について)で、サービスのネットワーク使用量を個別に分析する方法を見つけました(ネットワークツールを使用)

ピーター・モーテンセン:

各サービスを分割して独自のSVCHOST.EXEプロセスで実行すると、CPUサイクルを消費するサービスがタスクマネージャーまたはプロセスエクスプローラーで簡単に表示されます(「=」の後のスペースが必要です)。

SC Config Servicename Type= own

これをコマンドラインウィンドウで行うか、BATスクリプトに入れます。管理者権限が必要であり、コンピューターを有効にするには再起動が必要です。

元の状態は次の方法で復元できます。

SC Config Servicename Type= share

7

SysInternals Process Explorerがこれを実行できます。

svchost.exe分析しようとしているインスタンスのプロセスプロパティを開きます。[ TCP / IP ]タブをクリックします。発見したい接続をダブルクリックして、接続のスタックトレースを表示します。サービスを実装するDLLまでスタックをトレースできるはずです。以下は、プロセスプロパティのトピックに関するヘルプファイルからの抜粋です

TCP / IP:

プロセスが所有するアクティブなTCPおよびUDPエンドポイントは、このページに表示されます。

Windows XP SP2以降では、このページには、選択したエンドポイントを開いたときに開いたスレッドのスタックを表示するダイアログを開く[スタック]ボタンが含まれています。スタックにはエンドポイントを担当するドライバーまたはサービスの名前が含まれるため、これはシステムプロセスおよびSvchostプロセスでエンドポイントの目的を識別するのに役立ちます。

シンボルの構成についても

シンボルの構成:Windows NT以降では、Process Explorerでプロセスプロパティダイアログとスレッドスタックウィンドウのスレッドタブでスレッド開始アドレスのアドレスを解決し、MicrosoftのWebからDebugging Tools for Windowsパッケージを最初にダウンロードしてシンボルを構成する場合サイトおよびデフォルトディレクトリにインストールします。[シンボルの構成]ダイアログを開き、デバッグツールディレクトリにあるdbghelp.dllへのパスを指定し、シンボルパスのシンボルサーバー文字列を入力して、Microsoftからディスク上のディレクトリにオンデマンドでシンボルエンジンにシンボルをダウンロードさせます。たとえば、シンボルをc:\ symbolsディレクトリにダウンロードするには、次の文字列を入力します。

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

注:スレッドのスタックを表示するには、管理者としてProcess Explorerを実行する必要がある場合があります。


非常に興味深いが、残念ながらPE v11.33はWindows 7でTCP / IPスタックをサポートしていないようです:-/「このバージョンのWindowsではスタックを利用できません」。Webで確認が見つかりませんでしたが、Symbolsを正しく構成したと確信しています
...- fluxtendu

新しいPE 12でも同じ結果:-/
fluxtendu

1
うーん。私は7でも同じことをします。奇妙なことに、XPでも問題なく動作します。
-18:

1
[TCP / IP]タブには[サービス]列があり、たとえばsvchost.exeのインスタンスを見ているときに、(同じPIDの下にグループ化されたサービスの中で)各接続を所有しているサービスを示します。現在、私はPE 12.00を使用しています。現時点では、以前のバージョンに「サービス」列があったかどうかを確認することはできませんが、試してみる価値はあります。
TataBlack

あなたの言うとおりです。私にとって、この機能はXPでのみ機能します。この点でw7で何が変更されたかを調査して、うまくいかないのはいいことです。
-saulius2

2

私はこれが時代遅れかもしれないことを知っていますが、それでもこのページは「svchost connections」の検索で上位にランクされているので、ここで私の入力を投げます。Svchost Process Analyzerと呼ばれるツールがあり、それが役立つ場合があります:http : //www.neuber.com/free/svchost-analyzer/index.html


2

tasklist /svcおよびnetstatまたはnetstat -anコマンドラインから使用してみてください。

これにより、svchost.exeを使用しているプログラムとポートが表示されます。ポート番号を使用すると、一般的にその番号を使用するプロトコルを検索できる場合があります。TCPおよびUDPポート番号のリストを参照してください。


はい。ただし、svchost.exeの単一のインスタンスは多くの場合10〜20個のサービスをホストし、どのサービスに障害があるのか​​を見つけるのは困難です。ただし、その情報を取得する方法があります。
ピーターモーテンセン

2

TCPViewは、サービス、PID、およびTCP接続(ローカルとリモートの両方)を表示するグラフィックツールです。

画像


'netstat -ano&tasklist / svc'のように、このツールは1つのsvchost PIDの異なる接続を区別しますが、それらの背後にあるサービスを表示しません。しかし、それは私が探しているものではありません。(さらに、フィルターとログ機能の欠如...)
fluxtendu

これは問題を解決しないため、ダウン票
クリスデール

@ChrisDale:私は同意しません。この回答は、どのサービスが接続しているかを示しているため、受け入れられた回答を補完します。
ハリーマック

@Harrymc TCPViewは、接続を待機または作成しているsvchost.exeのみを表示します。svchostはサービスではなく、複数のサービスのコンテナーにすぎません。どのサービスが接続を行っているかを知る必要がある場合、多くの人の1人が接続を行っていることを知っているので、あなたはより賢くなります。結構、答えを補完しますが、ほんの少しです。私は同じ問題を抱えていましたが、TCPViewは私のためにそれを釘付けにしませんでした:) Sysinternals Process Explorerはそうしました。
クリスデール

1
@ChrisDale:pidを表示します。他のすべては後に続きます。
ハリーマック

1

タスクマネージャを使用して、プロセスリスト内の各プロセスのPID列を表示します。次に実行netstat -anoして、アクティブな接続と関連するPID(=プロセスID)を表示します。


1

NirSoftユーティリティCurrPortsは、プロセスのサービスのリストのフィルタリングや提供など、必要なすべてを実行します。

実際、それに関する唯一の問題は、潜在的に表示できる膨大な数の情報列の中から選択する方法です。

画像


これは、これまでの最善の解決策だが、私が探している本質的なことしません:「プロセス・サービス」列グループのすべての可能なサービス...
fluxtendu

1

前述のように、与えられたSvchostプロセスののsvchostのPIDを見つけ、および/またはのようなサードパーティのアプリを使用しますCurrportsProcessExplorerあなたが与えられたプロセス(svchost.exeのか、何か他のもの)の下でサービスを識別するのに役立ちます。また、Svchost ViewerまたはSvchost Analyzerは、svchost情報も厳密に表示します。

私も追加したかった:組み込みのWindowsタスクマネージャーの新しいバージョンは、少なくともsvchostの下で実行されているサービスに関する制限された情報を表示します(何もインストールする必要はありません):

まず、Processesでsvchostプロセスを選択します。
指定されたsvchostプロセスを右クリックし、[サービスに移動]を選択
します。直接[サービス]タブに移動し、そのsvchostプロセスで実行されている特定のサービスを強調表示します。

別の方法:
管理者CMDプロンプトを使用する:
tasklist /svc /fi "IMAGENAME eq svchost.exe" > svchost_services.txt
notepad svchost_services.txt
これは、問題の特定のsvchost / serviceのPIDをすばやく取得する方法でもあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.