Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/netero1010/schedulerunner
Механизмы персистентностиОбход IDS/IPSЛатеральное перемещениеПост-эксплуатацияRed Teaming
GitHubnetero1010/schedulerunner

ScheduleRunner

Инструмент на C# с большей гибкостью для настройки запланированных задач как для сохранения постоянства (persistence), так и для латерального перемещения в ходе операций красной команды.

Репозиторий
3474851 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

ScheduleRunner - Инструмент на C# с большей гибкостью для настройки запланированных задач для обеспечения персистентности и бокового перемещения в операциях red team


Запланированная задача — одна из самых популярных атакующих техник за последнее десятилетие, и сейчас она всё ещё широко используется хакерами/участниками red team для обеспечения персистентности и бокового перемещения.

Ряд инструментов на C# уже был разработан для симуляции атаки с использованием запланированных задач. Я экспериментировал с некоторыми из них, но каждый имеет свои ограничения в настройке запланированных задач. Поэтому этот проект направлен на создание инструмента на C# (совместимого с CobaltStrike execute-assembly), который включает необходимые мне возможности и обеспечивает достаточную гибкость при настройке запланированных задач.

Скриншот:

HowTo

Методы (/method):

МетодФункция
createСоздать новую запланированную задачу
deleteУдалить существующую запланированную задачу
runВыполнить существующую запланированную задачу
queryЗапросить подробности о запланированной задаче или обо всех запланированных задачах в папке
queryfoldersЗапросить все подпапки в запланированных задачах
moveВыполнить боковое перемещение с помощью запланированной задачи (автоматически создать, выполнить и удалить)

Параметры для создания запланированной задачи (/method:create):

[*] обязательные поля.

Параметры для удаления запланированной задачи (/method:delete):

[*] обязательные поля.

Параметры для выполнения запланированной задачи (/method:run):

МетодФункция
[*] /tasknameУкажите имя запланированной задачи
/folderУкажите папку, где хранится запланированная задача (по умолчанию: \)
/remoteserverУкажите имя хоста или IP-адрес удаленного компьютера

[*] обязательные поля.

Параметры для запроса запланированной задачи (/method:query):

МетодФункция
/tasknameУкажите имя запланированной задачи
/folderУкажите папку, где хранится запланированная задача (по умолчанию: \)
/remoteserverУкажите имя хоста или IP-адрес удаленного компьютера

[*] обязательные поля.

Параметры для бокового перемещения запланированной задачи (/method:move):

[*] обязательные поля.

Пример

Создать запланированную задачу с именем "Cleanup", которая будет выполняться каждый день в 23:30.

ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:daily /starttime:23:30 /program:calc.exe /description:"Some description" /author:netero1010

Создать запланированную задачу с именем "Cleanup", которая будет выполняться каждые 4 часа на удаленном сервере

ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:hourly /modifier:4 /program:rundll32.exe /argument:c:\temp\payload.dll /remoteserver:TARGET-PC01

Удалить запланированную задачу с именем "Cleanup"

ScheduleRunner.exe /method:delete /taskname:Cleanup

Выполнить запланированную задачу с именем "Cleanup"

ScheduleRunner.exe /method:run /taskname:Cleanup

Запросить подробности о запланированной задаче с именем "Cleanup" в папке "\Microsoft\Windows\CertificateServicesClient" на удаленном сервере

ScheduleRunner.exe /method:query /taskname:Cleanup /folder:\Microsoft\Windows\CertificateServicesClient /remoteserver:TARGET-PC01

Запросить все запланированные задачи в указанной папке "\Microsoft\Windows\CertificateServicesClient" на удаленном сервере

ScheduleRunner.exe /method:query /folder:\Microsoft\Windows\CertificateServicesClient /remoteserver:TARGET-PC01

Запросить все подпапки в запланированных задачах

ScheduleRunner.exe /method:queryfolders

Выполнить боковое перемещение с помощью запланированной задачи на удаленный сервер, используя указанную учетную запись

ScheduleRunner.exe /method:move /taskname:Demo /remoteserver:TARGET-PC01 /program:rundll32.exe /argument:c:\temp\payload.dll /user:netero1010

Создать запланированную задачу с именем "Cleanup" с использованием техники скрытия запланированной задачи:

ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:daily /starttime:23:30 /program:calc.exe /description:"Some description" /author:netero1010 /technique:hide

