Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Защита исходного кода .NET приложений, От любителей халявы ... и не только 
:(
    Опции темы
ivashkanet
Дата 4.9.2006, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



"Quis custodiet ipsos custodes" - Кто будет сторожить сторожей?(лат) 

Теоретически можно (и нужно) настроить правила безопасности, которые будут запрещать доступ неподписаных (или подписанных неизвестно кем) приложений к критическим ресурсам. 
Но опять же возникает вопрос, поднятый в начале поста. Где уверенность, что программу безопасности не подменят? Где уверенность, что не подменят сам загрузчик Винды (или другой оси)...?

Зато сейчас полностью исключены случаи подмены библиотек (думаю не ошибусь, если скажу, что 70-80% действительно вредоносных вирусов этим промышляют), что уже, ИМХО, проело плешь всему Майкрософту вместе взятому. Не зря же они придумали систему проверки целосности/оригинальности системных библиотек.

P.S. $tatic, извини, не врубился (точнее невчитался) в твой вопрос, вот и ответил невпопад smile 
PM MAIL WWW ICQ   Вверх
$tatic
Дата 4.9.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 28.1.2005

Репутация: 2
Всего: 22



Ну я предполагал такую ситуацию: в программе есть защита (допустим она шароварная). Код программы находится в дллке (подписанной) и загружается загрузчиком, который проверяет ее подлинность. Если хакер взламывает дллку для сброса защиты, то подпись файла меняется и загрузчик сильно ругается smile. Так вот я имел в виду, что загрузчик тоже теоретически можно подменить, даже если и он был подписан. Тут все дело в том, что если пользователь использует кряк, то он знает, что ему придется отключать систему безопасности фреймворка.
Аналогичный случай наблюдался при взломе Windows XP SP1 крякером Reset5, когда недобросовестный smile пользователь должен был загрузить систему в безопасном режиме, чтобы ему не мешала система проверки целостности библиотек SFC.
Конечно анализ обфусцированной программы выполнить очень сложно. Но хакеру надо найти именно тот участок, который ответственнен за защиту программы. Ему же не надо полный reverse engineering делать. Естетственно эту проверку можно спрятать среди кучи левых методов, но хакер ведь может получить полный исходник в виде проекта для студии (это может плагин FileDisassembler для Reflector), загрузить его в студию и запустить в режиме отладки. Ведь этот метод фактически недоступен при анализе программ в машинном коде.
А вот над измененным загрузчиком IL-кода стоит подумать.
ЗЫ. Хакеры давно уже научились обходить проверку подлинности библиотек. Читайте Криса Касперски.
PM MAIL   Вверх
mr.DUDA
Дата 4.9.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата($tatic @  4.9.2006,  09:31 Найти цитируемый пост)
Конечно анализ обфусцированной программы выполнить очень сложно. Но хакеру надо найти именно тот участок, который ответственнен за защиту программы. Ему же не надо полный reverse engineering делать. Естетственно эту проверку можно спрятать среди кучи левых методов, но хакер ведь может получить полный исходник в виде проекта для студии (это может плагин FileDisassembler для Reflector), загрузить его в студию и запустить в режиме отладки. Ведь этот метод фактически недоступен при анализе программ в машинном коде.

Нормальный обфускатор не позволит дизассемблировать программу в высокоуровневый язык (будут кидаться ошибки), и всё что останется - декомпилировать и отлаживать IL-код, что практически равносильно анализу программ в машинном коде. Кстати, хороший пример защиты исходного кода - как скрыты исходники самого Reflector-а  smile.


--------------------
user posted image
PM MAIL WWW   Вверх
Rapalex
Дата 4.9.2006, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 2
Всего: 8



Скажите кто каким обфускатором пользуется?


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
mr.DUDA
Дата 4.9.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Пока серьёзным не приходилось пользоваться, DotFuscator community edition юзал.


--------------------
user posted image
PM MAIL WWW   Вверх
VisualProgrammerNET
Дата 4.9.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 4
Всего: 6



Чё меня бесит, так это то, что если допустим в программе есть закрытая переменная с паролем, например
Код

private string password2server = "1234567890";

то этот пароль можно просто и без проблем выдрать из программы. Кто-нибудь пробовал открывать экзешник или дллку в блокноте? Даже слепой не сможет не заметить среди тучи слов вполне логичные password2server = 1234567890. Мне не понятен принцип работы обфускатора. Что изменится с исполнительными файлами и библиотеками программы? Будет ли виден пресловутый пароль через блокнот?  


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
mr.DUDA
Дата 5.9.2006, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Никто никогда не хранит такие данные в открытом виде. Чаще используют хеши (для сравнения) либо зашифрованные строки.


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 5.9.2006, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(mr.DUDA @  5.9.2006,  08:31 Найти цитируемый пост)
Чаще используют хеши (для сравнения)

mr.DUDA, как можно хранить хэш, если базза требует именно пароль, а не его Хэш?
Аааа, ключевое слово --- "для сравнения", тогда понятно smile
Цитата(mr.DUDA @  5.9.2006,  08:31 Найти цитируемый пост)
зашифрованные строки.

Поподробнее. Насколько сильно нужно их шифровать? Какой-нибудь циклический сдвиг (А->Б, ..., Я->А) подойдет?
PM MAIL WWW ICQ   Вверх
arilou
Дата 5.9.2006, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Цитата(VisualProgrammerNET @  4.9.2006,  16:11 Найти цитируемый пост)
Чё меня бесит, так это то, что если допустим в программе есть закрытая переменная с паролем, например

некоторые обфускаторы шифруют строки. сорри, конкретных примеров не помню.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
mr.DUDA
Дата 5.9.2006, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(ivashkanet @  5.9.2006,  09:33 Найти цитируемый пост)
Поподробнее. Насколько сильно нужно их шифровать? Какой-нибудь циклический сдвиг (А->Б, ..., Я->А) подойдет?

Чем круче алгоритм шифрования, тем лучше.
Ещё лучше - не хранить конфиденциальную информацию в теле программы.


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 5.9.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



mr.DUDA, а хде smile
Чувствую  smile Хотя про защиту smile
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 5.9.2006, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(ivashkanet @  5.9.2006,  11:01 Найти цитируемый пост)
mr.DUDA, а хде

Скажи мне, ну нафига хранить секретный логин и пароль в проге ? К чему логин ? И пароль ?


--------------------
user posted image
PM MAIL WWW   Вверх
arilou
Дата 5.9.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Вот вам паранодиальный (для большинства задач) сценарий создания системы безопасности  smile 

1) Создается private/public key pair
2) Им подписываются сборки
3) В сборках с помощью System.Security прописывается, чтобы вызывающий код был подписан, и чтоб public key подписи совпадал с public key из п.1
4) Все это обрабатывается обфускатором

Для клиент-серверной дополнительно шифруется траффик, например с помощью sink'ов. Для шифрования от сервера к клиенту используется public/private key pair из п.1. Для шифрования от клиента к серверу используется другой, временно создаваемый сервером, key pair. 

Все это добро работает под MS .NET 2.0. А теперь давайте попробуем этот сценарий хакнуть.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Rapalex
Дата 4.10.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 2
Всего: 8



Я так поразмышлял, и удивился как мы можем спрятать код если потом всёравно джит должен его открыть, если мы его спрячем так чтоб не хакнуть то мы его и не запустим smile


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
mr.DUDA
Дата 4.10.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Rapalex @  4.10.2006,  11:44 Найти цитируемый пост)
Я так поразмышлял, и удивился как мы можем спрятать код если потом всёравно джит должен его открыть, если мы его спрячем так чтоб не хакнуть то мы его и не запустим

Мы и не прячем код, мы делаем его ооочень неудобочитаемым, где-то на уровне ассемблера или чуть ниже smile.


--------------------
user posted image
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0883 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.