CHAIKA

Главная | Регистрация | Вход
Среда, 27.11.2024, 17:57
Приветствую Вас Гость | RSS
Меню сайта
Категории каталога
Мои статьи [51]
Справка по системе [59]
Запись [11]
Flash-накопители [21]
Закачка [35]
Игры [29]
Защита [76]
Локальная сеть [35]
WEB-master [44]
Восстановление [40]
Portable Soft [18]
Оптимизация [34]
Анонимайзер [4]
Ноутбуки [44]
Нетбуки [8]
Система - установка [21]
Деньги в интернете [19]
WINDOWS 7 [35]
Новые статьи [13]
Цифровое видео [26]
Мини-чат
200





Главная » Статьи » WEB-master

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

gencoder. Скрипт
на php, кодирование примитивное, стандартный base64. Большего внимания не
заслуживает и практического интереса не представляет.

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

Free
Online PHP Obfuscator
. Бесплатный он-лайновый шифровщик файлов, несмотря на
слово "obfuscator" в названии, дополнительно сжимает и шифрует скрипты. Внешняя
шифровка сложности в снятии не представляет, основная защита держится на
обфускации текстовых строк и имен переменных.

PHP Locker. Коммерческий
продукт, шифрует PHP-файлы в несколько слоев по по простейшему алгоритму,
привязки к серверу нет, функции обфускации нет, ограничений скриптов по времени
нет, в триальной версии добавляет к каждому скрипту ссылки на свой сайт. Легко
снимается до исходного кода.

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

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

Особого интереса в плане изучения не
представляют, все работают по одинаковому принципу: замена названий переменных
на набор случайных символов, удаление комментариев, переносов строк и пробелов,
использованных для форматирования кода. К ним относятся GridinSoft PHP Processor, Semantic Designs
Obfuscator
, PHP
Defender
, Raizlabs
PHP Obfuscator
, Obfusc, POBS,
PHP UnReader, Code Eclipse и
другие. По деобфускации различных скриптов я написал отдельную
статью
.

Для точного определения чем защищены скрипты можете
воспользоваться моей программой PCL's PHPiD. По всем
вопросам "а где взять декодеры?" и "а как сломать?" обращайтесь к поисковым
системам
. Просить что-то сломать тоже не надо, не тратьте зря время. 

http://www.manhunter.ru/webmaster/22_zaschita_php_skriptov_ot_analiza_i_modifikacii.html

Распаковка и расшифровка скриптов JavaScript


| Автор: ManHunter
Эта статья
- дополнение к статье про
деобфускацию
скриптов. Здесь будут рассмотрены основные принципы шифровки и
упаковки, слабые места защит, способы ручного снятия, а также универсальные
инструменты для автоматического снятия упаковщиков и навесной защиты со скриптов
JavaScript. В последнее время все чаще исходный код скриптов шифруется или
пакуется. Этим начали увлекаться Яндекс, DLE и другие популярные проекты, а
красивые байки про "заботу о пользователях", "экономию трафика" и прочую чушь
выглядят очень смешно. Что ж, если кому-то есть что скрывать, значит наша задача
вывести их на чистую воду.

Начнем с теории. Из-за особенностей выполнения
JavaScript все шифровщики и упаковщики, несмотря на их разнообразие, имеют всего
два варианта алгоритма:




  1. var encrypted='зашифрованные данные';
  2. function decrypt(str) {
  3.   // функция расшифровки или распаковки
  4. }
  5. // Выполнить расшифрованный скрипт
  6. eval(decrypt(encrypted));
или как вариант:




  1. var encrypted='зашифрованные данные';
  2. function decrypt(str) {
  3.   // функция расшифровки или распаковки
  4. }
  5. // Вывести на экран расшифрованные данные
  6. document.write(decrypt(encrypted));
Второй способ чаще всего используется для защиты
исходного html-кода страницы, а также разными троянами для внедрения в страницу
вредоносного кода, например скрытого фрейма. Оба алгоритма могут
комбинироваться, "навороченность" и запутанность расшифровщика может быть любой,
неизменным остается только сам принцип.

В обеих случаях
получается, что функциям eval() и document.write() передаются
полностью расшифрованные данные. Как их перехватить? Попробуйте заменить
eval() на alert(), и в открывшемся MessageBox'е вы сразу увидите
расшифрованный текст. Некоторые браузеры позволяют копировать текст из
MessageBox'ов, но лучше воспользоваться таким вот полуавтоматическим декодером:




  1. <html>
  2. <head><title>JavaScript Decoder</title></head>

  3. <body>
  4.  
  5. <script type="text/javascript">
  6. // Функция записи в лог результатов расшифровки

  7. function decoder(str) {
  8.   document.getElementById('decoded').value+=str+'\n';
  9. }
  10. </script>
  11.  
  12. <!-- Окно лога -->
  13. <textarea id="decoded" style="width:900px; height:500px;"></textarea>

  14.  
  15. <script type="text/javascript">
  16. // Сюда вставить зашифрованный скрипт, предварительно

  17. // заменить в нем все вызовы eval() и document.write() на decoder().

  18. </script>
  19.  
  20. </body>
  21. </html>
