Разведка паролей
Прежде, чем приступать к добыванию хеш-значений, лучше попробовать найти пароли сразу в открытом виде. Чаще всего пароли находятся в следующих местах:
- На сервере
В виде хеш-значений пароли можно получить из следующих источников:
- Из таблицы sys.user$. К этой таблице имеют доступ
- все, кто обладают привилегией DBA
- все, кто обладают привилегией SELECT ANY DICTIONARY
- В версии 8i все, кто обладают привилегией SELECT ANY TABLE если значение параметра o7_dictionary_accessibility=true
- Из табличного пространства SYSTEM (датафайл system01.dbf)
Права на него по умолчанию rw-r----- т.е. читать может не только владелец-пользователь, но и вся и группа. - Из файла паролей orapwSID, который находится в каталоге $ORACLE_HOME/dbs, права на него также rw-r-----
- Из файлов экспорта и бэкапов RMAN'a.
- Из архивных логов
- Из нешифрованного TNS трафика. Несмотря на то, что СУБД Oracle не передает пароль по сети в открытом виде, тем не менее, хеш пароля проходит по сети и может быть перехвачен злоумышленником. В ОС Солярис, это можно проверить, перехватывая все пакеты, исходящие с Вашего локального ПК и входящие на порт 1521 сервера: snoop -vx from source_IP to dest_IP port 1521 > file
В Linux это можно проверить с помощью tcpdump.
Возможность шифрования трафика включена в опцию Oracle Advanced Security.
Типичные ошибки, относящиеся к паролям, укажут правильное направление атаки:
ORA_28000: The account is locked Логин заблокирован. | Подождать в течение PASSWORD_LOCK_TIME и повторить попытку или попросить администратора сменить пароль |
ORA-28001: The password has expired Истек срок действия пароля. | При возможности сменить пароль самостоятельно или обратиться за этим к администратору. |
ORA-00988: Missing or invalid password(s) Пароль не набран, либо набран неверно | Используйте двойные кавычки, например alter user scott identified by "!alex" |
ORA-01017: Invalid username/password; logon denied Введен неверный логин или пароль, доступ запрещен. | Проверьте правильность вводимых реквизитов. |