Не знаю сюда или в безопасность...
Продукт: клиент-серверная софтина, клиент WPF, общается с сервером по WCF, софтина сама бесплатная — деньги берутся за взаимодействие с сервером.
Идут нешуточные споры, надо ли обфусцировать клиента.
Аргументы "за", надо обфусцировать потому что:
— враги декомпилируют, просто и быстро сделают такой же точно продукт, но ворующий данные(пароли) пользователя.
— сумеют наш код использовать в своих проектах
— будут искать дыры в нашемкоде и использовать их для взлома сервера
Аргументы "против", обфусцировать не надо потому что:
— капитальный гемор с сериализацией, рефлексией, сетевым взаимодействием и т.д.
— дополнительные баги, привнесенные обфускацией
— гемор с интеграцией этого хозяйства в билд систему, в частности — создание патчей для обновлений
— ничего уникального у нас нет, проще самому написать чем разбираться в написанном
— обфускация всего лишь создает видимость защиты и для хакера средней квалификации серьезных проблем не представляет.
Для определенности, обфускатор: http://www.eziriz.com/dotnet_reactor.htm
Здравствуйте, itslave, Вы писали:
I>Не знаю сюда или в безопасность... I>Продукт: клиент-серверная софтина, клиент WPF, общается с сервером по WCF, софтина сама бесплатная — деньги берутся за взаимодействие с сервером.
Забавно, у нас тоже такая ситуация была, причём описание продукта совпадает один в один. В итоге все сошлись на том, что в клиентском коде защищать нечего, а возни с обфускацией слишком много, и перестали её использовать.
Здравствуйте, k.o., Вы писали: KO>Забавно, у нас тоже такая ситуация была, причём описание продукта совпадает один в один. В итоге все сошлись на том, что в клиентском коде защищать нечего, а возни с обфускацией слишком много, и перестали её использовать.
ну ежели приложение — просто приложеньице — конечно ничего защищать не стоит, а к примеру, если это приложение работающее с финансами или продукт для работы на фондовом рынке или инструмент страхового брокера — думаю, что тут будет преступлением не обфусцировать — облегчать работу хаккерам — преступление!
Из виденных мною обфускаторов — недорогой и эффективный — Eziriz
Здравствуйте, itslave, Вы писали:
I>Не знаю сюда или в безопасность... I>Продукт: клиент-серверная софтина, клиент WPF, общается с сервером по WCF, софтина сама бесплатная — деньги берутся за взаимодействие с сервером. I>Идут нешуточные споры, надо ли обфусцировать клиента. I>Аргументы "за", надо обфусцировать потому что: I> — враги декомпилируют, просто и быстро сделают такой же точно продукт, но ворующий данные(пароли) пользователя. I> — сумеют наш код использовать в своих проектах I> — будут искать дыры в нашемкоде и использовать их для взлома сервера I>Аргументы "против", обфусцировать не надо потому что: I> — капитальный гемор с сериализацией, рефлексией, сетевым взаимодействием и т.д. I> — дополнительные баги, привнесенные обфускацией I> — гемор с интеграцией этого хозяйства в билд систему, в частности — создание патчей для обновлений I> — ничего уникального у нас нет, проще самому написать чем разбираться в написанном I> — обфускация всего лишь создает видимость защиты и для хакера средней квалификации серьезных проблем не представляет. I>Для определенности, обфускатор: http://www.eziriz.com/dotnet_reactor.htm
Здравствуйте, Pavel_Agurov, Вы писали:
P_A>Здравствуйте, itslave, Вы писали:
I>>Не знаю сюда или в безопасность... I>>Продукт: клиент-серверная софтина, клиент WPF, общается с сервером по WCF, софтина сама бесплатная — деньги берутся за взаимодействие с сервером. I>>Идут нешуточные споры, надо ли обфусцировать клиента. I>>Аргументы "за", надо обфусцировать потому что: I>> — враги декомпилируют, просто и быстро сделают такой же точно продукт, но ворующий данные(пароли) пользователя. I>> — сумеют наш код использовать в своих проектах I>> — будут искать дыры в нашемкоде и использовать их для взлома сервера I>>Аргументы "против", обфусцировать не надо потому что: I>> — капитальный гемор с сериализацией, рефлексией, сетевым взаимодействием и т.д. I>> — дополнительные баги, привнесенные обфускацией I>> — гемор с интеграцией этого хозяйства в билд систему, в частности — создание патчей для обновлений I>> — ничего уникального у нас нет, проще самому написать чем разбираться в написанном I>> — обфускация всего лишь создает видимость защиты и для хакера средней квалификации серьезных проблем не представляет. I>>Для определенности, обфускатор: http://www.eziriz.com/dotnet_reactor.htm
P_A>Опят реклама и сам с собой разговариваем?
Везде реклама с ботами мерещатся. Потер бы ссылку, но кнопки "едит" не вижу. Модераторы, потрите плз ссылку в стартпосте, чтобы параноикам спокойней жилось.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, k.o., Вы писали: KO>>Забавно, у нас тоже такая ситуация была, причём описание продукта совпадает один в один. В итоге все сошлись на том, что в клиентском коде защищать нечего, а возни с обфускацией слишком много, и перестали её использовать.
А>ну ежели приложение — просто приложеньице — конечно ничего защищать не стоит, а к примеру, если это приложение работающее с финансами или продукт для работы на фондовом рынке или инструмент страхового брокера — думаю, что тут будет преступлением не обфусцировать — облегчать работу хаккерам — преступление!
Если хакер за 2-3 часа сумеет деобфусцировать с приемлимымкачеством, то ет не усложнение работы хакера. Полазил в тырнете, вменяемых статей "насколько сложно деобфусцировать" не нашел. От и спрашиваю у народа.
Здравствуйте, Angler, Вы писали:
A>Здравствуйте, itslave, Вы писали:
A>Если деньги берутся за взаимодействие с сервером, то точно такой же клиент, сделанный вашими врагами лишь принесет вам прибыль
А если он будет "с невидимыми изменениями"?
Здравствуйте, k.o., Вы писали:
KO>Здравствуйте, itslave, Вы писали:
I>>Не знаю сюда или в безопасность... I>>Продукт: клиент-серверная софтина, клиент WPF, общается с сервером по WCF, софтина сама бесплатная — деньги берутся за взаимодействие с сервером.
KO>Забавно, у нас тоже такая ситуация была, причём описание продукта совпадает один в один. В итоге все сошлись на том, что в клиентском коде защищать нечего, а возни с обфускацией слишком много, и перестали её использовать.
У начальства параноя что "стырят отдельно взятые компоненты и НАЧНУТ ПРОДАВАТЬ". Как убедить что обфускатор не поможет — хз.
Здравствуйте, itslave, Вы писали:
I>Здравствуйте, Angler, Вы писали:
A>>Здравствуйте, itslave, Вы писали:
A>>Если деньги берутся за взаимодействие с сервером, то точно такой же клиент, сделанный вашими врагами лишь принесет вам прибыль I>А если он будет "с невидимыми изменениями"?
Для невидимых изменений декомпилировать необязательно, так что тут всё равно есть обфускация или нет.
Здравствуйте, itslave, Вы писали:
I>Здравствуйте, k.o., Вы писали:
KO>>Здравствуйте, itslave, Вы писали:
I>>>Не знаю сюда или в безопасность... I>>>Продукт: клиент-серверная софтина, клиент WPF, общается с сервером по WCF, софтина сама бесплатная — деньги берутся за взаимодействие с сервером.
KO>>Забавно, у нас тоже такая ситуация была, причём описание продукта совпадает один в один. В итоге все сошлись на том, что в клиентском коде защищать нечего, а возни с обфускацией слишком много, и перестали её использовать. I>У начальства параноя что "стырят отдельно взятые компоненты и НАЧНУТ ПРОДАВАТЬ". Как убедить что обфускатор не поможет — хз.
Ты же говоришь, что продаётся взаимодействие с сервером, что тут можно "стырить и продать"?
Здравствуйте, k.o., Вы писали:
KO>Ты же говоришь, что продаётся взаимодействие с сервером, что тут можно "стырить и продать"?
Едиторы и прочие визуальные компоненты, которые достаточно долго дотачивались напильником под задачу.
Здравствуйте, itslave, Вы писали:
I>Здравствуйте, k.o., Вы писали:
KO>>Ты же говоришь, что продаётся взаимодействие с сервером, что тут можно "стырить и продать"? I>Едиторы и прочие визуальные компоненты, которые достаточно долго дотачивались напильником под задачу.
И вы думаете эти компоненты можно будет где-то ещё переиспользовать? А, если вдруг у них, всё-таки, получится эти компоненты хорошо раскрутить, можно будет всегда заявить, что это ваши компоненты и содрать со всех покупателей кучу денег.
Здравствуйте, itslave, Вы писали:
I>Как убедить что обфускатор не поможет — хз.
Пусть дадут защищенную обфускатором программу, а после принести им код.
I> — обфускация всего лишь создает видимость защиты и для хакера средней квалификации серьезных проблем не представляет.
Тема защиты тут всплывает в среднем раз в месяц. На вот почитай мой пост про лом защиты чем-то там 2-х летней давности
Кроме того практически все обфускаторы делают одно и тоже, отличаясь лишь названиями "своих" технологий. Выберешь ты какой-то один или какой-то другой — практически ничего не решает. Максимум какой-то ещё кулхацкер себе в копилку общих знаний докинет, которые ему пригодятся через пару месяцев когда эта же фича появится у всех остальных.
Вы просто определитесь, что конкретно и от чего защищаете. Потому что перехватить просто общение по WCF можно не меняя вашу прогу вообще. Если вы свели общение со своим сервером к обмену шифрованными блоками, и при этом используете стандартные функции шифрования — то опять-таки заинтересованные лица получат дампы вашего протокола просто перехватив функции шифрования. И так во всём. Используете какой-нить SecureString, а его бац и целиком пересобрали , и теперь он всё в файлик складывает. Готовы от такого защищаться?
Если вы планируете защищать контролы просто из жадности — чтоб кто-то не склонировал — то в этом смысла вообще нету . Большинство контролов — это куча мелких перехватчиков каких-то стандартных событий. У таких как граф вызовов не запутывай, но если он состоит из пары ифов и пары присваиваний — то его распутают даже просто глядя в дизассемблер. Но если очень хочется — вытащите контролы строго в отдельную сборку и загоняйтесь вокруг неё. Обфусцировать всё одним махом — это сам себе злобный буратина.
Да, сейчас модный китайский трэнд вообще не декомпилировать Клонируют сайт целиком и честно продают ваше как скачалось. Дёшево и беспощадно, зато без саппорта
Чтобы написать защищённую прогу нужно её изначально проектировать с учётом всех векторов атаки на которые денег хватит. Но в целом отламывают даже решения покер-румов и всяких ММОРПГ, которые доходят до того что при каждом соединении с их сервером скачивается уникальная прожка проверяющая чексуммы загруженного в память кода. Причём там обычно одноразовый основанный на виртуальной машине скрипт, но люди и ему бошку скручивают. Так что если лом вашего клиента может быть интересен реальным перцам — считайте что он уже сломан и скопрометирован и займитесь строго сервером. Защищены будете сильнее.
Re[4]: Эффективность обфускации
От:
Аноним
Дата:
29.10.11 12:30
Оценка:
Здравствуйте, itslave, Вы писали: А>>ну ежели приложение — просто приложеньице — конечно ничего защищать не стоит, а к примеру, если это приложение работающее с финансами или продукт для работы на фондовом рынке или инструмент страхового брокера — думаю, что тут будет преступлением не обфусцировать — облегчать работу хаккерам — преступление! I>Если хакер за 2-3 часа сумеет деобфусцировать с приемлимымкачеством, то ет не усложнение работы хакера. Полазил в тырнете, вменяемых статей "насколько сложно деобфусцировать" не нашел. От и спрашиваю у народа.
Поэтому и писал вам про Eziriz — посмотрите — там и нэтивный код и другие неломаемые защиты
Здравствуйте, itslave, Вы писали:
I>Если хакер за 2-3 часа сумеет деобфусцировать с приемлимымкачеством, то ет не усложнение работы хакера. Полазил в тырнете, вменяемых статей "насколько сложно деобфусцировать" не нашел. От и спрашиваю у народа.
Скажем так, некоторые обфускаторы приведут к тому, что инструменты типа Reflector и ILDASM, не только будут показывать кривые имена классов и методов, но и перестанут показывать код методов вообще. Т.е. рефлектор будет писать что-то типа "This method is obfuscated, oblom, sorry" и смотреть код метода можно будет только в виде IL. Смотря в IL конечно тоже можно поломать что нужно, но уже не так быстро и просто, как если бы код был декомпилирован в C#.
Реальный пример: я вчера хотел пропатчить одну библиотечку, так чтобы она работала лучше (не взломать, а именно улучшить работу), открыл в Reflector'е, а она обфусцирована, код не показывается, мне стало влом разбираться с ней смотря только в IL, и я забил.
Здравствуйте, itslave, Вы писали:
A>>Если деньги берутся за взаимодействие с сервером, то точно такой же клиент, сделанный вашими врагами лишь принесет вам прибыль I>А если он будет "с невидимыми изменениями"?
Это не сложно будет сделать и на угроханных сборках. Закрыть доступ к функциям фрэймворка вы не сможете. А значит всегда кто-то сможет вставить между этими вызовами и вашим кодом какую-нибудь закладку.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Аноним, Вы писали:
А>ну ежели приложение — просто приложеньице — конечно ничего защищать не стоит, а к примеру, если это приложение работающее с финансами или продукт для работы на фондовом рынке или инструмент страхового брокера — думаю, что тут будет преступлением не обфусцировать — облегчать работу хаккерам — преступление!
Лучше потратить время на организацию нормальной защиты. Ломают все. Даже нэйтив код. Если у вас есть сервер, то защита на нем будет куда эффективнее.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>Лучше потратить время на организацию нормальной защиты. Ломают все. Даже нэйтив код. Если у вас есть сервер, то защита на нем будет куда эффективнее.
Я бы назвал это скорее организацией изначального факторинга кода (или рефакторинга если уже жопа) так, чтобы исполняемый код у штатного клиента не содержал интерфейсов и методов вызова админских функций, типа "DeleteSomeAccount". Ато фигачат весь WCF в одну прокси-либу, и она что юзерам что админам в билд.
А потом плачутся "Ай-ай-ай, деобфусцировали либу гады, нас взломали, номера кредиток украли".