- Windows service local system local service
- Какого назначение системной учетной записи Local System
- Привилегии LocalSystem
- Сценарии вызова командной строки из под System
- Способы вызвать командную строку от имени системы
- LocalSystem Account
- Using the LocalSystem Account as a Service Logon Account
- Ком-сервис
- Что такое svchost.exe
- Как удалить вирус, замаскированный под процесс svchost.exe
- Вирусов в системе нет, но svchost.exe всё равно «грузит» компьютер?
Windows service local system local service
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов России Pyatilistnik.org. В прошлый раз мы с вами разобрали способы выключения компьютера средствами командной строки, в сегодняшней публикации мы рассмотрим задачу, как вызвать cmd от имени системной учетной записи Local System, рассмотрим варианты применения данной задачи. Думаю, что многим коллегам данная статья будет весьма познавательна и каждый найдет применение данному лайвхаку.
Какого назначение системной учетной записи Local System
Системная учетная запись (Local System) – это специальная встроенная, локальная учетная запись, созданная Windows в момент установки, для использования в системе и запуска из под нее различных служб Windows. В Windows огромное количество служб и процессов для своего запуска и работы используют именно системную запись. Посмотреть это можно в оснастке «Службы», которую можно открыть из окна «Выполнить» введя в нем services.msc.
Учетная запись Ststem не отображается среди других учетных записей в диспетчере пользователей, но зато вы ее легко можете увидеть на вкладке «Безопасность» у любого системного диска, файла. куста реестра или папки. По умолчанию для учетной записи «Система (System)» предоставлены права полного доступа.
Служба, которая запускается в контексте учетной записи LocalSystem, наследует контекст обеспечения безопасности Диспетчера управления службами (SCM). Пользовательский идентификатор безопасности (SID) создается из значения SECURITY_LOCAL_SYSTEM_RID. Учетная запись не связывается с учетной записью любого пользователя, который начал работу. Она имеет несколько значений:
- Ключ реестра HKEY_CURRENT_USER связан с пользователем по умолчанию, а не текущим пользователем. Чтобы обратиться к профилю другого пользователя, имитируйте этого пользователя, а затем обратитесь к HKEY_CURRENT_USER.
- Служба может открыть ключ реестра HKEY_LOCAL_MACHINE\SECURITY.
- Служба представляет мандат компьютера для удаленного сервера. Если служба открывает командное окно (на экране дисплея) и запускает командный файл, пользователь должен нажать CTRL+C, чтобы закончить работу командного файла и получить доступ к окну команды с привилегиями LocalSystem.
Привилегии LocalSystem
- SE_ASSIGNPRIMARYTOKEN_NAME
- SE_AUDIT_NAME
- SE_BACKUP_NAME
- SE_CHANGE_NOTIFY_NAME
- SE_CREATE_PAGEFILE_NAME
- SE_CREATE_PERMANENT_NAME
- SE_CREATE_TOKEN_NAME
- SE_DEBUG_NAME
- SE_INC_BASE_PRIORITY_NAME
- SE_INCREASE_QUOTA_NAME
- SE_LOAD_DRIVER_NAME
- SE_LOCK_MEMORY_NAME
- SE_PROF_SINGLE_PROCESS_NAME
- SE_RESTORE_NAME
- SE_SECURITY_NAME
- SE_SHUTDOWN_NAME
- SE_SYSTEM_ENVIRONMENT_NAME
- SE_SYSTEM_PROFILE_NAME
- SE_SYSTEMTIME_NAME
- SE_TAKE_OWNERSHIP_NAME
- SE_TCB_NAME
- SE_UNDOCK_NAME
Сценарии вызова командной строки из под System
Давайте приведу интересную задачку по нашей теме. Предположим у вас есть доменная среда Active Directory. Вы с помощью инструмента групповой политики или SCCM развернули специализированное ПО, под названием StaffCop, или что-то другое. В момент развертывания или последующей настройки вы задали так, что пользователь даже при наличии прав локального администратора в своей системе не может останавливать службу и менять ее тип запуска, вопрос может ли локальный администратор это поправить и выключить службу?
Способы вызвать командную строку от имени системы
Я очень давно занимаюсь системным администрированием и уяснил давно принцип, если у вас есть права локального администратора, то вы можете все. Обойти любые ограничения и политики. Напоминаю. что я для тестирования развернул агента StaffCop, это такая программа для слежки, которую используют всякие шарашкины конторы. Агент по умолчанию запрещает выключение службы и изменение ее типа. Выглядит, это вот таким образом. Служба работает, имеет имя StaffCop Scheduler, но вот сделать с ней ничего не получается, все не активно.
Для того, чтобы вызвать cmd от имени системы, вам необходимо скачать замечательный набор утилит PSTools, а конкретно нам будет нужна утилита PsExec.exe или PsExec64.exe. Если вы мой постоянный читатель, то вы помните, что я их использовал, чтобы удаленно включить RDP доступ на сервере. Скачать сборник PSTools можно с официального сайта по ссылке ниже, или же у меня с сайта.
Далее вам необходимо распаковать zip архив, в результате чего будет вот такой список утилит.
Теперь когда подготовительный этап готов, то можно продолжать. Откройте обязательно командную строку от имени администратора и введите команду:
Мой пример: cd C:\Дистрибутивы\PSTools
Командой dir я проверил, что это та папка и я вижу нужные мне утилиты PsExec.exe или PsExec64.exe.
Последним шагом мы текущее окно командной строки из под текущего пользователя перезапустим от имени Local System. Пишем:
В итоге я вижу, что у меня открылось новое окно командной строки и оно уже работает в контексте «C:\Windows\system32>«, это и означает учетную запись Local System (Системная учетная запись)
Теперь давайте из под нее попробуем остановить нашу службу StaffCop Scheduler. Для этого есть ряд команд:
Далее вам необходимо изменить тип запуска и поменять с автоматического на отключена. Для этого пишем команду:
Как видим все успешно отработало. Если посмотреть оснастку «Службы», то видим вот такую картину.
Так, что имея права локального администратора и утилиту PsExec.exe, можно делать что угодно. Надеюсь, что вы теперь будите чаще вызывать окно командной строки от имени учетной записи системы. Давайте с вами напишем небольшой батник, который будет из ярлыка вызывать cmd от имени Local System. Создадим тестовый файл, поменяем ему сразу расширение с txt на cmd и откроем его текстовым редактором. Пропишем код:
Щелкаем по файлу правым кликом и выбираем пункт «Запуск от имени администратора». В результате чего у вас сразу будет запущено окно cmd с правами учетной записи SYSTEM. Проверить, это можно введя команду whoami. Ответ NT AUTORITY\СИСТЕМА.
Если нужно запустить удаленно командную строку от имени NT AUTORITY\СИСТЕМА, то выполните такую конструкцию
LocalSystem Account
The LocalSystem account is a predefined local account used by the service control manager. This account is not recognized by the security subsystem, so you cannot specify its name in a call to the LookupAccountName function. It has extensive privileges on the local computer, and acts as the computer on the network. Its token includes the NT AUTHORITY\SYSTEM and BUILTIN\Administrators SIDs; these accounts have access to most system objects. The name of the account in all locales is .\LocalSystem. The name, LocalSystem or ComputerName\LocalSystem can also be used. This account does not have a password. If you specify the LocalSystem account in a call to the CreateService or ChangeServiceConfig function, any password information you provide is ignored.
A service that runs in the context of the LocalSystem account inherits the security context of the SCM. The user SID is created from the SECURITY_LOCAL_SYSTEM_RID value. The account is not associated with any logged-on user account. This has several implications:
- The registry key HKEY_CURRENT_USER is associated with the default user, not the current user. To access another user’s profile, impersonate the user, then access HKEY_CURRENT_USER.
- The service can open the registry key HKEY_LOCAL_MACHINE\SECURITY.
- The service presents the computer’s credentials to remote servers.
- If the service opens a command window and runs a batch file, the user could hit CTRL+C to terminate the batch file and gain access to a command window with LocalSystem permissions.
The LocalSystem account has the following privileges:
- SE_ASSIGNPRIMARYTOKEN_NAME (disabled)
- SE_AUDIT_NAME (enabled)
- SE_BACKUP_NAME (disabled)
- SE_CHANGE_NOTIFY_NAME (enabled)
- SE_CREATE_GLOBAL_NAME (enabled)
- SE_CREATE_PAGEFILE_NAME (enabled)
- SE_CREATE_PERMANENT_NAME (enabled)
- SE_CREATE_TOKEN_NAME (disabled)
- SE_DEBUG_NAME (enabled)
- SE_IMPERSONATE_NAME (enabled)
- SE_INC_BASE_PRIORITY_NAME (enabled)
- SE_INCREASE_QUOTA_NAME (disabled)
- SE_LOAD_DRIVER_NAME (disabled)
- SE_LOCK_MEMORY_NAME (enabled)
- SE_MANAGE_VOLUME_NAME (disabled)
- SE_PROF_SINGLE_PROCESS_NAME (enabled)
- SE_RESTORE_NAME (disabled)
- SE_SECURITY_NAME (disabled)
- SE_SHUTDOWN_NAME (disabled)
- SE_SYSTEM_ENVIRONMENT_NAME (disabled)
- SE_SYSTEMTIME_NAME (disabled)
- SE_TAKE_OWNERSHIP_NAME (disabled)
- SE_TCB_NAME (enabled)
- SE_UNDOCK_NAME (disabled)
Most services do not need such a high privilege level. If your service does not need these privileges, and it is not an interactive service, consider using the LocalService account or the NetworkService account. For more information, see Service Security and Access Rights.
Using the LocalSystem Account as a Service Logon Account
One advantage of running under the LocalSystem account is that the service has complete unrestricted access to local resources. This is also the disadvantage of LocalSystem because a LocalSystem service can do things that would bring down the entire system. In particular, a service running as LocalSystem on a domain controller (DC) has unrestricted access to Active Directory Domain Services. This means that bugs in the service, or security attacks on the service, can damage the system or, if the service is on a DC, damage the entire enterprise network.
For these reasons, domain administrators at sensitive installations will be cautious about allowing services to run as LocalSystem. In fact, they may have policies against it, especially on DCs. If your service must run as LocalSystem, the documentation for your service should justify to domain administrators the reasons for granting the service the right to run at elevated privileges. Services should never run as LocalSystem on a domain controller. For more information and a code example that shows how a service or service installer can determine if it is running on a domain controller, see Testing Whether Running on a Domain Controller.
When a service runs under the LocalSystem account on a computer that is a domain member, the service has whatever network access is granted to the computer account, or to any groups of which the computer account is a member. Be aware that in WindowsВ 2000, a domain computer account is a service principal, similar to a user account. This means that a computer account can be in a security group, and an ACE in a security descriptor can grant access to a computer account. Be aware that adding computer accounts to groups is not recommended for two reasons:
- Computer accounts are subject to deletion and re-creation if the computer leaves and then rejoins the domain.
- If you add a computer account to a group, all services running as LocalSystem on that computer are permitted the access rights of the group. This is because all LocalSystem services share the computer account of their host server. For this reason, it is particularly important that computer accounts not be made members of any domain administrator groups.
Computer accounts typically have few privileges and do not belong to groups. The default ACL protection in Active Directory Domain Services permits minimal access for computer accounts. Consequently, services running as LocalSystem, on computers other than DCs, have only minimal access to Active Directory Domain Services.
If your service runs under LocalSystem, you must test your service on a member server to ensure that your service has sufficient rights to read/write to Active Directory Domain Controllers. A domain controller should not be the only Windows computer on which you test your service. Be aware that a service running under LocalSystem on a Windows domain controller has complete access to Active Directory Domain Services and that a member server runs in the context of the computer account which has substantially fewer rights.
Ком-сервис
Если вы читаете эту статью, то наверняка уже обратили внимание на системный процесс, имеющий название «svchost.exe». Причём обычно он не одинок, и компанию ему составляют ещё несколько одноимённых процессов:
В нормальной ситуации быстродействие компьютера от выполнения данного процесса не страдает, и обычные пользователи внимание на него не обращают. Совсем иначе обстоит ситуация, когда процесс начинает «пожирать» от половины до 100% ресурсов компьютера. Причем не эпизодически, а постоянно. Радикальным решением проблемы в таком случае иногда становится переустановка Windows или откат системы к тому моменту, когда она работала нормально. Эти способы не только излишни, но и не всегда помогают, поэтому сегодня мы расскажем вам о более простых решениях проблемы, когда процесс svchost.exe грузит процессор компьютера «на полную».
Что такое svchost.exe
Начнём с теории. Svchost.exe — системный процесс Windows, который отвечает за запуск различных служб на компьютере (например, Служба печати или Брандмауэр Windows). С помощью него на компьютере могут быть запущены несколько служб одновременно, что позволяет сократить потребление ресурсов компьютера этими службами. Кроме того, сам процесс может быть запущен в нескольких копиях. Именно поэтому в «Диспетчере задач» всегда запущено больше одного процесса svchost.exe.
Так из-за чего же svchost.exe может создавать высокую нагрузку на процессор и память компьютера? В сети можно встретить мнение, что процесс svchost.exe инициируется вирусом или вовсе является вирусом. Это не так. Строго говоря, некоторые вирусы и трояны могут маскироваться под него, создавая дополнительную нагрузку на ресурсы компьютера, но их довольно легко вычислить и обезвредить.
Как удалить вирус, замаскированный под процесс svchost.exe
Запустите «Диспетчер задач» (с помощью комбинации клавиш Control+Atl+Delete или из меню Пуск > Программы > Стандартные > Служебные) и откройте вкладку «Процессы». В первой колонке вы увидите названия процессов, а во второй — указание, от чьего имени он был запущен. Так вот, обратите внимание на то, что svchost.exe может запускаться только от имени пользователей LOCAL SERVICE, SYSTEM (или «система»), а также NETWORK SERVICE.
Если вы заметили, что процесс запущен от имени вашего пользователя (например, от имени User), то перед вами — вирус. Так как настоящий svchost.exe может запускаться только системными службами, то он не может находиться в «Автозагрузке» текущего пользователя Windows. Поэтому именно там мы и попробуем найти вирус, замаскированный под системный процесс svchost.exe. Попасть в Автозагрузку можно двумя способами: через стороннюю программу, например, CCleaner или стандартными средствами Windows.
Для того, чтобы попасть в Автозагрузку без установки дополнительных программ, откройте Пуск и в строке поиска программ (в Windows XP — в Пуск > Выполнить) напишите msconfig, после чего нажмите ОК. Появится окно «Конфигурация системы». Перейдите на вкладку Автозагрузка и внимательно просмотрите список программ, запускаемых при загрузке системы. Если в этом списке вы обнаружите процесс svchost.exe, то можете не сомневаться в его вирусном происхождении.
Настоящий svchost.exe может быть запущен только из папки C:\WINDOWS\system32, где «C» — диск, на котором установлена Windows. (В 64-битной операционной системе 32-битная версия svchost.exe расположена в папке C:\WINDOWS\SysWOW64, и теоретически процесс может быть запущен также из неё. Однако по умолчанию все системные процессы, включая svchost.exe, в 64-разрядных Windows запускаются из C:\WINDOWS\system32.) На скриншоте выше видно, файл расположен в папке WINDOWS, да ещё и называется «svhost.exe», а не «svchost.exe», что прямо говорит о его вирусном происхождении.
Список самых излюбленных папок для маскировки вируса выглядит примерно так:
C:\WINDOWS\svchost.exe
C:\WINDOWS\config\svchost.exe
C:\WINDOWS\drivers\svchost.exe
C:\WINDOWS\system\svchost.exe
C:\WINDOWS\sistem\svchost.exe
C:\WINDOWS\windows\svchost.exe
C:\Users\имя-вашего-пользователя\svchost.exe
Файл вирусного процесса может не только находится в одной из перечисленных выше папок (а не в стандартной папке, где находится настоящий svchost.exe), но и называться по-другому:
svhost.exe
svch0st.exe
svchost32.exe
svchosts.exe
syshost.exe
svchosl.exe
svchos1.exe
. И так далее, — фантазия вирусописателей не знает границ :-).
Итак, вы нашли вирус svchost.exe в Автозагрузке. Первое, что нужно сделать — отключить его автозапуск, убрав галку напротив него в столбце «Элемент автозагрузки». Теперь нужно завершить его процесс через «Диспетчер задач» (правая кнопка мыши на процессе > Завершить процесс) и удалить сам файл. Полный путь к файлу, как и на скриншоте выше, всегда указан в столбце «Команда». Вполне возможно, что файл процесса не даст себя удалить, — в этом случае попробуйте сначала перезагрузить компьютер и повторить операцию, или воспользуйтесь программой для удаления подобных, «неудаляемых» файлов Unlocker.
После этого не лишним будет также провести антивирусную проверку компьютера. Если на вашем компьютере до сих пор не установлен антивирус, рекомендуем ознакомиться с нашей статьей о выборе бесплатного антивируса.
Вирусов в системе нет, но svchost.exe всё равно «грузит» компьютер?
Вы нашли и обезвредили все вирусы в системе или убедились, что вирусов на компьютере нет, а svchost.exe по-прежнему мешает работать? Попробуйте выяснить, какая программа или служба использует данный процесс. Это легко сделать с помощью простой бесплатной программы Process Explorer. Очень часто процесс svchost.exe использует служба Windows Update, автоматически устанавливающая обновления на компьютер:
В данном случае можно либо подождать, когда все обновления Windows будут загружены и установлены, либо временно отключить автоматическое обновление Windows. Это можно сделать через Панель управления в разделе Система и безопасность > Центр обновления Windows, открыв Настройки параметров (в боковом меню окна) и выбрав в выпадающем списке пункт Не проверять наличие обновлений:
Если отключение автоматического обновления не помогло, то точно также можно проверить все остальные службы Windows. Остановить или отключить любую службу Windows можно через оснастку «Службы». Попасть в неё легко: нажмите Пуск > кликните на Компьютер правой кнопкой мыши, в раскрывшемся меню выберете Управление > перейдите в Службы и приложения > Службы. Выбрав искомую службу, кликните на неё правой кнопкой мыши и выберите Остановить. Если нагрузку на компьютер создавала именно она, то после остановки службы процесс svchost.exe перестанет загружать ваш компьютер на 100%.
Не удалось решить проблему самостоятельно? Мы готовы вам помочь! «Помощь онлайн» — подробная информация здесь.