Защита PHP-скриптов от анализа и модификации

002.jpg

Все программные продукты для защиты PHP-скриптов подразделяются на две категории: требующие установки на сервер дополнительных модулей и работающие с обычной конфигурацией web-серверов. Первые более надежны в плане безопасности, так как переводят PHP-скрипты из текстового вида в специальный байт-код, но требуют доступа к серверу с правами администратора. Вторые могут работать практически на всех хостингах с поддержкой PHP, в том числе и бесплатных, но не представляют большой сложности для взлома. В отдельную подгруппу можно выделить обфускаторы исходного кода, не использующие шифрование или сжатие.

Защиты на уровне сервера:

Zend Encoder / Zend SafeGuard Suite (http://www.zend.com/) — наиболее популярная коммерческая защита, модули для поддержки Zend обычно установлены на всех платных хостингах. Zend предоставляет привязку скриптов к доменам и ip, установку времени триальной работы скриптов и мощную обфускацию. Поддерживаются все операционные системы. В публичном доступе имеется несколько вариантов утилит для снятия Zend’а, все они представляют собой модифицированный PHP 4-й и 5-й версии. Старые версии Zend’а снимаются без проблем, в последних возникают сложности из-за обфускации исходного кода.

NuSphere NuCoder (http://www.nusphere.com/) Новая, активно развивающаяся коммерческая защита. На уровне собственных API предоставляет взаимодействие с защищаемыми скриптами, поддерживаются операционные системы Windows и Linux. Вследствие малой распространенности не устанавливается на обычных виртуальных хостингах, но вполне может быть установлена пользователями на выделенных серверах. Публичных декодеров нет.

SourceGuardian for PHP (http://www.sourceguardian.com/) Коммерческая защита, практически не встречается, на виртуальных хостингах не устанавливается. Позволяет устанавливать триальный срок работы скриптов с проверкой даты по внешним серверам точного времени, делать привязку защищаемых скриптов к серверам, ip-адресу, MAC-адресу сетевой карты, причем эти данные используются для расшифровки. Поддерживаются все операционные системы. Публичных декодеров нет.

phpSHIELD (http://www.phpshield.com/) Прототип SourceGuardian for PHP. После слияния двух разработчиков перестал развиваться как самостоятельный продукт. Основной функционал тот же самый, публичных декодеров нет.

ionCube PHP Encoder (http://www.ioncube.com/) Второй по популярности коммерческий продукт для защиты скриптов. После появления публичных декодеров для Zend стал все чаще использоваться и устанавливаться на виртуальных хостингах. Позволяет шифровать не только скрипты, но и шаблоны, xml-документы, изображения, бинарные файлы. Привязывает защищенные файлы к серверам, есть мощный обфускатор, поддерживаются все операционные системы. Публичных декодеров нет, но в некоторых случаях снимается deZender’ом.

PHTML Encoder (http://www.rssoftlab.com/) Малораспространенная коммерческая система защиты, предоставляет обычный функционал для продуктов такого типа, работает под всеми операционными системами. За отдельную плату можно приобрести исходные коды защиты и модифицировать их под свои нужды. Публичных декодеров нет.

DWebEncoder (http://www.dwebpro.com/) Экзотическая защита под Windows, предназначенная для создания скриптовых презентаций и каталогов на компакт-дисках. В установленном виде представляет собой что-то типа самостоятельного web-сервера, на котором исполняются закодированные php-скрипты. Публичных декодеров нет.

PHP Compact (http://www.php.ru/) Защита скорее теоретическая, чем практическая. Разрабатывалась на одном из отечественных форумов, но похоже дальше авторских релизов дело не продвинулось. Декодеров нет, впрочем как и защищенных скриптов.

PHPCoder / eAccelerator (http://phpcoder.sourceforge.net/) Дополнение с открытым кодом к старинным php-акселераторам Turck MMCache и eAccelerator. Переводит скрипты в байт-код с целью повышения скорости их выполнения. Есть версии модулей под Windows и Linux. Публичных декодеров нет, но возможно открытый код проекта как-то поможет в изучении.

IcePHP (http://www.zeroc.com/) Какой-то фреймворк для PHP, в каких-то случаях использующий байт-кодирование скриптов. Мне попалось всего несколько штук, так что о жизнеспособности и распространенности этого проекта судить не могу.

Защиты на уровне исходного кода:

PHP LockIt! (http://www.phplockit.com/) Популярная коммерческая защита, встречается очень часто, в основном на скриптах зарубежных разработчиков. Позволяет устанавливать триальный срок работы скриптов, привязку к доменам и ip-адресам, сжимает скрипты штатными средствами php (gzinflate). Единственная сложность — хороший обфускатор. Различные версии защиты отличаются только модификацией модуля распаковки. Легко снимается как в ручном, так и в автоматическом режиме. Без обфускатора снимается в точности до исходного кода, с обфускатором требует дополнительной обработки.

CNCrypto (http://www.cn-software.com/) В свободном доступе нет даже демо-версии, анализ проводился по защищенным скриптам. Навесной модуль сложности в распаковке не представляет, защита держится только на хорошей обфускации исходного кода.

PHPCipher (http://www.phpcipher.com/) Защита представляет собой он-лайн сервис. На сайт загружается архив с вашими скриптами и обратно скачивается уже защищенный. Платная лицензия позволяет подписывать защищенные скрипты своими данными и использовать для коммерческих целей. Бесплатная лицензия допускает использование только для личных нужд. Сама защита представляет собой защищенный Zend’ом php-модуль, который подключается к защищенным скриптам. После deZend’а модуля защиты и получения из него всех необходимых констант снимается полностью до исходного кода. Функции обфускатора нет.

ByteRun Protector for PHP (http://www.byterun.com/) Коммерческий продукт, в зависимости от типа лицензии позволяет защищать скрипты как на уровне сервера, так и на уровне исходного кода. Серверная защита со стандартными возможностями, ничего особенного нет. Защита на уровне скриптов снимается очень легко автоматически и вручную. Публичного декодера на серверную версию нет.

SourceCop PHP Protector (http://www.sourcecop.com/) Очень популярная у отечественных разработчиков защита. Представляет собой сильно замусоренный пустым кодом модуль защиты, который подключается через include к защищенным скриптам. Алгоритм декодирования очень простой, не вызывает никаких сложностей в ручном и автоматическом снятии. Во всех случаях снимается полностью до исходного кода, функции обфускатора нет. Есть небольшие особенности для частных случаев декодирования, но здесь они описаны не будут.

CodeLock (http://www.codelock.co.nz/) Еще одна популярная защита, отличный пример безграмотного программирования. Представляет собой приложение на php, позволяет кодировать как сами скрипты, так и результат их работы в браузере средствами javascript. Скрипты можно защищать паролем, но из-за бездарной реализации пароль легко узнать даже не снимая навесную защиту. Модуль защиты представляет собой замусоренный пустым кодом php-скрипт, который подключается к защищаемым скриптам. Алгоритм защиты очень простой, снимается полностью до исходного кода. Функции обфускации нет.

TrueBug PHP Encoder, с недавнего времени TrueBug PHP Obfuscator & Encoder (http://www.truebug.com/) Очень интересный протектор для исследования. До версии 1.0.2 использовались стандартные средства php для gzip-компрессии, начиная с версии 1.0.3 авторами был разработан собственный алгоритм сжатия. В новом продукте TrueBug PHP Obfuscator & Encoder добавлена функция обфускации и оптимизации исходного кода. Единственное слабое место защиты — неизменный алгоритм декодирования скриптов, но сам алгоритм меняется для каждой версии защиты. После разбора защиты снимается легко в точности до исходного кода, естественно при условии что не был использован обфускатор.

Zorex PHP CryptZ (http://www.zorex.info/) Защита, как и CodeLock, представляет собой приложение на php, для его работы требуется база MySQL. Модуль защиты — подключаемый скрипт на php, зашифрованный в несколько слоев. После разбора алгоритма снимается очень легко в точности до исходного кода. Функции обфускатора нет.

Free PHP Encoder (http://www.freephpencoder.com/) Бесплатный он-лайновый сервис для кодирования php-скриптов. Модуль защиты представляет собой подключаемый php-скрипт, накрытый Zend’ом, который надо скачать с сайта. После снятия Zend’а и разбора алгоритма защита легко снимается полностью до исходного кода. Алгоритм защиты неизменный, функции обфускатора нет.

Gencoder (http://gencoder.sourceforge.net/) Скрипт на php, кодирование примитивное, стандартный base64. Большего внимания не заслуживает и практического интереса не представляет.

FREE Encrypted PHP (http://encrypted-php.com/) Бесплатный он-лайновый шифровщик файлов, выполняющий привязку к серверу и ограничение по времени работы скрипта. К зашифрованным скриптам подключается модуль расшифровки, накрытый ionCube. После открытия алгоритма расшифровки легко снимается.

Free Online PHP Obfuscator (http://fopo.com.ar/) Бесплатный он-лайновый шифровщик файлов, несмотря на слово «obfuscator» в названии, дополнительно сжимает и шифрует скрипты. Внешняя шифровка сложности в снятии не представляет, основная защита держится на обфускации текстовых строк и имен переменных.

PHP Locker (http://www.php-locker.com/) Коммерческий продукт, шифрует PHP-файлы в несколько слоев по по простейшему алгоритму, привязки к серверу нет, функции обфускации нет, ограничений скриптов по времени нет, в триальной версии добавляет к каждому скрипту ссылки на свой сайт. Легко снимается до исходного кода.

AROHA PHPencoder (http://phpencoder.aroha.sk/) Бесплатный скрипт для кодирования других скриптов. Используется обычный base64, поэтому никакого интереса не представляет, к тому же в нем есть функция обратной распаковки. На офсайте можно кодировать и декодировать скрипты он-лайн.

Обфускаторы:

Особого интереса в плане изучения не представляют, все работают по одинаковому принципу: замена названий переменных на набор случайных символов, удаление комментариев, переносов строк и пробелов, использованных для форматирования кода. К ним относятся GridinSoft PHP Processor (http://www.gridinsoft.com/), Semantic Designs Obfuscator (http://www.semdesigns.com/), PHP Defender (http://www.phpdefender.com/), Raizlabs PHP Obfuscator (http://www.raizlabs.com/), Obfusc (http://www.obfusc.com/), POBS (http://pobs.mywalhalla.net/), PHP UnReader (http://altseotools.com/), Code Eclipse (http://www.codeeclipse.com/) и другие.

P.S.: Данная тема вызвала мой интерес вследствие попыток отдельных личностей убрать ссылку из предлагаемого скрипта-информера курсов валют, единственным условием бесплатного распространения которого является как раз таки невмешательство в исходный код. В ближайшем обозримом будущем я обязательно доведу до ума защиту скрипта и внесу поправки накопившиеся с момента выхода последней версии.

h++p://www.manhunter.ru/webmaster/22_zaschita_php_skriptov_ot_analiza_i_modifikacii.html
Этот хабрапост рассматривает защиту php скриптов от копирования: h++p://habrahabr.ru/post/29301/

1 комментарий

  1. Очень классная статья.
    Меня как разработчика тоже интересует хорошая защита своих скриптов. Из постскриптума я понял, что автор озадачен тем-же вопросом.
    Уважаемый, если вы нашли способ как защитить свой собственный скрипт от модификации, пожалуйста, напишите мне письмо на мой email — есть предложение по сотрудничеству.
    Спасибо.

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


7 − 5 =