Как стать автором
Обновить

Галопом по Европам: Легитимные процессы Windows на пальцах

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 20K

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

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

System

Путь: Процесс не создается за счет исполняемого файла
Родительский процесс: Нет
Количество экземпляров: Один
Время запуска: Запуск системы

Здесь многословить не стоит: этот процесс отвечает за выполнение ядра операционной системы, других процессов и драйверов устройств, поэтому в основном под ним запускаются файлы .sys и некоторые важные для системы библиотеки. В обязанности System входит контроль за управлением оперативной и виртуальной памятью, объектами файловой системы.

smss.exe

Путь: %SystemRoot%\System32\smss.exe
Родительский процесс: System
Количество экземпляров: Один и дочерний, который запускается после создания сеанса
Время запуска: Через несколько секунд после запуска первого экземпляра

Session Manager Subsystem - диспетчер, отвечающий за создание новых сеансов, запуск процессов csrss.exe и winlogon.exe, отвечающих за графический интерфейс и вход в систему, а также за инициализацию переменных окружения. Первый экземпляр создает сеанс нуля и дочерний экземпляр, и как только дочерний экземпляр инициализирует новый сеанс, запуская csrss.exe и wininit.exe для сеанса 0 или winlogon.exe для сеанса 1, дочерний экземпляр завершается.

Если обнаружены проблемы с файловой системой, первостепенной функцией smss.exe является запуск системной утилиты для проверки диска - autochk.
После выполнения этих задач smss.exe переходит в пассивный режим.

Немного о сеансе 0 и сеансе 1

Сеанс 0 и сеанс 1 - это разные типы сеансов Windows, которые используются для запуска процессов.
Сеанс 0 создается при запуске системы, и в нем в фоновом режиме работают службы и процессы Windows.
Сеанс 1 создается для пользовательских процессов.

Chkdsk и autochk - что это вообще, и зачем? А разница в чем?

На самом деле, autochk - это версия chkdsk, которая запускается автоматически smss.exe при обнаруженных проблемах с диском. А разница их в том, что chkdsk можно запустить в среде Windows напрямую из командной строки, а autochk - нет.
Да и autochk работает только с NTFS, что не скажешь про chkdsk - он, в дополнение к NTFS, поддерживает FAT и exFAT.

Кстати!
По сути, chkdsk тоже может запускаться smss.exe, но это зависит от того, что указано в ключе реестра HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Control\SessionManager (здесь хранится информация, предназначенная для Диспетчеpa сеансов ) в параметре BootExecute). При запуске chkdsk Диспетчер сеансов использует параметр /r , что позволяет утилите производить поиск повреждённых секторов (наряду с ошибками файловой системы).

csrss.exe

Путь: %SystemRoot%\System32\csrss.exe
Родительский процесс: smss.exe, который, запустив csrss.exe, завершает работу
Количество экземпляров: Два или больше
Время запуска: Через несколько секунд после запуска первых двух экземпляров - для сеанса 0 и сеанса 1

Client/Server Run-Time Subsystem - подсистема выполнения "клиент/сервер" обеспечивает пользовательский режим подсистемы Windows. Csrss.exe отвечает за импорт многих DLL-библиотек, которые предоставляют WinAPI (kernel32.dll, user32.dll, ws_2_32.dll и другие), а также за обработку графического интерфейса завершения работы системы.
Процесс запускается для каждого сеанса, а именно 0 и 1, дополнительные сеансы создаются при помощи удаленного рабочего стола или за счет быстрого переключения между пользователями.

Что интересно для Windows Server

Можно проверить количество активных сеансов, введя query SESSION в командной строке. Так можно проверить, соответствует ли количество сеансов количеству запущенных csrss.exe.

И еще..

До Windows 7 csrss.exe обеспечивал старт окна консоли, но теперь этим занимается conhost.exe.

wininit.exe

Путь: %SystemRoot%\System32\wininit.exe
Родительский процесс: smss.exe, который завершает работу перед запуском wininit.exe
Количество экземпляров: Один
Время запуска: Через несколько секунд после запуска системы

После получения управления от процесса smss.exe, wininit.exe помечает себя как критический, что позволяет ему избегать нежелательного отключения при аварийном завершении сеанса или входа систему в гибернацию. Целью Windows Initialisation (wininit.exe) является запуск ключевых фоновых процессов в рамках сеанса нуля. Он запускает:

  • services.exe - Диспетчер управления службами

  • lsass.exe - Сервер проверки подлинности локальной системы безопасности

  • lsaiso.exe - для систем с включенной Credential Guard.

