# T1547.003 - Time Providers ## Técnica Pai [[t1547-boot-logon-autostart-execution|T1547 - Boot or Logon Autostart Execution]] ## Descrição Adversários podem abusar do mecanismo de provedores de tempo do Windows para executar DLLs maliciosas na inicialização do sistema com alto grau de furtividade. O serviço Windows Time (`W32Time`) é responsável pela sincronização de horário entre máquinas em um domínio - um componente indispensável em ambientes [[active-directory|Active Directory]], onde a diferença de horário entre cliente e controlador de domínio afeta diretamente a autenticação [[t1558-steal-or-forge-kerberos-tickets|Kerberos]]. Os provedores de tempo são implementados como bibliotecas DLL registradas em subchaves do Registro Windows em `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W32Time\TimeProviders\`. O Service Control Manager carrega e inicia as DLLs listadas nessa chave durante a inicialização do sistema. Adversários abusam dessa arquitetura criando uma nova subchave com o valor `DllName` apontando para uma DLL maliciosa - que será carregada junto com o serviço W32Time a cada boot, sem exigir agendamento de tarefa ou modificação de binários do sistema. O mecanismo é especialmente valioso porque o serviço `W32Time` é nativo, onipresente em ambientes Windows corporativos e raramente monitorado em profundidade. A DLL maliciosa é carregada dentro de um processo de sistema confiável, dificultando detecção por soluções que analisam apenas processos iniciados pelo usuário. ## Como Funciona A criação de uma nova subchave em `W32Time\TimeProviders\` exige **privilégios de administrador**. Uma vez registrada, a DLL maliciosa é executada no contexto da conta `Local Service` - com privilégios limitados, mas suficientes para executar código persistentemente e interagir com recursos de rede locais. O fluxo de abuso segue dois caminhos possíveis: **Via reinicialização (boot):** O Service Control Manager inicializa o serviço W32Time durante o boot, que por sua vez carrega todas as DLLs registradas em suas subchaves, incluindo a maliciosa. **Via API sem reinicialização:** A DLL pode ser carregada dinâmicamente através da função `AddSecurityPackage` da Windows API, permitindo que o adversário ative a persistência imediatamente após o comprometimento, sem aguardar o próximo boot. Esse duplo mecanismo de ativação torna a técnica flexível: o adversário pode escolher entre ativação imediata (para estabelecer presença rapidamente) ou ativação no boot (para persistência de longo prazo). ## Attack Flow ```mermaid graph TB A[Adversário obtém<br/>privilégios administrativos] --> B[Cria subchave maliciosa em<br/>W32Time\\TimeProviders\\] B --> C[Define DllName apontando<br/>para DLL maliciosa] C --> D{Modo de ativação} D --> E[Reinicialização do sistema<br/>next boot] D --> F[Chamada imediata à API<br/>AddSecurityPackage] E --> G[Service Control Manager<br/>inicializa W32Time] F --> G G --> H[W32Time carrega DLL<br/>maliciosa registrada] H --> I[Execução no contexto<br/>de Local Service] I --> J[Persistência ativa<br/>a cada boot] J --> K[C2, coleta de dados<br/>ou movimento lateral] ``` ## Exemplos de Uso ### Grupos APT com Foco em Active Directory Embora casos públicos atribuídos a grupos específicos para esta sub-técnica sejam menos documentados que variantes como [[t1547-005-security-support-provider|T1547.005 - Security Support Provider]], a mecânica é funcionalmente semelhante. Grupos que operam em ambientes Windows AD de longa duração - como o [[g0016-apt29|APT29]] (Cozy Bear) - utilizam técnicas de persistência via DLL registrada em serviços de sistema como parte de seu arsenal de acesso de longo prazo. A escolha por W32Time é consistente com o padrão operacional de grupos que priorizam furtividade sobre velocidade. ### Uso com Ferramentas de Pós-Exploração O [[s0154-cobalt-strike|Cobalt Strike]] e o [[mimikatz|Mimikatz]] incluem funcionalidades para explorar mecanismos relacionados ao LSA e a serviços de sistema para persistência similar. Em operações documentadas de ransomware-as-a-service, operadores utilizam W32Time e mecanismos adjacentes como parte do processo de estabelecer persistência antes da fase de exfiltração e criptografia - garantindo que mesmo que o vetor inicial sejá detectado e bloqueado, o acesso ao ambiente sejá mantido. ### Cenário de Ataque a Infraestrutura Crítica Em ataques a infraestrutura crítica - segmento particularmente visado no [[_sectors|setor de energia]] e [[telecommunications|telecomúnicações]] no Brasil - a técnica permite que adversários mantenham acesso persistente em servidores Windows que raramente são reiniciados, beneficiando-se do fato de que `W32Time` é um serviço cujá modificação de registro passa despercebida em auditorias superficiais. A combinação com [[t1036-masquerading|T1036 - Masquerading]] para nomear a DLL maliciosa de forma similar a componentes legítimos aumenta a evasão. ## Detecção ```yaml title: Detecção de Time Provider DLL Maliciosa status: experimental logsource: category: registry_event product: windows detection: selection_key: TargetObject|contains: '\Services\W32Time\TimeProviders\' EventType: - CreateKey - SetValue filter_known_providers: TargetObject|endswith: - '\NtpClient' - '\NtpServer' - '\VMICTimeProvider' condition: selection_key and not filter_known_providers level: high tags: - attack.persistence - attack.t1547.003 ``` ## Mitigação | ID | Mitigação | Descrição | |----|-----------|-----------| | [[m1024-restrict-registry-permissions\|M1024]] | Restrict Registry Permissions | Restringir permissões de escrita na chave `W32Time\TimeProviders` apenas a contas SYSTEM e administradores com monitoramento ativo de mudanças via SACL | | [[m1022-restrict-file-and-directory-permissions\|M1022]] | Restrict File and Directory Permissions | Limitar gravação em diretórios do sistema (`System32`, `SysWOW64`) onde DLLs de provedores de tempo costumam residir; bloquear gravação em caminhos não padrão por contas de serviço | ## Contexto Brasil/LATAM No Brasil, ambientes Windows Active Directory são predominantes em organizações de médio e grande porte - incluindo órgãos governamentais, instituições financeiras e operadoras de infraestrutura crítica. A dependência do W32Time para sincronização Kerberos nestes ambientes garante que o serviço estejá sempre ativo e raramente sejá objeto de monitoramento específico por equipes de SOC. A técnica é especialmente relevante em operações de espionagem de longo prazo direcionadas a órgãos do [[government|governo]] federal brasileiro e a empresas do [[_sectors|setor de energia]] - alvos tradicionais de grupos de APT com nexo estatal. A ausência de logs de carregamento de módulos DLL na maioria das configurações padrão de SIEM brasileiros cria uma lacuna de visibilidade que grupos sofisticados exploram sistematicamente. Recomenda-se a implementação de Sysmon com regras específicas para monitoramento de carregamento de DLLs por `svchost.exe`. ## Referências - [[t1547-boot-logon-autostart-execution|T1547 - Boot or Logon Autostart Execution]] - técnica pai - [[t1547-005-security-support-provider|T1547.005 - Security Support Provider]] - variante similar via LSA - [[t1547-008-lsass-driver|T1547.008 - LSASS Driver]] - driver registrado no processo LSASS - [[t1547-002-authentication-package|T1547.002 - Authentication Package]] - DLL de pacote de autenticação no boot - [[m1024-restrict-registry-permissions|M1024 - Restrict Registry Permissions]] - mitigação principal - [[m1022-restrict-file-and-directory-permissions|M1022 - Restrict File and Directory Permissions]] - proteção de diretórios DLL - [[s0154-cobalt-strike|Cobalt Strike]] - framework com técnicas adjacentes de persistência via serviços - [[mimikatz|Mimikatz]] - ferramenta com funcionalidades de persistência via LSA e serviços de sistema - [[t1558-steal-or-forge-kerberos-tickets|T1558 - Steal or Forge Kerberos Tickets]] - técnica relacionada ao contexto Kerberos/AD *Fonte: MITRE ATT&CK - T1547.003 Time Providers, v16.2*