Em uma rede Windows, NTLM (NT LAN Manager) é um conjunto de protocolos de segurança da Microsoft que fornece autenticação, integridade e confidencialidade aos usuários.[1][2][3] NTLM é o sucessor do protocolo de autenticação no Lan Manager (LANMAN), um produto mais antigo da Microsoft, e tenta oferecer compatibilidade com o LANMAN. A versão dois do NTLM (NTLMv2), que foi introduzida pelo Windows NT 4.0 SP4 (e nativamente suportada no Windows 2000), aumentou a segurança NTLM através do amadurecimento do protocolo contra muitos ataques de spoofing e adicionando a capacidade de um servidor autenticar o cliente.
A Microsoft não recomenda mais utilizar NTLM em aplicações:
Os implementadores devem ficar cientes de que o NTLM não oferece suporte a todos os métodos recentes de criptografia, como AES e SHA-256. Ele usa verificação cíclica de redundância (CRC) ou algoritmos de digestão de mensagens (RFC1321) para integridade, e usa RC4 para criptografia. Derivando uma chave de uma senha, conforme especificado no RFC1320 e FIPS46-2. Portanto, geralmente aconselha-se que as aplicações geralmente não utilizem o NTLM.[4]
Uma vez que o Kerberos substituiu o NTLM como o protocolo de autenticação padrão em um Active Directory com base no esquema single sing-on, o NTLM ainda é amplamente utilizado em situações em que um controlador de domínio não está disponível ou está inacessível. Por exemplo, NTLM será usado se o cliente não é compatível com o Kerberos, o servidor não está associado a um domínio ou o usuário está se autenticando remotamente através da web.
O NTLM é um protocolo de autenticação desafio-resposta que utiliza três mensagens para autenticar um cliente em um ambiente orientado a conexão (connectionless é semelhante) e uma quarta mensagem adicional se integridade for desejada. Primeiro, o cliente estabelece um caminho de rede para o servidor e envia uma NEGOTIATE_MESSAGE informando suas capacidades. Em seguida, o servidor responde com uma CHALLENGE_MESSAGE que é usada para determinar a identidade do cliente. Finalmente, o cliente responde ao desafio com uma AUTHENTICATE_MESSAGE.
O protocolo NTLM usa um ou os dois valores de hash de senha, os quais também são armazenadas no servidor (ou controlador de domínio), e que são equivalentes a senha, o que significa que se você pegar o valor de hash do servidor, você pode se autenticar sem saber a senha real. Os dois são o hash LM (uma função baseada em DES aplicada aos primeiros 14 caracteres da senha convertidos para a codificação tradicional de 8 bits do PC para a linguagem), e o hash NT (MD4 da senha Unicode do pequeno endian UTF-16). Ambos os valores de hash são de 16 bytes (128 bits) cada.
O protocolo NTLM também usa uma das duas funções de uma forma, dependendo da versão do NTLM. O NT LanMan e a versão um do NTLM usam função de uma forma LanMan (LMOWF) baseada no DES, enquanto a versão dois do NTLM usa a função de uma forma NT baseada no MD5.