среда, 29 июля 2009 г.

Хранение паролей в Oracle.

В сети встречал статьи с описанием метода хранения паролей в базе данных Oracle. Вот пришло время проверить на практике данные теории. В базе существует таблица user$, в которой хранятся хэши паролей пользователей. Заглянем в нее и выберем из нее хэши тех пользователей, которые нас интересуют. Например, SYS.

Немного теории - алгоритм создания хэша:

  1. Конкатенировать логин и пароль пользователя (обозначим эту операцию ||).
  2. Преобразовать полученную строку к верхнему регистру (UPPER(Логин||Пароль)).
  3. Если в ОС используется однобайтовая кодировка, то преобразовать каждый символ в двухбайтовый, заполнив старший байт нулями (0x00).
  4. Зашифровать получившуюся строку (дополняя ее нулями до длины блока), используя алгоритм DES в режиме CBC с фиксированным ключом, значение которого есть 0x0123456789ABCDEF.
  5. Зашифровать получившуюся строку еще раз с помощью DES-CBC, но используя последний блок предыдущего шага как ключ шифрования.
По адресу http://www.red-...ords.html находится замечательная статья с которой все началось, а также программка позволяющая осуществить подбор пароля по словарю. Моя история заканчивается на моменте, что в словарях, находящихся в архиве, присутствовал пароль установленный на системном пользователе.

АБС Б2. Невероятный реверс.
Разработчики программного комплекса АБС Б2, немного повысили безопасность, и пароль пользователя немного преобразовывают, перед тем как с этими данными будет выполнено подключение к базе данных. Сделали они довольно просто - проведя реверс строки с паролем. Поэтому если вы захотите "восстановить" пароли своих сотоварищей, то сделайте реверс паролей в файле wordlist и вперед... )))

Комментариев нет:

Отправить комментарий