# 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)*