Recomendações de segurança: Como usar senhas de alta segurança - Parte I

Por Diogo Henrique Silva

Este é o primeiro artigo de uma série que estarei escrevendo sobre a utilização de senhas seguras.

Nesse primeiro artigo abordarei como muitos usuários mal intencionados tentam descobrir senhas, quais sistemas operacionais dão suporte para senhas seguras, descrevo como os hashes de senha são armazenados no Windows, como os caracteres Unicode ajudam a deixar a senha mais segura e por fim há um pequeno "passo-a-passo" sobre a configuração de senhas seguras em um ambiente com Active Directory implantado.

Mais do que nunca usuários não autorizados têm acesso a diversos programas projetados para adivinhar senhas de contas de usuários. Assim que uma senha é adivinhada, essa informação pode ser usada para visualizar, roubar ou destruir informações armazenadas na sua rede.

Hoje em dia existem muitas alternativas de autenticação disponíveis, porém muitos usuários faz logon em seus computadores combinando seus nomes e uma senha.

Existem produtos disponíveis para garantir um acesso seguro para os sistemas como biometria, cartões inteligentes e senhas para um único acesso, mas a realidade é que as empresas contam apenas com as senhas como acesso seguro aos seus sistemas e continuarão assim por alguns anos.

Os usuários têm muitas senhas para memorizar, são as senhas do banco, do celular, das companhias de seguro, entre outras. Para facilitar a memorização das senhas, os usuários em sua maioria escolhem uma senha muito simples e fácil de lembrar como a data do nascimento, o nome dos pais, datas comemorativas, números de documentos, etc. Senhas simples e curtas são relativamente fáceis de serem descobertas por usuários mal intencionados. Muitos métodos são utilizados para descobrir senhas, alguns tentam realizar o logon usando a conta do usuário tentando adivinhar a senha digitando o nome dos filhos, datas; outros são mais "inteligentes" e utilizam programas simuladores de senha para descobrir a senha do usuário.

Seja qual for o método utilizado, o importante é sabermos que dá para retardar significativamente, ou até mesmo impedir, esses ataques de descoberta pela utilização de senhas de alta segurança. Por isso sempre que o seu ambiente permitir, os usuários devem utilizar senhas de alta segurança em todas as suas contas de computador.

Se você utiliza Windows NT, 2000, XP e 2003 Server você conseguirá utilizar senhas de alta segurança.

No Windows uma senha de alta segurança é uma senha que inclui caracteres de pelo menos três dos cinco grupos dos caracteres abaixo:

  • Letras minúsculas - a,b,c...

  • Letras maiúsculas - A,B,C...

  • Números - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

  • Não-alfanuméricos (símbolos) - ()`~!@#$%^&*-+=|{}[]\/?><

  • Caracteres Unicode -

Notas:

  • Os espaços não pertencem a nenhum dos grupos acima citados e não contam nos requisitos de complexidade de senhas.

  • As senhas de contas confidenciais, como a de Administradores ou as contas de serviços críticos da rede, devem ser compostas de caracteres dos cinco grupos mencionados.

Antes de começar

Antes de começar a descrever como podemos criar senhas complexas precisamos entender como hashes de senha são criados e armazenados nos sistemas operacionais Windows.

Armazenamento de senhas no Windows

Por padrão, o Windows (NT 4.0, 2000, XP e o Server 2003) nunca armazenam as senhas dos usuários em texto simples. As senhas são armazenadas usando duas representações de senhas diferentes, chamadas de "hashes". A primeira, o hash do LM (LAN Manager), é menos segura do que a segunda, o hash NTLM. As senhas são armazenadas em duas partes, ou dois hashes, pela compatibilidade com aplicativos s sistemas operacionais mais antigos.

O hash do LM (LAN Manager)

Tecnicamente falando, o hash do LM não é um hash. Ele é computado da seguinte maneira:

  1. Converte todos os caracteres minúsculos da senha em maiúsculos.

  2. Preenche a senha com caracteres NULOS até que ela tenha exatamente 14 caracteres.

  3. Divide a senha em duas partes de sete caracteres,

  4. Usa cada parte separadamente como uma chave DES para criptografar uma seqüência específica.

  5. Encadeia os dois textos criptografados em uma seqüência com 128 bits e armazena o resultado.

Como resultado do algoritmo usado para gerar o hash LM, o hash é muito fácil de ser quebrado. Primeiro, mesmo uma senha com mais de oito caracteres poder ser atacada em duas partes distintas. Depois todo o conjunto de caracteres minúsculos pode ser ignorado. Isso significa que a maioria das ferramentas para quebrar senhas começa quebrando os hashes LM e depois simplesmente varia os caracteres alfabéticos na senha quebrada para gerar senhas que fazem distinção entre maiúsculas e minúsculas.

O hash NTLM

O hash NTLM também é conhecido como hash Unicode porque dá suporte a todo o conjunto de caracteres Unicode. O hash NTLM é calculado pegando-se a senha do texto simples e gerando um hash MD4 (Message Digest 4) a partir dele. O hash MD4 é que está realmente armazenando no banco de dados do Active Directory ou banco de dados do SAM (Security Accounts Manager - Gerenciador de contas de segurança). O hash NTLM é muito mais resistente a ataques de força bruta do que o hash LM.

Entropia

Entropia é uma medida de desordem em um sistema. O nível de entropia em uma senha é determinado por quanto é aleatória em termos da variedade e da ordem dos seus caracteres. Quando estiver criando uma senha imune à quebra, é importante que você escolha cuidadosamente a entropia e onde ela aparecerá na sua senha.

Você torna a imunidade à quebra ainda maior usando as combinações com a tecla ALT. Observe que, por causa da forma como os hashes LM são criados, colocar um símbolo na oitava posição de uma senha com oito caracteres como a única entropia apenas gera um pequeno impacto na complexidade da senha. Para obter entropia e complexidade máximas, os caracteres não alfanuméricos precisam estar presentes em toda a senha.

Usando caracteres Unicode em combinações com a tecla ALT

A maioria dos usuários não deve ter problemas em criar frases-senha que possam ser lembradas facilmente, mas para contas especialmente confidenciais, como contas com privilégios de administrador do domínio, é extremamente recomendável que caracteres Unicode sejam incluídos nas senhas usando combinações com a tecla ALT.

Você os insere pressionando a tecla ALT (ou a tecla FN e ALT nos laptops) e digitando um número com três ou quatro dígitos no teclado numérico.

O uso desses tipos de caracteres reforça muito as senhas de duas maneiras. Primeiro, as ferramentas de quebra de senhas geralmente são incapazes de testar a grande maioria desses tipos de caracteres. Além disso, o uso desses caracteres aumenta muito a variedade de caracteres que podem existir na sua senha, o que reforça muito a sua possível complexidade. Quando usar as combinações com a tecla ALT, é muito importante que você lembre o zero inicial, se ele existir, por que esquecer o zero gera um caractere diferente.

Entre os valores numéricos que podem ser utilizados nas combinações com ALT, os valores recomendados se encontram entre 0128 e 1024. Os códigos ALT recomendados para serem utilizados em combinações com a tecla ALT são 0128-0159, 0306-0307, 0312, 0319-0320, 0329-0331, 0383, 0385-0406, 0408-0409, 0411-0414, 0418-0424, 0426, 0428-0429.

Identificando os sistemas operacionais existentes

Para definir diretivas de senhas que não causarão problemas quando os usuários fizerem logon nos computadores da sua empresa, você precisa saber quais os sistemas operacionais utilizados. É muito provável que já tenha isso documentado, mas se não tiver a documentação terá que realizar o levantamento dos sistemas operacionais utilizados, não precisa criar um inventário preciso de todos os sistemas da rede nesse momento.

Para poder criar uma diretiva de senhas conveniente, você precisa apenas saber se existem sistemas herdados (Windows 95, 98, Milenium).

Para identificar que sistemas operacionais são utilizados na rede da sua empresa, você pode seguir este processo:

  1. Clique em Iniciar e em Executar

  2. Em Abrir, digite winver.exe e clique em OK. O número da versão é exibido na caixa de diálogo Sobre o Windows.

    Cc716472.SenhasAltaSeguranca101(pt-br,TechNet.10).jpg

Entendendo as limitações de alguns sistemas operacionais

Como foi explicado anteriormente, os computadores que executam o Windows NT, 2000, XP e o Server 2003 dão suporte a senhas longas e de alto nível. Os computadores que executam o Windows 95, 98 e Milenium não. Se qualquer computador da sua rede executar qualquer uma dessas versões do Windows, sua diretiva de senha deverá ajustar-se a esses computadores.

Os computadores que executam versões anteriores ao Windows 2000, ou seja Windows 95, 98 e Milenium, as senhas dos usuários não podem ultrapassar 14 caracteres e não podem incluir caracteres gerados por combinações com a tecla ALT.

O computadores que executam o Windows NT 4.0 ou superior, as senhas dos usuários podem ter até 128 caracteres e podem incluir caracteres gerados por combinações com a tecla ALT.

Definindo os requisitos das senhas

Se estiver utilizando o Windows 2000 ou superior, poderá aplicar até cinco configurações para as características das senhas.

As etapas seguintes se refere a configuração de diretivas de senha em um servidor com Active Directory, caso esse não seja o seu ambiente as etapas poderão diferir ao apresentado a seguir.

Nota: Estarei utilizando o Group Policy Management Console para configurar a diretiva, caso não possua o GPMC, poderá utilizar a ferramenta Usuários e Grupos do Active Directory.

Vamos lá.

  1. Abra o console do GPMC e clique com o botão direito do mouse no domínio.

    Cc716472.SenhasAltaSeguranca102(pt-br,TechNet.10).jpg

  2. Em seguida clique em Create and Link a GPO Here.

    Cc716472.SenhasAltaSeguranca103(pt-br,TechNet.10).jpg

  3. Insira um nome para a GPO para a senha segura.

    Cc716472.SenhasAltaSeguranca104(pt-br,TechNet.10).jpg

  4. Clicando com o botão direito do mouse selecione a GPO que acabou de criar e clique em Edit e selecione Configuração do Computador>Configurações do Windows>Configurações de Segurança>Diretivas de conta. Vamos trabalhar apenas com a opção Diretivas de senha.

    Cc716472.SenhasAltaSeguranca105(pt-br,TechNet.10).jpg

  5. Ao clicarmos na opção Diretiva de Senha no lado direito aparecerão as opções para a configuração da Diretiva. Vamos configurar a Diretiva da seguinte maneira:

A senha deve satisfazer a requisitos de complexidade

Ativada

Aplicar histórico de senhas

24 senhas memorizadas

Armazena as senhas usando criptografia reversível para todos os usuários do domínio.

Desativado

Comprimento mínimo da senha

10 Caracteres

Tempo de vida máximo da senha

30 Dias

Tempo de vida mínimo da senha

10 Dias

A figura abaixo mostra o resultado das configurações.

Cc716472.SenhasAltaSeguranca106(pt-br,TechNet.10).jpg

Importante: Esse é apenas um modelo de exemplo de configuração, as configurações devem ser realizadas de acordo com o seu ambiente e levando em conta os sistemas operacionais existentes, conforme já mencionado.

Para finalizar é importante fazer a documentação das diretivas implantadas para referencia futura - o GPMC possui uma série de relatórios que podem ser salvos em .xml o que facilita muito o trabalho de documentação.

Não se esqueça de outro aspecto extremamente importante - a divulgação. Todas as alterações significativas nas diretivas precisam ser claramente divulgadas para as pessoas que trabalham na sua empresa. Quando implementar ou alterar diretivas de senhas, explique claramente às pessoas afetadas o que você está fazendo e por quê.

Esse artigo é o primeiro de uma série que estarei abordando sobre a criação/utilização de senhas seguras, espero ter agregado informações importantes.

Abraços e até a próxima.

Diogo Henrique
ITPró TechNet Brasil
contato@dhsit.com
www.dhsit.com