Escáner para detectar contraseñas débiles en DBMS

Los escáneres de vulnerabilidades se encuentran en todas las empresas que prestan atención a la seguridad de la información. Pero no todos los escáneres pueden verificar la solidez de las contraseñas de las cuentas locales en la base de datos.



El problema es que las cuentas locales a menudo no caducan, no se verifica su complejidad y aún tienen acceso privilegiado. Además, las políticas de contraseñas no siempre permiten una configuración flexible de los requisitos, por ejemplo, no prohíben el uso de contraseñas de diccionario (recuerde el P @ ssw0rd favorito de todos).



Tuvimos problemas similares en QIWI y, en un intento por resolverlos, probamos diferentes soluciones para un escaneo completo de la base de datos. Por desgracia, están dirigidos principalmente solo a verificar la configuración del DBMS y nada más. Al mismo tiempo, el precio de dicho escáner es bastante impresionante.



Y si hablamos en general de un escáner de seguridad que puede verificar su infraestructura en busca de vulnerabilidades, entonces necesita tener un conjunto de esos escáneres, que es muy costoso.



En este post hablaré sobre lo que usamos para nuestras tareas y cómo en el proceso llegamos a la conclusión de que es mejor y más fácil hacer las nuestras. Y compartiré la solución con todos.





Estamos usando un escáner popular bastante bueno. Pero fue difícil implementar la funcionalidad que necesitábamos: tuvimos que crear archivos de auditoría para cada base de datos (ya que tenemos diferentes configuraciones en el DBMS), además de crear muchas cuentas para escanear y luego agregar nuevas cuentas, nuevamente cambiando los auditores a mano.

Además, este escáner no sabe cómo descifrar contraseñas sin conexión, lo cual es un problema. Y es por eso.



La fuerza bruta se puede llevar a cabo de dos modos: online y offline. Si estamos hablando de fuerza bruta en línea, entonces esto es emulación de inicios de sesión de usuario y ataques activos de fuerza bruta. Uno de esos programas es Hydra y es compatible con la mayoría de los DBMS. El enfoque es aplicable en la mayoría de los casos para realizar pruebas de penetración y detectar cuentas y contraseñas predeterminadas. Pero no apto para cheques regulares y cuentas no predeterminadas (usuario y servicio). Porque las cuentas en este caso se bloquearán si existe una política de seguridad adecuada.



A diferencia de la fuerza bruta en línea, su versión fuera de línea consiste en el hecho de que los inicios de sesión y los hashes de contraseñas se descargan, y luego la fuerza bruta se realiza utilizando utilidades como hashcat o John the Ripper. No hay carga en la base de datos y sin el riesgo de bloquear la cuenta con fuerza bruta. Y también puede usar diccionarios con varios millones de entradas: lo cual es casi imposible con la fuerza bruta en línea.



Hacemos nuestro



Dado que es difícil implementar la funcionalidad descrita con el escáner actual, y es caro comprar uno adicional, surgió la idea de hacer su propio escáner.



Como resultado, tenemos nuestro propio escáner para cuentas locales de fuerza bruta fuera de línea.

El escáner es compatible con MS SQL, Oracle y PostgreSQL. Por supuesto, hubo algunas dificultades técnicas, por ejemplo, extraer hashes en un formato compatible con hashcat. Pero la principal dificultad es entender cómo trabajar con los resultados encontrados: cómo cambiar la contraseña sin perjudicar la productividad, cómo asegurarse de que dichas contraseñas no vuelvan a aparecer, etc.

Pero dejaremos esto fuera del alcance de este artículo.



La interfaz de usuario no mejora mucho al usar el panel de administración de django. Se parece a esto:







  • es posible ver la lista de bases de datos y agregar nuevas
  • puedes ver el estado de fuerza bruta de cada cuenta
  • puedes ver los resultados del escaneo
  • si una contraseña débil coincide, muestra esto en los resultados (hash de contraseña, adivinar contraseña y nombre de cuenta)








  • puede configurar el tiempo de escaneo




Ventajas principales



  • Sabe cómo brut en modo offline
  • Hay una verificación de diccionario
  • Es todo gratis




Si tiene dudas sobre si necesita implementar un escáner de este tipo, puede intentar recoger manualmente los hashes de contraseña de las cuentas locales y ejecutarlos a través de



ejemplos de solicitud de hashcat : Oracle



11g

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




servidor microsoft sql (anterior a 2005):

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




Nuestro escáner no reemplazará a un escáner de seguridad completo, pero será una adición importante y agradable. Y ahora está disponible para todos: github.com/qiwi/bruteforce

Si tiene alguna pregunta o dificultad con la implementación, cree un problema en github, definitivamente responderemos.



Muchas gracias por la implementación.Surdum y slezhuk



All Articles