Дополнительно на протяжении всего сеанса работы системы wininit.exe отвечает за создание и наполнение папки TEMP. Перед выключением wininit.exe снова "активизируется" - теперь уже для корректного завершения запущенных процессов. .

Кстати!

До Windows 10 lsm.exe (Диспетчер локальных сеансов) также запускался с помощью wininit.exe. Начиная с Windows 10, эта функция перенесена в lsm.dll, которая размещена в svchost.exe.

services.exe

Путь: %SystemRoot%\System32\services.exe
Родительский процесс: wininit.exe
Количество экземпляров: Один
Время запуска: Через несколько секунд после запуска системы

В функции services.exe входит реализация Унифицированного диспетчера фоновых процессов (UBPM), который отвечает за фоновую работу таких компонентов, как Диспетчер управления службами (SCM) и Планировщик задач (Task Sheduler). Словом, services.exe отвечает за управление службами, а также за контроль за взаимодействием служб, обеспечивая их безопасную и эффективную работу.

UBPM: немного для тех, кто видит первый раз

Унифицированный диспетчер фоновых процессов (UBPM) - компонент системы, который автоматически управляет фоновыми процессами, такими как службы и запланированные задачи. Словом, он помогает оптимизировать запущенные в фоновом режиме службы, приостанавливать или завершать фоновые процессы, что позволяет экономить ресурсы системы.

Кстати!

До Windows 10, как только пользователь успешно вошел в систему в интерактивном режиме, services.exe считал загрузку успешной и устанавливал для последнего удачного набора элементов управления HKLM\SYSTEM\Select\LastKnownGood значение CurrentControlSet.

А LastKnownGood - что это вообще?

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

Когда это могло пригодиться? Например, если загрузка нового ПО или изменение параметров системы не привело ни к чему хорошему. Тогда можно было бы использовать эту опцию, чтобы отменить изменения и откатиться к прошлому состоянию.

svchost.exe

Путь: %SystemRoot%\system32\svchost.exe
Родительский процесс: services.exe (чаще всего)
Количество экземпляров: Несколько (обычно не менее 10)
Время запуска: В течение нескольких секунд после загрузки, однако службы могут запускаться в течение работы системы, что приводит к появлению новых экземпляров svchost.exe.

svchost.exe (в Диспетчере задач прописывается как Служба узла) - универсальный хост-процесс для служб Windows, использующийся для запуска служебных DLL. В системе запускается несколько экземпляров svchost.exe, и каждая служба работает в своем собственном процессе svchost, что позволяет изолировать ошибки в работе одной службы от других, хотя в системах с ОЗУ менее 3,5 ГБ службы приходится группировать (см. ниже). Ну а в системах с оперативной памятью более 3,5 ГБ можно увидеть даже более 50 экземпляров svchost.exe.

Злоумышленники часто пользуются преимуществом наличия большого количества процессов svchost.exe, и могут воспользоваться этим, чтобы разместить какую-либо вредоносную DLL в качестве службы, либо запустить вредоносный процесс с именем svchost.exe или что-то типа scvhost.exe, svhost.exe и так далее.
Хотя, как известно, так можно сделать с любым процессом, но с svchost.exe это происходит почаще.

Кстати!

До Windows 10 версии 1703 экземпляры svchost.exe по умолчанию запускались в системе с уникальным параметром -k, благодаря которому была возможна группировка похожих служб. Типичные параметры -k включают:

  • DcomLaunch - служба, которая запускает компоненты COM и DCOM, благодаря которым программы взаимодействуют между собой на удаленных компьютерах

  • RPCSS - служба RPC (удаленный вызов процедур), благодаря которой программы взаимодействуют между собой через сеть.

  • LocalServiceNetworkRestricted - локальная служба, которая работает в пределах компьютера и имеет доступ к сети только для определенных операций.

  • LocalServiceNoNetwork - локальная служба, идентичная LocalServiceNetworkRestricted, но не имеющая доступа к сети.

  • netsvcs - группа служб Windows, благодаря которым выполняются задачи, связанные с сетью.

  • NetworkService - служба, которая позволяет выполнять задачи на удаленных хостах, и имеет доступ к сети для обмена данными.

Здесь можно почитать о разделении служб SvcHost.

RuntimeBroker.exe

Путь: %SystemRoot%\System32\RuntimeBroker.exe
Родительский процесс: svchost.exe
Количество экземпляров: Один или больше
Время запуска: Может быть разным

