Что такое процесс svchost.exe?



    Практически, каждый пользователь Windows, неоднократно наблюдал в списке отображаемых диспетчером задач, несколько процессов с именем svchost.exe. Для разных версий Windows и разного количества используемых компонентов, количество таких процессов может составлять от нескольких штук до нескольких десятков. При чем, это вполне нормальное явление, поскольку svchost.exe – это главный процесс ( Host process) для системных служб (сервисов), загружаемых из динамических библиотек (.dll). Для запуска таких служб используется один и тот же исполняемый файл svchost.exe из каталога \Windows\system32\, но ему передаются разные параметры командной строки, для каждой конкретной службы – свои. Например, для запуска службы Удаленный вызов процедур (RPC) используется командная строка:

C:\Windows\system32\svchost.exe -k RPCSS

Использование единого процесса для работы нескольких сервисов позволяет существенно уменьшить затраты оперативной памяти и ресурсов процессора. Все копии svchost.exe запускаются системным процессом services.exe (родительским процессом) в ходе загрузки и инициализации системы. Вызовы svchost.exe для системных служб указаны в ключе реестра

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\имя службы



Запись для службы, запускаемой svchost.exe в реестре Windows.


Параметр ImagePath задает командную строку для данной службы или группы служб. Имя библиотеки, которая используется для данной службы, определяется параметром ServiceDll подраздела Parameters

Запись параметров службы в реестре Windows.


Перечень всех служб, запускаемых с использованием svchost.exe и их объединение в группы определяется содержимым ключа реестра

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost



Перечень служб, запускаемых svchost.exe.


Так, например, в группу DcomLaunch входят 3 службы:

Power - Питание

PlugPlay - Plug-and-Play

DcomLaunch - Модуль запуска процессов DCOM-сервера

Каждый ключ соответствует имени группы, а значение ключа — списку (через пробел) имён сервисов, относящихся к группе.

    Некоторые компьютерные вирусы и трояны маскируются под имя svchost.exe, помещая исполняемый файл в отличный от \Windows\system32\ каталог, например, вирусы Net-Worm.Win32.Welchia.a, Virus.Win32.Hidrag.d, Trojan-Clicker.Win32.Delf.cn. Верным признаком наличия такого вируса является запущенный от имени пользователя процесс с именем svchost.exe. Настоящий процесс svchost.exe всегда выполняется в контексте учетных записей SYSTEM, LOCAL SERVICE или NETWORK SERVICE. Кроме того, svchost.exe запускается только как системная служба, и никогда не запускается из раздела Run реестра или из папки Автозагрузка. Однако, существует возможность создание вредоносной программой службы, использующей для запуска настоящий svchost.exe, но выполняющей вредные действия с использованием собственной библиотеки .dll, например, так это делает вирус Conficker (Kido). Подобный прием встречается значительно реже, чем во времена Windows XP/2000, в связи с тем, что в современных версиях Windows реализовать данный способ заражения системы становится все сложнее и сложнее. Как правило, признаком такого вирусного заражения является использование файла .dll, расположенного не в каталоге \Widows\System32\, отсутствие цифровой подписи разработчика, а также адекватного описания поддельной службы.



Как определить системную службу, связанную с конкретным процессом svchost.exe.



Иногда, требуется определить, какая именно служба соответствует конкретному процессу scvhost.exe, например, когда этот процесс потребляет значительные ресурсы центрального процессора:

Процесс svchost.exe потребляет 50% ресурсов CPU.


В данном примере, процесс svchost.exe потребляет 50% ресурсов процессора. Это ненормально, и внешне может проявляться в виде снижения производительности, подвисаний (лагов), скачкообразного перемещения указателя мыши и т.п. Для решения данной проблемы, в первую очередь необходимо определить, действительно ли данный процесс является системным, и с какой именно службой он связан. Существует несколько способов, применимость которых зависит от версии Windows.

