[Информационная безопасность, Open source, Администрирование баз данных] Сканер для выявления слабых паролей в СУБД

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
17-Ноя-2020 15:32

Сканеры уязвимостей есть в каждой компании, которая уделяет внимание информационной безопасности. Но далеко не каждый сканер умеет проверять пароли от локальных учетных записей в базе на стойкость.
Проблема в том, что локальные учетные записи чаще всего не имеют срока действия, не проверяются на сложность, и при этом имеют привилегированный доступ. Плюс ко всему парольные политики не всегда позволяют гибко настроить требования, к примеру, не запрещают использовать словарные пароли (вспомните всеми любимый P@ssw0rd).
У нас в QIWI были похожие проблемы, и в попытках их решить мы перепробовали разные решения для полноценного сканирования баз данных. Увы, они нацелены в основном только на проверку конфигурации СУБД и ничего более. При этом цена такого сканера довольно внушительна.
И если говорить в целом о сканере безопасности, который сможет проверить вашу инфраструктуру на уязвимости, то нужно иметь комплекс таких сканеров, что очень дорого.
В этом посте я расскажу о том, что мы использовали для своих задач и как в процессе пришли к выводу, что лучше и проще сделать своё. И поделюсь решением со всеми желающими.
Мы используем достаточно хороший популярный сканер. Но реализовать на нем необходимую нам функциональность было сложно — на каждую базу данных надо было создавать аудит файлы (так как конфигурации у нас в СУБД разные), плюс создавать множество учеток для сканирования, а затем добавлять новые учетки, снова меняя аудитники руками.
К тому же этот сканер не умеет брутить пароли в офлайн режиме, а это проблема. И вот почему.
Брутфорс можно проводить в двух режимах — онлайн и офлайн. Если мы говорим об онлайн брутфорсе, то это эмулирование пользовательского входа и активный перебор паролей. Одной из таких программ является Hydra, и она поддерживает большинство СУБД. Подход применим в большинстве случаев для проведения пентестов и обнаружения дефолтных учеток и паролей. Но не подходит для регулярных проверок и недефолтных учетных записей (пользовательские и сервисные). Потому что учетные записи в таком случае будут блокироваться при наличии соответствующей политики безопасности.
В отличие от онлайн брутфорса его офлайн версия заключается в том, что логины и хеши паролей выгружаются, а затем уже осуществляется брутфорс утилитами вида hashcat или John the Ripper. Тут и никакой нагрузки на БД, и без риска залочить учетку при брутфорсе. А еще вы можете использовать словари на несколько миллионов записей: что при онлайн брутфорсе практически невозможно.
Делаем своё
Так как текущим сканером реализовать описанный функционал сложно, а дополнительный покупать дорого, то пришла идея сделать свой сканер.
В итоге у нас появился собственный сканер для офлайн брутфорса локальных учетных записей.
Сканер поддерживает MS SQL, Oracle и PostgreSQL. Конечно, были свои технические сложности, например, вытащить хеши в формате, который поддерживает hashcat. Но основная сложность это понять как работать с найденными результатами: как поменять пароль без ущерба продуктиву, как сделать, чтобы такие пароли больше не появлялись и т.д.
Но это мы оставим за рамками данной статьи.
UI не сильно доработан, пока используем админку django. Выглядит он вот так:

  • есть возможность просмотра списка БД и добавление новых
  • видно статус брутфорса для каждой учетной записи
  • можно посмотреть результаты сканирования
  • при совпадении слабого пароля выводит это в результатах (хеш пароля, подобранный пароль и имя учетки)


  • можно задавать время сканирования

Главные плюсы
  • Умеет брутить в офлайн режиме
  • Есть проверка по словарю
  • Все это бесплатно

Если вы сомневаетесь нужно ли вам разворачивать такой сканер, можете попробовать вручную забрать хеши паролей от локальных учетных записей и прогнать их через hashcat
Примеры запросов:
oracle 11g
select user#, name, spare4 from sys.user$ where spare4 is not null;

microsoft sql server (выше 2005):
select name, cast (name+'|'+master.dbo.fn_VarBinToHexStr(password_hash) as varchar(1000)) FROM master.sys.sql_logins

Наш сканер не заменит полноценный сканер безопасности, но станет важным и приятным дополнением. И теперь он доступен всем: github.com/qiwi/bruteforce
Если у вас возникнут вопросы или трудности с разворачиванием, создавайте issue на github, мы обязательно ответим.
За реализацию большое спасибо Surdum и slezhuk
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_informatsionnaja_bezopasnost (Информационная безопасность), #_open_source, #_administrirovanie_baz_dannyh (Администрирование баз данных), #_bezopasnost (безопасность), #_qiwi, #_skanirovanie (сканирование), #_open_source, #_blog_kompanii_qiwi (
Блог компании QIWI
)
, #_informatsionnaja_bezopasnost (
Информационная безопасность
)
, #_open_source, #_administrirovanie_baz_dannyh (
Администрирование баз данных
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 16-Май 16:10
Часовой пояс: UTC + 5