# Hunting - Persistência via Tarefas Agendadas > [!high] Persistência Silenciosa > Tarefas agendadas ([[t1053-005-scheduled-task|T1053.005]]) são utilizadas por mais de 62 grupos de ameaça para manter acesso persistente a sistemas comprometidos. Por serem um mecanismo legítimo do Windows, frequentemente passam despercebidas por equipes de segurança. ## Visão Geral A criação de [[t1053-005-scheduled-task|tarefas agendadas]] é uma das técnicas de persistência mais utilizadas por adversários modernos. Diferente de métodos mais ruidosos como serviços ou drivers, tarefas agendadas oferecem flexibilidade para execução em intervalos regulares, elevação de privilégio (SYSTEM) e sobrevivência a reinicializações - tudo usando ferramentas nativas do sistema operacional. Adversários criam tarefas usando `schtasks.exe`, COM objects, ou PowerShell (`Register-ScheduledTask`), frequentemente com nomes que imitam tarefas legítimas do Windows Update, Defender ou outras ferramentas do sistema. A detecção eficaz requer combinar Event IDs específicos (4698 para criação de tarefa) com análise de contexto: quem criou, qual executável será disparado, e se o caminho é incomum. Em ambientes Linux, o equivalente via [[t1053-003-cron|cron jobs]] segue a mesma lógica: adversários adicionam entradas em crontabs para executar reverse shells ou baixar payloads periodicamente. > [!latam] Impacto Regional > Banking trojans brasileiros como **Grandoreiro** e **Casbaneiro** utilizam tarefas agendadas como mecanismo primário de persistência. Em campanhas recentes documentadas pela ESET e Kaspersky, tarefas são criadas com nomes como "WindowsUpdateService" ou "AdobeFlashUpdate" apontando para executáveis em pastas temporárias. SOCs brasileiros devem monitorar criação de tarefas com caminhos fora de `C:\Windows\` e `C:\Program Files\`. --- ## Hipóteses de Hunting | # | Hipótese | Indicador | Confiança | |---|----------|-----------|-----------| | H1 | Adversários criam tarefas com executáveis em caminhos incomuns | Ação apontando para `%TEMP%`, `%APPDATA%`, `Downloads`, `ProgramData` | Alta | | H2 | Tarefas criadas por processos não-administrativos indicam comprometimento | `schtasks.exe` filho de `cmd.exe`/`powershell.exe` sem contexto de GPO | Média-Alta | | H3 | Tarefas com comandos codificados em Base64 são maliciosas | Ação contendo `-enc` ou `-EncodedCommand` | Alta | | H4 | Tarefas criadas fora do horário comercial indicam atividade automatizada | Criação entre 22h-06h sem correlação com manutenção programada | Média | | H5 | Nomes de tarefas imitando software legítimo indicam evasão | "WindowsUpdate", "GoogleUpdate", "AdobeFlash" sem correspondência real | Alta | --- ## Fluxo de Hunting ```mermaid graph TB H["Hipótese:<br/>Persistência via Tasks"] --> C1["Coletar Event ID 4698<br/>Criação de Tarefas"] C1 --> F1["Filtrar Caminhos<br/>Incomuns"] C1 --> F2["Filtrar Nomes<br/>Imitadores"] F1 --> A1["Analisar Executável<br/>e Argumentos"] F2 --> A2["Comparar com<br/>Baseline de Tarefas"] A1 --> V{"Malicioso?"} A2 --> V V -->|Sim| R["Escalar para<br/>Resposta a Incidentes"] V -->|Não| B["Adicionar ao<br/>Baseline Legítimo"] ``` **Legenda:** [[t1053-005-scheduled-task|T1053.005]] - [[t1547-001-registry-run-keys|T1547.001]] - [[ds0003-scheduled-job|DS0003]] --- ## Fase 1 - Detecção > [!warning] Aviso sobre as queries abaixo > As queries são exemplos e pontos de partida. Devem ser adaptadas ao schema e fontes de dados do seu ambiente. Ambientes corporativos podem ter centenas de tarefas legítimas - construir um baseline antes de caçar anomalias. ### H1 - Tarefas com Caminhos Suspeitos #### Microsoft Sentinel (KQL) ```kql // Tarefas agendadas criadas com executáveis em caminhos incomuns SecurityEvent | where EventID == 4698 // Task created | parse EventData with * '<Data Name="TaskContent">' TaskXml '</Data>' * | where TaskXml has_any ( "\\AppData\\", "\\Temp\\", "\\Downloads\\", "\\ProgramData\\", "\\Users\\Public\\", "\\Recycle") | where TaskXml !has "Microsoft\\Windows" // Excluir tarefas nativas | parse TaskXml with * '<Exec>' * '<Command>' ActionPath '</Command>' * '</Exec>' * | project TimeGenerated, Computer, Account, TaskXml, ActionPath | order by TimeGenerated desc ``` Tabela(s): `SecurityEvent` (Windows Security Log) #### Splunk SPL ```spl index=wineventlog EventCode=4698 | spath input=EventData_Xml output=TaskContent path=EventData.Data{@Name="TaskContent"} | search TaskContent="*\\AppData\\*" OR TaskContent="*\\Temp\\*" OR TaskContent="*\\Downloads\\*" OR TaskContent="*\\ProgramData\\*" OR TaskContent="*\\Users\\Public\\*" | table _time, Computer, Account_Name, TaskContent | sort - _time ``` Fonte de dados: Windows Security Event ID 4698, [[ds0003-scheduled-job|DS0003 - Scheduled Job]] ### H2 - Tarefas Criadas por Processos Suspeitos #### Microsoft Sentinel (KQL) ```kql // schtasks.exe invocado por PowerShell ou cmd.exe fora de GPO DeviceProcessEvents | where FileName =~ "schtasks.exe" | where ProcessCommandLine has "/create" | where InitiatingProcessFileName in~ ("powershell.exe", "pwsh.exe", "cmd.exe", "wscript.exe", "cscript.exe") | where InitiatingProcessCommandLine !has "GPO" and InitiatingProcessCommandLine !has "SCCM" | project Timestamp, DeviceName, AccountName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine | order by Timestamp desc ``` #### Splunk SPL ```spl index=sysmon EventCode=1 Image="*\\schtasks.exe" CommandLine="*/create*" (ParentImage="*\\powershell.exe" OR ParentImage="*\\cmd.exe" OR ParentImage="*\\wscript.exe" OR ParentImage="*\\cscript.exe") | table _time, Computer, User, CommandLine, ParentImage, ParentCommandLine | sort - _time ``` ### H5 - Nomes de Tarefas Imitadores #### Microsoft Sentinel (KQL) ```kql // Tarefas com nomes que imitam software legítimo SecurityEvent | where EventID == 4698 | parse EventData with * '<Data Name="TaskName">' TaskName '</Data>' * | where TaskName matches regex @"(?i)(windows.?update|google.?update|adobe.?flash|chrome.?update|defender.?scan|onedrive.?sync)" | parse EventData with * '<Data Name="TaskContent">' TaskXml '</Data>' * | parse TaskXml with * '<Command>' ActionPath '</Command>' * | where ActionPath !startswith "C:\\Program Files" and ActionPath !startswith "C:\\Windows" | project TimeGenerated, Computer, Account, TaskName, ActionPath | order by TimeGenerated desc ``` --- ## Fase 2 - Triagem e Investigação ### Perguntas-chave a responder - [ ] A tarefa aponta para um executável legítimo ou desconhecido? - [ ] O hash do executável aparece em feeds de IOC? - [ ] Quando foi a primeira execução da tarefa? - [ ] Há outras tarefas similares em outros hosts (indicando campanha)? - [ ] O usuário que criou a tarefa deveria ter esse privilégio? ### Inventário de tarefas no host suspeito ```kql // Listar TODAS as tarefas em um host para comparar com baseline DeviceRegistryEvents | where DeviceName == "HOSTNAME_AQUI" | where RegistryKey startswith @"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree" | project Timestamp, RegistryKey, RegistryValueName, RegistryValueData | order by Timestamp desc ``` ```spl | from datamodel:Endpoint.Registry | search dest="HOSTNAME_AQUI" registry_path="*Schedule\\TaskCache\\Tree*" | table _time, dest, registry_path, registry_value_data ``` --- ## Fase 3 - Contenção > [!danger] Ação com Impacto Potencial > Desabilitar tarefas agendadas pode impactar processos legítimos de backup, monitoramento e manutenção. Confirmar autorização com o gerente de incidentes antes de executar. ### Contenção imediata (primeiros 30 min) - [ ] Desabilitar a tarefa maliciosa identificada (`schtasks /change /tn "NomeTarefa" /disable`) - [ ] Isolar host afetado via EDR - [ ] Bloquear hash do executável malicioso no EDR - [ ] Coletar cópia forense da tarefa (XML) e do executável ### Contenção de longo prazo - [ ] Aplicar [[m1028-operating-system-configuration|M1028 - Operating System Configuration]] para restringir criação de tarefas - [ ] Implementar GPO para limitar quem pode criar tarefas agendadas - [ ] Habilitar [[m1026-privileged-account-management|M1026 - Privileged Account Management]] para schtasks.exe --- ## Fase 4 - Erradicação - [ ] Remover tarefa maliciosa e executável associado - [ ] Verificar outras formas de persistência no mesmo host ([[t1547-001-registry-run-keys|Registry Run Keys]], [[t1543-003-windows-service|Serviços]]) - [ ] Verificar se a tarefa foi replicada via GPO comprometida - [ ] Resetar credenciais do usuário que criou a tarefa --- ## Fase 5 - Recuperação - [ ] Restaurar sistema se necessário a partir de backup limpo - [ ] Validar integridade do Task Scheduler antes de recolocar em produção - [ ] Monitorar criação de novas tarefas por 72h com alertas reforçados - [ ] Atualizar baseline de tarefas legítimas --- ## Automação SOAR ### Microsoft Sentinel Automation Rules 1. Trigger: Event ID 4698 com caminho fora de `C:\Windows` e `C:\Program Files` 2. Enriquecer: consultar hash do executável no VirusTotal 3. Se malicioso: criar incidente P2, isolar host automaticamente 4. Se desconhecido: criar incidente P3 para análise manual ### Splunk SOAR Playbook: `Scheduled Task Investigation` 1. Extrair tarefa XML e caminho do executável 2. Consultar hash em TI feeds 3. Comparar com baseline organizacional 4. Auto-disable se score de risco > 80 --- ## Lições Aprendidas > [!note] Preencher após execução real > - O que funcionou conforme esperado? > - O que falhou ou precisou de adaptação? > - Quais regras de detecção geraram falsos positivos? > - O que deve ser ajustado neste playbook? --- ## Notas Relacionadas - [[t1053-005-scheduled-task|T1053.005 - Scheduled Task]] - Técnica principal - [[t1053-003-cron|T1053.003 - Cron]] - Equivalente Linux - [[t1547-001-registry-run-keys|T1547.001 - Registry Run Keys]] - Persistência alternativa - [[grandoreiro]] - Banking trojan que usa tarefas agendadas - [[ds0003-scheduled-job|DS0003 - Scheduled Job]] - Data source principal - [[m1028-operating-system-configuration|M1028 - Operating System Configuration]] - Mitigação - [[m1026-privileged-account-management|M1026 - Privileged Account Management]] - Controle de acesso - [[hunting-persistence-mechanisms]] - Playbook relacionado - [[hunting-powershell-abuse]] - PowerShell frequentemente cria tarefas - [[cobalt-strike]] - Framework que automatiza criação de tarefas