Безопасность в Internet- Intranet



         

Взлом и защита: противоборство брони и снаряда в электронном мире…


Во время использования MS-DOS (ныне почти покойной) наработана масса способов, позволяющих относительно надежно идентифицировать легальность запуска того или иного приложения. Существует масса приемов того, как можно обманывать отладчики и дизассемблеры, противодействуя, тем самым, анализу логики защищаемого приложения. С появлением на сцене Windows, жизнь хакеров слегка упростилась, а защитников усложнилась, в силу специфики реализации данной системы. Появились умные отладчики (один SoftIce чего стоит), интеллектуальные дизассемблеры и прочее, и прочее... Становится трудным находить новые приемы привязки защиты к различным физическим меткам и электронным ключам. А трудности связаны с тем, что все приемы, помогающие ставить не копируемые метки, и противодействовать отладчикам, уже давно и хорошо известны обеим "воюющим" сторонам.

Хотя, иногда появляются и изюминки, благодаря которым война "защитников" переходит на новый виток развития, и война разгорается с еще большей силой и на новом технологическом витке.

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

Начнем со структурного введения, и поделим, на составляющие, само слово "защита". Представим его в виде двух подсистем:

первая - представляет собой тот или иной способ постановки любой метки на носителе, которую было бы невозможно, или весьма затруднительно перенести (скопировать) или воспроизвести программными методами (эмулировать);

вторая - это встраиваемый в защищаемое приложение модуль, который проверяет наличие заранее установленной метки.

Основой любой защиты можно считать ее способность к идентификации носителя, с которым она попала к пользователю. И не просто к идентификации, а к способности отличить данный носитель от нелегальной копии. Причем, уровень защиты на данном этапе должен быть такими, чтобы та условная метка или характеристика, которая была присуща данному носителю, не воспроизводилась любыми средствами битового копирования. Эффективность данного этапа определяет стойкость защиты к элементарному взлому, когда пользователю достаточно запустить CloneCD, и не о чем больше не думать.

Если защите удалось найти способ получения не копируемых дисков (StarForce, CD-Cops, TAGES), то надо обезопасить себя от следующей напасти - от эмуляторов устройств. Многие пираты прибегают к тактике эмуляции характеристик диск, создавая виртуальные драйверы устройств, позволяющих обманывать систему защиты. К сожалению, практически все средства защиты от копирования, рассматриваемые в данной статье, уже взломаны подобным образом (см. врезки).

Если еще раз вернуться к механизму получения уникальных идентификаторов диска, то получится, что способов есть здесь не так уж и много. Это нанесение лазерных меток на определенной части диска и получение уникальных характеристик, присущих носителю. И все это без нанесения физических меток. Подобное пока удалось сделать только защитам StarForce, CD-Cops и TAGES, что разительно отличает их от конкурентов. Во-первых, не надо иметь сложное оборудование для нанесения меток, ведь, как мы знаем, любое удорожание производственного цикла бьет по карманам покупателей, повышая стоимость продукта. И здесь еще один вывод: чем выше стоимость продукта, тем пристальней взоры к нему со стороны пиратов, тем скорее защита будет взломана, а способ взлома растиражирован.

Похоже, приходится констатировать тот факт, что физические привязки останутся в прошлом, а на смену им придут подобного рада способы защиты. И еще заметьте (см. табл.), защиты StarForce, CD-Cops и TAGES не взламываются побитовыми копировщиками и эмуляторами, поскольку физические характеристики носителей хакеры еще не научились воспроизводить программно (эмуляторы), и их невозможно копировать (копировщики).

То есть на данном этапе можно констатировать, что имеется ряд защит, которые используют передовые способы идентификации носителей, и противодействия копированию. Как говорится, этот критерий абсолютно необходим, но необходим он вкупе с хорошо защищенной от взлома программной частью, которая и отвечает за идентификацию носителя. Отсутствие надежной защиты от программного взлома делает защиту очень и очень уязвимой. Хотя, справедливости ради, надо сказать, что если есть хорошая программная защита, но нет аппаратно не копируемой метки, то и это не есть правильно. Такая защита только половина того, что нужно, НО! Здесь кроется одно "НО", компания, разработавшая хотя бы один действительно надежный способ противодействия, со временем может разработать дополнительный механизм противодействия. Особенно хочется отметить, что в данном случае более важной можно считать технологию получения не копируемых меток или иных методов дальнейший идентификации носителя. Так как сложнее осуществить именно эту часть защиты.

Следующий по очереди, но не по важности, атрибут защиты это резидентная программная часть, способная на 100% идентифицировать метку или характеристику носителя, с которого она была запущена.

Если рассмотреть способ защиты модуля от взлома, то получается такая картина: третья компания разрабатывает программный продукт, скажем, один файл в формате EXE, и передает его создателям защиты. Последние специальным образом встраивают специальный код идентификации в данный EXE модуль, ставят не копируемую метку. Цель хакера на этом этапе: либо полностью удалить защитный модуль, либо найти тот участок в коде защиты, который отвечает за идентификацию, и изменить только его (поменять условие проверки). Цель защиты - противодействовать всем методам взлома, причем продвинутая защита должна защищать не только себя, но и модули того файла, к которому ее присоединили. Последнее возможно в том случае если защита имеет открытый расширенный SDK (Software Development Kit), который позволяет разработчикам приложений встраивать защиту в свой модуль уже на этапе разработки собственного приложения. Такая система может существенно усложнить жизнь хакерам.

Для вскрытия программной защиты хакер может выбрать следующее (развернуто об атаках смотрите во врезке):




Содержание  Назад  Вперед