Закрепление через планировщик задач не ново, за отслеживание изменений в тасках отвечают события 4698-4702.
Однако если поиграться с записями в реестре, можно скрыть ранее созданную таску через удаление записи SD (Security Descriptor) или манипуляцию Index:
- Если удалить SD, то таска пропадет из списка стандартных инструментов, но продолжит работу. SD определяет права доступа к таске.
- Если установить Index в значение 0x0, то она не только пропадет из списка, но и её можно изменить через
schtasks /change /tr без создания события изменения (4702) и удаления (4699)Для всех таких манипуляций нам необходимы права системы.
Если копнуть еще дальше, то можно создавать задачи через реестр и не создавать типовые события. Пока я разбирался как это сделать, как обычно уже кто-то умный сделал это)
Функционал реализован в https://github.com/netero1010/GhostTask:
- Создание скрытых задач без генерации событий
- Изменение существующих задач без генерации событий
- Удаленное и локальное выполнение
- Выполнение в контексте C2 через исполнение PE в памяти (memexec)
Например, если мы хотим создать задачу, которая будет выполняться от имени Administrator каждую минуту:
GhostTask.exe localhost add beaver "cmd.exe" "/c notepad.exe" Beaver.lab\Administrator second 60
Ссылки:
- [2022] Оригинальный ресерч про создание таски через реестр: https://labs.withsecure.com/publications/scheduled-task-tampering
- [2023] Статья на русском про скрытие и детект событий в планировщике через ETW: https://habr.com/ru/companies/rvision/articles/723050/
- [2024] Статья про скрытие через SD и детект подобного поведения: https://www.binarydefense.com/resources/blog/diving-into-hidden-scheduled-tasks/
- [2022] Статья про скрытие через Index: https://blog.qualys.com/vulnerabilities-threat-research/2022/06/20/defending-against-scheduled-task-attacks-in-windows-environments