Работающий в системах Windows, начиная с Windows 8, RuntimeBroker.exe действует как прокси между ограниченными приложениями универсальной платформы Windows (UWP) и набором функций и процедур Windows API. В целях безопасности приложения UWP должны иметь ограниченные возможности взаимодействия с оборудованием, файловой системой и другими процессами, поэтому процессы-брокеры а-ля RuntimeBroker.exe используются для обеспечения требуемого уровня доступа для таких приложений.

Обычно для каждого приложения UWP существует один файл RuntimeBroker.exe. Например, запуск сalculator.exe приведет к запуску соответствующего процесса RuntimeBroker.exe.

И такое было: об утечках памяти, связанных с RuntimeBroker

Когда процесс RuntimeBroker еще был в новинку, пользователи во время работы с системой начали замечать, что RuntimeBroker.exe нещадно занимает аж более 500 МБ памяти, что несвойственно для него.
Оказывается, ошибка заключалась в следующем: каждый вызов метода TileUpdater.GetScheduledTileNotifications приводила к тому, что RuntimeBroker выделял память без ее дальнейшего высвобождения. Чаще всего с этим сталкивались пользователи, у которых было установлено приложение «The Time» для измерения времени - оно постоянно обновляло информацию на плитке.

Об этом казусе в Windows 8 можно почитать тут.

Про метод TileUpdater.GetScheduledTileNotifications

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

Те самые "плитки" в Windows 8
Те самые "плитки" в Windows 8

taskhostw.exe

Путь: %SystemRoot%\System32\taskhostw.exe
Родительский процесс: svchost.exe
Количество экземпляров: Один или больше
Время запуска: Может быть разным

Процесс Task Host Window отвечает за выполнение различных задач Windows.
С началом работы, taskhostw.exe начинает выполнять задачи, которые были назначены ему системой, а в течение работы системы выполняет непрерывный цикл прослушивания триггерных событий. Примеры триггерных событий, которые могут инициировать задачу, могут включать в себя:

  • Определенное расписание задач

  • Вход пользователя в систему

  • Запуск системы

  • Событие журнала Windows

  • Блокировка/ разблокировка рабочей станции и т.д.

Двое из ларца: В чем разница между Task Host Window и Task Scheduler?

Task Host Window отвечает за выполнение различных системных задач, например, запуск служб и выполнение запросов на исполнение программ. Taskhostw.exe может использоваться для запуска службы обновления Windows, перехода компьютера в режим сна или ожидания после определенного времени и так далее.

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

lsass.exe

Путь: %SystemRoot%\System32\lsass.exe
Родительский процесс: wininit.exe
Количество экземпляров: Один
Время запуска: В течение нескольких секунд после загрузки

Local Security Authentication Subsystem Service (Служба проверки подлинности локальной системы безопасности) отвечает за аутентификацию пользователей путем вызова соответствующего пакета аутентификации, указанного в HKLM\SYSTEM\CurrentControlSet\Control\Lsa. Обычно это Kerberos для учетных записей домена или MSV1_0 для локальных учетных записей. Помимо аутентификации пользователей, lsass.exe также отвечает за реализацию локальной политики безопасности (например, политики паролей и политики аудита), а также за запись событий в журнал событий безопасности.

Что любят котята: Mimikatz и LSASS

Многим известно, что злоумышленники могут использовать Mimikatz, зачастую для перехвата учетных данных в операционной системе, и делают они это за счет перехвата данных процесса lsass.exe.
Все просто: работает Mimikatz на уровне ядра и внедряется в процесс LSASS или использует метод DLL-injection. Кража учетных данных происходит либо за счет получения доступа к памяти процесса, в котором лежат заветные креды, либо за счет перехвата вызова функций до шифрования учетных данных.
Также Mimikatz не пренебрегает использованием стандартных функций Win32 LsaProtectMemory и LsaUnprotectMemory, которые используются для шифрования и расшифровки некоторых участков памяти с чувствительной информацией.

Чуть больше об lsass.exe можно прочитать тут.
И о любви котят к LSASS - тут.

winlogon.exe

Путь: %SystemRoot%\System32\winlogon.exe
Родительский процесс: smss.exe, который, запустив winlogon.exe, завершает работу
Количество экземпляров: Один или больше
Время запуска: В течение нескольких секунд после загрузки первого экземпляра, дополнительные экземпляры запускаются по мере создания новых сеансов (подключение с удаленного рабочего стола и быстрое переключение пользователей)

Winlogon обрабатывает интерактивный вход и выход пользователей из системы. Он запускает LogonUI.exe, который использует поставщика учетных данных для сбора учетных данных пользователя, а затем передает учетные данные lsass.exe для проверки.
После аутентификации пользователя Winlogon загружает NTUSER.DAT пользователя в HKCU, настраивает окружение пользователя, включая его рабочий стол, настройки реестра и т.д., и запускает оболочку пользователя explorer.exe через userinit.exe.

