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
Esse post foi publicado em Dicas, Mundo SQL Server, Segurança, SQL Server, VIRTUAL PASS BR, Windows e marcado , , , , , por Junior Galvão - MVP. Guardar link permanente.

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 pela Uninove – Campus São Roque. 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 1994 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, entre outros recursos. 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. Experiência na Coordenação de Projetos de Alta Disponibilidade de Dados, utilizando Database Mirroring, Replicação Transacional e Merge, Log Shipping, etc. Trabalhei entre 2011 e 2017 como Administrador de Banco de Dados e Coordenador de TI no FIT – Instituto de Tecnologia da Flextronics, atualmente exerço a função de Professor Universitário na FATEC São Roque. CTO da Galvão Tecnologia, consultoria especializada em Gestão de TI, Administração de Servidores Windows Server, Bancos de Dados Microsoft SQL Server e Virtualização. Possuo titulação Oficial Microsoft MVP e reconhecimentos: MCC, MSTC e MIE.

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 )

Foto do Google+

Você está comentando utilizando sua conta Google+. 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 )

w

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.