Использование утилиты командной строки tasklist.exe


Для получения списка выполняющихся служб в любой версии Windows можно использовать команду:

tasklist /svc

tasklist /svc > %TEMP%\svclist.txt - то же, что и в предыдущем примере, но с выдачей результатов в текстовый файл. Результат будет представлен в DOS-кодировке, и для просмотра его кириллической составляющей стандартными средствами Windows, потребуется перекодировка, или редактор с поддержкой кодовой страницы CP866 (DOS), как например, Notepad++ или встроенный редактор Far Manager.

notepad++ %TEMP%\svclist.txt - открыть созданный файл со списком сервисов.

Пример отображаемой информации:

Имя образа                     PID Службы                                      
========================= ======== ============================================
System Idle Process              0 Н/Д                                         
System                           4 Н/Д                                         
smss.exe                       492 Н/Д                                         
csrss.exe                      668 Н/Д                                         
wininit.exe                    748 Н/Д                                         
csrss.exe                      764 Н/Д                                         
services.exe                   816 Н/Д                                         
lsass.exe                      832 KeyIso, SamSs                               
lsm.exe                        840 Н/Д                                         
winlogon.exe                   892 Н/Д                                         
svchost.exe                    984 DcomLaunch, PlugPlay, Power                 
svchost.exe                    600 RpcEptMapper, RpcSs                         
cmdagent.exe                   744 CmdAgent                                    
svchost.exe                   1040 CryptSvc, Dnscache, LanmanWorkstation,      
                                   NlaSvc, TermService                         
atiesrxx.exe                  1096 AMD External Events Utility                 
svchost.exe                   1132 AudioSrv, Dhcp, eventlog,                   
                                   HomeGroupProvider, lmhosts, wscsvc          
svchost.exe                   1176 AudioEndpointBuilder, CscService,           
                                   HomeGroupListener, Netman, PcaSvc, TrkWks,  
                                   UmRdpService, UxSms, Wlansvc, wudfsvc       
svchost.exe                   1236 EventSystem, fdPHost, FontCache, netprofm,  
                                   nsi, WdiServiceHost                         
svchost.exe                   1288 AeLookupSvc, BITS, Browser, CertPropSvc,    
                                   EapHost, gpsvc, IKEEXT, iphlpsvc,           
                                   LanmanServer, ProfSvc, Schedule, SENS,      
                                   SessionEnv, ShellHWDetection, Themes,       
                                   Winmgmt                                     
. . .
Отображается имя образа (исполняемого файла), уникальный идентификатор процесса PID и краткое название службы. Так, например, процесс svchost.exe с идентификатором 984 имеет отношение к службам с короткими именами DcomLaunch, PlugPlay, Power. Для получения подробной информации о службе, в том числе и ее выводимое имя можно использовать команду управления службами SC:

sc qc power - отобразить конфигурацию службы Power

Пример отображаемой информации:

Имя_службы: power
        Тип                  : 20  WIN32_SHARE_PROCESS 
        Тип_запуска          : 2   AUTO_START
        Управление_ошибками  : 1   NORMAL
        Имя_двоичного_файла  : C:\Windows\system32\svchost.exe -k DcomLaunch
        Группа_запуска       : Plugplay
        Тег                  : 0
        Выводимое_имя        : Питание
        Зависимости          : 
        Начальное_имя_службы : LocalSystem


При необходимости, сведения о службе можно получить с использованием оснастки “Службы” консоли управления Microsoft (комбинация клавиш Win+R и выполнить services.msc), или через меню Панель управления – Администрирование – Службы

Свойства службы, выполняемой через svchost.exe


Использование Диспетчера задач Windows (taskmgr.exe)


Стандартные диспетчеры задач отличаются по своим возможностям в зависимости от версии Windows. Так, например диспетчер задач Windows XP не имеет собственных возможностей по сопоставлению имени процесса с именем системной службы, а диспетчер задач Windows 10 позволяет это сделать с использованием контекстного меню, вызываемого правой кнопкой мышки:



Список процессов и контекстное меню диспетчера задач Windows 10.


При выборе пункта Перейти к службам откроется окно со списком служб, в котором будут подсвечены службы, связанные с выбранным процессом svchost.exe


Список служб, связанных с процессом svchost.exe  Windows 10.


При необходимости, можно нажать на ссылку Открыть службы в нижней части экрана, и, непосредственно из диспетчера задач, открыть список системных служб (оснастку консоли управления Windows services.msc). Диспетчеры задач Windows Vista – Windows 8.1 менее информативны и обладают меньшей функциональностью, но также позволяют выполнять переход от выбранного процесса к связанным с ним службам.

Использование Process Explorer (procexp.exe) из пакета Sysinternals Suite


Утилита Process Explorer не входит в состав стандартных дистрибутивов Windows и может быть загружена с сайта Microsoft либо в составе пакета Sysinternals Suite, либо как отдельный программный продукт - Страница загрузки Process Explorer

Программа не требует установки, достаточно разархивировать скачанный пакет и запустить исполняемый файл procexp.exe. Возможности Process Explorer настолько обширны, что даже для их перечисления потребуется отдельная немаленькая статья. А для получения сведений о процессе достаточно просто подсветить его указателем мышки:

Список процессов и контекстное меню диспетчера задач.


Более подробную информацию можно получить, открыв свойства процесса двойным щелчком, или через контекстное меню, вызываемое правой кнопкой мышки - Properties. На вкладке Services отображается полный перечень всех служб, связанных с выбранным процессом.

Просмотр свойств процесса в Process Explorer.
Для каждой службы выводится короткое и отображаемое имя, путь и имя используемой библиотеки dll, а также, при выборе конкретной службы, - ее краткое описание в нижней части окна.

Process - в данной колонке отображается дерево активных процессов и их потомков. Потомок (child) - процесс, созданный другим, родительским (parent) процессом. Любой процесс может быть и потомком, если он создан в ходе выполнения другого процесса, и родителем, если в ходе его выполнения создан другой процесс. Отображение элементов дерева процессов выполняется в соответствии с порядком их запуска в ходе загрузки операционной системы и ее дальнейшего функционирования.

Корнем дерева процессов является уровень System Idle Process . Фактически, это не реальный процесс, а индикатор состояния простоя системы, когда центральный процессор не выполняет каких-либо программ. Следующим элементом дерева представлен уровень System. Этот уровень так же, не является реальным процессом и предназначен для отображения активности системы, связанной с обработкой прерываний, работой системных драйверов, диспетчера сеансов Windows (Session Manager) smss.exe, и csrss.exe (Client - Server Runtime). Элемент Interrupts является уровнем для индикации обработки аппаратных прерываний, элемент DPCs - для индикации обработки отложенных вызовов процедур (Deferred Procedure Calls). Механизм обработки аппаратных прерываний в Windows предполагает как бы двухуровневую обработку. При возникновении запроса на прерывание, сначала, получает управление программа-обработчик аппаратного прерывания, выполняющая лишь самые необходимые критические операции, а остальные действия откладываются до тех пор, пока не появится относительно свободное процессорное время. Тогда эти действия будут выполнены в рамках вызова отложенной процедуры. В многопроцессорных системах каждый процессор имеет свою отдельную очередь отложенных вызовов. Порядок обработки очереди запросов на прерывание и очереди отложенных процедур определяется их приоритетами. Для определения приоритетов используется уровень запроса на прерывание IRQL - программно-аппаратный механизм, применяемый для синхронизации выполнения отдельных процессов в операционных системах семейства Windows. Уровни IRQL аппаратных прерываний задаются программированием регистров контроллера прерываний, а уровни IRQL программного кода операционной системы - реализуются программно.

