|
|
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
Есть программа для работы с базой, написана на C#. В наличии только exe-файл, без конфига, строка подключения хранится прямо в исходнике. Как достать логин/пароль, которые использует программа для работы с базой? Задач на самом деле две: 1) Как достать логин/пароль? Если это может помочь, доп. информация - у злоумышленника есть обновляемый excel файл со строкой подключения в чистом виде, но с учеткой попроще, т.е. он изначально знает все параметры подключения, кроме админской учетки. 2) Можно ли как-то этому противостоять? (с точки зрения разработчика. У него конечно есть исходник) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 16:02 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
ConejoКак достать логин/пароль, которые использует программа для работы с базой? Поймать момент авторизации на сервере БД. Сниффингом, например... Извлечь из тела исполняемого файла пару логин-пароль в общем случае невозможно. ConejoМожно ли как-то этому противостоять? Внутри файла - формировать логин и пароль кодом, а не задавать как литерал. Плюс обычные мероприятия против трассировки кода. Снаружи файла противостоять "отлову" логина и пароля практически нереально - разве только что средствами приложения устанавливать шифрованное соединение с сервером БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 16:23 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
Akina, Спасибо большое за ответ. Внутри кода - да, реально прогнать через шифратор, в другой программе так и делаем. Но при соединении с базой - неужели пароль передается в чистом, не зашифрованном виде? Вот это да! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 16:30 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
Conejoпри соединении с базой - неужели пароль передается в чистом, не зашифрованном виде? Вот это да! Если канал обмена не шифрован - конечно, в открытом. Вот не входит в функции сервера БД шифрование обмена с клиентом. Даже если сервер искаропки такое умеет - всё равно этим занимается отдельно встраиваемая подсистема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 17:01 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
ConejoВнутри кода - да, реально прогнать через шифратор, в другой программе так и делаем. Я имел в виду не шифрование, а программное формирование и сборку - это проще и нестандартнее. Особенно если строки кода формирования логина и пароля раскиданы между строками кода инициализации приложения - в такой каше сложнее понять, что, как и где формируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 17:04 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
Akina, идею программной сборки я поняла правильно, про шифрование - это уже моя следующая мысль, сделать как в параллельном проекте. В общем, резюмируя вышесказанное, вывод - бороться очень тяжело, легче предупредить народ, что при обнаружении несанкционированных манипуляций с базой - расстрел без суда и следствия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 17:25 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
Conejo , а Вы, простите, в этой каше кто? разработчик? распространитель? интегратор? сетевой админ? админ задачи? пользователь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 17:37 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
ConejoЕсть программа для работы с базой, написана на C#. В наличии только exe-файл, без конфига, строка подключения хранится прямо в исходнике. Как достать логин/пароль, которые использует программа для работы с базой? Задач на самом деле две: 1) Как достать логин/пароль? Если это может помочь, доп. информация - у злоумышленника есть обновляемый excel файл со строкой подключения в чистом виде, но с учеткой попроще, т.е. он изначально знает все параметры подключения, кроме админской учетки. 2) Можно ли как-то этому противостоять? (с точки зрения разработчика. У него конечно есть исходник) Насчет противостояния сниффингу. 1. Сервер с клиентом, используя протокол Диффи - Хелмана, формируют ключи шифрования для зашифрования пароля (и всего трафика). 2. Либо, например, используя один из известных алгоритмов ассимметричного шифрования с открытым ключом, сервер посылает клиенту открытый ключ. Клиент шифрует пароль открытым ключом и отправляет результат серверу. Для расшифрования используется другой, секретный ключ, который остался на сервере. ... Однако, все это можно взломать, зная и имитируя протокол обмена данных: вместо сервера подставляется сервер-имитатор, который в итоге получит пароль в открытом виде. ... Противостояние имитации сервера: электронная подпись. Например: клиент генерирует случайный блок данных и отправляет на сервер. Сервер формирует электронную подпись, которую возвращает клиенту. Клиент, проверив электронную подпись, убеждается, что общается с подлинным сервером. ... Однако это можно взломать, дизассемблировав приложение клиента. Противостояние дизассемблированию: вынести участок кода, выполняющий проверку ЭЦП, а также хранящий и шифрующий пароль, в защищенный объект: например, в электронный ключ защиты типа USB Guardant Sign/USB Guardant Code (и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 17:55 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
Akina, из предложенных ответов ближе всего "админ задачи". Но изначально я администратор базы данных, в которой это безобразие творится. Наши умные операторы решили ускорить ввод, заливая данные напрямую в базу, в обход специальной программы. Это повлекло большие проблемы, не хотелось бы повторения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 18:00 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
ZeroMQ, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 18:07 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
Кстати просмотрела exe через F4 - логина/пароля в чистом виде там нет, видимо С# его прячет. А вот Delphi константы хранит в чистом виде, поэтому и пришлось шифровать в другом проекте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 18:36 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
ConejoНаши умные операторы решили ускорить ввод, заливая данные напрямую в базу, в обход специальной программы. Это проблема, которая должна решаться в административном порядке. Когда один идиот оплатит работы по восстановлению БД, все сразу зарекутся работать в обход штатного софта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 19:28 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
ConejoКстати просмотрела exe через F4 - логина/пароля в чистом виде там нет, видимо С# его прячет. А вот Delphi константы хранит в чистом виде, поэтому и пришлось шифровать в другом проекте. попробуй каким-нибудь ресурс эксплорером посмотреть что в ресурсах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 19:46 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
Conejo2) Можно ли как-то этому противостоять? (с точки зрения разработчика. У него конечно есть исходник) Так если база-то у вас, поменяйте пароль, и всё... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 20:01 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
MasterZivConejo2) Можно ли как-то этому противостоять? (с точки зрения разработчика. У него конечно есть исходник) Так если база-то у вас, поменяйте пароль, и всё... Так они его в прогу зашили. Прога тоже встанет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 20:28 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
Если прога раздается всем подряд, то как минимум надо вести контроль по IP кто-откуда-что делает. Как максимум: генерить ID по железу компа где запушена прога и использовать этот ID для доступа к данным. Тогда можно будет выборочно карать нарушителей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 20:33 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
Conejo, сервер то какой ? MSSQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 20:40 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
Dima TЕсли прога раздается всем подряд, то как минимум надо вести контроль по IP кто-откуда-что делает. Как максимум: генерить ID по железу компа где запушена прога и использовать этот ID для доступа к данным. Тогда можно будет выборочно карать нарушителей. Ну и как это поможет? Прога-то ни при чем, она как раз работает правильно. Проблемные записи были отредактированы в обход софта, они даже ID оператора не потрудились проставить, не то что IP компа)) Изопропил сервер то какой ? MSSQL? он самый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 21:18 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
ConejoИзопропилсервер то какой ? MSSQL? он самый в login триггере можно посмотеть что творится app_name() и т д Conejo2) Можно ли как-то этому противостоять? (с точки зрения разработчика. У него конечно есть исходник) уволить архитектора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 00:02 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
ConejoКстати просмотрела exe через F4 - логина/пароля в чистом виде там нет, видимо С# его прячет. А вот Delphi константы хранит в чистом виде, поэтому и пришлось шифровать в другом проекте. Есть простые, многократно описанные способы, как обойти. Разу уж вам приспичило хранить ключ в приложении, возьмите случайную последовательность, равную длине ключа. При разработке приложения выполните("ручками") операцию побитного XOR ключа с этой случайной последовательностью, её и храните в виде константы А в приложении. Кроме того, отдельно в приложении храните и саму упомянутую случайную последовательность в виде константы Б. А при выполнении приложения выполните повторный А XOR Б, и получите свой секретный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 02:43 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
ConejoDima TЕсли прога раздается всем подряд, то как минимум надо вести контроль по IP кто-откуда-что делает. Как максимум: генерить ID по железу компа где запушена прога и использовать этот ID для доступа к данным. Тогда можно будет выборочно карать нарушителей. Ну и как это поможет? Прога-то ни при чем, она как раз работает правильно. Проблемные записи были отредактированы в обход софта, они даже ID оператора не потрудились проставить, не то что IP компа)) Изопропил сервер то какой ? MSSQL? он самый MS SQL Server всегда шифрует сетевые пакеты, связанные с входом в систему. То есть, в данном случае, по сети пароль в открытом виде не передается. Если объяснять примитивно, то установлении соединения сервер передает клиенту открытый ключ шифрования, клиент "внимательно изучает этот ключ", и если он его устраивает, шифрует пароль полученным ключом. Ну а затем зашифрованный пароль передается серверу. Так как шифрование асимметричное, то для расшифровать пароль может только сам сервер, ибо ключ для расшифровывания есть только у него. Сниффер ничего не перехватит, то есть. https://msdn.microsoft.com/ru-ru/library/ms131691.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 03:01 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
ConejoDima TЕсли прога раздается всем подряд, то как минимум надо вести контроль по IP кто-откуда-что делает. Как максимум: генерить ID по железу компа где запушена прога и использовать этот ID для доступа к данным. Тогда можно будет выборочно карать нарушителей. Ну и как это поможет? Прога-то ни при чем, она как раз работает правильно. Проблемные записи были отредактированы в обход софта, они даже ID оператора не потрудились проставить, не то что IP компа)) Тут уже проблема с архитектурой базы. Поле ID оператора как минимум должно быть внешним ключом и not null. Тогда при всем желании его не оставить незаполненным. Другой вопрос можно ли писать туда первое попавшееся значение ID. Это можно на уровне триггеров проверять. База должна в себе содержать всю бизнес логику. Нет гарантии что кто-то случайно или специально пришлет "delete from Table". Например прога сглючит и не допишет "where ..." Я советую нанять грамотного DBA чтобы навести в базе порядок с безопасностью. Пока посерьезнее проблем не приключилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 07:06 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
ConejoНаши умные операторы решили ускорить ввод, заливая данные напрямую в базу, в обход специальной программы. Это повлекло большие проблемы, не хотелось бы повторения.А как они зашли на сервер? Они действительно рылись в exe-файле, или есть какой-то известный всем логин с паролем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 11:51 |
|
||
|
Достать из .exe логин/пароль к базе
|
|||
|---|---|---|---|
|
#18+
Если база MSSQL и авторизация там BASIC, то проще не пытаться найти пароль в программе, а снифером снять дамп, найти пароль в куче и расшифровать его, там шифрование XOR 0xA0 для всех символов и усё, тупое как топор, на калькуляторе можно расшифровать :) как то была необходимость подобная автору, решилась часа за 1,5 таким способом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 11:54 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39107964&tid=1340864]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 473ms |

| 0 / 0 |
