# DS0019 — Service ## Descrição **Service** representa um processo de computador configurado para executar continuamente em segundo plano e executar tarefas do sistema — em alguns casos, antes mesmo de qualquer usuário fazer login. No Windows, serviços são gerenciados pelo Service Control Manager (SCM) e podem ser configurados para iniciar automaticamente com o sistema. No Linux e macOS, serviços são gerenciados por init systems como `systemd`, `launchd` e `SysVinit`. Em ambientes ESXi, o VIB (VMware Installation Bundle) framework gerencia serviços do hypervisor. Serviços são um vetor de persistência amplamente explorado por adversários. A criação de um novo serviço malicioso é uma das técnicas de persistência mais documentadas no modelo MITRE ATT&CK — utilizada por grupos como [[g0032-lazarus-group]], [[g0016-apt29]] e operadores de ransomware como [[lockbit]] que implantam drivers ou serviços para persistência pré-encriptação. Malwares bancários ativos no Brasil, como [[mekotio]] e loaders da família [[s0531-grandoreiro]], frequentemente registram serviços Windows para garantir execução na inicialização do sistema. A detecção de serviços maliciosos baseia-se principalmente em anomalias de baseline: um serviço novo com nome aleatório, sem assinatura digital válida, referênciando um executável em `%TEMP%` ou `%APPDATA%`, instalado fora do horário comercial é um indicador forte de comprometimento. ```mermaid graph TB A["⚙️ Gerenciador de Serviços<br/>SCM / systemd / launchd<br/>ESXi VIB"] --> B["📋 Eventos de Serviço<br/>EID 7045 Novo serviço<br/>EID 4697 / systemd journal"] B --> C["🔍 Sysmon / auditd<br/>ID 13 Reg modification<br/>unit files watch"] C --> D["📥 SIEM<br/>Correlação com baseline<br/>de serviços aprovados"] D --> E{"🎯 Análise<br/>Serviço novo?<br/>Sem assinatura?<br/>Path suspeito?"} E -->|"Anomalia"| F["🚨 Alerta SOC<br/>T1543.003 / T1569.002<br/>BYOVD / Rootkit"] E -->|"Aprovado"| G["✅ Inventário atualizado<br/>Baseline mantido"] ``` ## Componentes de Dados | Componente | ID | Descrição | |------------|----|-----------| | Service Metadata | [[dc0041-service-metadata\|DC0041]] | Metadados sobre serviços instalados e em execução no sistema | ## Como Coletar ### Windows — Event IDs e Sysmon | Event ID | Canal | Descrição | |---------|-------|-----------| | 7034 | System | Serviço encerrou de forma inesperada | | 7035 | System | Solicitação de controle de serviço (Start/Stop) enviada | | 7036 | System | Serviço entrou em estado Running/Stopped | | 7040 | System | Tipo de inicialização de serviço alterado | | 7045 | System | **Novo serviço instalado** — alta fidelidade, raramente falso-positivo | | 4697 | Security | Serviço instalado no sistema (auditoria de objeto) | | Sysmon ID 1 | — | Criação de processo — correlacionar com `services.exe` como pai | | Sysmon ID 13 | — | Modificação de Registry — chaves de serviço em `HKLM\SYSTEM\CurrentControlSet\Services` | Habilitar auditoria de instalação de serviços: ```powershell # Habilitar Event ID 4697 via auditpol auditpol /set /subcategory:"Security System Extension" /success:enable /failure:enable # Query de serviços suspeitos via PowerShell Get-WmiObject Win32_Service | Where-Object { $_.PathName -match "(?i)(temp|appdata|users|public)" } | Select-Object Name, DisplayName, PathName, StartMode, State | Format-Table -AutoSize # Serviços sem assinatura digital Get-WmiObject Win32_Service | ForEach-Object { $path = ($_.PathName -replace '"','').Split(' ')[0] if ($path -and (Test-Path $path)) { $sig = Get-AuthenticodeSignature $path if ($sig.Status -ne 'Valid') { [PSCustomObject]@{ Name=$_.Name; Path=$path; SignatureStatus=$sig.Status } } } } ``` ### Linux — systemd e SysVinit ```bash # Listar todos os serviços habilitados para inicialização automática systemctl list-unit-files --state=enabled --type=service # Serviços instalados recentemente (comparar com baseline) find /etc/systemd/system/ /lib/systemd/system/ -name "*.service" \ -newer /var/log/last-audit-baseline.txt -ls # auditd — monitorar criação de unit files e modificação de /etc/init.d auditctl -w /etc/systemd/system/ -p wa -k service_install auditctl -w /lib/systemd/system/ -p wa -k service_install auditctl -w /etc/init.d/ -p wa -k service_install auditctl -w /etc/rc.d/ -p wa -k service_install # journald — logs de serviços com falha ou recém-iniciados journalctl -u "*.service" --since "1 hour ago" --output json | \ jq 'select(.PRIORITY == "3" or .PRIORITY == "4") | {unit: ._SYSTEMD_UNIT, msg: .MESSAGE}' # Verificar serviços rodando como root e sem crontab legítimo systemctl show --property=User,ExecStart $(systemctl list-units --type=service --state=running -q --plain | awk '{print $1}') 2>/dev/null | grep -A1 "User=root" ``` ### macOS — LaunchDaemons e LaunchAgents ```bash # Locais de persistência via launchd # LaunchDaemons — executam como root, pré-login ls -la /Library/LaunchDaemons/ ls -la /System/Library/LaunchDaemons/ # LaunchAgents — executam como usuário, pós-login ls -la /Library/LaunchAgents/ ls -la ~/Library/LaunchAgents/ # Verificar plists recentemente modificados find /Library/LaunchDaemons /Library/LaunchAgents ~/Library/LaunchAgents \ -name "*.plist" -newer /tmp/baseline.plist -ls 2>/dev/null # Unified Log — eventos de launchd log show --predicaté 'subsystem == "com.apple.launchd"' \ --style syslog --last 1h | grep -i "launch\|spawn\|load" # osquery — inventário de LaunchDaemons/Agents osquery> SELECT name, path, run_at_load, program FROM launchdaemons WHERE run_at_load=1; osquery> SELECT name, path, run_at_load, program FROM launchagents WHERE run_at_load=1; ``` ### ESXi — VIBs e Serviços do Hypervisor ```bash # Listar VIBs instalados (possível vetor de rootkit/backdoor) esxcli software vib list # VIBs instalados com nível de aceitação "CommunitySupported" (risco maior) esxcli software vib list | grep -i "CommunitySupported\|PartnerSupported" # Serviços ESXi em execução esxcli system process list /etc/init.d/ # Scripts de init do ESXi # Logs de instalação de VIBs grep -i "vib\|install" /var/log/esxupdaté.log ``` ### Ferramentas SIEM e EDR | Ferramenta | Capacidade Específica | |-----------|----------------------| | **Splunk** | Correlation rule: `index=wineventlog EventCode=7045 | stats count by ServiceName, ServiceFileName, ComputerName` | | **Microsoft Sentinel** | Analytics rule: "New Windows Service Install" baseada em Event 7045 e 4697 | | **CrowdStrike Falcon** | Detecção automática de serviços criados por processos suspeitos | | **Wazuh** | Regras 18104 (novo serviço Windows) e 5710 (novo daemon Linux) | | **Elastic SIEM** | Detection rule: "Unusual Service Install" via process.parent.name = "services.exe" | ## Técnicas Detectadas | Técnica | ID | Descrição | |---------|-----|-----------| | Create or Modify System Process — Windows Service | [[t1543-003-windows-service\|T1543.003]] | Criação de serviço malicioso para persistência ou execução privilegiada | | System Services — Service Execution | [[t1569-002-service-execution\|T1569.002]] | Execução de payload via criação/start de serviço | | Boot or Logon Autostart — Launch Daemon | [[t1543-004-launch-daemon\|T1543.004]] | Persistência via LaunchDaemon no macOS | | Impair Defenses — Disable or Modify Tools | [[t1562-001-disable-or-modify-tools\|T1562.001]] | Parada de serviços de segurança (AV, EDR, log collectors) | | Rootkit | [[t1014-rootkit\|T1014]] | Instalação de driver malicioso como serviço de kernel (BYOVD) | ## Gaps de Cobertura Brasil/LATAM **Gaps comuns identificados em organizações brasileiras:** 1. **Event ID 7045 não encaminhado ao SIEM:** O canal System (onde reside o Event 7045) frequentemente não é incluído na coleta de logs Windows em SIEMs brasileiros — apenas os canais Security e Application são configurados. Isso cria um ponto cego direto para instalação de serviços maliciosos. 2. **Sem baseline de serviços:** É raramente práticado manter um baseline de serviços esperados por tipo de servidor. Sem um inventário aprovado, qualquer novo serviço passa desapercebido por semanas. Campanhas de ransomware no Brasil frequentemente instalam serviços dias antes da execução do payload. 3. **macOS LaunchDaemons sem auditoria:** Endpoints macOS em organizações brasileiras raramente têm monitoramento de `/Library/LaunchDaemons`. Com o crescimento de uso de MacBooks em empresas de tecnologia e fintechs brasileiras, esse vetor de persistência está cada vez mais relevante. 4. **Drivers maliciosos (BYOVD) ignorados:** A técnica de Bring Your Own Vulnerable Driver — popular em campanhas de ransomware que visam desabilitar EDRs — instala serviços de driver assinado com vulnerabilidades exploráveis. Sem monitoramento de Event ID 7045 + verificação de assinatura, essa técnica não é detectada. 5. **ESXi sem auditoria de VIBs:** VIBs maliciosos instalados em ESXi (técnica utilizada por grupos de estado-nação associados à China e Coreia do Norte) não são detectados sem monitoramento específico de `esxcli software vib list` e comparação com baseline. **Recomendações:** - Incluir canal `System` na coleta de logs Windows (além de `Security` e `Application`) - Criar alerta de alta fidelidade para Event ID 7045 com enriquecimento de reputação do executável - Manter baseline de serviços por imagem de sistema e alertar sobre desvios - Configurar auditoria do `/Library/LaunchDaemons` via auditd ou EDR em endpoints macOS - Implantar lista de VIBs aprovados no ESXi e auditar adições fora do processo de mudança ## Referências - [[dc0041-service-metadata|DC0041 — Service Metadata]] — componente de detecção principal - [[ds0017-command|DS0017 — Command]] — comandos de criação e controle de serviços - [[ds0015-application-log|DS0015 — Application Log]] — logs gerados pelos próprios serviços - [[ds0009-process|DS0009 — Process]] — processos criados por serviços - [[t1543-003-windows-service|T1543.003 — Windows Service]] — técnica principal de persistência - [[t1569-002-service-execution|T1569.002 — Service Execution]] — execução via serviço - [[t1562-001-disable-or-modify-tools|T1562.001 — Disable or Modify Tools]] — parada de serviços de segurança --- *Fonte: [MITRE ATT&CK — DS0019](https://attack.mitre.org/datasources/DS0019)*