Восстановление пароля базы данных Sybase

У меня есть полномочия администратора баз данных для базы данных sybase в Windows.

У меня есть другой пользователь, для которого я не знаю пароль.

Я регулярно использую приложение, которое знает пароль и использует пароль для автоматического входа в приложение. Однако я не могу найти способ найти этот пароль в любом месте приложения или его dll / files / registry / и т. Д.

Я, очевидно, не хочу просто менять пароль пользователя, так как пароль в приложении не может быть обновлен (о чем я знаю).

Я хочу иметь возможность войти в базу данных как этот пользователь.

Существуют ли какие-либо параметры ведения журнала для сервера базы данных, который будет регистрировать пароль в виде открытого текста? Или любые другие методы, которые я могу использовать для получения пароля (возможно, через login_procedure)? Я бы также согласился получить хеш для пароля (+ соль).


person David Murdoch    schedule 13.01.2014    source источник
comment
Как это связано с разработкой программного обеспечения, т.е. с проблемами, которые у вас возникают с кодом?   -  person Robert Harvey    schedule 14.01.2014
comment
Существуют ли какие-либо параметры ведения журнала для сервера базы данных, который будет регистрировать пароль в виде открытого текста? - Если есть, я бы не хотел быть пользователем на этом сервере. Хранение паролей в виде открытого текста, как правило, - плохая идея. (Я не буду говорить всегда, потому что из большинства правил есть исключения ... но да, почти всегда.)   -  person Brian S    schedule 14.01.2014
comment
@RobertHarvey, хороший вопрос, я пытался найти базу данных, используя разные SQL-запросы и процедуры, а также отладку через Visual Studio и Process Monitor. Кроме того, как только он будет найден, я буду использовать этот пароль в своем собственном приложении для доступа к базе данных. Итак, хотя я сам пытался решить свою проблему с кодом, я понимаю, нужно ли вам закрывать этот вопрос как не по теме.   -  person David Murdoch    schedule 14.01.2014
comment
@BrianS, я согласен. К сожалению, я нахожусь в одной из тех ситуаций, когда крайне необходимо получить пароль в виде открытого текста.   -  person David Murdoch    schedule 14.01.2014


Ответы (4)


Не существует поддерживаемого SAP Sybase способа получить пароль в виде открытого текста. Вы можете просмотреть хешированный пароль, запросив столбец master..syslogins.passwords.

Возможный обходной путь - создать нового пользователя и присвоить ему псевдоним соответствующего пользователя в базе данных.

sp_addalias - это команда, которую вы могли бы использовать, чтобы сделать что-то подобное.

Вы можете просмотреть хешированный пароль

