Scanner para detectar senhas fracas em DBMS

Existem scanners de vulnerabilidade em todas as empresas que prestam atenção à segurança da informação. Mas nem todo scanner é capaz de verificar a força das senhas de contas locais no banco de dados.



O problema é que as contas locais geralmente não expiram, não são verificadas quanto à complexidade e ainda têm acesso privilegiado. Além disso, as políticas de senha nem sempre permitem a configuração flexível de requisitos, por exemplo, não proíbem o uso de senhas de dicionário (lembre-se do P @ ssw0rd favorito de todos).



Nós da QIWI tínhamos problemas semelhantes e, na tentativa de resolvê-los, tentamos soluções diferentes para uma varredura completa de banco de dados. Infelizmente, eles têm como objetivo principal verificar a configuração do DBMS e nada mais. Ao mesmo tempo, o preço desse scanner é bastante impressionante.



E se falamos em geral sobre um scanner de segurança que pode verificar sua infraestrutura em busca de vulnerabilidades, então você precisa ter um conjunto de tais scanners, o que é muito caro.



Neste post vou falar sobre o que usamos para nossas tarefas e como no processo chegamos à conclusão de que é melhor e mais fácil fazer as nossas. E vou compartilhar a solução com todos.





Usamos um scanner bastante popular. Mas foi difícil implementar a funcionalidade de que precisávamos - tivemos que criar arquivos de auditoria para cada banco de dados (já que temos configurações diferentes no DBMS), além de criar muitas contas para digitalização e, em seguida, adicionar novas contas, novamente mudando os auditores manualmente.

Além disso, este scanner não sabe como destruir senhas offline, o que é um problema. E é por isso.



A força bruta pode ser realizada em dois modos - online e offline. Se estamos falando sobre força bruta online, então isso é emulação de logins de usuários e ataques de força bruta ativos. Um desses programas é Hydra, e ele suporta a maioria dos SGBDs. A abordagem é aplicável na maioria dos casos para conduzir testes de penetração e detectar contas e senhas padrão. Mas não é adequado para verificações regulares e contas não padrão (usuário e serviço). Porque as contas, neste caso, serão bloqueadas se houver uma política de segurança apropriada.



Ao contrário da força bruta online, sua versão offline é que os logins e hashes de senha são descarregados, e então a força bruta é executada com utilitários como hashcat ou John the Ripper. Não há carga no banco de dados, e sem o risco de travar a conta com força bruta. E você também pode usar dicionários com vários milhões de entradas: o que é quase impossível com força bruta online.



Nós fazemos nosso



Como é difícil implementar a funcionalidade descrita com o scanner atual e é caro comprar um adicional, surgiu a ideia de fazer seu próprio scanner.



Como resultado, temos nosso próprio scanner para contas locais de força bruta offline.

O scanner oferece suporte a MS SQL, Oracle e PostgreSQL. Claro, houve algumas dificuldades técnicas, por exemplo, puxar hashes em um formato compatível com hashcat. Mas a principal dificuldade é entender como trabalhar com os resultados encontrados: como alterar a senha sem comprometer a produtividade, como garantir que tais senhas não apareçam novamente, etc.

Mas deixaremos isso fora do escopo deste artigo.



A interface do usuário não é muito melhorada, ao usar o painel de administração django. Se parece com isso:







  • é possível ver a lista de bancos de dados e adicionar novos
  • você pode ver o status de força bruta para cada conta
  • você pode ver os resultados da verificação
  • se uma senha fraca corresponde, ele exibe isso nos resultados (hash de senha, adivinhar a senha e o nome da conta)








  • você pode definir o tempo de varredura




Principais vantagens



  • Sabe como fazer brut no modo offline
  • Há uma verificação de dicionário
  • É tudo grátis




Se você tiver dúvidas se precisa implantar esse scanner, pode tentar coletar manualmente os hashes de senha de contas locais e executá-los por meio de



exemplos de solicitação de hashcat :



oracle 11g

select user#, name, spare4 from sys.user$ where spare4 is not null;




servidor sql da microsoft (acima de 2005):

select name, cast (name+'|'+master.dbo.fn_VarBinToHexStr(password_hash) as varchar(1000)) FROM master.sys.sql_logins




Nosso scanner não substituirá um scanner de segurança completo, mas será uma adição importante e agradável. E agora está disponível para todos: github.com/qiwi/bruteforce

Se você tiver alguma dúvida ou dificuldade com a implantação, crie um problema no github, nós definitivamente responderemos.



Muito obrigado pela implementaçãoSurdum e Slezhuk



All Articles