Scanner pour détecter les mots de passe faibles dans le SGBD

Des scanners de vulnérabilité sont présents dans toutes les entreprises qui accordent une attention particuliÚre à la sécurité des informations. Mais tous les scanners ne sont pas capables de vérifier les mots de passe des comptes locaux dans la base de données pour la solidité.



Le problÚme est que les comptes locaux n'expirent le plus souvent pas, ne sont pas vérifiés pour leur complexité et ont toujours un accÚs privilégié. De plus, les politiques de mot de passe ne permettent pas toujours une configuration flexible des exigences, par exemple, elles n'interdisent pas l'utilisation de mots de passe de dictionnaire (rappelez-vous le P @ ssw0rd préféré de tous).



Nous avons eu des problĂšmes similaires Ă  QIWI, et pour tenter de les rĂ©soudre, nous avons essayĂ© diffĂ©rentes solutions pour une analyse complĂšte de la base de donnĂ©es. HĂ©las, ils visent principalement Ă  vĂ©rifier la configuration du SGBD et rien de plus. Dans le mĂȘme temps, le prix d'un tel scanner est assez impressionnant.



Et si nous parlons en général d'un scanner de sécurité capable de vérifier les vulnérabilités de votre infrastructure, vous devez disposer d'un ensemble de tels scanners, ce qui est trÚs coûteux.



Dans cet article, je parlerai de ce que nous avons utilisé pour nos tùches et de la maniÚre dont nous en sommes arrivés à la conclusion qu'il est préférable et plus facile de créer les nÎtres. Et je partagerai la solution avec tout le monde.





Nous utilisons un assez bon scanner populaire. Mais il était difficile d'implémenter les fonctionnalités dont nous avions besoin - nous devions créer des fichiers d'audit pour chaque base de données (puisque nous avons différentes configurations dans le SGBD), créer de nombreux comptes pour l'analyse, puis ajouter de nouveaux comptes, en changeant à nouveau les auditeurs à la main.

De plus, ce scanner ne sait pas comment brouiller les mots de passe en mode hors ligne, ce qui pose problĂšme. Et c'est pourquoi.



La force brute peut ĂȘtre effectuĂ©e en deux modes - en ligne et hors ligne. Si nous parlons de force brute en ligne, il s'agit d'une Ă©mulation des connexions utilisateur et d'attaques actives par force brute. Un de ces programmes est Hydra, et il prend en charge la plupart des SGBD. L'approche est applicable dans la plupart des cas pour effectuer des tests de pĂ©nĂ©tration et dĂ©tecter les comptes et mots de passe par dĂ©faut. Mais ne convient pas aux contrĂŽles rĂ©guliers et aux comptes non par dĂ©faut (utilisateur et service). Parce que les comptes dans ce cas seront bloquĂ©s s'il existe une politique de sĂ©curitĂ© appropriĂ©e.



Contrairement à la force brute en ligne, sa version hors ligne est que les connexions et les hachages de mots de passe sont déchargés, puis la force brute est effectuée à l'aide d'utilitaires tels que hashcat ou John the Ripper. Il n'y a aucune charge sur la base de données, et sans risque de verrouiller le compte avec la force brute. Et vous pouvez également utiliser des dictionnaires avec plusieurs millions d'entrées: ce qui est presque impossible avec la force brute en ligne.



Nous faisons notre



Comme il est difficile d'implémenter la fonctionnalité décrite avec le scanner actuel et qu'il est coûteux d'en acheter un supplémentaire, l'idée est venue de créer votre propre scanner.



En conséquence, nous avons notre propre scanner pour les comptes locaux hors ligne par force brute.

Le scanner prend en charge MS SQL, Oracle et PostgreSQL. Bien sûr, il y avait des difficultés techniques, par exemple, extraire des hachages dans un format pris en charge par hashcat. Mais la principale difficulté est de comprendre comment travailler avec les résultats trouvés: comment changer le mot de passe sans nuire à la productivité, comment s'assurer que de tels mots de passe ne réapparaissent plus, etc.

Mais nous laisserons cela en dehors de la portée de cet article.



L'interface utilisateur n'est pas beaucoup améliorée lors de l'utilisation du panneau d'administration de django. Cela ressemble à ceci:







  • il est possible de consulter la liste des bases de donnĂ©es et d'en ajouter de nouvelles
  • vous pouvez voir l'Ă©tat de la force brute pour chaque compte
  • vous pouvez voir les rĂ©sultats de l'analyse
  • si un mot de passe faible correspond, il l'affiche dans les rĂ©sultats (hachage du mot de passe, deviner le mot de passe et le nom du compte)








  • vous pouvez dĂ©finir la durĂ©e du scan




Principaux avantages



  • Sait brutaliser en mode hors ligne
  • Il y a une vĂ©rification du dictionnaire
  • Tout est gratuit




Si vous doutez de la nécessité de déployer un tel scanner, vous pouvez essayer de récupérer manuellement les hachages de mot de passe des comptes locaux et de les exécuter via des



exemples de requĂȘte de hachage :



oracle 11g

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




serveur Microsoft SQL (au-dessus de 2005):

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




Notre scanner ne remplacera pas un scanner de sécurité à part entiÚre, mais ce sera un ajout important et agréable. Et maintenant, il est accessible à tous: github.com/qiwi/bruteforce

Si vous avez des questions ou des difficultés avec le déploiement, créez un problÚme sur github, nous y répondrons certainement.



Merci beaucoup pour la mise en ƓuvreSurdum et slezhuk



All Articles