Закрыть Авторизация

     

3. Как найти взломанные файлы Joomla

Примечание автора: следующие два раздела - самые технические разделы руководства. Эти методы более сложные и я постарался представить информацию о средствах, которые можно использовать и как ими пользоваться. Как я уже упоминал во введении, вам понадобятся некоторые технические навыки, чтобы выполнить эти задачи. Предполагается, что вы можете решать основные технические задачи, как, например, использовать SFTP. Кроме того, вы будете работать с потенциально вредоносными файлами. Из-за этого, важно, что у вас есть антивирусное программное обеспечение. Не запускайте исполняющие файлы потенциально вредоносных программ (например, файлы или программы со странными названиями, а также не открывайте просмотр картинок, которые не узнаете и т. д.) Наконец, перед тем, как соберетесь что-либо удалять или редактировать, сделайте сначала резервную копию!

В этом разделе мы рассмотрим, как определить взломанные файлы в Joomla и записи в базе данных, которые вы можете удалить их (эти подходы не меняются при работе с различными версиями Joomla, будь то Joomla 1.5, Joomla 2.5 или Joomla 3).

Как выглядит взломанный файл Joomla?

 взломанный сайт joomla

Классический пример взломанного файла Joomla. Запутанные функции, сжатие, eval, измененные записи... Это просто другой скрипт.

 

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

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

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

Еще один признак - это любая ссылка на что-то вне сайта , URL-адрес или на файл со странным названием. Например,('../../templates/beez_20/b996.php'). Аналогично, ссылка на нормально называющийся файл, находящийся в странном месте - еще один показатель атаки. Например, ('../../templates/beez_20/settings.php').

Вероятные цели для нападения

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

·         Index.php Joomla

·         Index.php шаблона

·         Файл .htaccess

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

Как убедиться, что файл взломан

Чтобы знать наверняка, является код взломанным или нет, скачайте неизмененный файл расширением или ядра соответствующей версии (т.е. такой же версии расширения, как и у вас). А теперь чтобы проверить - создайте контрольную сумму MD5 этого файла и сверьте ее с контрольной суммой MD5 проверяемого файла. Это как проверка отпечатков пальцев, которая однозначно скажет вам, является ли файл измененным.

Вот несколько уроков о том, как генерировать контрольную сумму MD5:

·         Используя программы md5sum для проверки целостности (загруженных) файлов (Linux/Windows)

·         Создать и сравнить MD5, SHA1 (Mac)

Больше информации о контрольных суммах MD5 на официальной странице документации Joomla: Как определить контрольную сумму пакета

Поиск взломанных файлов Joomla

Когда ищешь взломанные файлы, всегда нужно иметь в виду несколько вещей:

1.    Взломанные файлы и записи базы данных всегда несколько изменены.

2.    Хакеры добавляют файлы для создания дополнительных уязвимостей или возможности использовать их другим образом.

3.    При этом хакеры всегда стремятся достичь какой-то цели.

Это может показаться очевидным, но этим они помогают нам сузить поиск того, что было взломано.

Если мы знаем, что взломанные файлы и записи базы данных были изменены, то как мы можем сказать, что изменилось? Двумя способами:

1.    Мы можем провести сравнение со старой резервной копией.

2.    Мы можем создать копию нашего сайта с таким же набором программного обеспечения (таких же версий) и сравнить изменения.

Сравнение Файлов

2

Сравнение с помощью Meld

Вот несколько инструментов, которые можно использовать для сравнения файлов:

·         Diff (Линукс/Мак)

·         Diff Tool для Mac

·         Meld (Линукс/Windows)

Найти взломанные файлы Joomla с помощью резервной копии

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

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

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

Такой подход занимает несколько часов, но он покажет вам именно то, что было изменено, что удалить и исправить. Обратите внимание, что если между бэкапами ваша версия Joomla была обновлена, то у вас будет несколько ложных срабатываний сканера.

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

Найти взломанные файлы Joomla чистым сравнением

Такой подход не требует резервного копирования, но очень похож на первый подход.

1.    В менеджера расширений Joomla, в разделе "управление" (Расширения - Менеджер расширений - Управление) , просто составьте список всех ваших расширений Joomla и их версий, установленных на вашем хакнутом сайте.

2.    В менеджере шаблонов сделайте то же самое.

3.    Скачать копию Joomla, такой же версии, как и у вашей взломанной версии, установить его, и установить все расширения и шаблоны в тех же версиях (вам не нужно ничего настраивать.)

4.    Расположите новую сборку сайта Joomla в каталоге рядом с вашим взломанным сайтом и запустите инструмент для сравнения.

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

Вывод: необходимо делать бэкапы!

Как найти взломанные файлы шаблона Joomla

3

Если мы знаем, что хакеры стремятся достичь какой-то цели путем изменения записей базы данных или файлов Joomla, мы можем посмотреть на изменения, которые необходимы для достижения этих целей.

Вспомните, признаки взлома из списка, который мы представили в предыдущем разделе "мой сайт на Joomla взломали?". Любой файл, функция, или другой код, который может сгенерировать любой из признаков, означает, что мы должны более пристально взглянуть на эти области.

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