Для примера
возьмем какой-нибудь
скрипт с Яндекса, посмотрев исходный код видим что-то
нездоровое:

eval(function(p,a,c,k,e,r){e=function©{return(c<a?'':e(parseInt(
c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!
''.replace(/^/,String)){while(c--)r[e©]=k[c]||e©;k=[function(e
){return
r[e]}];e=function(){return'\w+'};c=1};while(c--)if(k[c])
p=p.replace(new
RegExp('\b'+e©+'\b','g'),k[c]);return p}('$.1e
.18=8(j){3
k=j["6-9"]||"#6-9";3 l=j["6-L"]||".u-L";3 m=j["6-L-17"]
||"";3
n=j["1d"]||0;$(5).2(".6-9").14("7");$(5).2(".6-9").Z("7",8(
){3 a=$(5).x();3
o=$(5).x();3 h=$(5).B("C");$(5).v("g-4");$(5).16(
$(k).q());3
t=$(o).2("15");3 c=$(o).2(".b-r");3 d=$(o).2(".b-12");
[остальной такой же
бред отрезан]

Сразу скажу, что этот скрипт обработан JavaScript
Compressor
, его легко узнать по сигнатуре - характерному названию фукнции в
начале скрипта. Копируем целиком исходный текст скрипта, заменяем первый
eval на decoder, вставляем в декодер и сохраняем его как
html-страничку.




  1. <script type="text/javascript">
  2. // Сюда вставить зашифрованный скрипт, предварительно

  3. // заменить в нем все вызовы eval() и document.write() на decoder().

  4. decoder(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e...
  5. </script>
Открываем ее в любом браузере и видим, что в
textarea сразу появился распакованный скрипт. Радоватся пока рано, в нем убраны
все переносы строчек и форматирование кода. Как с этим бороться написано в статье про
деобфускацию
.

Второй пример. Вот html-страничка,
накрытая программой HTML Protector. Это страница, демонстрирующая возможности
программы, поэтому там задействованы все опции: блокировка выделения и
копирования текста, запрет правой кнопки мыши, защита картинок, скрытие строки
состояния, шифрование html-кода и т.д. Открываем исходный код, смотрим. В самом
верху уже знакомый нам document.write и зашифрованный скрипт. Запускаем его
через декодер, получаем функцию расшифровки основного содержимого:




  1. hp_ok=true;function hp_d01(s){ ...вырезано... o=ar.join("")+os;document.write(o)
Заменяем в функции
последний document.write на decoder и вставляем после нее все три оставшихся
зашифрованных скрипта:




  1. <script type="text/javascript">
  2. // Сюда вставить зашифрованный скрипт, предварительно

  3. // заменить в нем все вызовы eval() и document.write() на decoder().

  4. hp_ok=true;function hp_d01(s){ .... o=ar.join("")+os;decoder(o);
  5. hp_d01(unescape(">QAPKRV%22NCLEWC ....
  6. hp_d01(unescape(">QAPKRV%22NCLEWCEG? HctcQa ...
  7. hp_d01(unescape(">`mf{%22`eamnmp? !DDDDDD %22v ...
  8. </script>
Для
удобства в статье скрипты приводятся не полностью, вы же должны копировать их
целиком. Открываем декодер в браузере и видим защитные скрипты, добавленные
программой, и расшифрованный исходный текст страницы. Для удобства можно
расшифровывать только третий скрипт, в котором содержится html-код страницы. Вот
и вся защита. Как видите, ничего сложного. Аналогично снимаются и другие защиты
html-страниц.

От ручной расшифровки перейдем к автоматической. Для снятия
защит первого типа я немного модифицировал уже известный вам скрипт Beautify
Javascript
и откомпилировал его в exe-файл. Он без проблем справляется с
большинством виденных мной защит и упаковщиков JavaScript.


Eval
JavaScript Unpacker 1.1


Eval.JavaScript.Unpacker.1.1-PCL.zip (12,073 bytes)

Для более сложных случаев придется пускать в ход тяжелую
артиллерию. Это бесплатный проект Malzilla, предназначенный для
исследования троянов и другого вредоносного кода. Поскольку все программы,
предназначенные для защиты авторского права, являются однозначно вредоносными,
Malzilla поможет нам в борьбе с ними. Качаем последнюю
версию
(на сегодняшний день это 1.2.0), распаковываем, запускаем. Открываем
вторую вкладку Decoder, в верхнее окно вставляем код зашифрованного скрипта,
нажимаем кнопочку Run script.



Malzilla за работой

В папке
eval_temp складываются все результаты выполнения функций eval(), в том
числе и промежуточные. Их можно посмотреть, нажав на кнопку Show eval()
results
, текст откроется в нижнем окне. Его можно скопировать, вставить в
верхнее окно и сразу же отформатировать нажатием кнопки Format code.
Кроме декодера Malzilla имеет еще множество инструментов и настроек, позволяющих
легко снять любую защиту со скриптов JavaScript.



Скрипт успешно
расшифрован и отформатирован

Также можно обратить внимание на еще
один бесплатный инструмент для работы с зашифрованными скриптами - FreShow. Функций в нем поменьше, но вполне имеет место быть. С офсайта
можно скачать демонстрационный ролик,
показывающий пример работы с программой.

Как видите, нет ничего сложного
в снятии защиты со скриптов JavaScript и с html-страниц. Вы все еще продолжаете
защищать свои поганые "аффтарские права"? Тогда мы идем к вам! 

http://www.manhunter.ru/underground/32_raspakovka_i_rasshifrovka_skriptov_javascript.html

PCL's PHPiD 1.0 Public Release


| Автор: ManHunter


Скриншот программы PCL's
PHPiD

PCL's PHPiD - программа для определения чем зашифрован
или обработан PHP-скрипт, всего определяет более 40 различных протекторов и
обфускаторов. PCL's PHPiD представляет собой один из модулей закрытого
проекта Massacre, снабженный графической оболочкой (файл phpid.exe), а
также консольный вариант программы (файл phpid_ce.exe). Поиск, в
основном, выполняется по сигнатурам, так что теоретически возможны неточности в
идентификации, но мне пока такие скрипты не попадались. Также некоторые
обфускаторы используют сходные алгоритмы (например, PHP LockIt! и PHP Defender)
и на выходе дают практически одинаковый результат. В этом случае точно
определить, чем обработан скрипт, не получится и будет выбран наиболее похожий
вариант. Размер анализируемого скрипта должен быть не более 1 мегабайта. Скрипты
также можно передавать через командную строку и drag'n'drop.

Определяемые
протекторы:

  • TrueBug PHP Encoder 1.0.2 (incl. GZIP), 1.0.3/1.0.4
  • NuSphere NuCoder
  • Zend Encoder / Zend SafeGuard Suite
  • ByteRun Protector for PHP
  • SourceCop (incl. protection module)
  • CodeLock (incl. protection module)
  • SourceGuardian for PHP
  • PHPCipher
  • phpSHIELD
  • CNCrypto
  • PHTML Encoder
  • ionCube PHP Encoder
  • PHP LockIt! 1.8, 2.0 (incl. GZIP)
  • Obfusc (Basic/Normal, ShowObfuscate)
  • Zorex PHP CryptZ (incl. protection module)
  • gencoder
  • DWebEncoder
  • Free PHP Encoder
  • PHP Compact
  • TrueBug PHP Obfuscator 1.1
  • PHPCoder / eAccelerator
  • FREE Encrypted PHP
  • Free Online PHP Obfuscator
  • BCompiler
  • IcePHP
  • ZenCrypt
  • AROHA PHPencoder
  • PHP Locker
  • Easy PHP Encrypt
  • CodeTangler Pro
  • HidePHP
  • Turck MMCache Encoder
  • Rucros PHP Obfuscator
  • Encode PHP
  • G-Encoder
  • NET-TEC PHP-ENCODER
Определяемые обфускаторы:

  • Semantic Designs Obfuscator
  • PHP Defender
  • PHP LockIt! (Obfuscation mode)
  • Raizlabs PHP Obfuscator
  • POBS - PHP Obfuscator
  • Processed by De-Zender
  • PHP Obfuscator by DX
Подробнее про каждый протектор из этого списка
вы можете почитать в моей статье
про защиту скриптов. Если у вас есть еще какая-нибудь дрянь, которой нет в
списке или которая не определилась PCL's PHPiD, то присылайте мне ссылки на нее
и/или образцы защищенных скриптов через форму обратной
связи
. Буду очень благодарен.

Коды возврата консольной
версии программы (ERRORLEVEL):
0 = нет ошибок
1 = не заданы параметры
командной строки
2 = файл не найден или произошла системная ошибка
3 =
файл слишком большой (более 1 мегабайта)

Пример использования в файле
phpid_ce.bat. Вывод из консольной версии идет на stdout, так что его
можно перенаправлять как угодно, например, записывать в файл или передавать для
обработки другой программе.


PCL's PHPiD GUI +
Console v1.0 Public Release


PHPiD.1.0.Public.Release-PCL.zip (22,020 bytes)

http://www.manhunter.ru/releases/90_pcls_phpid_1_0_public_release.html
Категория: WEB-master | Добавил: Chaika (18.08.2010)
Просмотров: 4889 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
  • Все для веб-мастера
  • Программы для всех
  • Мир развлечений
  • Деревенька
  • Районная сеть Чайка.Net










  • Помогло? Скажи спасибо!

    Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Copyright MyCorp © 2024 |