Svchostプロセスは

  
を明らかにします。

NTカーネルベースのWindowsオペレーティングシステムファミリでは、Svchost.exeは非常に重要なプロセスです。多くのウイルスやトロイの木馬はこのプロセスと密接に関係しているので、そのプロセスを深く理解することが必要です。この記事では、Svchostプロセスの機能とそれに関連する知識に焦点を当てます。

Svchostプロセスの概要

Microsoftの "Svchostプロセス"の定義は、次のとおりです。Svchost.exeは、ダイナミックリンクライブラリ(DLL)から実行されているサービスの汎用ホストプロセス名です。 Svchost.exeファイルは'%SystemRoot%\\ System32'フォルダにあります。システムが起動すると、Svchostはレジストリのservicesセクションをチェックして、ロードする必要があるサービスのリストを作成します。 Svchostの複数のインスタンスを同時に実行できます。各Svchostセッションには、Svchostの起動方法と場所によって異なるサービスを実行するための一連のサービスを含めることができます。これにより、より優れた制御と簡単なデバッグが可能になります。

Svchostグループはレジストリ[HKEY_LOCAL_MACHINE \\ Software \\ Microsoft \\ Windows NT \\ CurrentVersion \\ Svchost]によって識別されます。このレジストリキーの下の各値は別々のSvchostグループを表し、アクティブプロセスを表示すると別々のインスタンスとして表示されます。ここでのキー値はREG_MULTI_SZタイプのすべての値であり、Svchostグループで実行されているサービスの名前が含まれています(図1を参照)。

図1レジストリ内のSvchost

実際、Svchostはサービスのホストにすぎず、機能を実装していません。 Svchostを使用してDLLによって実装されたサービスを起動する必要がある場合は、DLLのベクタローダがSvchostをポイントし、サービスの起動時にSvchostは起動の目的を達成するためにサービスのDLLを呼び出します。 Svchostを使用してサービスDLLファイルを起動する方法は、レジストリ内のパラメータによって決まりますサービスを起動するために必要なレジストリキーの下に、 "ServiceDll"キーがサービスを示す "Parameters"というサブ項目があります。どのDLLファイルが原因となっているのか、このDLLファイルはServiceMain()関数をエクスポートしてサービスタスクの処理をサポートする必要があります。

ヒント:Windowsのバージョンが異なると、Svchostプロセスの数も異なります。一般に、Windows 2000には2つのSvchostプロセスがあり、Windows XPには4つ以上のSvchostプロセスがあります。

Svchostプロセスインスタンス

Svchostで実行されているサービスの一覧を表示するには、Windows XPのコマンドプロンプトウィンドウで' Tasklist /svc'コマンドを入力し、Enterキーを押して実行します。 Windows 2000を使用している場合は、サポートツールが提供するTlistツールを使用して、コマンドを< Tlist -s'>と表示することができます。 Tasklistコマンドはアクティブなプロセスの一覧を表示し、/svcコマンドスイッチは各プロセスでアクティブなサービスの一覧を指定します。図からわかるように、Svchostプロセスは、RpcS(Remote Procedure Call)、Dhcp(DHCPクライアント)、Netman(Network Connections)サービスなどの多くのシステムサービスを開始します(図2)。

図2 Svchostサービスの一覧

ここでは、Svchostプロセスとサービスの関係についてさらに学ぶために、RpcSsサービスを例として取り上げます。 Regeditを実行してレジストリエディタを開き、[HKEY_LOCAL_MACHINE \\ SYSTEM \\

CurrentControlSet \\ Services \\ RpcSs]ブランチを展開して、" Parameters"サブキーに "ServiceDll"という名前のキーを配置します。値は'%SystemRoot%\\ system32 \\ rpcss.dllです。つまり、システムがRpcSsサービスを開始すると、ディレクトリ "%SystemRoot%\\ system32"にあるRpcss.dllダイナミックリンクライブラリファイルを呼び出します。

次に、[コントロールパネル]から[管理ツール]、[サービス]の順にダブルクリックして、サービスコンソールを開きます。右側のウィンドウで、[リモートプロシージャコール(RPC)]サービス項目をダブルクリックして[プロパティ]ダイアログボックスを開くと、RpcSsサービスの実行可能ファイルのパスが "C:\\ Windows \\ system32 \\ svchost -k"と表示されます。 Rpcss - rpcssサービスはSvchostによって開始され、 " - k rpcss"はこのサービスがSvchostのRpcssサービスグル​​ープに含まれることを示します。

図3 Svchostプロセスモジュールの情報

Svchostプロセスのトロイの木馬分析

前回紹介したところから、レジストリで[HKEY_LOCAL_MACHINE] \\ SOFTWARE \\ Microsoft \\ Windows NT \\ Current-Version \\ Svchost]ブランチには、Svchostが開始するサービスとそのグループ内のサービスが格納されています。通常の方法は次のとおりです。

·新しいグループを追加する、サービス名をグループに追加する、

·サービス名を既存のグループに追加する、または既存のグループを使用するアンインストールされたサービス;

·既存のグループ内のサービスを変更して、そのServiceDllに独自のDLLファイルを指定します。

たとえば、PortLess BackDoorはSvchostプロセスを使用して読み込む典型的なバックドアツールです。それでは、どのようにしてPortLess BackDoorのようなトロイの木馬やウイルスを検出し、削除するのですか? Windows XPを例にとると、まず、Svchostプロセス内のモジュール情報を表示するために「Process Spy」などのプロセスツールを使用することができます(図3を参照)。 DLLファイル' SvchostDLL.dll'同時に、「管理ツールとサービス」の一覧に新しいサービス「イントラネットサービス」(表示名)が表示されます。このサービス名は、Svchostによって開始された「Iprip」、「ldk; -k netsvcs'」です。このサービスはNetsvcsサービスグル​​ープに含まれています。

ヒント:Windows 2000では、システムのIpripサービスは、ルーティング情報プロトコルバージョン1(RIPv1)を使用してルーターから送信されたルーティング更新をリッスンしますサービスリストに表示される名前は "RIP Listener"です。 。

Regeditを実行してレジストリエディタを開き、[HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\

Services \\ IPRIP]ブランチを展開して、その[Parameters]サブキーを表示します。ここで、' ServiceDll'値は、バックドアDLLファイルである呼び出し側DLLファイルのパスとフルネームを指します。これを知っているなら、サービスリストを右クリックし、そして「イントラネットサービス」サービスを右クリックして、メニューから「停止」を選び、そして上記のレジストリブランチの中の「Iprip」項目を削除することによってそれをクリアすることができる。コンピュータを再起動し、「ServiceDll」キーの場所に従ってバックドアメインファイルを削除します。最後に、レジストリが変更される前に、エラーが発生したときに復元できるようにバックアップを作成する必要があることを読者に注意する必要があります。

Copyright © Windowsの知識 All Rights Reserved