Analisando Logs de Segurança com Splunk
Quando Usar
- Investigando um incidente de segurança que requer correlação entre várias fontes de log
- Caçando atividades de adversários usando TTPs e IOCs conhecidos
- Construindo regras de detecção para padrões de ataque específicos
- Reconstruindo uma linha do tempo do incidente a partir de fontes de log díspares
- Analisando anomalias de autenticação, movimentação lateral ou padrões de exfiltração de dados
Não use para análise de pacotes em tempo real; use Wireshark ou Zeek para análise completa de captura de pacotes.
Pré-requisitos
- Splunk Enterprise ou Splunk Cloud com o aplicativo Enterprise Security (ES) instalado
- Fontes de log ingeridas: Windows Event Logs (via Splunk Universal Forwarder ou WEF), firewall, proxy, DNS, EDR, gateway de e-mail
- Modelos de dados do Splunk CIM (Common Information Model) configurados para nomes de campos normalizados
- Proficiência em SPL em nível intermediário ou superior
- Acesso baseado em funções com capacidades
searcheaccelerate_searchno Splunk
Fluxo de Trabalho
Etapa 1: Escopo da Investigação no Splunk
Defina os parâmetros de busca com base nos dados de triagem do incidente:
| Definir escopo inicial da investigação
index=windows OR index=firewall OR index=proxy
earliest="2025-11-14T00:00:00" latest="2025-11-16T00:00:00"
(host="WKSTN-042" OR src_ip="10.1.5.42" OR user="jsmith")
| stats count by index, sourcetype, host
| sort -count
Esta consulta estabelece quais fontes de log contêm dados relevantes para o período da investigação e os ativos afetados.
Etapa 2: Analisar Eventos de Autenticação
Investigue padrões suspeitos de autenticação usando Windows Security Event Logs:
| Detectar força bruta e credential stuffing
index=windows sourcetype="WinEventLog:Security" EventCode=4625
earliest=-24h
| stats count as failed_attempts, values(src_ip) as source_ips,
dc(src_ip) as unique_sources by TargetUserName
| where failed_attempts > 10
| sort -failed_attempts
| Detectar pass-the-hash (Logon Type 9 - NewCredentials)
index=windows sourcetype="WinEventLog:Security" EventCode=4624
Logon_Type=9
| table _time, host, TargetUserName, src_ip, LogonProcessName
| Detectar movimentação lateral via RDP
index=windows sourcetype="WinEventLog:Security" EventCode=4624
Logon_Type=10
| stats count, values(host) as targets by TargetUserName, src_ip
| where count > 3
| sort -count
Etapa 3: Rastrear Execução de Processos
Use logs Sysmon para reconstruir cadeias de execução de processos:
| Criação de processo com cadeia pai (Sysmon Event ID 1)
index=sysmon EventCode=1 host="WKSTN-042"
earliest="2025-11-15T14:00:00" latest="2025-11-15T15:00:00"
| table _time, ParentImage, ParentCommandLine, Image, CommandLine, User, Hashes
| sort _time
| Detectar execução suspeita de PowerShell
index=sysmon EventCode=1 Image="*\\powershell.exe"
(CommandLine="*-enc*" OR CommandLine="*-encodedcommand*"
OR CommandLine="*downloadstring*" OR CommandLine="*iex*")
| table _time, host, User, ParentImage, CommandLine
| sort _time
| Detectar roubo de credenciais do LSASS
index=sysmon EventCode=10 TargetImage="*\\lsass.exe"
GrantedAccess=0x1010
| table _time, host, SourceImage, SourceUser, GrantedAccess
Etapa 4: Analisar Atividade de Rede
Correlacione logs de rede com eventos de endpoint:
| Detectar padrão de beacon C2
index=proxy OR index=firewall dest_ip="185.220.101.42"
| timechart span=1m count by src_ip
| where count > 0
| Detectar DNS tunneling (alto volume de consultas para um único domínio)
index=dns
| rex field=query "(?<subdomain>[^\\.]+)\\.(?<domain>[^\\.]+\\.[^\\.]+)$"
| stats count, avg(len(query)) as avg_query_len by domain, src_ip
| where count > 500 AND avg_query_len > 40
| sort -count
| Detectar grandes transferências de dados (potencial exfiltração)
index=proxy action=allowed
| stats sum(bytes_out) as total_bytes by src_ip, dest_ip, dest_host
| eval total_MB=round(total_bytes/1024/1024,2)
| where total_MB > 100
| sort -total_MB
Etapa 5: Construir a Linha do Tempo do Incidente
Reconstrua uma linha do tempo unificada em todas as fontes de log:
| Linha do tempo unificada do incidente
index=windows OR index=sysmon OR index=proxy OR index=firewall
(host="WKSTN-042" OR src_ip="10.1.5.42" OR user="jsmith")
earliest="2025-11-15T14:00:00" latest="2025-11-15T16:00:00"
| eval event_summary=case(
sourcetype=="WinEventLog:Security" AND EventCode==4624, "Logon: ".TargetUserName." from ".src_ip,
sourcetype=="WinEventLog:Security" AND EventCode==4625, "Failed logon: ".TargetUserName,
sourcetype=="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" AND EventCode==1,
"Process: ".Image." by ".User,
sourcetype=="proxy", "Web: ".http_method." ".url,
1==1, sourcetype.": ".EventCode)
| table _time, sourcetype, host, event_summary
| sort _time
Etapa 6: Criar Regras de Detecção
Converta os achados da investigação em correlações persistentes no Splunk:
| Correlação: PowerShell iniciado por aplicativos Office
index=sysmon EventCode=1
Image="*\\powershell.exe"
(ParentImage="*\\winword.exe" OR ParentImage="*\\excel.exe"
OR ParentImage="*\\outlook.exe")
| eval severity="high"
| eval mitre_technique="T1059.001"
| collect index=notable_events
Conceitos Chave
| Termo | Definição |
|---|---|
| SPL (Search Processing Language) | A linguagem de consulta do Splunk para pesquisar, filtrar, transformar e visualizar dados de máquina |
| CIM (Common Information Model) | Padrão de normalização de campos do Splunk que mapeia nomes de campos específicos de fornecedores para nomes comuns em consultas entre fontes |
| Notable Event | Um evento no Splunk Enterprise Security sinalizado para revisão do analista com base em uma correspondência de busca de correlação |
| Data Model | Representação estruturada de dados indexados no Splunk que permite buscas aceleradas e análises baseadas em pivô |
| Sourcetype | Rótulo de classificação no Splunk que define o formato e as regras de parsing para um tipo específico de log |
| Correlation Search | Busca agendada no Splunk que é executada continuamente e gera eventos notáveis quando as condições são atendidas |
| Timechart | Comando SPL que cria visualizações de séries temporais para identificar padrões, anomalias e tendências |
Ferramentas e Sistemas
- Splunk Enterprise Security (ES): Aplicativo SIEM premium que fornece buscas de correlação, alertas baseados em risco e mesa de investigação
- Splunk SOAR: Plataforma de orquestração integrada ao Splunk ES para playbooks de resposta automatizada
- Sysmon: Ferramenta de monitoramento do sistema Microsoft que fornece telemetria detalhada de processos, rede e alterações de arquivos ingerida no Splunk
- Splunk Attack Analyzer: Análise automatizada de ameaças que detona arquivos e URLs suspeitos, alimentando os resultados no Splunk
- BOSS of the SOC (BOTS): Conjunto de dados de treinamento SANS/Splunk para praticar consultas SPL de investigação de incidentes
Cenários Comuns
Cenário: Investigando Credential Stuffing Levando a Account Takeover
Contexto: As operações de segurança recebem um alerta para múltiplos logins bem-sucedidos em uma única conta a partir de endereços IP geograficamente dispersos dentro de uma janela de 30 minutos.
Abordagem:
- Consultar o Event ID 4624 para a conta afetada, mapeando todas as fontes e horários de login
- Correlacionar IPs de login com feeds de inteligência de ameaças usando uma tabela de lookup no Splunk
- Verificar logs de proxy para atividades suspeitas nas sessões autenticadas
- Buscar movimentação lateral a partir da conta comprometida (Event ID 4624 Type 3 para outros hosts)
- Construir uma linha do tempo mostrando tentativas de credential stuffing, login bem-sucedido e atividade pós-compromisso
- Criar uma busca de correlação para detectar padrões semelhantes em outras contas
Armadilhas:
- Pesquisar apenas as últimas 24 horas quando o credential stuffing pode ter ocorrido ao longo de semanas
- Não verificar logs de VPN que podem mostrar a mesma conta autenticando de distâncias de viagem impossíveis
- Falhar ao normalizar carimbos de data/hora entre fontes de log em diferentes fusos horários
Formato de Saída
RELATÓRIO DE INVESTIGAÇÃO SPLUNK
=================================
Incidente: INC-2025-1547
Analista: [Nome]
Período de Investigação: 2025-11-14 00:00 UTC - 2025-11-16 00:00 UTC
ESCOPO DA BUSCA
Índices: windows, sysmon, proxy, firewall, dns
Hosts: WKSTN-042, SRV-FILE01
Usuários: jsmith, svc-backup
IPs de Origem: 10.1.5.42, 10.1.10.15
PRINCIPAIS DESCOBERTAS
1. [timestamp] - Comprometimento inicial via phishing (Sysmon Event 1)
2. [timestamp] - C2 estabelecida (logs de proxy, padrão de beacon detectado)
3. [timestamp] - Roubo de credenciais (Sysmon Event 10, acesso LSASS)
4. [timestamp] - Movimentação lateral para SRV-FILE01 (Event 4624 Type 3)
5. [timestamp] - Preparação e exfiltração de dados (anomalia em bytes_out do proxy)
CONSULTAS SPL UTILIZADAS
[lista numerada de consultas chave com descrições]
LACUNAS DE DETECÇÃO IDENTIFICADAS
- Nenhum Sysmon implantado no SRV-FILE01 (ponto cego)
- Logs de proxy sem inspeção SSL para domínio C2
- Log de ScriptBlock do PowerShell não habilitado
DETECÇÕES RECOMENDADAS
1. Busca de correlação para PowerShell iniciado pelo Office
2. Alerta de limite para padrões de acesso ao LSASS
3. Regra comportamental para tráfego de rede com intervalos de beacon