person Michael Gardner    schedule 14.01.2014
comment
Я уверен, что есть выход; Мне трудно поверить, что базы данных и серверы sybase непроницаемы. Я, вероятно, мог бы потратить много времени и выяснить, как настроить поддельный сервер sybase, который должен позволить мне получить строку подключения ... но я не знаю, с чего начать, чтобы это сделать. - person David Murdoch; 14.01.2014
comment
Я бы тоже согласился с хешем пароля, кстати. - person David Murdoch; 14.01.2014
comment
Select password from syslogins возвращает NULL для всех пользователей. - person David Murdoch; 14.01.2014
comment
Нашел с SELECT password from sys.sysuser. Спасибо. - person David Murdoch; 14.01.2014
comment
О, вы используете SQLAnywhere? Мой ответ касается Sybase ASE, извините за это. - person Michael Gardner; 14.01.2014
comment
Прости за это! Я также только что обнаружил, что конкретный алгоритм, используемый для SQL везде, где хэши паролей, не опубликован. :-(. Все, что я знаю сейчас, это то, что 0x01283d44932d9c08e1cddf11097c646c62386f9504692b08db345742f6224c92fdae140e01 - это хешированный 12-символьный пароль SHA-256 (эту информацию о длине я нашел раньше) с заполнением и уникальной солью. - person David Murdoch; 14.01.2014
comment
@DavidMurdoch Я не могу представить, что хеш будет для вас действительно полезен. Очевидно, что сервер базы данных не является непроницаемым. Вы вошли в систему как администратор базы данных. Но вы не можете выдавать себя за другого пользователя, не зная пароля. И этот пароль нигде не будет открытым текстом. Кто в здравом уме запишет пароль в приложение? - person Craig; 14.10.2016
comment
QuickBooks Desktop - person David Murdoch; 14.10.2016

Вы не можете получить пароль в виде открытого текста, поскольку он нигде не регистрируется, и мы его не храним. В системной таблице ISYSUSER хранится хэш пароля SHA-256, поэтому получить пароль из него невозможно. (И это не просто хэш пароля - он включает случайную соль.)

Однако, если у вас есть полномочия администратора базы данных, вы все равно можете делать с базой данных все, что угодно. Если вам необходимо быть подключенным как этот конкретный пользователь, вы можете подключиться как пользователь с полномочиями администратора баз данных, а затем использовать SETUSER.

Заявление об ограничении ответственности: я работаю в SAP в области разработки SQL Anywhere.

person Graeme Perrow    schedule 15.01.2014
comment
Верно, я подумал, что в нем есть соль, хотя я не уверен, сколько времени и где в хэше она хранится. Я предполагаю, что первый байт (0x01) не важен, следующие 72 содержат хэш и соль, причем 64 из этих символов представляют хеш, оставляя соль из 8 символов (4 байта в шестнадцатеричном формате). Я пробовал более 600000 методов хеширования, чтобы попытаться воспроизвести, но безрезультатно, ха-ха. - person David Murdoch; 16.01.2014
comment
Некоторая справочная информация: у меня есть около 400 файлов, у всех есть пользователь с именем auto_user и все с одним и тем же (неизвестным) паролем (по крайней мере, я думаю, что он одинаковый для каждого). Этот пользователь и пароль были созданы сторонним приложением. Хотя я могу получить доступ администратора баз данных ко всем этим файлам, это кропотливый процесс, поскольку имя пользователя и пароль администратора базы данных в каждом из них различаются - и я не хочу, чтобы это (конфиденциально) Информация. - person David Murdoch; 16.01.2014
comment
Насколько невозможно получить пароль из хэша ... Я на самом деле нормально работаю на мощной машине или 10 в течение пары недель, пытаясь перебрать ее. Так что, если бы я МОГ получить алгоритм has, это действительно очень помогло бы (очевидно, я знаю, что вы не собираетесь его публиковать, я просто хотел объяснить свои намерения). - person David Murdoch; 16.01.2014

https://www.thegrideon.com/qb-internals-sql2.html

Как было подчеркнуто несколько раз в предыдущих частях, файлы компании QuickBooks являются файлами базы данных SQL Anywhere, но учетные данные QB не используются напрямую для SQL Anywhere. Имя пользователя преобразуется в шестнадцатеричную строку, а пароль рассчитывается на основе пароля QB и также преобразуется в шестнадцатеричную строку.

Пара по умолчанию Admin с пустым паролем, преобразованная в SQL Anywhere: UID = 41646d696e PWD = 064e7afebcfbae000b22c7c85e5560f89a2a028000 Формат PWD для QuickBooks 2018 и 2019 (SQL Anywhere 17) отличается: PWD = 074c99f858df3c75bdbec513e45eff3c75dbbec5135ec8daec8dddddddd5d3c75bd3ddd3c75bdbd3ddd5f3c75bdbc5ddd5

Калькулятор UID и PWD SQL Anywhere является частью функциональности QuickBooks Forensics.

person www.ccp.care    schedule 03.08.2020

Другой вариант может заключаться в декомпиляции прикладной программы и поиске пароля. Я не знаю, кто в здравом уме мог бы жестко закодировать пароль в программный код, но похоже, что вот что здесь произошло? В качестве альтернативы, если это приложение собственной разработки, есть ли у вас доступ к исходному коду?

Если это именно и произошло, и у вас есть возможность перекомпилировать приложение, используйте связку ключей (Mac, Linux) или DPAPI (Windows), чтобы безопасно (насколько это возможно) сохранить зашифрованный экземпляр пароль вне кода приложения. Вы сможете изменить его, и какой-нибудь случайный человек, которому удастся взломать и получить доступ к исходному коду или двоичному файлу, не сможет проверить программу, как я предлагаю вам попробовать.

Я также понимаю, что это старый пост, и вы либо решили проблему, либо ушли. ;-)

person Craig    schedule 14.10.2016
comment
Это приложение QuickBooks Desktop, и оно каким-то образом получает доступ к базовому серверу SQL Anywhere без пароля пользователя. Мы не решили проблему, просто работали над ней. - person David Murdoch; 14.10.2016
comment
Оооо, QuickBooks. Мои соболезнования. ;-) - person Craig; 14.10.2016
comment
Интересно, они просто выполняют сопоставление входа в систему из чего-то вроде группы Windows «Все» в администратор базы данных и используют встроенную проверку подлинности? Просто размышляю вслух. - person Craig; 14.10.2016