Степень использования ресурсов уровнем System дерева процессов, отображаемого программой Process Explorer, характеризует занятость операционной системы диспетчеризацией и обработкой прерываний. Высокая степень использования процессора для обработки прерываний может указывать на наличие проблем с оборудованием или некорректно работающий драйвер устройства. Обычно, это сопровождается эффектом заметного снижения общей "полезной" производительности системы и внешне проявляется в виде “тормозов” и «подвисаний» на пользовательских задачах.

Остальная часть дерева отображает иерархию реально выполняющихся в Windows процессов. Так, например, приложение служб и контроллеров SERVICES.EXE обеспечивает создание, удаление, запуск и остановку служб (сервисов) операционной системы, что и отображается в списке порождаемых им процессов.

PID - идентификатор процесса PID - уникальное десятичное число, присваиваемое каждому процессу при его создании.

CPU - уровень использования центрального процессора.

Private Bytes - объем оперативной памяти, выделенной данному процессу и не разделяемой с другими процессами.

Working Set - рабочий набор процесса, представляющий собой суммарный объем всех страниц используемой им памяти, в данный момент времени. Размер этого набора может изменяться, в зависимости от запросов процесса. Практически все процессы используют разделяемую память.

Description - описание процесса

Company Name - имя компании-разработчика.

Path - путь и имя исполняемого файла.

Verified Signer - признак достоверности цифровой подписи исполняемого файла. Наличие строки "Not verified" говорит о том, что цифровая подпись отсутствует или ее не удалось проверить. Для проверки цифровой подписи нужен доступ в Интернет.

Иерархический характер дерева процессов способствует визуальному восприятию родительски-дочерних отношений каждого активного процесса. Нижняя панель дает информацию обо всех DLL, загруженных выделенным в верхней панели процессом, открытых им файлах, папках, разделах и ключах реестра.

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

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

Process Explorer - свойства процесса.


Использование Process Explorer позволяет легко определить дополнительные признаки, которые могут принадлежать вредоносной программе, замаскированной под легальный процесс:

- в пути исполняемого файла присутствует папка для хранения временных файлов (TEMP), или в случае с svchost.exe , путь отличается от \Windows\System32

- отсутствует информация о производителе программного обеспечения.

- отсутствует цифровая подпись. Большинство производителей программного обеспечения имеют сертификаты с цифровой подписью для своих программ. Для проверки подписи можно нажать кнопку Verify. Необходим доступ в Интернет.

- отсутствуют поля описания загрузочного образа Version и Time

- имя исполняемого файла соответствует имени реально существующего системного файла Windows, но путь отличается от \WINDOWS, \WINDOWS\SYSTEM32 или \WINDOWS\SysWOW64 (для 64-разрядных систем). Это характерно для вирусов, маскирующихся под наиболее часто встречающиеся программные модули - svchost.exe, smss.exe, csrss.exe, winlogon.exe и т.п.

- путь исполняемого файла совпадает c \WINDOWS или \WINDOWS\SYSTEM32 , но имя немного отличается от распространенных имен системных файлов - swchoct.exe вместо svchost.exe и т.п.

- исполняемый файл находится в \WINDOWS или \WINDOWS\SYSTEM32, но дата его создания значительно отличается от даты создания остальных системных файлов и приблизительно соответствует предполагаемой дате заражения.

Кроме отображения информации, утилита позволяет убить выбранный процесс или дерево процессов. В ОС Windows XP и более ранних, уничтожение некоторых системных процессов, как например winlogon.exe, может приводить к синему экрану смерти (BSoD), а в более поздних версия Windows – к аварийному завершению сеанса пользователя.

В дополнение к данному материалу:

Краткое описание и инструкция по использованию утилиты Process Explorer

Краткое описание и инструкция по использованию утилиты Process Monitor

Список команд командной строки с описанием и примерами.


Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой "Поделиться"











В начало страницы     |     На главную страницу