Удалить запланированную задачу с именем "Cleanup", которая была создана с использованием техники скрытия запланированной задачи:

ScheduleRunner.exe /method:delete /taskname:Cleanup /technique:hide

Техника скрытия запланированной задачи

Эта техника использовалась угрозой - HAFNIUM и недавно была обнаружена Microsoft. Она направлена на то, чтобы сделать запланированную задачу недоступной для запросов инструментами и невидимой для планировщика задач.

Для использования этой техники требуются права "NT AUTHORITY\SYSTEM", и ScheduleRunner сделает следующее:

  1. Удалить значение "SD" из "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree[task name]"
  2. Удалить файл XML запланированной задачи "C:\Windows\System32\Tasks[task name]"

Чтобы удалить запланированную задачу, созданную с помощью этой техники, необходимо добавить "/technique:hide" в метод delete для корректного удаления.

Недостаток этой техники:

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

Демонстрация

HowTo

Используемые библиотеки и ссылки:

БиблиотекаСсылка
TaskSchedulerhttps://github.com/dahall/TaskScheduler
СсылкаСсылка
SharpPersisthttps://github.com/mandiant/SharPersist
Техника скрытия запланированной задачиhttps://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/
Скачать инструмент
МетодФункция
[*] /tasknameУкажите имя запланированной задачи
[*] /programУкажите программу, которую выполняет задача
[*] /triggerУкажите тип расписания. Допустимые значения: "minute", "hourly", "daily", "weekly", "onstart", "onlogon" и "onidle"
/modifierУкажите, как часто задача выполняется в рамках своего типа расписания. Применимо только для таких типов расписания, как "minute" (например, 1-1439 минут), "hourly" (например, 1-23 часа) и "weekly" (например, mon,sat,sun)
/starttimeУкажите время начала для ежедневного типа расписания (например, 23:30)
/argumentУкажите аргумент командной строки для программы
/folderУкажите папку, где хранится запланированная задача (по умолчанию: \)
/workingdirУкажите рабочий каталог, в котором будет выполняться запланированная задача
/authorУкажите автора запланированной задачи
/descriptionУкажите описание запланированной задачи
/remoteserverУкажите имя хоста или IP-адрес удаленного компьютера
/userЗапустить задачу от имени указанной учетной записи
/techniqueУкажите технику обхода:
- "hide": Техника, используемая вредоносным ПО HAFNIUM, которая скрывает запланированную задачу от запроса задач

[!] https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/
[!] Эта техника не поддерживает удаленное выполнение из-за привилегий удаленного реестра. Требуются права "NT AUTHORITY\SYSTEM", и задача будет продолжать выполняться до перезагрузки системы даже после удаления задачи
МетодФункция
[*] /tasknameУкажите имя запланированной задачи
/folderУкажите папку, где хранится запланированная задача (по умолчанию: \)
/remoteserverУкажите имя хоста или IP-адрес удаленного компьютера
/techniqueУкажите, когда запланированная задача была создана с использованием техники обхода:
- "hide": Удалить запланированную задачу, созданную с помощью техники "скрытие запланированной задачи"

[!] Для удаления требуются права "NT AUTHORITY\SYSTEM", и задача будет продолжать выполняться до перезагрузки системы даже после удаления задачи
МетодФункция
[*] /tasknameУкажите имя запланированной задачи
[*] /programУкажите программу, которую выполняет задача
[*] /remoteserverУкажите имя хоста или IP-адрес удаленного компьютера
/triggerУкажите тип расписания. Допустимые значения: "minute", "hourly", "daily", "weekly", "onstart", "onlogon" и "onidle"
/modifierУкажите, как часто задача выполняется в рамках своего типа расписания. Применимо только для таких типов расписания, как "minute" (например, 1-1439 минут), "hourly" (например, 1-23 часа) и "weekly" (например, mon,sat,sun)
/starttimeУкажите время начала для ежедневного типа расписания (например, 23:30)
/argumentУкажите аргумент командной строки для программы
/folderУкажите папку, где хранится запланированная задача (по умолчанию: \)
/workingdirУкажите рабочий каталог, в котором будет выполняться запланированная задача
/authorУкажите автора запланированной задачи
/descriptionУкажите описание запланированной задачи
/userЗапустить задачу от имени указанной учетной записи