Utilizando a Função PWDCompare, para comparar e pesquisar senhas no Microsoft SQL Server

Pessoal, tudo bem?

Estou de volta com uma das minhas dicas para o Microsoft SQL Server. Sendo que esta dica pode ser aplicada a partir da versão 2000 e totalmente compatível como  2008 e R2.

Pois bem, você já ouvir falar da função PWDCompare?

Trata-se de uma simples função existente desde o Microsoft SQL Server 2000, que possui como objetivo realizar a análise e comparação de senhas de logons existente em nossas instâncias e servidores SQL Server.

Além disso, a PWDCompare tem como funcionalidade a capacidade de encontrar senhas consideradas fracas como também senhas em branco configuradas para as contas de logons.

Sua forma de utilização é bastante simples, o que permite para o desenvolver aplicar este recurso em seus projetos sem necessitar de qualquer tipo de treinamento, aperfeiçoamento ou customização do seu ambiente.

Outro detalhe muito importante, esta relacionado a utilização desta função, o que qualquer usuário que por padrão esta vinculado a role Public poderá fazer uso da mesma.

Dentre um dos pilares ou mecanismo de segurança, a PWDCompare pode ser considerada um recurso que possibilita a aplicação de mais um mecanismo ou camada de validação e proteção do nosso ambiente.

A seguir apresento os parâmetros existentes para esta função, dentre eles um chamado Version:

  • clear_text_password: Parâmetro utilizado como palavra-chave para análise e comparação do password armazenado no SQL Server de forma criptografada. O retorno deste parâmetro é uma coluna no formato sysname (nvarchar(128));

 

  • password_hash: Parâmetro utilizado como hash de criptografia de uma senha. Este parâmetro possui o retorno de password_hash no varbinary (128); e

 

  • Version: Parâmetro opcional que pode ser definido como 1 se password_hash representar um valor de um login anterior ao SQL Server 2000 que foram migrados para o SQL Server 2005 ou SQL Server 2008, mas nunca convertido para o sistema de SQL Server 2000. Seu retorno é valor no formato int.

Para ilustrar algumas formas de uso da PWDCompare, apresento a abaixo alguns exemplos: 

  1. Identificando contas de logins que não possuem senhas definidas em instâncias do Microsoft SQL Server 2005 e 2008:

SELECT name FROM sys.sql_logins

WHERE PWDCOMPARE(”, password_hash) = 1

OR PWDCOMPARE(”, password_hash, 1) = 1 ;

Obs: Vale destacar que este código utilizado o parâmetro password_hash na claúsula where com objetivo de identificar as senhas não definidas, mas também como mecanismo de validação para o formato de senhas posteriores ao Microsoft SQL Server 2000. 

  1. Identificando contas de logins que não possuem senhas definidas no Microsoft SQ Server 2000:

SELECT name FROM syslogins

WHERE PWDCOMPARE (”, password) = 1

OR PWDCOMPARE(”, password, 1) = 1  ;

Neste segundo exemplo, ao invés de utilizarmos o parâmetro password_hash, é utilizado o parâmetro password, sendo este responsável em identificar os valores armazenados para o password da conta de logon. Onde se valor de retorno for 1 isso indica que a senha não esta definida, caso contrário a conta de logon possui uma senha.

Obs: Por se tratar de um código que analise senhas armazenadas para logins do SQL Server 2000, utilizado a tabela de sistema SysLogins, ao invés da System View Sys.sql_logins existente a partir do SQL Server 2005. 

  1. Procurando passwords que apresentem senha fraca, ou considerados passwords comuns:

SELECT name FROM sys.sql_logins

WHERE PWDCOMPARE(‘senha’, password_hash) = 1

OR PWDCOMPARE(‘senha, password_hash, 1) = 1 ;

Neste exemplo, estamos novamente utilizando o parâmetro password_hash, como forma de identificação do password que desejamos procurar em nossa instância ou servidor Microsoft SQL Server, através do valor informado no primeiro parâmetro da função PWDCompare, no nosso exemplo a palavra “Senha” esta sendo procurada como uma possível senha comum ou fraca.

Galera é isso, chegamos ao final de mais uma dica, espero que vocês possam ter gostado. Desejo que as informações apresentadas neste post possam ser úteis em seu ambiente de trabalho, testes e estudos.

Mais uma vez obrigado, por sua visita.

Nos encontramos nas próximas dicas.

Até mais.

Anúncios

Sobre Junior Galvão - MVP

Profissional com vasta experiência na área de Tecnologia da Informação e soluções Microsoft. Graduado no Curso Superior em Gestão da Tecnologia de Sistemas de Informação. Pós-Graduado no Curso de Gestão e Engenharia de Processos para Desenvolvimento de Software com RUP na Faculdade FIAP - Faculdade de Informática e Administração Paulista de São Paulo. Pós-Graduado em Gestão da Tecnologia da Informação Faculdade - ESAMC Sorocaba. Formação MCDBA Microsoft, autor de artigos acadêmicos e profissionais postados em Revistas, Instituições de Ensino e WebSistes. Meu primeiro contato com tecnologia ocorreu em 1995 após meus pais comprarem nosso primeiro computador, ano em que as portas para este fantástico mundo se abriram. Neste mesmo ano, comecei o de Processamento de Dados, naquele momento a palavra TI não existia, na verdade a Tecnologia da Informação era conhecida como Computação ou Informática, foi assim que tudo começou e desde então não parei mais, continuando nesta longa estrada até hoje. Desde 2001 tenho atuado como Database Administrator - Administrador de Banco de Dados - SQL Server em tarefas de Administração, Gerenciamento, Migração de Servidores e Bancos de Dados, Estratégias de Backup/Restauração, Replicação, LogShipping, Implantação de ERPs que utilizam bancos SQL Server, Desenvolvimento de Funções, Stored Procedure, Triggers. Experiência na Coordenação de Projetos de Alta Disponibilidade de Dados, utilizando Database Mirroring, Replicação Transacional e Merge, Log Shipping. Atualmente trabalho como Administrador de Banco de Dados no FIT - Instituto de Tecnologia da Flextronics, como também, Consultor em Projetos de Tunnig e Performance para clientes, bem como, Professor Titular na Fatec São Roque. Desde 2008 exerço a função de Professor Universitário, para as disciplinas de Banco de Dados, Administração, Modelagem de Banco de Dados, Programação em Banco de Dados, Sistemas Operacionais, Análise e Projetos de Sistemas, entre outras. Possuo titulações e Reconhecimentos: Microsoft MVP, MCC, MSTC e MIE.
Esse post foi publicado em Dicas, Mundo SQL Server, Segurança, SQL Server, VIRTUAL PASS BR, Windows e marcado , , , , , . Guardar link permanente.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s