Análise Forense de Logs no Windows

Analise forense de logs Windows é uma etapa essencial em qualquer investigação de segurança cibernética. Os logs armazenam informações cruciais sobre acessos, atividades suspeitas, falhas do sistema e tentativas de exploração. No entanto, encontrar os logs corretos e analisá-los de forma eficiente requer conhecimento técnico e ferramentas apropriadas.

Neste artigo, você aprenderá onde encontrar os logs no Windows, quais ferramentas utilizar para análise e as melhores práticas para organização e interpretação dos dados.

O Que São Logs e Por Que Eles São Essenciais na Forense Digital?

Logs são registros automáticos de eventos que ocorrem em sistemas operacionais, redes e aplicativos. Cada login, erro, tentativa de acesso ou comando executado gera uma entrada no log, servindo como trilha de auditoria para uma investigação.

Coleta e Preservação de Evidências

Para que os logs possam ser usados legalmente em uma investigação, sua coleta e preservação devem seguir boas práticas forenses.

Boas Práticas para Coleta de Logs

  • Preserve a integridade dos logs utilizando hashes SHA-256.
  • Evite alteração – Copie os logs para um repositório imutável.
  • Use criptografia para armazenar logs sensíveis.
  • Centralize a coleta de logs usando ferramentas como ELK Stack, Splunk e Wazuh.

Importância da Análise Forense de Logs

  • Acessos de usuários (logins e falhas)
  • Eventos de segurança (modificações em arquivos, políticas, permissões)
  • Execução de comandos suspeitos
  • Tentativas de exploração e ataques
  • Tráfego de rede anômalo
  • Erros do sistema e aplicativos

A análise forense de logs permite reconstruir incidentes, identificar invasores e determinar o impacto de um ataque.

Logs no Windows: Onde Encontrar e Como Analisar

O Windows armazena logs no Event Viewer (eventvwr.msc), localizado em:

C:\Windows\System32\Winevt\Logs\
CategoriaDescriçãoComando para acessar
ApplicationEventos de aplicativosGet-EventLog -LogName Application
SecurityLogins e eventos de segurançaGet-EventLog -LogName Security
SystemEventos do sistemaGet-EventLog -LogName System

Logs de Autenticação e Acessos

Eventos importantes:
  • 4624 – Login bem-sucedido
  • 4625 – Falha no login
  • 4672 – Login de usuário com privilégios elevados
  • 4720/4726 – Criação ou exclusão de conta de usuário
  • 4732 – Adição de usuário a um grupo privilegiado
  • 1102 – Log de segurança apagado

Exemplo do Filtro do Event Viewer

Filtros por Evento e Data:

Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4624; StartTime=(Get-Date).AddHours(-1)} | Select-Object TimeCreated, Message | Format-List

Este comando traz falhas de login na última hora. Você pode alterar o ID para outros eventos como 4625 (Falha de logins).

Gerando log de brute force!

Para fins educacionais, vou simular um ataque de força bruta contra um sistema Windows. O objetivo é gerar entradas de log reais que possam ser analisadas posteriormente, como tentativas de login mal-sucedidas, alertas de segurança e rastros de atividade suspeita.

Neste cenário, utilizamos a ferramenta Hydra, amplamente conhecida no campo de pentest, para automatizar tentativas repetidas de login utilizando uma lista de senhas.

Essa prática permite:
  • Observar como o sistema registra tentativas de intrusão.
  • Identificar os Event IDs relacionados no log de segurança (como o 4625, para falha de login).
  • Validar a efetividade dos mecanismos de defesa e detecção existentes.
hydra -t 4 -V -f -l Administrator -P /usr/share/wordlists/rockyou.txt rdp://172.31.182.166

Parâmetros utilizados:

  • -t 4 → Executa até 4 threads simultâneas por host.
  • -V → Mostra todas as tentativas em tempo real.
  • -f → Para assim que encontrar a primeira senha válida (não aconteceu neste caso).
  • -l Administrator → Usuário alvo.
  • -P rockyou.txt → Wordlist usada para tentar as senhas.
  • rdp:// → Protocolo de destino, neste caso Remote Desktop Protocol.

Filtro para usuário específico:

Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625} | Where-Object { $_.Message -like "*Administrator*" } | Select-Object TimeCreated, @{
    Name = "SourceIP"
    Expression = {
        ($_.Message -split "`n" | Where-Object { $_ -match "Source Network Address" }) -replace ".*:\s+", ""
    }
} | Format-Table -Wrap -AutoSize

Este comando traz falhas de login do usuário Administrator. Você pode alterar o ID para outros eventos como 4624 (logins com sucesso), etc.

Detectar Ataque de Força Bruta:



$falhas = Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625; StartTime=(Get-Date).AddMinutes(-10)} |
Where-Object { $_.Message -like "*administrator*" }

if ($falhas.Count -gt 5) {
    Write-Warning "Possível ataque de força bruta detectado no usuário Administrator"
}

Esse snippet detecta mais de 5 tentativas de login em 10 minutos. Você pode ajustar isso como desejar.

Detecção de Elevação de Privilégio

Eventos importantes para monitorar:
  • 4672: Usuário recebeu um token com privilégios elevados
  • 4732: Usuário foi adicionado a um grupo privilegiado
Gerando o evento 4672 (Token com privilégios elevados)

O evento 4672 é registrado no log de segurança sempre que uma conta efetua logon e recebe um token de segurança contendo privilégios especiais. Esse evento geralmente acompanha um logon bem-sucedido (evento 4624) e é gerado automaticamente pelo sistema para contas que possuem permissões elevadas, como Administradores, Serviços do sistema (SYSTEM) ou contas de serviço com permissões avançadas.

Start-Process -FilePath "powershell.exe" -Verb RunAs

Inicia uma nova instância do PowerShell elevada. Ao fazer isso, o evento 4672 será gerado para o usuário.

Script PowerShell com filtro para ignorar SYSTEM:


Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4672; StartTime=(Get-Date).AddHours(-1)} |
ForEach-Object {
    $msg = $_.Message
    $usuario = if ($msg -match "Account Name:\s+(.+?)\r") { $matches[1].Trim() } else { "Não identificado" }
    $privs = if ($msg -match "Privileges:\s+([\s\S]+)") {
        ($matches[1] -split "`r`n" | ForEach-Object { $_.Trim() }) -join ", "
    } else {
        "Não informado"
    }
    if ($usuario -ne "SYSTEM") {
        [PSCustomObject]@{
            DataHora     = $_.TimeCreated
            Usuario      = $usuario
            Privilegios  = $privs
        }
    }
} | Format-Table -Wrap -AutoSize


Gerando o evento 4732 (Usuário adicionado a grupo privilegiado)

O evento 4732 é registrado no log de segurança do Windows sempre que um usuário é adicionado a um grupo de segurança habilitado localmente, como Administradores, Backup Operators ou Power Users. Este evento é crítico para auditoria e segurança, pois alterações em grupos privilegiados podem indicar movimentos laterais em ataques, escalonamento de privilégios ou mudanças administrativas legítimas que precisam ser monitoradas.


Add-LocalGroupMember -Group "Administradores" -Member "llucio"
Script Powershell para buscar elevação de privilégios


Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4732; StartTime=(Get-Date).AddMinutes(-60)} |
ForEach-Object {
    $msg = $_.Message

    $sidRaw = if ($msg -match "Member:\s+Security ID:\s+(.+?)\r") { $matches[1].Trim() } else { "Não identificado" }

    try {
        $sidObj = New-Object System.Security.Principal.SecurityIdentifier($sidRaw)
        $usuario = $sidObj.Translate([System.Security.Principal.NTAccount]).Value
    } catch {
        $usuario = $sidRaw
    }

    $grupo = if ($msg -match "Group Name:\s+(.+?)\r") { $matches[1].Trim() } else { "Não identificado" }

    [PSCustomObject]@{
        DataHora = $_.TimeCreated
        Usuario  = $usuario
        Grupo    = $grupo
    }
}

Logs Customizados e Exportação

Exportar logs para análise posterior

Para facilitar a análise forense ou o armazenamento de evidências, é possível exportar eventos do log de segurança utilizando PowerShell. O comando abaixo salva todos os eventos de falha de login (ID 4625) em um arquivo .xml no formato Clixml, que pode ser reimportado posteriormente com todos os detalhes preservados



Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625} | 
Export-Clixml -Path "C:\Temp\logs_falhas_login.xml"

Validação com Hash — Garantindo a Integridade

Após exportar os logs, é recomendado gerar e armazenar o hash do arquivo, garantindo que o conteúdo não foi alterado. Isso é essencial para preservar a integridade da evidência em investigações forenses e auditorias.



Get-FileHash -Path "C:\Temp\logs_falhas_login.xml" -Algorithm SHA256 |
Out-File -FilePath "C:\Temp\logs_falhas_login_hash.txt"

Com esse procedimento, qualquer alteração posterior no arquivo poderá ser detectada, assegurando sua validade como prova digital.



type C:\Temp\logs_falhas_login_hash.txt

Segurança e Persistência de Logs

Configuração de Tamanho de Log

Aumentar o tamanho dos logs de segurança é uma prática essencial em ambientes corporativos. Por padrão, o Windows define um limite relativamente baixo, o que pode causar a sobrescrita automática de eventos importantes em curto prazo.

Por que aumentar o tamanho?
  • Evita perda de eventos críticos (ex: falhas de login, escalonamento de privilégios)
  • Garante histórico mais longo para análise forense
  • Reforça a conformidade com políticas de auditoria e LGPD

Mesmo com os logs configurados corretamente no Windows, mantê-los apenas localmente é um risco. Em caso de ataque, os eventos podem ser apagados ou sobrescritos. Por isso, é de extrema importância integrar o ambiente a uma solução de SIEM (Security Information and Event Management).

Por que um SIEM é essencial?
  • Centraliza logs de múltiplos servidores, dispositivos e serviços
  • Correlaciona eventos em tempo real para detectar comportamentos suspeitos
  • Armazena logs de forma imutável e com retenção prolongada
Exemplos de SIEM:
  • Microsoft Sentinel (Azure)
  • Splunk
  • Graylog
  • QRadar
  • Wazuh (open source)

Habilitar Auditoria Avançada

A Auditoria Avançada (Advanced Audit Policy) permite configurar a auditoria de eventos de forma granular, melhorando a precisão dos logs sem sobrecarregar o sistema com informações desnecessárias. Com ela, é possível registrar especificamente ações como acesso a arquivos, alterações em grupos, comandos executados.

Como habilitar a Auditoria Avançada:
Execute o comando abaixo para confirmar se ela está ativa:


AuditPol /get /category:*

Para habilitar auditoria completa de logons (sucesso e falha):


AuditPol /set /subcategory:"Logon" /success:enable /failure:enable

Você também pode aplicar via GPO:

Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Policy Configuration

Advanced Audit Policy Configuration > Audit Policies > Logon/Logoff

Proteção Contra Limpeza de Logs — Evento 1102

O evento 1102 é disparado quando alguém limpa manualmente o log de segurança. Isso é um forte indicativo de tentativa de ocultação de rastros, comum em ações pós comprometimento.

Por que monitorar o evento 1102:
  • Identifica sabotagem ou tentativa de apagar evidências
  • Ajuda a iniciar resposta imediata a incidentes
  • Deve ser monitorado constantemente em SIEMs

Habilite a auditoria da subcategoria “Log de auditoria limpo”:



AuditPol /set /subcategory:"Audit Policy Change" /success:enable /failure:enable

Gerando o Evento 1102 (Log de auditoria limpo)


Get-WinEvent -FilterHashtable @{LogName='Security'; ID=1102} |
Select-Object TimeCreated, Message |
Format-List

Dica de segurança:

Esse evento deve sempre ser monitorado por SIEMs e gerar alertas. Uma limpeza sem autorização pode indicar tentativa de apagar rastros.

Enriquecendo Logs com Sysmon + PowerShell

O Sysmon (System Monitor) é uma ferramenta gratuita da Microsoft (Sysinternals) que estende as capacidades de auditoria do Windows, gerando logs detalhados de atividades do sistema como:

  • Criação de processos
  • Conexões de rede
  • Alterações em registros
  • Acesso a arquivos
  • Injeção de código
  • Modificação de imagem (DLL injection)

Diferente da auditoria nativa, o Sysmon fornece informações mais ricas e estruturadas, ideais para correlação com ferramentas como PowerShell, SIEMs e scripts forenses.

Como instalar o Sysmon


.\Sysmon64.exe -i

Recomendado: usar um arquivo .xml de regras

Baixe uma configuração mais completa, como:
https://github.com/SwiftOnSecurity/sysmon-config



.\Sysmon64.exe -i



.\Sysmon64.exe -accepteula -i "C:\Users\Administrator\Downloads\sysmon-config-master\sysmon-config-master\sysmonconfig-export.xml"

Quer confirmar se funcionou?



Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" -FilterXPath "*[System/EventID=1]" -MaxEvents 20 |
ForEach-Object {
    $xml = [xml]$_.ToXml()
    [PSCustomObject]@{
        DataHora     = $_.TimeCreated
        Usuario      = $xml.Event.EventData.Data | Where-Object { $_.Name -eq "User" } | Select-Object -ExpandProperty '#text'
        Processo     = $xml.Event.EventData.Data | Where-Object { $_.Name -eq "Image" } | Select-Object -ExpandProperty '#text'
        LinhaComando = $xml.Event.EventData.Data | Where-Object { $_.Name -eq "CommandLine" } | Select-Object -ExpandProperty '#text'
        PID          = $xml.Event.EventData.Data | Where-Object { $_.Name -eq "ProcessId" } | Select-Object -ExpandProperty '#text'
    }
} | Format-Table -Wrap -AutoSize

Combinado com PowerShell, é possível filtrar e analisar esses dados de forma avançada. Por exemplo, o comando abaixo retorna os últimos processos criados:

A análise forense de logs no Windows é uma das etapas mais importantes na detecção, resposta e prevenção de incidentes de segurança. Como vimos ao longo deste artigo, o uso combinado de ferramentas nativas como o Event Viewer, PowerShell, e soluções avançadas como o Sysmon, permite enriquecer a coleta de dados e alcançar uma visibilidade muito mais precisa sobre as atividades do sistema.

É fundamental que as organizações configurem corretamente a auditoria, aumentem o tamanho dos logs, monitorem eventos críticos como 4625, 4672 e 1102, e integrem essas informações com ferramentas de SIEM sempre que possível.

Mais do que registrar, é preciso analisar, correlacionar e reagir.

Foto Leandro Lucio | Perito Lucio

Leandro Lucio

Especialista em Cyber Security & Digital Forensics, com mais de 15 anos de experiência. Certificado CEH, Pentester, Forense Digital. Atuo em testes de intrusão, análise forense, investigação de ameaças, resposta a incidentes e gestão de vulnerabilidades, ajudando a fortalecer a segurança e mitigar riscos cibernéticos. Compartilho conhecimento no meu blog:
🔗 peritolucio.com.br 🔗 Leandro Lucio | LinkedIn