# DS0003 — Scheduled Job
## Descrição
Tarefas agendadas são mecanismos do sistema operacional que permitem a execução automática de processos em horários definidos ou em resposta a eventos específicos. No Windows, isso inclui o **Task Scheduler** e o serviço **BITS (Background Intelligent Transfer Service)**. No Linux e macOS, os principais mecanismos são o **Cron daemon**, **at**, **systemd timers** e **launchd**. Em ambientes de contêineres, cronjobs do Kubernetes representam o equivalente.
Adversários utilizam tarefas agendadas extensivamente como mecanismo de persistência e execução, pois elas sobrevivem a reinicializações do sistema, executam com privilégios elevados quando configuradas corretamente, e se misturam facilmente com tarefas legítimas do sistema e de aplicações. Uma tarefa maliciosa pode parecer indistinguível de uma rotina de backup ou atualização de software sem monitoramento adequado.
A visibilidade sobre criação, modificação e execução de tarefas agendadas é, portanto, fundamental para detectar implantação de persistência pós-comprometimento. Esta fonte de dados cobre desde a criação inicial de uma tarefa até sua modificação furtiva e execução, fornecendo sinais críticos para caçadores de ameaças e analistas de SOC em qualquer estágio da cadeia de ataque.
## Visão Geral
**Principais gaps identificados:**
1. **Ausência de baseline de tarefas agendadas:** Sem um inventário das tarefas legítimas, é impossível distinguir o que é normal do que é malicioso. A maioria das organizações brasileiras nunca criou esse baseline.
2. **BITS ignorado nos SIEMs:** O serviço BITS é frequentemente ignorado por analistas. Grupos como LockBit e Black Basta o utilizam para download de payloads secundários, passando despercebidos em ambientes sem coleta de logs BITS.
3. **Cobertura de cron no Linux:** Em servidores Linux, o monitoramento de cron é raramente implementado em organizações de médio porte. Implantes em `/etc/cron.d/` ou `/var/spool/cron/` são um método favorito de persistência em ambientes Linux comprometidos no Brasil.
4. **Kubernetes CronJobs sem auditoria:** Com a adoção crescente de containers no Brasil, poucos ambientes Kubernetes têm audit logging configurado para recursos do tipo `batch/cronjobs`, criando blind spot em infraestruturas cloud-native.
5. **Recomendações para contexto LATAM:**
- Habilitar o log operacional do Task Scheduler via GPO como prioridade imediata (custo zero)
- Criar e manter baseline de tarefas agendadas com hash dos executáveis associados
- Implementar alert para tarefas criadas fora da janela de mudanças aprovadas
- Auditar regularmente `/var/spool/cron/` e `/etc/cron.d/` em servidores Linux críticos
## Pipeline de Coleta
```mermaid
graph TB
A["🗓️ Task Scheduler / BITS<br/>Windows — XML de tarefas"] --> C["📋 TaskScheduler/Operational<br/>EID 106·140·200 (desabilitado!)"]
B["⏰ Cron / systemd timers<br/>Linux · macOS · Kubernetes"] --> D["🔍 Auditd<br/>/etc/cron.d · /var/spool/cron"]
C --> E["📡 WEF / Sysmon EID 1<br/>Coleta e correlação"]
D --> E
E --> F["🗄️ SIEM<br/>Sentinel · Splunk · Wazuh"]
F --> G["🚨 Alerta<br/>Nova tarefa fora de janela<br/>de mudança aprovada"]
```
## Componentes de Dados
| Componente | ID | Descrição |
|---|---|---|
| Scheduled Job Creation | [[dc0001-scheduled-job-creation\|DC0001]] | Criação de novas tarefas agendadas no sistema |
| Scheduled Job Metadata | [[dc0005-scheduled-job-metadata\|DC0005]] | Atributos e configurações de tarefas existentes |
| Scheduled Job Modification | [[dc0012-scheduled-job-modification\|DC0012]] | Alteração em tarefas agendadas existentes — alto risco |
## Como Coletar
### Windows — Task Scheduler e BITS
**Event IDs do Task Scheduler:**
| Event ID | Log | Descrição | Prioridade |
|---|---|---|---|
| 106 | Microsoft-Windows-TaskScheduler/Operational | Nova tarefa registrada | Alta |
| 140 | Microsoft-Windows-TaskScheduler/Operational | Tarefa atualizada/modificada | Alta |
| 141 | Microsoft-Windows-TaskScheduler/Operational | Tarefa excluída | Média |
| 200 | Microsoft-Windows-TaskScheduler/Operational | Tarefa executada | Alta |
| 201 | Microsoft-Windows-TaskScheduler/Operational | Tarefa concluída | Baixa |
**Habilitar log do Task Scheduler (desabilitado por padrão):**
```powershell
# Via PowerShell — habilitar log operacional do Task Scheduler
$log = New-Object System.Diagnostics.Eventing.Reader.EventLogConfiguration `
"Microsoft-Windows-TaskScheduler/Operational"
$log.IsEnabled = $true
$log.SaveChanges()
```
**BITS (Background Intelligent Transfer Service):**
- Event IDs: 3, 4, 59, 60 no log `Microsoft-Windows-Bits-Client/Operational`
- Focar em jobs BITS que fazem download de URLs externas ou executam scripts pós-download
**Sysmon — monitoramento de Task Scheduler:**
- Event ID 1 (Process Creation) com `ParentImage` = `taskeng.exe` ou `svchost.exe` com serviço Schedule
- Event ID 11 (FileCreate) em `C:\Windows\System32\Tasks\` — criação de arquivo XML de tarefa
**Auditoria do arquivo de tarefas via PowerShell:**
```powershell
# Listar todas as tarefas com seus executáveis para baseline
Get-ScheduledTask | Where-Object {$_.State -ne "Disabled"} |
Select-Object TaskName, TaskPath, @{N="Execute";E={$_.Actions.Execute}} |
Export-Csv scheduled-tasks-baseline.csv
```
### Linux — Cron, at e systemd Timers
**Monitoramento via Auditd:**
```bash
# Regras auditd para cron e at
-w /etc/cron.d/ -p wa -k cron_modification
-w /etc/cron.daily/ -p wa -k cron_modification
-w /etc/cron.weekly/ -p wa -k cron_modification
-w /etc/crontab -p wa -k cron_modification
-w /var/spool/cron/ -p wa -k user_cron_modification
-w /etc/at.allow -p wa -k at_modification
-w /etc/at.deny -p wa -k at_modification
-w /var/spool/at/ -p wa -k at_job_creation
# systemd timers
-w /etc/systemd/system/ -p wa -k systemd_timer_modification
-w /usr/lib/systemd/system/ -p wa -k systemd_timer_modification
```
**Logs do sistema:**
- `/var/log/cron` (RHEL/CentOS) ou `/var/log/syslog` (Debian/Ubuntu) para execuções cron
- `journalctl -u crond` ou `journalctl -u cron` para análise em tempo real
### Containers (Kubernetes CronJobs)
**Auditoria via Kubernetes Audit Log:**
```yaml
# kubernetes-audit-policy.yaml — capturar CronJob events
- level: Request
resources:
- group: "batch"
resources: ["cronjobs", "jobs"]
verbs: ["creaté", "updaté", "patch", "delete"]
```
### SIEM — Integração
| SIEM | Fonte de Dados | Observações |
|---|---|---|
| **Microsoft Sentinel** | `SecurityEvent`, `Sysmon` (via MMA/AMA), `DeviceEvents` (MDE) | KQL query: `DeviceEvents | where ActionType == "ScheduledTaskCreated"` |
| **Splunk** | `index=wineventlog source="*TaskScheduler*"` + Sysmon TA | Splunk ES tem correlation rule nativa para tarefas suspeitas |
| **Elastic** | Winlogbeat + módulo Security para Task Scheduler events | Detecção de tarefas em pastas incomuns via EQL |
| **Wazuh** | Módulo `audit` no Linux + decodificador Windows Task Scheduler | Solução open-source viável para contexto LATAM |
## Técnicas Detectadas
| Técnica | Descrição |
|---|---|
| [[t1053-scheduled-task-job\|T1053 — Scheduled Task/Job]] | Persistência e execução via tarefas agendadas — técnica principal coberta |
| [[t1053-005-scheduled-task\|T1053.005 — Scheduled Task]] | Tarefas do Windows Task Scheduler criadas por adversários |
| [[t1053-003-cron\|T1053.003 — Cron]] | Jobs Cron maliciosos em Linux/macOS |
| [[t1197-bits-jobs\|T1197 — BITS Jobs]] | Abuso do BITS para download e execução persistente |
| [[t1059-command-and-scripting-interpreter\|T1059 — Command and Scripting Interpreter]] | Frequentemente combinado com tarefas agendadas para executar scripts |
## Gaps de Cobertura Brasil/LATAM
**Lacunas mais comuns em organizações brasileiras:**
> [!warning] Gap Crítico — Log do Task Scheduler Desabilitado por Padrão
> O log operacional do Windows Task Scheduler (`Microsoft-Windows-TaskScheduler/Operational`) vem **desabilitado por padrão** em todas as versões do Windows. A maioria das organizações nunca o habilitou, tornando invisível qualquer persistência via tarefa agendada — uma das técnicas mais usadas por ransomware e grupos APT.
## Referências
- [[_application\|Data Components — Application]] — DC0001, DC0005, DC0012
- [[m1047-audit\|M1047 — Audit]] — auditoria regular de tarefas agendadas como controle preventivo
- [[m1018-user-account-management\|M1018 — User Account Management]] — restrição de quem pode criar tarefas agendadas
- [[t1053-scheduled-task-job\|T1053 — Scheduled Task/Job]] — técnica primária coberta por esta fonte
- [[t1197-bits-jobs\|T1197 — BITS Jobs]] — abuso de BITS para execução e download
- [[m1028-operating-system-configuration\|M1028 — Operating System Configuration]] — hardening de permissões do Task Scheduler
---
*Fonte: [MITRE ATT&CK — DS0003](https://attack.mitre.org/datasources/DS0003)*