Ищем НДВ в PHP. Расшифровка и деобфускация PHP-скриптов
Анализируя PHP скрипты, не стоит полагаться лишь на сигнатурный анализ опасных конструкций — все чаще можно сталкиваться с кодированными и шифрованными файлами.
Давайте попробуем классифицировать какие существуют виды защиты PHP-скриптов. Всего их можно выделить три:
- Защита посредством кодирования скриптов в байт-код, требующая дополнительных PHP-расширений для работы с ними. Это самый сложный тип защиты, примеры: Zend Guard, ionCube, Nu-Coder.
- Защита, основанная на шифровании непосредственно исходного кода скрипта путем использования особого алгоритма. Примеры: PHP Cipher, Truebug PHP Encoder, SourceCop PHP Protector.
- Обфускация – изменение названий переменных и функций, удаление пробелов и символов переноса строки, etc. Относительно самый просто тип, примеры: PHP Defender, Obfusc.
Предположим, есть задача определить с помощью какого неизвестного для нас алгоритма зашифрован скрипт . На помощь приходит замечательный инструмент PCL’s PHPiD. Распознает множество протекторов, например ionCube:
Определив протектор, можно поискать существующие решения для расшифровки того или иного энкодера.
Сайт http://dezend.me/ помогавший решить эту же задачу, в настоящий момент не предоставляет подобный сервис.
Можно попробовать воспользоваться инструментами, которые выкладывают на сайте deioncube.in. На местном форуме также можно попросить расшифровать скрипт, в большинстве случаев вам помогут безвозмездно.
Если же хочется вручную поисследовать неизвестные алгоритмы, то стоит взглянуть в сторону расширения evalhook. Хороший пример использования есть на habre.