Douglanilo
Mestre
Postagens : 959 Data de inscrição : 02/04/2009
| Assunto: [Windows 2000]Os segredos do Windows 2000 - Parte II Qui Abr 16, 2009 9:50 pm | |
| O processo de autenticação de uma estação de trabalho com um controlador de domínio na arquitetura Microsoft sempre foi alvo de inúmeras críticas, devido a algumas falhas e inseguranças. O protocolo de autenticação de rede utilizado pelo Windows NT é o NTLM (NT Lan Manager), e possui uma série de vantagens e desvantagens. O NTLM faz a autenticação através do método Challenge/Response, da seguinte forma: durante o processo de logon, o client envia uma solicitação de autenticação ao Domain Controller (DC). O DC conhece a senha do usuário, pois a possui armazenada em sua base de dados (Security Account Manager, ou SAM). Na verdade, esta senha conhecida pelo DC é apenas uma representação da senha, ou Hash, através do algorítmo MD4 (Message Digest 4). O DC encripta uma aleatoriamente em um bloco de dados, usando o hash do MD4, e envia de volta para o client. Por sua vez, este desencripta esse bloco de dados, e envia novamente ao DC. Se a senha utilizada foi a correta, então o DC realiza a autenticação, e fornece um Acess Token.
Existe um pacote chamado Directory Services Client, para ser instalado em clientes Windows 9x, e um erro extremamente comum é acreditar que esse pacote habilita Kerberos nesses clientes. Na realidade, permite apenas que os clientes façam consultas por objetos no Active Directoy pelo Search, e habilitam o NTLM V2, um modelo mais aperfeiçoado do NTLM original, mas com um pouco mais de segurança. O Windows NT 4.0, com os últimos Service Packs já habilita o NTLM V2. Apesar de ser um método rápido de autenticação, sua eficiência é baixa, pois quando um client acessa um servidor de aplicações, este servidor precisa contatar um Controlador de Domínio para verificar as credenciais de cada client. Outro problema é que, durante o processo de autenticação do client, não há certeza de que o Controlador de Domínio que está autenticando REALMENTE seja ele mesmo.
O modelo Kerberos foi desenvolvido inicialmento pelo Massachusetts Institute of Technology (MIT), e a versão implementada no Windows é a V5 (Kerberos version 5). Assim como na Mitologia Grega, onde Cerberus era o cão de três cabeças que guardava a porta do inferno, o Kerberos possui três unidades envolvidas no processo de autenticação: AS – Authentication Service, TGS – Ticket-Granting Service e CS – Client/Server. O seu método de criptografia é baseado em Shared Secret, ou chaves simétricas. A mesma chave que é utilizada para encriptar é utilizada para desencriptar.
Sempre que um client utilizando Windows 2000 Professional tenta realizar o logon em uma rede, utiliza o Kerberus como protocolo na primeira tentativa. Caso o mesmo client esteja realizando o logon em uma rede com um Domain Controller Windows NT 4.0, não haverá resposta. Portanto, tentará o NTLM na sequência.
Vamos analisar a seguir o passo a passo, demonstrando o que ocorre durante o processo de Logon e autenticação de um usuário em uma rede 100% baseada em Windows 2000. Neste exemplo, vamos utilizar um usuário chamado Bill, fazendo o logon em sua estação de trabalho, rodando o Windows 2000 Professional.
O usuário pressiona Ctrl+Alt+Del.
O serviço de Winlogon faz uma chamada ao MSGINA (Microsoft Graphical Identification and Authentication).
O arquivo MSGINA.DLL é acionado, exibindo a tela de Logon para que o usuário forneça o Username e o Password.
Bill digita seu Username e seu Password, e pressiona Enter.
O Kerberos Client existente na máquina utilizada por Bill converte a senha, com uma chave de criptografia usando a função de Hash. O algoritmo utilizado aqui é o DES-CBC-CRC (Data Encryption Standard-Cypher Block Chaining with Cyclic Redundancy Check), que é um algoritmo de chave secreta usada para confidencialidade. Um número aleatório é gerado e usado como chave secreta para encriptar os dados, e uma verificação final é feita dos dados para certificar-se de que não existem erros durante a transmissão e recepção. Na implementação original do Kerberos, é utilizado outro algoritmo que é o DES-CBC-MD5. O resultado disso é chamado de User Long-Term Key, e é armazenado no cache de credenciais. Isto só ocorre durante esta fase de logon.O DNS sabe quais são os servidores Key Distribution Center (KDC) da rede, mantendo essa informação no registro Servive (SRV). Através de um DNS lookup, a estação tenta contatar no DNS qual é o KDC mais próximo ou disponível. O KDC é um serviço executado em toda máquina Windows 2000 Server configurada como Domain Controller. O KDC inclui dois serviços: o Authentication Service (AS) e o Ticket-Granting Service (TGS). No modelo de Kerberos são fornecidos Tickets de acesso a redes.
O Client contata o KDC, solicitando uma chave de sessão para ser usada na autenticação, durante a sessão de logon. Para poder fazer isso, ele envia uma mensagem do tipo KRB_AS_REQ, ou Kerberos Authentication Service Request. Dentro desta mensagem estão incluídos o UserID do usuário Bill, o serviço solicitado (ou TGS), e uma pré-autenticação de dados (PADATA ou Pré-Authentication Data), que prova que Bill conhece realmente a sua senha. Isto é uma informação adicionada ao dado, para indicar a hora em que foi feito, e encriptada com o Long-Term Key do usuário Bill.
O KDC recebe a requisição e consulta no Active Directory pelo usuário Bill. Dentro do Active Directory não são armazenados as senhas mas sim, suas representações. Com base nestas informações o KDC obtém o Long-term Key, desencripta o PADATA e faz a validação da identidade de Bill.
Após fazer a validação de Bill, o KDC cria uma chave de sessão, e encripta a cópia da chave do client com o seu Long-Term Key. A cópia do servidor da chave de sessão é encriptada no Long-Term Key. Ambas as chaves estão disponíveis na base de dados do KDC no Active Directory.
O KDC envia um TGT (Ticket Granting Ticket – tipo especial de ticket de sessão, que o KDC utiliza quando precisa se comunicar com o client), e a chave de sessão, ou Session Key, encriptada com a chave do client em uma mensagem do tipo KRB_AS_REP (Kerberos Authentication Service Reply). O TGT inclui uma cópia de ambas as chaves de sessão encriptadas, e informação sobre o client. O TGT é tambem encriptado com a chave do server. Um detalhe importante é que somente o client pode desencriptografar a cópia da chave de sessão, e somente o server pode desencriptografar o TGT, para ler seu conteúdo. O Server nao mantêm a cópia da chave de sessão.
O client recebe o TGT e a chave de sessão. Nesse momento, utiliza a sua cópia armazenada do Long-Term Key, e desencripta a cópia da chave de sessão. Essa chave agora passa a ser conhecida como a Logon Session Key. Esta chave e o TGT são armazenados em cache na memória pelo Local Security Authority (LSA) da máquina do client. Este armazenamento em memória pelo LSA é necessário, pois os dados armazenados por ele não vão para paginação. Isso evita que sejam guardados dados localmente e, em caso de Logoff ou desligamento da maquina, são perdidas as chaves e todo o processo se reinicia no próximo Logon. Este cache das credenciais é gerenciado pelo SSP (Kerberos Security Support Provider – um componente do protocolo Kerberos que habilita o LSA em um domínio, para se comunicar diretamente com o KDC em outro domínio).
Depois de ter sido pré-autenticado e recebido o TGT , o client está pronto para acessar recursos e serviços nos demais servidores. O processo de logon do Kerberos pode até parecer mais lento que o NTLM, mas sua principal vantagem é que, uma vez que o client está em posse destas chaves, não haverá mais a necessidade de contatar o DC para checar novamente suas credenciais. O Ticket recebido pelo DC tem validade de 10 horas. Após este horário, o SSP utiliza uma cópia armazenada pelo LSA do hash do password do usuário e, com ela, obtêm um novo TGT, sem perguntar ao usuário ou obrigando-o a fazer um novo logon.
Através deste processo verificamos que existe autenticação mútua, pois tanto o client quanto o server sabem que estão negociando com a máquina correta. Além do mais, a implementação do Kerberos no Windows 2000 permite a comunicação com demais sistemas operacionais, desde que implementem o Kerberos V5.
Acredito que esta matéria, apesar de ainda estar faltando mais detalhes, pois trata-se de um assunto bastante complexo, conseguirá tornar o entendimento do Kerberos muito mais simples.
Autor original: Fabio Hara Direitos Autorais: Fabio Hara
Fabio Hara é MVP de Windows Server, MCSE e MCT e trabalha como consultor de redes e instrutor na Brás e Figueiredo. Atualmente ministra palestras mensais na Microsoft sobre os recursos do Windows 2000 e em projetos de migração de Windows NT 4.0 para Windows 2000. |
|
Raygodness
Veterano
Postagens : 404 Data de inscrição : 04/04/2009 Localização : bragança paulista - SP Emprego/lazer : computadores Mensagem Pessoal : O que vem por trás, não é mole.
| Assunto: Re: [Windows 2000]Os segredos do Windows 2000 - Parte II Sex Abr 17, 2009 2:29 pm | |
| vo precisa de mais pipoca... sao sei-la-quantas-partes de historia! |
|
Douglanilo
Mestre
Postagens : 959 Data de inscrição : 02/04/2009
| Assunto: Re: [Windows 2000]Os segredos do Windows 2000 - Parte II Sex Abr 17, 2009 3:08 pm | |
| - Raygodness escreveu:
- vo precisa de mais pipoca... sao sei-la-quantas-partes de historia!
Para quê comer pipoca? T.T Isso é quase um flood, lol. (ou totalmente) Só espero que os segredos não sejam mais e que sejam divulgados para todos entenderem tudo sobre o Windows que marcou uma parte da história. Vai precisar mais de 20 XD |
|
Conteúdo patrocinado
| Assunto: Re: [Windows 2000]Os segredos do Windows 2000 - Parte II | |
| |
|