Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров16K
Привет, Хабр!
Многие передовые компании в области информационной безопасности в конце 2022 подвели итоги года по самым популярным техникам MITRE ATT&CK, используемым атакующими. Один из таких отчетов по обнаруженным угрозам был предоставлен RedCanary, а другой Лабораторией Касперского, согласно которым одной из наиболее популярных техник закрепления в системе является Scheduled Task(T1053.005) или, говоря русским языком, запланированная задача. На сегодняшний день существует много известных способов проведения данной техники: стандартная оснастка Task Scheduler от Microsoft, утилита schtasks, а также Poweshell командлеты, которые в свою очередь опираются на RPC-функции и др.
В данной статье хочу рассказать вам о нестандартном способе проведения техники Scheduled Task с помощью удаленного реестра (Remote Registry). После чего я представлю возможный вариант детектирования данного способа и попытаюсь раскрыть все сложности, с которыми придется столкнуться в процессе.
Предлагаю начать и сперва ознакомиться с тем, что собой представляет Scheduled Task.
Что такое Scheduled Task
Task Scheduler или Планировщик задач — служба в Windows, которая позволяет автоматизировано выполнять запланированные задачи на устройстве по заранее заданному триггеру (время, наступление определенного события и т.п.). Это одна из самых «древних» служб в Windows: впервые данный компонент появился в Windows 95, а в текущем виде он представлен в Windows Vista. Таким образом, за десятки лет активного использования Scheduled Task появилось достаточное количество способов и инструментов для работы с запланированными задачами.
Данная техника привлекает злоумышленников тем, что запланированные задачи являются легитимными в операционной системе Windows. Это позволяет замаскировать вредоносные действия, а сам функционал планировщика задач не будет отключен администраторами, так как на нем строится работа всей системы. Так, например, запланированные задачи повышают надежность системы, обеспечивая ее бесперебойную работу за счет выполнения обслуживающих задач, таких как, очистка диска, дефрагментация, проверка на ошибки. Также Scheduled Task позволяет повысить производительность системы путем выполнения задач по типу резервного копирования или обновлений в наиболее оптимальное время, которое соответствует определенному триггеру. Еще один плюс — снижение человеческого фактора и рабочей нагрузки на администраторов системы.
Теперь давайте разберемся, где и как запланированные задачи хранятся в памяти системы.
Представление запланированных задач в памяти
При планировании задачи стандартными утилитами (schtasks, оснастка Task Scheduler, командлеты Powershell) создание определенных ключей реестра и xml файла на диске можно отследить с помощью Process Monitor или Sysmon (примеры Sysmon событий будут дальше в статье).
Рассмотрим подробнее какие ключи реестра при этом задействованы:
-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks
— содержит список подразделов, представляющих запланированную задачу. Каждая задача имеет уникальный идентификатор GUID, который выступает в качестве имени ключа в реестре; -
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
— представляет собой структуру планировщика заданий Windows. Здесь хранятся метаданные для регистрации задачи в системе; -
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\{GUID}
— содержит все настройки задачи; -
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\{Plain\Logon\Boot}\{GUID}
— ветка реестра, которая выбирается в зависимости от того, по какому триггеру будет запускаться задача:-
Plain — по заранее заданному расписанию;
-
Logon — при входе пользователя;
-
Boot — при загрузке системы.
-
На рисунке 2 и 3 представлен пример хранения параметров задачи в ключах реестра перечисленных выше.
Также при создании задачи формируется файл в формате xml с параметрами запланированной задачи по пути C:\Windows\System32\Tasks
.
Само содержимое xml-файла с параметрами задачи вы можете увидеть под спойлером.
XML с параметрами задачи
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2023-02-27T13:08:20</Date>
<Author>USER</Author>
<URI>\spawn</URI>
</RegistrationInfo>
<Triggers>
<TimeTrigger>
<StartBoundary>2023-02-27T20:10:00</StartBoundary>
<Enabled>true</Enabled>
</TimeTrigger>
</Triggers>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<Duration>PT10M</Duration>
<WaitTimeout>PT1H</WaitTimeout>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>C:\windows\system32\cmd.exe</Command>
</Exec>
</Actions>
<Principals>
<Principal id="Author">
<UserId>USER</UserId>
<LogonType>InteractiveToken</LogonType>
<RunLevel>LeastPrivilege</RunLevel>
</Principal>
</Principals>
</Task>
Перейдем к самому интересному и посмотрим как же можно создать запланированную задачу, не используя при этом специально предназначенные для этого утилиты.
Создание задачи с помощью реестра
Для удаленного подключения к реестру можно использовать графический интерфейс regedit.exe
или из командной строки утилиту reg.exe
.
# Удаленное редактирование реестра с помощью reg.exe
REG ADD \\<REMOTE_COMPUTER>\HKLM\...
Для того чтобы изменять требуемые ветки реестра, нам необходима учетная запись SYSTEM, по крайней мере по умолчанию только она обладает нужными правами. Но удаленно подключиться под SYSTEM не получится.
Тогда возникает вопрос как удаленно из-под SYSTEM редактировать реестр, если подключиться под ней нельзя? Тут можно предложить несколько вариантов. Первый — ,заполучив SYSTEM, добавить права на редактирование другой учетной записи и уже все действия осуществлять от ее имени. Второй вариант — использовать psexec
из пакета от Sysinternals или от Impacket, также можно использовать smbexec
и подобные ей. Еще один из способов повысить привилегии до SYSTEM это использование различных «картошек» (например, RoguePotato, JuicyPotatoNG, RasmanPotato и др.). Либо прибегнуть к атаке Silver Ticket для создания TGS билета с SYSTEM в PAC, но для этого нужен NTLM-хеш учетной записи устройства.
Предположим, что тем или иным способом мы получили возможность удаленно редактировать реестр. Тогда, чтобы не испытывать сложности при создании требуемых веток в реестре и заполнении ключей, мы можем создать задачу локально, а далее перенести ее на удаленную машину.
Пример экспортированной задачи приведен ниже под спойлером.
Пример экспортированной задачи
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\remoteregistry1053]
"SD"=hex:01,00,04,80,88,00,00,00,98,00,00,00,00,00,00,00,14,00,00,00,02,00,74,\
00,04,00,00,00,00,10,18,00,9f,01,1f,00,01,02,00,00,00,00,00,05,20,00,00,00,\
20,02,00,00,00,10,14,00,9f,01,1f,00,01,01,00,00,00,00,00,05,12,00,00,00,00,\
10,18,00,ff,01,1f,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,00,00,\
24,00,89,00,12,00,01,05,00,00,00,00,00,05,15,00,00,00,fb,65,0e,da,0c,ec,58,\
4f,d2,95,df,b7,3a,38,00,00,35,00,7d,00,01,02,00,00,00,00,00,05,20,00,00,00,\
20,02,00,00,01,05,00,00,00,00,00,05,15,00,00,00,fb,65,0e,da,0c,ec,58,4f,d2,\
95,df,b7,01,02,00,00
"Id"="{B24EFFF8-2161-46E8-917D-1FF04C433EBE}"
"Index"=dword:00000003
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\{B24EFFF8-2161-46E8-917D-1FF04C433EBE}]
"Path"="\\remoteregistry1053"
"Hash"=hex:9b,ea,c8,ba,7a,d1,d4,6c,6f,66,2c,07,83,ff,e9,35,2c,7c,ef,0b,cf,48,\
22,de,4d,65,02,c3,3f,dc,e0,6f
"Schema"=dword:00010002
"Date"="2022-11-04T21:33:12.6610933"
"Author"="DOMAIN\USER"
"URI"="\\remoteregistry1053"
"Triggers"=hex:17,00,00,00,00,00,00,00,01,07,0b,00,00,00,04,00,80,13,62,a9,95,\
f0,d8,01,01,e7,d4,7b,7a,01,00,00,80,d3,cb,d3,5e,f1,d8,01,38,21,41,42,48,48,\
48,48,88,f6,c6,53,48,48,48,48,0e,00,00,00,48,48,48,48,41,00,75,00,74,00,68,\
00,6f,00,72,00,00,00,48,48,00,00,00,00,48,48,48,48,00,48,48,48,48,48,48,48,\
00,48,48,48,48,48,48,48,01,00,00,00,48,48,48,48,1c,00,00,00,48,48,48,48,01,\
05,00,00,00,00,00,05,15,00,00,00,fb,65,0e,da,0c,ec,58,4f,d2,95,df,b7,3a,38,\
00,00,48,48,48,48,1e,00,00,00,48,48,48,48,53,00,45,00,41,00,5c,00,64,00,6b,\
00,6f,00,7a,00,68,00,75,00,73,00,68,00,6f,00,6b,00,00,00,48,48,2c,00,00,00,\
48,48,48,48,00,00,00,00,ff,ff,ff,ff,80,f4,03,00,ff,ff,ff,ff,07,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,48,48,\
48,48,dd,dd,00,00,00,00,00,00,01,07,0b,00,00,00,04,00,80,13,62,a9,95,f0,d8,\
01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,2c,01,00,00,80,51,01,00,ff,ff,ff,ff,00,00,00,00,00,\
00,00,00,00,00,00,00,00,01,4a,7c,01,00,00,00,00,00,00,00,d1,61,00,00,00,00,\
00,00,48,48,48,48
"Actions"=hex:03,00,0c,00,00,00,41,00,75,00,74,00,68,00,6f,00,72,00,66,66,00,\
00,00,00,0e,00,00,00,63,00,6d,00,64,00,2e,00,65,00,78,00,65,00,00,00,00,00,\
00,00,00,00,00,00
"DynamicInfo"=hex:03,00,00,00,59,22,57,e5,7b,f0,d8,01,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Plain\{B24EFFF8-2161-46E8-917D-1FF04C433EBE}]
Посмотрим на алгоритм действий при экспортировании:
-
Создать задачи с требуемыми параметрами на локальной машине;
-
Произвести экспорт следующих веток реестра:
-
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\{NAMETASK}
-
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\{Id TASK}
-
`Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Plain{Id TASK}
-
-
Произвести импорт этих веток реестра на удаленную машину;
-
Далее появится созданная задача в списке задач, но при запуске будет ошибка.
Для исправления данной ошибки существует два способа:
-
Перезапустить службы
Schedule
. Таким образом задача подгрузится в память соответствующего процессаsvchost
. Для перезапуска службы требуются права SYSTEM, либо можно попросту перезагрузить ПК; -
Произвести Update задачи из графического интерфейса, schtasks или других подобных инструментов. Согласно документации Microsoft обновлять задачу могут пользователи, создавшие ее, а также члены группы администраторов и учетная запись SYSTEM.
Чтобы не создавать «лишний шум» в журнале событий, связанный с появлением новых ключей в реестре, атакующий вместо создания новой задачи может редактировать отдельные, уже существующие ключи в реестре. Он также имеет возможность осуществлять это как вручную, так и через импорт-экспорт определенных ключей, как было показано выше. В то же время такие задачи требуется активировать с новыми параметрами.
При импорте веток реестра на удаленную машину регистрируются события изменения реестра от имени процесса C:\Windows\system32\svchost.exe -k localService -p -s RemoteRegistry
. Данные события можно проследить в журнале Sysmon EventId 12 (RegistryEvent Object create or delete) и 13(RegistryEvent Value Set).
Сразу после импорта ключей реестра задача появится в графическом интерфейсе планировщика задач, но каких-либо событий по созданию задачи в журналах нет, в том числе и события 4698(A scheduled task was created). На следующем этапе данную задачу нужно активировать.
Если в качестве активации выбран Update задачи, то регистрируется событие в Sysmon с EventId 11(FileCreate). То есть происходит создание xml файла в C:\Windows\System32\Tasks
с описанием задачи от имени svchost.exe
, связанного со службой Schedule. Пример данного события представлен выше на Рисунке 4.
Также в журнале Security регистрируется событие с EventId 4702(A scheduled task was updated), свидетельствующее об обновлении задачи. Как и в событии 4698 данное событие содержит xml с описанием задачи.
При перезапуске службы Schedule
не происходит создание xml файла с описанием задачи и нет каких-либо событий, свидетельствующих о подгрузке задачи в память процесса svchost.exe
связанный со службой (т.е. отсутствуют события 4698 и 4702).
Чтобы удаленно редактировать реестр потребуется включить службу Remote Registry.
Настройка службы удаленного реестра:
Запустить Remote Registry можно с помощью учетной записи, обладающей правами локального администратора или SYSTEM.
Для этого потребуется выполнить несколько шагов:
Перейти в оснастку "Services.msc"
Открыть свойства "Remote Registry service"
Во вкладке General выбрать тип запуска Automatic
Применить изменения
Если атакующий захочет как можно дальше спрятать свои действия и тем самым еще больше усложнить жизнь специалистам по мониторингу и расследованиям инцидентов, то он сможет это сделать за счет «трюка», позволяющего скрыть запланированную задачу.
В чем же заключается этот трюк мы разберем дальше.
Скрытие задачи в планировщике задач
На этот раз скрытие происходит из оснастки Task Scheduler и других утилит (schtasks, Powershell Get-ScheduledTask) по работе с запланированными задачами. Трюк заключается в том, чтобы удалить определенные ключи в реестре, связанные с задачей.
Давайте посмотрим, что это за ключи и попробуем объединить два метода: создание задачи с помощью реестра (как описано в предыдущем разделе) и скрытие за счет отсутствие определенных ключей. Таким образом, задача будет создана уже без требуемых ключей. В таком случае для активации задачи не представляется возможным использовать Update, а единственным возможным из мне известных вариантов является перезапуск службы Schedule
(если вы знаете альтернативные методы, то пишите о них в комментариях к статье). Если же производить манипуляцию с ключами, перечисленными ниже у уже активированной задачи, то дополнительно перезапускать службы или что-то обновлять не требуется. Тогда задача мгновенно пропадает из рассматриваемых утилит после изменений в реестре.
Первый ключ в реестре, который позволяет скрыть задачу, называется Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\{NAMETASK}\SD
. SD отвечает за дескриптор безопасности. Если создать задачу без этого ключа, то она не будет отображаться в планировщике задач.
Второй ключ, который можно попробовать не указывать при создании задачи, является Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\{NAMETASK}\Index
. Однако в текущей ситуации в оснастке Task Scheduler перестают отображаться вообще какие-либо задачи, а при открытии планировщика появляется ошибка «An internal server error occurred», при этом сами задачи работают по-прежнему.
Также можно попробовать не удалять полностью ключ Index
, а изменить его. Таким образом, значение данного поля зависит от того по какому триггеру будет выполняться задача и, соответственно, она связана с веткой HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\{Plain\Logon\Boot}\{GUID}
(при Boot Index
=0x1, при Logon Index
=0x2, при Plain Index
=0x3). Если Index
установить равным 0x0, то задача будет скрыта в планировщике, но при этом ее работа не нарушится. Установка Index
равным 0x4 и более, не повлияет на скрытие задачи.
Вишенкой на торте является то, что если совершить Update задачу (schtasks /change /TN TASKNAME /TR PROGRAM
), производя манипуляции с ключом Index
, то она удалится без какого-либо события в журнале Security, в том числе и не будет события 4699 (A scheduled task was deleted).
Изучив особенности проведения техники Scheduled Task с помощью Remote Registry, перейдем к возможным способам ее детектирования.
Детектирование
Выше было рассказано как можно создать запланированную задачу максимально скрытым способом, а теперь мы поговорим, как защитникам детектировать данные случаи. Думаю очевидно, что стандартным способом за счет событий, связанных с задачами (4698, 4699, 4702), детектировать не получиться, так как они попросту будут отсутствовать в журнале.
Первое на что хотелось бы обратить внимание, так это на то, что везде происходило редактирование реестра. При стандартных способах создания запланированных задач по требуемым веткам вносятся изменения от имени C:\\Windows\\system32\\svchost.exe -k netsvcs -p -s Schedule
(т.е. службой Schedule
). В нашем же случае все изменения происходили от имени C:\Windows\system32\svchost.exe -k localService -p -s RemoteRegistry
. В случае использования psexec и подобных, родительским процессом будет используемая утилита по редактированию реестра, например, ею может выступать reg.exe
. То, что редактирование определенных веток реестра происходит с помощью процесса отличающегося от службы Schedule
, может как раз и служить одним из маркеров. При этом определить какая именно служба производит изменения в реестре возможно с помощью события Sysmon 1 (Process Creation). Сопоставлять 1, 12 и 13 события можно по полю ProcessGuid (если родительским процессом выступает утилита) или ParentProcessGuid (если родительским процессом выступает служба). Ниже, на основе этого анализа, мною будет представлено-псевдо правило для детекта.
Таким образом, псевдо-правило для детекта выглядит так:
SELECT *
FROM (EventCode=1)
WHERE (ParentProcessGuid OR ProcessGuid) IN
(
SELECT ProcessGuid
FROM (EventCode=12 OR EventCode=13)
WHERE TargetObject="HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Tree\\*"
)
AND ParentCommandLine!="C:\\Windows\\system32\\svchost.exe -k netsvcs -p -s Schedule"
Также следует отметить, что при активации задачи с помощью Update
формируется событие 4702. Данное событие содержит описание задачи, поэтому с помощью ML (Machine Learning) может быть проверено на аномалии. В качестве другой аномалии может выступать тот факт, что были созданы новые ветки реестра, но за этим не последовало события 4698, говорящего о создании задачи.
В совокупности с вышесказанным, но не по отдельности, мы имеем возможность отслеживать перезапуск службы Scheduler с помощью ETW TaskScheduler\Operational
события 402 (Service shutting down) и 400 (Service started) или через Process Creation (4688). Почему не стоит полагаться на данные события, как на самостоятельные? Только потому, что данные события происходят при каждом включении ПК, что будет приводить к ложно-положительным сработкам. В свою очередь связать перезапуск службы с перезапуском устройства можно с помощью события 1074 (System has been shutdown by a process/user) в журнале System.
TaskScheduler\Operational
, говорящее об остановке службы Schedule
TaskScheduler\Operational
, говорящее старте службы Schedule
Schedule
Также не следует забывать о ситуации, когда задача была создана стандартным способом, а после были удалены ключи в реестре для ее сокрытия. Для этого следует следить за удалением/изменением отдельных ключей реестра (SD и Index).
При удаленном способе редактирования веток реестра применяется протокол WINREG. Внутри пакетов трафик зашифрован. Поэтому использовать информацию внутри трафика для детекта нельзя. Но можно зайти с другой стороны и задаться вопросом, а как часто и для каких целей может использоваться протокол WINREG в корпоративной среде? Ответ на этот вопрос зависит от конкретной организации и выстроенных в ней IT-процессов. Так, если в компании администраторы не применяют инструменты для удаленного редактирования реестра или ПО, в основе которого лежит WINREG, то появление событий в трафике с использованием данного протокола, должны выглядеть подозрительно, что будет служить аномалией.
Заключение
В этой статье мы рассмотрели интересный метод создания запланированной задачи в Windows системе, а также возможный способ сокрытия задачи в планировщике задач. В результате чего стало понятно, что стандартные способы детектирования техники по созданию запланированных задач на основе событий из Security журнала 4698, 4699, 4702 не подходят в конкретном случае. Также мною были предложены маркеры, на основе которых можно построить детект. Основная идея заключается в мониторинге изменения определенных веток реестра от имени процесса отличного от Schedule
. Для наиболее точного распознавания таких случаев были представлены другие дополнительные маркеры детектирования, но рассматривать их стоит в совокупности, а не каждый по отдельности.
Надеюсь данная статья оказалась для вас полезной! Если у вас появились вопросы, пишите в комментариях!
Автор: Кожушок Диана( @wildresearcher), аналитик-исследователь киберугроз в компании R-Vision
Многие программы, особенно те из них, которые предназначенные для обслуживания Windows, имеют функцию автозагрузки, то есть могут автоматически запускаться после загрузки рабочего окружения операционной системы. Если программа не оснащена такой функцией, добавить её в автозагрузку можно вручную, разместив её ярлык в каталог startup или прописав путь к её исполняемому файлу в специальный ключ системного реестра. Отредактировав другой ключ в реестре, можно включить отсрочку старта добавленных в автозагрузку программ, если же вам нужно что-то большее, скажем, вы хотите запускать программы по расписанию или по событию, вам потребуется что-то большее. Думаете, это какая-то особо продвинутая сторонняя программа-менеджер? Ничего подобного, ведь подобная программа уже имеется в самой Windows. Называется она Планировщик заданий.
Планировщик заданий представляет собой встроенный компонент Windows, предназначенный для автоматического запуска скриптов и программ в определённое время и в определённые моменты. Появился он ещё в Windows 95, но тогда он назывался System Agent, название Task Scheduler, которое остаётся актуальным и до нынешнего дня, он получил в Windows 98. В современных версиях Windows Планировщик представлен файлом консоли Microsoft Management taskschd.msc в системном каталоге System32 и набором связанных динамических библиотек. В Windows 10 открыть Планировщик можно из меню Пуск, из результатов поиска, а также одноименной командой taskschd.msc в окошке «Выполнить».
Рабочее пространство оснастки разделено на три основные области. В левой колонке располагается Библиотека, представляющая собой древовидную иерархию каталогов, или узлов, содержащих списки заданий, созданных системными компонентами и установленными на компьютере сторонними приложениями. Средняя колонка служит для получения сведений о конкретных заданиях, в ней вы можете просмотреть описание и параметры задания, триггеры и условия его выполнения.
Если же дважды кликнуть по заданию мышкой, откроется окошко свойств, оно реже редактор, в котором можно будет изменить параметры запуска задачи. Правая колонка содержит меню операций, которые могут применены к заданиям. Вкратце рассмотрим главные из них.
- Создать (простую) задачу — служит для создания новой задачи.
- Импортировать задачу — добавляет в Планировщик задачу из XML-файла, используется для восстановления задач из резервных копий и переноса задач с одного компьютера на другой.
- Включить журнал для всех заданий — активирует функцию логирования выполняемых заданий.
- Выполнить — запускает немедленное выполнение задачи.
- Завершить — останавливает выполняемое задание.
- Отключить — временно отключает задание.
- Экспорт — сохраняет задачу в XML-файл, который может использоваться как резервная копия задания.
- Свойства — открывает окно с параметрами задания, доступными для просмотра и редактирования.
- Удалить — удаляет выбранное задание.
В верхней части окна Планировщика располагается стандартное текстовое меню, обеспечивающие доступ к базовым функциям оснастки. Особого интереса оно не представляет, так как как основная часть доступных в нём опций дублируется в правой колонке «Действия».
Каждое задание имеет набор свойств, например, свойствами являются название и описание задания. Свойства могут быть основными и дополнительными. Просмотреть и изменить их можно в упоминаемом выше окне свойств в соответствующих вкладках.
- Общие. К общим свойствам задания относится его имя, описание, права запуска, режим выполнения и учётная запись, от имени которой выполняется задание. Имя в данном примере является обязательным свойствам, тогда как описание — это свойства дополнительное, которое можно пропустить.
- Триггеры, или спусковые крючки. Триггер — это по сути событие, по которому выполняется задание. В качестве триггера может быть указано время (запуск задания по расписанию), а также определённое действие, например, загрузка или блокирование компьютера, вход пользователя в систему, создание и изменение другой задачи, подключение и отключение от пользовательского сеанса, отсутствие активности пользователя, ошибки и уведомления с определённым кодом и так далее. Особенно расширяют возможности автоматизации управления процессами триггеры, использующие системные события Журнала, которых в Планировщике заданий имеется огромное количество.
- Действия. Данное свойство определяет выполняемое в рамках созданной задачи действие — запуск программы или сценария, отправка сообщения по электронной почте или вывод уведомления (напоминания) на рабочий стол. В Windows 8.1 и 10 эти две последние функции считаются устаревшими и уже не работают, поэтому для вывода уведомлений и отправки сообщений по email Microsoft рекомендует использовать скрипты.
- Условия. Свойство «Условия» является уточняющим, оно используется как дополнение к триггерам, позволяя запускать или останавливать выполнение задания на основе длительности бездействия пользователя, режима электропитания и подключения к другой сети.
- Параметры. Дополнительная вкладка, содержащая настройки, позволяющие корректировать автоматическое выполнение заданий. Например, если при выполнении задания произойдёт сбой, активированная опция «При сбое выполнения перезапускать через» запустит задание повторно через указанный период времени.
Окно свойств также содержит ещё одну дополнительную вкладку «Журнал». Если последний включить, Windows станет журналировать выполнение заданий самим Планировщиком. Особой нужды в таком журналировании нет, поэтому по умолчанию данная опция отключена.
А теперь перейдём к практике, создав для примера задание, которое с помощью скрипта командной строки станет удалять из условной папки Temp файлы старше одной недели. Запускаем Планировщик заданий командой taskschd.msc и выбираем в правой колонке опцию «Создать задачу».
Опция «Создать простую задачу» подходит только для создания самых простых заданий, так как в этом режиме вы не сможете настраивать дополнительные параметры. В открывшемся окне даём новому заданию понятное имя и добавляем, если необходимо, комментарий. Остальные параметры можно не менять, но мы на всякий случай сделаем задание скрытым, чтобы на экране не появлялось окно командной строки (увы, окно всё равно появляется), а заодно и повысим заданию права, установив флажок в чекбоксе «Выполнить с наивысшими правами».
Теперь создадим триггер. Переключаемся на одноименную вкладку, жмём «Создать» и устанавливаем время и периодичность выполнения задания. Допустим, мы хотим, чтобы скрипт отрабатывал ежедневно в 15.00. Соответственно, тип выполнения выбираем «По расписанию», устанавливаем время, а в параметрах активируем радиокнопку «Ежедневно». Триггер создан, жмём «ОК» и переключаемся на следующую вкладку «Действия».
Точно так же жмём «Создать», в качестве действия оставляем «Запуск программы» и указываем через кнопку обзора полный путь к скрипту, содержимое которого вы можете видеть не приложенном ниже скриншоте. Готово и действие, можно переходить к следующему этапу.
В данном примере задавать дополнительные условия для такой в целом задачи нет нужды, поэтому мы пропускаем этот шаг и переключаемся на вкладку «Параметры». Здесь тоже можно ничего не менять, активируем разве что опцию запуска заданий при сбое, так, на всякий случай. Сохраняем задание и проверяем, выбрав в правой колонке Планировщика опцию «Выполнить».
А теперь рассмотрим чуть более сложный сценарий. Допустим, мы хотим, чтобы Windows выводила на рабочий стол уведомления об ошибках в работе программ или системы. Создадим новое задание и назовём его «Уведомление об ошибках».
Переключаемся на вкладку «Триггеры» и выбираем вместо «По расписанию» опцию «При событии». В параметрах выбираем «Настраиваемое» и жмём «Создать фильтр события».
Так как мы будем отслеживать ошибки, уровень события мы выбираем «Ошибка» и указываем раздел системного журнала, в который Windows записывает логи ошибок. Пусть для примера это будет «Приложения». Далее выбираем источник события — компонент операционной системы. Мы выбрали все компоненты. Код события не указываем, так как хотим отслеживать все ошибки.
Сохраняем наш фильтр, жмём «OK» и переходим на вкладку действия. Так как Windows 10 более не поддерживается вывод Планировщиком текстовых уведомлений, воспользуемся простейшим скриптом VBS. Создаём в Блокноте текстовый документ и вставляем в него код MsgBox «», прописывая между двойными прямыми кавычками текст уведомления.
Примечание: для вывода уведомлений на рабочий стол вместо скриптов можно использовать штатную утилиту msg.exe, прописав в поле «Программа или сценарий» путь C:\Windows\System32\msg.exe, а в поле аргументы вставив сообщение в формате * текст сообщения, смотрите скриншот ниже.
Сохраняем файл в формате VBS и указываем к нему путь на вкладке «Действия», указав в качестве действия запуск программы, то есть нашего скрипта.
Этого вполне достаточно, сохраняем настройки и проверяем работу скрипта. Когда какое-нибудь приложение даст сбой, Windows занесёт событие об ошибке в Журнал, Планировщик же в свою очередь перехватит это событие согласно настройкам и выполнит заданий — запустит на исполнение скрипт, который выведет на рабочий стол уведомление.
Здесь мы привели лишь два примера использования Планировщика заданий, в действительности он способен и на большее. Запускать программы строго с определённым временным диапазоном, создавать напоминания, открывать сайты, запускать задачи обслуживания системы и многое другое — всё это можно реализовать с помощью этого удобного и гибкого инструмента, не говоря уже о таком простом действии как автоматическое выключение компьютера.
«Планировщик заданий» Windows поможет автоматизировать выполнение задач в ОС. Например, зададим время или некоторые условия, при которых стартует указанный процесс или приложение. Сначала рассмотрим различные методы запуска данного полезного инструмента. Затем вкратце пройдёмся по основному функционалу.
Содержание
- Как запустить Планировщик заданий из главного меню
- В Проводнике через исполняемый файл
- Запустим утилиту с помощью команд
- В окне Выполнить
- Как открыть Планировщик заданий из командной строки cmd
- Через Поиск Windows
- С помощью Панели управления
- Вход через Управление компьютером
- Создайте ярлык Планировщика заданий на рабочем столе
- Как создавать и удалять задачи в Планировщике заданий Windows
Воспользуемся главным меню операционной системы — чуть больше действий, зато не надо ничего печатать или вводить команды. Кликните по «Пуску» левой кнопкой мыши. В Windows 11 перейдите во «Все приложения». Прокрутите алфавитный указатель до буквы «И». Перейдите в «Инструменты Windows». Отметим, что в Windows 10 нужный вам раздел называется «Средства администрирования».
Откроется папка со средствами администрирования ОС, где необходимо дважды кликнуть по «Планировщику заданий».
В Проводнике через исполняемый файл
Исполняемый файл «Планировщика заданий» имеется на диске с ОС Windows. Можем открыть программу непосредственно оттуда. Первым делом откройте Проводник и зайдите в папку:
C:\Windows\System32
Актуально для большинства компьютеров, где ОС находится на диске C:. Если на другом — учитывайте данный момент. Если, например, Windows установлена на диск D:\, тогда:
D:\Windows\System32
По опыту, на сегодня такая ситуация нечасто, но все же встречается. Выберите сортировку элементов в алфавитном порядке, чтобы проще было искать. Найдите и запустите файл taskschd.
Можем сократить число действий. Напечатайте C:\Windows\System32\taskschd.msc в адресной строке Проводника, а затем нажмите клавишу «Enter».
Запустим утилиту с помощью команд
Быстрые и надежные способы, которые не зависят от особенностей графического интерфейса. Универсальны, поскольку синтаксис команд не меняется от версии к версии ОС.
В окне Выполнить
Один из самых простых способов запуска оснастки — через окно «Выполнить» («Run»). Кликните правой кнопкой мыши по «Пуску» и выберите данный пункт в меню опытного пользователя Windows.
Затем напечатайте:
taskschd.msc
Нажмите «OK» и окно утилиты появится на экране.
Как открыть Планировщик заданий из командной строки cmd
Можем применить классическую командную строку Windows (Command Prompt). Кликните правой кнопкой мыши по «Пуску» и запустите окно «Выполнить».
Введите cmd и нажмите «Enter».
В консоли введите:
start taskschd.msc
Нажмите «Enter», чтобы открыть планировщик.
Через Поиск Windows
Microsoft интегрировала в свою ОС удобную функцию — поиск. Позволяет не только искать программы и опции по системе, но и запускать ПО. Нажмите одновременно клавиши «Windows» + S. В строке напечатайте:
планировщик заданий
В меню найденного приложения кликните по «Открыть».
С помощью Панели управления
Классическая Панель управления и в Windows 11/10 довольно полезна. Позволит легко открыть нужную утилиту. Клавиатурным сочетанием Win + R откройте окно «Выполнить». Там напечатайте control и нажмите «Enter».
Вы также можете открыть панель одним из рассмотренных ранее способов:
Переключитесь на «Мелкие значки» (список режимов просмотра расположен справа вверху), чтобы упростить поиск нужного раздела. Пользователю Windows 11 надо перейти в категорию «Инструменты Windows». Обратите внимание, что на ПК с Windows 10 нужный раздел носит имя «Администрирование».
Запустите «Планировщик заданий» из правой панели нового окна.
Вход через Управление компьютером
Нажмите Win + X на клавиатуре для перехода в меню опытного пользователя ОС. Откройте категорию «Управление компьютером».
Выберите «Планировщик заданий» на левой панели окна из списка служебных программ.
Создайте ярлык Планировщика заданий на рабочем столе
Рассмотренные способы оптимальны, если надо открывать утилиту лишь время от времени. Планируете часто пользоваться планировщиком — создайте ярлык запуска программы на рабочем столе. Кликните правой кнопкой мышки в свободном месте рабочего стола. В первом контекстном меню нужен пункт «Создать», а во втором: «Ярлык».
Откроется мастер создания элемента. Сначала надо указать расположение объекта на диске компьютера: C:\Windows\System32\taskschd.msc, а затем нажать «Далее» для перехода к следующему окну.
Присвойте ярлыку удобное и понятное название. В данном примере: «Запуск Планировщика заданий». Кликните по кнопке «Готово», которая находится внизу справа.
На главном экране появится элемент. Дважды кликните по данному объекту, когда необходимо зайти в «Планировщик заданий».
Как создавать и удалять задачи в Планировщике заданий Windows
Данная утилита экономит немало времени и как системному администратору, так и обычному пользователю. Позволяет настроить регулярное выполнение задач, в том числе:
- Создание резервных копий данных.
- Обновление ПО и сканирование системы антивирусом.
- Очистку кэша и временных файлов.
- Дефрагментацию жесткого диска (HDD).
- Выполнение скриптов.
- Отключение настольного ПК или ноутбука в заданное время.
Задача может быть выполнена не только в заданное время, но и при определенном условии. Например, при подключении к определенной сети Wi-Fi или отключении от неё. Активировать действие можем также по включению ноутбука или настольного ПК.
Выбираем тип задания из пункта «Действие», который находится в строке меню.
Простые задачи создаем при помощи программного мастера. Опыт показывает, что большинству начинающих пользователей данного функционала достаточно. В первом окне присваиваем заданию имя, а при необходимости добавляем описание.
Во втором задаем триггер — условие или периодичность выполнения действия. Например: раз в месяц или при старте ПК.
В третьем подтверждаем время.
В четвертом определяем, что именно надо будет сделать:
- открыть программу;
- отправить сообщение на email;
- уведомить пользователя.
В пятом предоставляем планировщику параметры. Например, местоположение исполняемого файла программы, которую надо открыть. Для навигации по диску можем воспользоваться кнопкой «Обзор».
А для обычной задачи придется вручную настраивать триггеры, действия, параметры и условия в соответствующих вкладках. Более гибкий инструмент для опытных пользователей.
Предположим, сразу после включения компьютера запускаем браузер. Автоматизируем процесс, чтобы выполнять вручную поменьше действий. Первым делом создаем задачу.
Далее перемещаемся по вкладкам окна свойств задачи для настройки параметров. Открываем «Общие» и присваиваем заданию имя. В данном примере: «Автозапуск браузера». В поле «Описание» можем уточнить, что будет происходить на компьютере. Данный шаг можно пропустить, если и так всё очевидно. Указываем для каких пользователей действие будет выполняться.
При необходимости устанавливаем выполнение с наивысшими правами, делаем задачу скрытой или обеспечиваем совместимость с прежними версиями ОС.
Теперь переходим к «Триггерам» и кликаем по «Создать…».
Из списка «Начать задачу:» выбираем условие, в данном примере — при входе в ОС. Если нужно, можем отложить выполнение на некоторое время — например, на 5 минут. Кликаем по «ОК».
Созданное условие появится в перечне триггеров.
Теперь открываем «Действия», где нажимаем кнопку «Создать…».
Из списка действий выберем «Запуск программы». Надо также указать местоположение исполняемого файла браузера (в данном случае: Opera). Например, скопируем из свойств ярлыка на рабочем столе. Опционально можем добавить аргументы. Например, URL сайта, который посещаем каждый раз при старте браузера. В нашем примере будет открыт «Блог системного администратора». Жмём «ОК».
Затем переходим к «Условиям». К примеру, можем указать, что задача будет выполнена лишь при питании от розетки или подключении к определенной сети.
В «Параметрах» уточняем дополнительные опции — при необходимости активируем или отключаем. Относятся к тому, как действовать при накладках и сбоях. Кликаем по «ОК» справа внизу — готово: задание создано.
Готово, запуск браузера добавлен в библиотеку утилиты.
Больше не требуется — удалим. Откройте «Библиотеку планировщика заданий», кликните по ненужной задаче правой кнопкой мыши. Выберите пункт «Удалить».
Нажмите «Да», чтобы подтвердить действие.
Теперь вы по аналогии сможете создать и удалить нужное задание в Windows.
Вы пользуйтесь ПО для автоматизации действий в Windows? Напишите в комментариях.
5
2
голоса
Рейтинг статьи
В рамках серии статей об инструментах администрирования Windows, которыми мало кто пользуется, но которые при этом могут быть очень полезными, сегодня расскажу об использовании планировщика заданий.
По идее, планировщик заданий Windows — это способ запустить какую-то программу или процесс при наступлении определенного времени или условий, однако его возможности этим не исчерпываются. Кстати, благодаря тому, что многие пользователи не знают об этом инструменте, удаление из автозагрузки вредоносных программ, которые умеют прописывать свой запуск в планировщике, оказывается более проблематичен, чем с теми, которые прописывают себя только в реестре.
Еще на тему администрирования Windows
- Администрирование Windows для начинающих
- Редактор реестра
- Редактор локальной групповой политики
- Работа со службами Windows
- Управление дисками
- Диспетчер задач
- Просмотр событий
- Планировщик заданий (эта статья)
- Монитор стабильности системы
- Системный монитор
- Монитор ресурсов
- Брандмауэр Windows в режиме повышенной безопасности
Запуск планировщика заданий
Как всегда, начну с того, как запустить планировщик заданий Windows из окна «Выполнить»:
- Нажмите клавиши Windows + R на клавиатуре
- В появившемся окне введите taskschd.msc
- Нажмите Ok или Enter (см. также: 5 способов открыть планировщик заданий в Windows 10, 8 и Windows 7).
Следующий способ, который будет работать в Windows 10, 8 и в Windows 7 — зайти в папку «Администрирование» панели управления и запустить планировщик заданий оттуда.
Использование планировщика заданий
Планировщик заданий имеет примерно тот же интерфейс, что и другие инструменты администрирования — в левой части древовидная структура папок, по центру — информация о выбранном элементе, справа — основные действия над задачами. Доступ к этим же действиям можно получить из соответствующего пункта главного меню (При выборе конкретной задачи или папки пункты меню меняются на относящиеся к выбранному элементу).
Основные действия в планировщике заданий
В данном инструменте вам доступны следующие действия над задачами:
- Создать простую задачу — создание задания с помощью встроенного мастера.
- Создать задачу — то же, что и в предыдущем пункте, но с ручной настройкой всех параметров.
- Импортировать задачу — импорт ранее созданной задачи, которую вы экспортировали. Может пригодиться, если вам нужно настроить выполнение определенного действия на нескольких компьютерах (например, запуск проверки антивирусом, блокировка сайтов и прочее).
- Отображать все выполняемые задачи — позволяет посмотреть список всех задач, которые запущены в настоящий момент времени.
- Включить журнал всех заданий — позволяет включить и отключить ведение журнала планировщика заданий (записывает все действия, запускаемые планировщиком).
- Создать папку — служит для создания собственных папок в левой панели. Можно использовать для собственного удобства, чтобы было понятно, что и где вы создали.
- Удалить папку — удаление папки, созданной в предыдущем пункте.
- Экспорт — позволяет экспортировать выбранную задачу для последующего использования на других компьютерах или на этом же, например, после переустановки ОС.
Кроме этого, вы можете вызвать список действий, кликнув правой кнопкой мыши по папке или задаче.
Кстати, если у вас есть подозрения на наличие вредоносного ПО, рекомендую заглянуть в список всех выполняемых задач, это может оказаться полезным. Также будет полезным включить журнал заданий (по умолчанию отключен), и заглянуть в него после пары перезагрузок, чтобы посмотреть, какие задания выполнялись (для просмотра журнала используйте вкладку «Журнал», выбрав папку «Библиотека планировщика заданий»).
В планировщике заданий уже присутствует большое количество задач, которые необходимы для работы самой Windows. Например, автоматическая очистка жесткого диска от временных файлов и дефрагментация диска, автоматическое обслуживание и проверка компьютера во время простоя и другие.
Создание простой задачи
Теперь давайте посмотрим, как создать простую задачу в планировщике заданий. Это самый легкий способ для начинающих пользователей, который не требует особенных навыков. Итак, выбираем пункт «Создать простую задачу».
На первом экране вам потребуется ввести имя задачи и, при желании, ее описание.
Следующий пункт — выбрать, когда будет выполняться задание: можно выполнять ее по времени, при входе в Windows или включении компьютера, или же по возникновению какого-либо события в системе. При выборе одного из пунктов, вам также предложат задать время выполнения и другие детали.
И последний этап, выбрать, какое именно действие будет выполняться — запуск программы (к ней можно добавить аргументы), вывод сообщения или отправка сообщения электронной почты.
Создание задачи без использования мастера
Если вам требуется более точная настройка задач в планировщике заданий Windows, нажмите «Создать задачу» и вас ждет множество параметров и опций.
Я не буду подробно описывать полный процесс создания задачи: в общем-то, в интерфейсе все достаточно ясно. Отмечу лишь существенные отличия по сравнению с простыми задачами:
- На вкладке «Триггеры» вы можете задать сразу несколько параметров для ее запуска — например, при простое и при блокировке компьютера. Также, при выборе пункта «По графику», вы можете настроить выполнение в определенные числа месяца или дни недели.
- На вкладке «Действие» вы можете определить запуск сразу нескольких программ или выполнения других действий на компьютере.
- Также вы можете настроить выполнение задачи при простое компьютера, только при питании от розетки и другие параметры.
Несмотря на то, что различных опций большое количество, думаю, в них не составит труда разобраться — все они называются достаточно ясно и означают именно то, о чем сообщают в названии.
Надеюсь, что кому-то изложенное сможет пригодиться.