·         base64_decode

·         eval

·         exec

·         strrev

·         wget

·         file_get_contents

·         stream

·         create_function

·         assert

·         system

·         preg_replace

·         gzuncompress

·         gzinflate

·         str_rot13

·         curl_exec

·         header

·         location.href

·         encodeuri

·         encodeuricomponent

·         любая ссылка или домен

Используя средства сканирования и поиска, мы можем искать именно эти строки. Самой используемой функцией является “grep” или “egrep”.Теперь необходимо провести сравнение. Если вы работаете в Linux - это доступно по умолчанию. Также как и на Mac. Однако, если вы пользуетесь Windows, вам, возможно, потребуется загрузить инструмент для сопоставления, например как PowerGREP.

Для любого поиска по файловой системе необходимо искать без учета регистра. Чтобы просканировать базу данных, необходимо экспортировать ее через phpmyadmin или другой клиент MySQL в текстовый дамп SQL. Затем вы можете запустить такой же поиск по нему.

Базовый поиск grep выглядит так:

egrep -Ri 'location.href' mysitedirectory/

По ссылке вы можете найти урок с более глубоким объяснением как искать паттерны: Linux и Unix команда grep команда

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

Найти взломанные файлы, используя JAMSS

JAMMS - отличный скрипт, разработанный Bernard Toplak.

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

Использовать его очень легко, просто загрузите его в корень, и откройте URL-адрес http://yoursite.com/jamss.php

Дополнительная информация и ссылка для скачивания доступна здесь: http://forum.joomla.org/viewtopic.php?f=714&t=778692

Как только вы закончите с данным скриптом, удалите его из каталога сайта!

Найти взломанные файлы с помощью расширений Joomla

4

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

Вот список некоторых из этих инструментов:

·         Admin Tools

·         RSFirewall

·         AntiVirus Website Protection

·         Securitycheck Pro

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

Найти взломанные файлы с помощью отладчика

5

Самый лучший способ определить, что происходит на вашем сайте - это пройтись по сайту построчно с помощью отладчика. Мы используем для этого PHP Storm и Xdebug. Я не собираюсь вдаваться в подробности того, как это сделать, потому что это выход за пределы для целевого читателя данного руководства. Если вы разработчик, и вы не можете определить, где атака внесла изменения в код вашего сайта, такой подход поможет вам точно увидеть, где это происходит и что вредоносный код делает. Недостатком этого подхода является то, что он может только обнаружить, откуда загружается код.

Что делать, если Вы не можете найти то, что взломали?

Хакеры хитрые и если они взломали ваш сайт, они уже в лучшем положении, чем вы. Это потому, что средний сайт Joomla имеет тысячи файлов, и скрыть зараженный кусочек кода в них не составит труда. Это как пытаться найти одно дерево в целом лесу. Что делать, если вы просто не можете это выяснить?

У вас есть пара вариантов:

·         Вы можете нанять кого-то

·         Вы можете создать 100% чистую версию сайта.

·         Вы можете создать на 90% чистую версию со старой базой данных.

Создать 100% чистую версию сайта

Это невероятно трудоемкий процесс, поскольку вам придется восстанавливать все по кусочкам, но вы можете быть уверены, что все, что Вы переносите было просканировано на вирусы.

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

Создать на 90% чистую версии

Помните: не пытайтесь делать это сразу на хостинге, начните на локальном хостинге и с резервной копии!

1.    В локальной среде разработки установите копию взломали сайт.

2.    В отдельную папку, скачайте и установите Joomla той же версии, что и взломанный сайт.

3.    Установите на чистую версию расширения тех же версий.

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

5.    В вашем новом сайте измените configuration.php файл для указания базы данных взломанного сайта (см. ниже для получения дополнительной информации).

6.    Теперь ваш новый сайт должен быть в точности таким же как ваш старый сайт, только с чистой файловой системой.

7.    Обновите вашу Joomla! и все модули до последней версии.

8.    Следуйте инструкциям, чтобы обезопасить свой сайт на Joomla, чтобы его не взломали снова

Какие переменные менять в configuration.php файл на базе вашего старого сайта:

На новом сайте вы строили, на корневом уровне, является файл с именем configuration.php

Если вы хотите изменить ваши учетные данные базы данных взломанного сайта, то нужно изменить три переменные:

public $db = 'change_to_your_old_db’;

public $user = 'change_to_your_old_db_user';

public $password = 'change_to_your_old_db_password';

Измените значения, заключенные в одинарные кавычки, чтобы подключиться к старой базе, где все ваши данные (старое имя пользователя, пароль и базу данных).

Как только вы сделаете это, вы получите, по сути, чистое новое тело сайта (файлы) и старый мозг (база данных).

Это позволит устранить большинство проблем на большинстве взломанных сайтов. Однако, если была взломана ваша база данных, данный способ не решит никаких проблем, поскольку очистится только файловая система.

В следующем разделе мы рассмотрим, как проводить сканирование на наличие вредоносных программ в файловой системе.

Подпишись!