Совсем чуть-чуть об logonUI.exe

Да, название говорит само за себя: logonUI.exe отвечает за отображение экрана входа пользователя и за взаимодействие с пользователем при входе в систему. Если просто, то вывод того самого экрана входа и поля для ввода учетных данных - старания logonUI.exe.

..И об userinit.exe

Основная функция userinit.exe заключается в подготовке среды пользователя для работы в операционной системе.
Когда пользователь входит в систему, userinit.exe инициирует загрузку профиля пользователя, настройки оболочки (шаблоны рабочего стола, запуск программ и т.д.). После выполнения сих действий, userinit.exe запускает оболочку пользователя explorer.exe, которая отображает рабочий стол и другие элементы интерфейса, после чего завершает работу.

Кстати!

Обработка команд из CTRL+ALT+DEL, между прочим, тоже входит в обязанности winlogon.exe.
А тут можно почитать о Winlogon еще и узнать чуть больше - и про его состояния, и про GINA, и про все-все.

explorer.exe

Путь: %SystemRoot%\explorer.exe
Родительский процесс: userinit.exe, который завершает работу
Количество экземпляров: Один или больше, если включена опция Запускать окна с папками в отдельном процессе
Время запуска: Интерактивный вход пользователя

По своей сути, explorer.exe предоставляет пользователям доступ к файлам, хотя одновременно это файловый браузер через проводник Windows (тот самый Диспетчер файлов) и пользовательский интерфейс, предоставляющий такие функции, как:

  • Рабочий стол пользователя

  • Меню "Пуск"

  • Панель задач

  • Панель управления

  • Запуск приложений через ассоциации расширений файлов и файлы ярлыков

Словом, процесс отвечает за отображение действий пользователя: открытие и закрытие окон, перемещение и копирование файлов и тому подобное.

Запуск приложений через ассоциации расширений файлов

По сути, это процесс, при котором система использует информацию о расширении имени файла (например, .txt) для определения программы, которая будет запущена, чтобы обработать этот файл. Например, файл расширения .txt ассоциируется в системе с текстовым редактором, потому она запустит его при двойном щелчке мышью. Словом, ассоциации расширений файлов определяют, какие программы открываются по умолчанию для определенных типов файлов.

Также и с ярлыками - при щелчке запускается связанные с ними ресурсы.

Explorer.exe — это пользовательский интерфейс по умолчанию, указанный в значении реестра HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell, хотя Windows может работать и с другим интерфейсом, например, с cmd.exe.
Следует заметить, что легитимный explorer.exe находится в каталоге %SystemRoot%, а не %SystemRoot%\System32.

Explorer - это же браузер, нет?

В старые добрые времена, когда на системах еще стоял Internet Explorer, запуск этого браузера инициировал процесс iexplore.exe, и с каждой новой вкладкой создавался новый экземпляр этого процесса. Сейчас остался только explorer.exe, который ни в коем случае не связан с браузером.
Вместо Internet Explorer на наших системах стоит MS Edge, который имеет процесс msedge.exe, исполняемый файл которого лежит в \Program Files (x86)\Microsoft\Edge\Application\.

ctfmon.exe

Путь: %SystemRoot%\System32\ctfmon.exe
Родительский процесс: Зависит от того, какой процесс запустил ctfmon.exe
Количество экземпляров: Один
Время запуска: При входе в систему

Процесс ctfmon.exe или, как привыкли его видеть, CTF-загрузчик, управляет функциями рукописного и сенсорного ввода, распознавания голоса и переключения языка на панели задач. Также процесс отслеживает активные программы и настраивает языковые параметры для обеспечения поддержки многоязычного ввода.
Ctfmon.exe может быть запущен разными процессами, и это напрямую зависит от того, какие функции ввода или языка используются в системе. Примеры родительских процессов и причины запуска:

  • svchost.exe - использование рукописного ввода или распознавания речи

  • winword.exe, excel.exe и т.д. - использование программ пакета Microsoft Office

  • searchUI.exe - использование поиска на панели задач или приложения из магазина Windows 10

Конечно, это не исчерпывающий список легитимных процессов, но, как минимум, основной. Хочется верить, что этот материал был полезен тем, кто пугается страшных букв в Диспетчере задач и тем, кто просто хочет узнать немного больше.
Спасибо за прочтение!

Теги:
Хабы:
+60
Комментарии 36
Комментарии Комментарии 36

Публикации

Истории

Работа

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн