O NTLMv1 é um protocolo de autenticação antigo e menos seguro, sendo recomendado desativá-lo em ambientes modernos. Antes de desativá-lo, é essencial identificar quais sistemas ou aplicações ainda o utilizam. Este artigo orienta como monitorar autenticações NTLMv1 em um Windows Server, registrando os eventos em um arquivo de log utilizando PowerShell.
1. Habilitando a Auditoria de Logon
Para capturar eventos de autenticação NTLMv1, é necessário ativar a auditoria de logon nos controladores de domínio:
- Abra o Editor de Políticas de Grupo:
- Execute
gpedit.msc
.
- Execute
- Navegue até:
Configuração do Computador
>Configurações do Windows
>Configurações de Segurança
>Políticas Locais
>Política de Auditoria
.
- Ative a Auditoria de Logon:
- Clique duas vezes em
Logon/Logoff
>Auditar Logon
e marqueÊxito
eFalha
.
- Clique duas vezes em
2. Identificando Autenticações NTLMv1 via Eventos
Após habilitar a auditoria, o Windows registrará eventos de logon no Visualizador de Eventos. Autenticações NTLMv1 são indicadas pelo Evento ID 4624 com detalhes específicos:
- Caminho:
Logs do Windows
>Segurança
- Evento ID: 4624 (Logon bem-sucedido)
- Detalhes Relevantes:
- Processo de Logon:
NtLmSsp
- Pacote de Autenticação:
NTLM
- Nome do Pacote (apenas NTLM):
NTLM V1
- Processo de Logon:
Esses detalhes indicam que a autenticação utilizou NTLMv1.
3. Script PowerShell para Registrar Autenticações NTLMv1
Para automatizar a coleta desses eventos e registrá-los em um arquivo de log, utilize o seguinte script PowerShell:
powershellCopiarEditar# Defina o caminho para o arquivo de log
$logPath = "C:\Logs\NTLMv1_AuthLogs.txt"
# Verifique se o diretório existe; caso contrário, crie-o
if (-not (Test-Path -Path (Split-Path $logPath))) {
New-Item -Path (Split-Path $logPath) -ItemType Directory
}
# Obtenha os eventos 4624 do log de segurança relacionados ao NTLMv1
$events = Get-WinEvent -LogName Security | Where-Object {
$_.Id -eq 4624 -and
$_.Properties[10].Value -eq "NTLM V1"
}
# Formate e registre os eventos no arquivo de log
foreach ($event in $events) {
$logEntry = "Data/Hora: $($event.TimeCreated) | Usuário: $($event.Properties[5].Value) | Domínio: $($event.Properties[6].Value) | Estação de Trabalho: $($event.Properties[11].Value)"
Add-Content -Path $logPath -Value $logEntry
}
Explicação do Script:
- $logPath: Define o caminho onde o log será salvo.
- Test-Path e New-Item: Verificam e criam o diretório para o log, se necessário.
- Get-WinEvent: Obtém eventos do log de segurança.
- Where-Object: Filtra eventos com ID 4624 e
Properties[10].Value
igual a “NTLM V1”. - Add-Content: Adiciona as entradas filtradas ao arquivo de log.
Observações:
- Execute o script com privilégios administrativos.
- Agende o script para execução periódica utilizando o Agendador de Tarefas do Windows, garantindo monitoramento contínuo.
4. Considerações Finais
Monitorar e identificar o uso de NTLMv1 é crucial para fortalecer a segurança do ambiente. Após identificar sistemas que ainda utilizam NTLMv1, planeje a migração para protocolos mais seguros, como o NTLMv2 ou o Kerberos. Além disso, considere desativar o NTLMv1 para evitar vulnerabilidades associadas a este protocolo legado.
Para mais informações sobre auditoria de NTLMv1, consulte a documentação oficial da Microsoft.