# DC0018 - Scheduled Task/Job Creation
> [!info] Monitora o estabelecimento de tarefas agendadas em Windows, Linux e macOS. Um dos mecanismos de persistência mais frequentemente abusados — sobrevivem a reinicializações e executam com privilégios elevados.
## Descrição
Scheduled Task/Job Creation monitora o estabelecimento de tarefas agendadas ou jobs que serão executados automaticamente em momentos predefinidos ou mediante gatilhos específicos. Tarefas agendadas são um dos mecanismos de persistência mais frequentemente abusados por adversários e ransomware, pois sobrevivem a reinicializações, executam com privilégios elevados e são frequentemente ignoradas por monitoramento menos sofisticado. Cobrem Windows Task Scheduler, cron (Linux/macOS), at, systemd timers e similares.
## Fonte de Dados
Parent: [[ds0003-scheduled-job|DS0003 - Scheduled Job]]
## Pipeline de Detecção
```mermaid
graph TB
A["⏰ Event ID 4698<br/>Tarefa Criada"] --> B["📋 TaskContent +<br/>Trigger Capturados"]
B --> C{"👤 Quem<br/>Criou?"}
C -->|Usuário não-admin| D["🚨 Alerta P1<br/>Escalação de Privilégio"]
C -->|Conta de Serviço| E{"📁 Action Path<br/>Suspeito?"}
E -->|Temp/AppData| F["🚨 Alerta P1<br/>Payload Suspeito"]
E -->|Caminho Normal| G["📋 Verificar<br/>Contexto"]
C -->|Admin Fora do Horário| H["🟧 Alerta P2<br/>Hora Suspeita"]
classDef p1 fill:#e74c3c,color:#ecf0f1
classDef p2 fill:#e67e22,color:#ecf0f1
classDef ok fill:#2c3e50,color:#ecf0f1
class D,F p1
class G,H p2
class A,B,C,E ok
```
## O Que Monitorar
- Windows Event ID 4698 (Tarefa agendada criada)
- Sysmon Event ID 11 - arquivo XML criado em `C:\Windows\System32\Tasks\`
- Criação de tasks por usuários não administrativos
- Tasks apontando para executáveis em `%TEMP%`, `%APPDATA%` ou rede
- Tasks com triggers de logon ou inicialização (persistência clássica)
- Uso de `schtasks.exe /create` em linha de comando suspeita
- Cron jobs adicionados em `/etc/cron*` ou crontab de usuários de serviço
- Tasks criadas remotamente via WMI ou COM (Task Scheduler COM object)
## Técnicas Detectadas
| Técnica | ID | Como Detectar |
|---------|-----|---------------|
| Scheduled Task | [[t1053-scheduled-task-job\|T1053.005]] | Event 4698 ou XML em System32\Tasks com payload suspeito |
| Cron | [[t1053-scheduled-task-job\|T1053.003]] | Modificações em /etc/cron* ou crontab fora de manutenção |
| At | [[t1053-scheduled-task-job\|T1053.002]] | Uso do comando at (depreciado, mas ainda funcional) |
| Systemd Timers | [[t1053-scheduled-task-job\|T1053.006]] | Criação de .service e .timer units em /etc/systemd/ |
## Implementação
**Habilitar auditoria de tarefas agendadas:**
```
Computer Configuration > Windows Settings > Security Settings >
Advanced Audit Policy > Object Access > Audit Other Object Access Events
```
**SIEM - tarefas criadas por usuários comuns:**
```
index=windows EventCode=4698
| where SubjectUserName!="SYSTEM" AND SubjectUserName!="Administrator"
| stats count by TaskName, SubjectUserName, ComputerName, TaskContent
```
**Linux - monitorar cron via auditd:**
```
-w /etc/crontab -p wa -k cron_change
-w /var/spool/cron -p wa -k cron_change
```
**Ferramentas:** Sysmon, Windows Event Log, auditd (Linux), Microsoft Defender for Endpoint, CrowdStrike Falcon, Wazuh.
## Consultas KQL — Microsoft Sentinel / Defender
### Task Criada com Payload em Local Suspeito
```kql
// DC0018 - Tarefa agendada criada com executável em caminho suspeito
SecurityEvent
| where TimeGenerated > ago(1d)
| where EventID == 4698
| extend
TaskXML = tostring(EventData),
TaskName = tostring(extract(@"TaskName:\s*([^\n]+)", 1, tostring(EventData)))
| where TaskXML has_any (
"AppData",
"\\Temp\\",
"\\Users\\Public\\",
"powershell",
"cmd.exe",
"wscript",
"mshta"
)
| project
TimeGenerated,
Computer,
TaskName,
SubjectUserName,
SubjectDomainName,
TaskXML = substring(TaskXML, 0, 1000)
| order by TimeGenerated desc
```
### Tarefas Criadas por Conta Não Administrativa
```kql
// DC0018 - Tarefa criada por usuário sem permissão administrativa usual
DeviceEvents
| where Timestamp > ago(7d)
| where ActionType == "ScheduledTaskCreated"
| where InitiatingProcessAccountSid !startswith "S-1-5-18" // Não SYSTEM
| where InitiatingProcessAccountSid !startswith "S-1-5-32-544" // Não Admins
| where InitiatingProcessFileName !in~ (
"msiexec.exe", "setup.exe", "svchost.exe"
)
| extend
TaskInfo = parse_json(AdditionalFields)
| project
Timestamp,
DeviceName,
InitiatingProcessAccountName,
InitiatingProcessFileName,
InitiatingProcessCommandLine,
TaskInfo
| order by Timestamp desc
```
## Contexto LATAM
> [!latam] Relevância Regional
> **Tarefas agendadas são a segunda técnica de persistência mais comum em incidentes no Brasil.** O relatório ISH Tecnologia 2024 identificou tarefas agendadas em 71% dos casos de ransomware investigados em empresas brasileiras. Grupos como **Medusa Ransomware** e **Play Ransomware** (ativos na região) utilizam `schtasks.exe` para criar tarefas de execução periódica que re-executam o payload caso o processo seja encerrado. No Brasil, onde ambientes Active Directory frequentemente têm políticas de auditoria incompletas, o **Event ID 4698 pode não estar habilitado** em grande parte dos endpoints — tornando este gap uma prioridade de hardening para SOCs brasileiros.
## Referências
- [MITRE ATT&CK - DS0003 Scheduled Job](https://attack.mitre.org/datasources/DS0003/)
- [Windows Event ID 4698 - Task Scheduled](https://learn.microsoft.com/en-us/windows/security/threat-protection/auditing/event-4698)
- [Scheduled Task Abuse - Red Canary](https://redcanary.com/blog/)
- [ISH Tecnologia Relatório 2024](https://www.ish.com.br/blog)