Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

История одного бэкдора

Anna | 31.05.2014 | нет комментариев

Жил-был один ветхий-ветхий сайт. Родители от него отказались, и на втором десятке лет существования он попал к нам. Он представлял из себя джунгли PHP кода, разбросанного по папкам. Все это было написано в различное время, с применением различных паттернкостылей, в различных кодировках (до 3ёх кодировок в пределах одного файла). MVC тогда, вероятно, еще не было вестимо, да и о шаблонизаторах разработчики не слышали, так что не стоит изумляться неожиданному

<? if (cond) { ?>

в HTML разметке. Я провел не один час в интересных поисках надобного

<? } ?>

Разработчики не забывали и про бэкапы: в корне дозволено было обнаружить index.php, index_old.php, index.php.bak. Но невзирая ни на что, это Диво работало. А что работает — не трожь.

Завязка

Эта история началась, когда ясным декабрьским утром эксперт по движению с изумлением нашел ссылки на чужеродные сайты в футере. Немножко покопавшись выяснилось 2 вещи:

  1. это сапа;
  2. клиент недоумевает.


Недоумение клиента дозволено осознать: у него этих ссылок не видно.

Расследование

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

Ничего не ясно, но искреннее спасибо тому человеку, тот, что не убрал аннотацию в шапке. Я начинаю гуглить ”Zend Oрtimizer”, объективно предполагая, что он приведет к расшифровке этого трэша. Поиск рабочего декодера заканчивается здесь. Особенно порадовала капча:

С некоторым геморром, связанным с запретом копирования итога, я получил следующее:

Я с недоверием отношусь к трудным регулярным выражениям, а здесь и совсем потух. Начинаю припоминать как работает preg_replace(). И чем огромнее читаю, тем огромнее недоумеваю. Само регулярное выражение должно идти первым параметром, а во втором — то, на что заменяют. Посмотрел еще раз на то, что было дано. получается, в строке «x» заменяется “#x#e” на ту длинную штуку. Причем в функции preg_replace()применяются модификаторы x и e. Но не дадим себя запутать: все, что размещено между # — экранируется, так что x - это на самом деле то, что следует заменить в строке «x» , т.е. все, а модификатор e разрешает выполнить результирующее выражение как PHP код. При внимательном взоре на строку замены становится ясно, что большая ее часть — это шум.

Если убрать комментарии, получится

@eval(base64_decode($I0));

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

Здесь я впервой увидел функцию chr(). Позалипал на

$ll = @explode(chr(187) , @implode('', @array_map('trim', @file($ll))));

Загуглил array_map(). В всеобщем здесь применяется кусок из того самого изначального файла, зашифрованного Zend Optimizer. Вот уж не знаю какой там алгорифм, но произведя перегруппировку символов и взяв теснее становящийся привычным base64_decode() я получил крипто-функцию:

Дальше ком стал разрастаться экспоненциально, и позже нескольких итераций файл добился 2к строк. Конструкцию файла позже каждого этого расследования я оставил на завтра, а пока пара потех:


разрешает остаться незамеченными с терминалов внутренней подсети.


Увлекательно, они там сразу делают шифровку такую, либо это теснее кто-то постарался спецом для нас?

Взамен послесловия

Если верить времени создания файлов — на дворе был грозный 2009. Только вот мне даже немножко жалко времени тех людей, которые это все зашивали так настойчиво, потому как я уверен, что данный процесс занял у них времени поболее, чем обратный. И чай всё это было бы немыслимо, если бы только не осталась аннотация о Zend Optimizer.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB