Основные способы защиты программ
Наибольшее распространение получили программы типа "запрос пароля" или "запрос ввода регистрационного номера". Они реализуются по-разному, но сводятся к одному и тому же алгоритму:
1. Программа запрашивает пароль у пользователя.
2. Проводит с ним какие-либо действия, например, шифрует или получает хеш-функцию.
3. Сравнивает полученную на шаге 2 функцию или пароль и запрошенный пароль с шага 1
Для обхода такой защиты достаточно найт место сравнения паролей и либо просто переписать пароль, либо изменить программу так, чтобы она всегда считывала, что введён правильный пароль.
Программы с динамической проверкой ввода пароля
На самом деле в этот класс проверок попадает множество программ, различающихся многообразием способов проверки. Мы рассмотрим такой распространённый класс, как проверка пароля программой в случайный промежуток времени.
В программах с динамической проверкой пароля это может выполняться несколькими способами:
-правильность ввода символов проверяется "на лету", то есть одновременно с вводом;
-есть специальная функция, которая активизируется с каким-то промежутком времени; чаще всего это обычный таймер- как только он активизируется, проверяется правильность пароля и программа принимает решение о дальнейших действиях.
Первое, что потребуется,- установить брекпоинт на доступ к памяти с вводимыми нами данными. Далее достаточно перехватить в самой программе процесс сравнения этих символов , и мы найдём верный пароль.
Основные способы защиты программ
Тут описаны распространённые способы защиты программ:
-проверка даты и времени;
-инструмент InqSoft Sign Of Misery;
-фиксированное количество запусков;
-CRC.
Проверка даты и времени
Идея у этих проверок очень проста, но так широко больше не используется.
При запуске программа проверяет текущую дату, и если она не совпадает, то программа отказывается работать или работает неправильно. Такие защиты имеются у так называемых триалпрограмм, т. е. у программ, использование которых ограничено по времени.
Для взлома такой программы остаётся перехватить в программе проверку даты (времени) и установить требуемую дату (время) - и программа запустится.
Инструмент InqSoft Sign Of Misery
InqSoft Sign Of Misery (автор CyberManiac) - это программный инструмент созданный главным образом для продолжения "жизни" shareware-программ. Эта программа вобрала в себя большое количество приёмов борьбы с ограничениями во времени пользования программой, подавления всплывающих окон, мешающих нормальной работе с программой, изменение и удаления "лишних" файлов и ключей реестра, а также множество других техник. Так как это программа универсальна, то не гарантирует 100% успеха. Но иметь такую программу довольно полезно.
Фиксированное количество запусков программы
Следующий способ защиты программ - создания Trial-программ, т. е. программ, запускаемых фиксированное число раз.
Защитный механизм таких программ реализуется с некоторыми отличиями:
-программа записывает количество запусков в реестр при установке на компьютер пользователя;
-программа записывает количество запусков в реестр при первом запуске;
-программа записывает количество запусков в ключевой файл при первом запуске;
-программа записывает количество запусков в ключевой файл при установке на компьютер пользователя;
-программа запускается и работает только определённое число дней.
Немного поясним последний пункт. Это ещё один вид реализации защиты "спроверкой даты".
-Записывать дату первого запуска программы в реестр или ключевой файл, а потом сверять её с текущей. Это простой, о не эффективный способ. Для взлома такой программы достаточно просто отследить такую запись и подправить её текущей датой.
-Сверять текущую дату с датой создания самого запускаемого файла. Этот способ посложнее, но до сих пор применяется в некоторых программах.
Для того чтобы затруднить поиск подобной защиты, рекомендуется считывать дату файла с помощью какой-нибудь нестандартной функции и делать это не сразу. Лучше считывать дату файла именно тогда, когда выполняется считывание множества параметров ругих файлов, чтобы замусорить и усложнить поиск защиты.
Программы, защищённые CRC
СRC (Cyclic Redundancy Code)- циклический избыточный код. Сейчас очень многие программы защищены таким видом защиты. Это очень правильно, поскольку CRC не только даёт дополнительную защиту от крекеров, но также позволяет защитить программы от компьютерных вирусов. Например, если программа была изменена или заражена, то контрольная сумма изменится; на основании этого можно выдать сообщение или вообще завершить работу программы.
Контрольные суммы применяются в следующих целях:
-защита от заражения вирусами;
-защита от изменения кода в памяти или на жёстком диске;
-противодействие распаковке.
Некоторые менее распространённые способы защиты программ
1) Шифрование всей программы или её части.
Главная сложность этого метода заключается в том, что после шифрования кода программа должна сохранить работоспособность.
2) "Отлов" пошаговой отладки программы.
Самый простой и надёжный способ- использовать таймер.
При работе программы периодически фиксируем системное время и рассчитываем время работы кусков кода между ними. При нормальной работе процессор выполняет кусок кода программы за 5-10 мс ( зависит от размера куска кода). Если мы обнаружим , что этот кусок кода процессор выполняет за 2-7 минут, то тут появляется повод задуматься.
Здесь ни в коем случае нельзя прерывать работу программы и не выводить никаких сообщений сразу после того, как определили, что работает при пошаговой отладке. Самый лучший способ - направить работу программы по альтернативному руслу. Пока взломщик поймёт, что его "надули", пройдёт достаточно времени , и всегда есть шанс, что он отстанет от этой программы.
3) Проверка на основе динамически изменяющихся параметров.
Алгоритмы, использующие подобную проверку, были очень удобными по ряду причин. в том числе:
-параметры каждого компьютера уникальны;
-можно выдавать регистрационные данные (пароль) только на конкретный компьютер, привязанный к имени пользователя.
Этот метод уже не так часто используется. Связано с тем, что современный пользователь постоянно совершенствует свой компьютер, а раз меняется конфигурация компьютера, значит, меняется и его параметры и ,если программа при запуске проверит регистрационные данные, они будут отличаться.
Методы противодействия.
Может быть применена к любым программам. Актуальность задачи анализа программных реализаций алгоритмов защиты обусловливается следующими факторами.
1. Компьютеризация всех областей национальной экономики России. В настоящее время компьютерные технологии активно применяются практически во всех новых областях нашей жизни. Автоматизированные средства обработки информации используются как
в высших эшелонах государственной власти и управления, так и в многочисленных предприятиях и организациях, банках и т.п. Практически каждая организациям имеет у себя конфиденциальную информацию, которую надо защищать.
2. Многообразие программных средств обработки информации и используемых в них средств защиты. Средства защиты встраиваются во многие программные продукты самого различного назначения (операционные системы, системы управления базы данных, системы электронного документооборота, разнообразные утилиты и т.п.). При этом подробные технические описания, а также данные независимых экспертиз качества используемой системы защиты далеко не всегда доступны пользователю. В этих условия пользователю информационной системы жизненно важно знать, насколько надежна применяемая им защита.
3. Большой разброс в уровне подготовленности разработчиков. Разработкой систем защиты информации занимаются различные люди и организации, порой разительно отличающиеся по своему научно-техническому потенциалу, уровню подготовки, техническим возможностям. К их числу зачастую относятся любители, т.е. лица,
не являющиеся специалистами в области защиты информации. Нельзя исключить с их стороны ошибки при выборе алгоритмов защиты и просто программистские ошибки в процессе разработки программного обеспечения. Хотя сегодня откровенно слабые решения в области защиты информации встречаются гораздо реже, чем 10 —15 лет
назад, они все же встречаются. Одним из последних примеров такого рода, получивших широкую огласку, является система фильтрации информации порнографического характера на «Школьном портале», которая считала поисковый запрос «мокрый снег» непристойным, а целый ряд явно порнографических запросов — вполне допустимыми
для школьника.
4. Широкое распространение программных средств зарубежного производства. Среди всех программных средств, применяемых в России в настоящее время, львиную долю составляют программные средства зарубежного производства. В ряде стран, например в США и Франции, имеются ограничения на экспорт стойких систем защиты информации. Бесспорно высокий уровень квалификации подобных разработчиков, удобство эксплуатации информационной системы, сконструированной ведущими зарубежными фирмами, еще не дает гарантии, что информационная система обладает надежной защитой. Кроме того, для программных средств, применяемых в критически важных сегментах информационной инфраструктуры Российской Федерации, весьма важной является задача заблаговременного выявления в используемых программных средствах недокументированных возможностей, которые в случае начала информационной войны могут послужить информационным оружием. войны могут послужить информационным оружием.
5. Регулярное появление новых версий программных продуктов, которые могут отличаться и средствами защиты. Современные средства обработки информации — чрезвычайно быстро развивающаяся сфера деятельности человека, поэтому проверка надежности средств защиты информационной системы не может рассматриваться
как кратковременный эпизод в жизни организации. К этому вопросу приходится возвращаться неоднократно, в связи с чем стоит задача разработки эффективных средств анализа, максимальной автоматизации наиболее трудоемких его этапов.