Шифрование паролей в СУБД Oracle

       

Доступ к хешам паролей через sys.user$


Пароли пользователей хранятся в таблице sys.user$, над которой построен ряд стандартных представлений. Как сама sys.user$, так и представления могут быть использованы для получения хешей паролей. Представление DBA_TAB_COLS позволяет найти такие столбцы:

SQL> select owner, table_name from dba_tab_cols where column_name = 'PASSWORD'; SYS USER$ SYS USER_HISTORY$ SYS LINK$ SYS KU$_ROLE_VIEW SYS KU$_DBLINK_VIEW SYS DBA_USERS SYS KU$_10_1_DBLINK_VIEW SYS KU$_USER_VIEW SYS EXU8PHS SYS USER_DB_LINKS SYS EXU8ROL SYS KU$_PSW_HIST_LIST_VIEW WKSYS WK$_AUTHBASIC WKSYS WK$AUTHBASIC WKSYS WK$$AUTHBASIC

Потенциальными подозреваемыми будут аккаунты, имеющие доступ к этим столбцам.

Существует скрипт who_can_access.sql Питера Финигана (Pete Finnigan), позволяющий найти пользователей, имеющих доступ к этим объектам. Скрипт можно взять .

Таким образом, можно определить пользователей, получивших права SELECT ANY DICTIONARY или SELECT ANY TABLE. Привилегия SELECT ANY TABLE работает только в случае если o7_dictionary_accessibilty=TRUE

Чтобы получать информацию о пользователях, обращавшихся к учетным записям можно включить аудит на DBA_USERS

SQL >audit SELECT on dba_users;

Audit succeeded.

Злоумышленник, тем не менее, может обратиться к таблице Sys.user$ напрямую, на которую аудит установить невозможно:

SQL >audit select on sys.user$; audit select on sys.user$ * ERROR at line 1: ORA-00701: object necessary for warmstarting database cannot be altered

Но это единственная таблица, которой не повезло больше остальных. На остальные системные таблицы, содержащие столбец PASSWORD, аудит успешно устанавливается:

SQL >audit select on sys.link$; Audit succeeded. SQL >audit select on sys.user_history$; Audit succeeded. SQL >audit select on sys.dba_users; Audit succeeded. SQL >audit select on sys.KU$_ROLE_VIEW; Audit succeeded. SQL >audit select on sys.KU$_DBLINK_VIEW; Audit succeeded. SQL >audit select on sys.KU$_10_1_dblink_view; Audit succeeded. SQL >audit select on sys.KU$_USER_VIEW; Audit succeeded. SQL >audit select on sys.exu8phs; Audit succeeded. SQL >audit select on sys.user_db_links; Audit succeeded. SQL >audit select on sys.exu8rol; Audit succeeded. SQL >audit select on sys.KU$_psw_hist_list_view; Audit succeeded.



Содержание раздела