. Как удалить вирус, троян или вредоносный код со своего сайта
Как удалить вирус, троян или вредоносный код со своего сайта

Как удалить вирус, троян или вредоносный код со своего сайта

Из заголовка должно быть все понятно - мы будем заниматься поисками вредоносного кода на сайте под управлением CMS(Content Management System) разработанной на языке программирования PHP. Таких CMS достаточно много и они очень популярны, например: Wordpress, Joomla, DataLifeEngine, InstantCMS, E107, PhpBB и т.п. Сайт может работать также на самописном движке, в общем не важно, так как принципы внедрения зловредов в код PHP везде очень похожи.

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

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

Ну что ж, к делу.

Поиск и правка вредоносного кода на локальной копии сайта

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

Заходим на свой хостинг в панель управления и запускаем менеджер файлов, упаковываем все скрипты сайта в архив и скачиваем себе на компьютер по FTP или тот же файловый менеджер. Хочу заметить что скачивать все файлы сайта (пользовательские фото, видео, мультимедиа контент) не обязательно, главным образом нас интересуют скрипты и настройки. Если сайт большой то мультимедиа контента может быть достаточно таки много, он нам будет лишним и отнимет только ценное время и ресурсы, скорее всего в картинках и видео у вас на сайте нет ничего что может навредить сайту, поскольку веб-сервер не обработает скрипт написанный на PHP и переименованный в jpg или mp4.

В случае если у вас VPS то можно достаточно быстро упаковать сайт в архив при помощи консольного архиватора 7z, вот пример простой упаковки директории с сайтом на ОС Ubuntu Linux:

  • /var/www/data/site_com/ - Путь к директории с сайтом.
  • а - параметр что указывает архиватору произвести упаковку файлов (Add).
  • /var/www/data/site_com/* - указываем: нужно паковать все что есть в директории.
  • /var/www/data/site_com/.htaccess - дополнительно указываем что файл .htaccess тоже паковать (по умолчанию такие файлы исключаются)

В случае с VPS архив достаточно надежно и безопасно качать по протоколу SFTP (SSH 22 порт) используя программу WinSCP (Windows Secured Copy) - программа бесплатна и может работать в портабельном режиме. Свежую версию всегда можно скачать на официальном сайте - https://winscp.net

Для работы нам понадобится Total Commander, скорее всего у вас он уже установлен, поскольку без него в вебмастерских делах как без рук. Если у вас нет этого коммандера то его нужно установить, можно скачать с официального сайта программы - http://www.ghisler.com/download.htm

Теперь, когда у нас есть архив с сайтом, нужно его распаковать в любую удобную временную директорию, например в с:/TEMP. Распаковать можно используя Тотал Коммандер или любой из распространенных архиваторов (7Zip, WinRAR, WinZIP), также Windows по умолчанию поддерживает работу с сжатыми папками ZIP.

Заходим Тотал Коммандером в директорию с распакованными файлами и начинаем вызываем окно поиска файлов комбинацией клавиш ALT+F7 (поиск).

Там где "Искать файлы" ставим звездочку * для поиска по всех файлах или *.php - для поиска только по скриптах, ставим галочку возле поля "С текстом" и ниже галочку "Регулярные выражения".

В поле "С текстом" пишем строку-регулярное выражение для поиска, она состоит из списка фрагментов кода, который будем искать

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

С помощью регулярного выражения (Wiki: регулярные выражения) мы производим поиск в скриптах движка, которые могут содержать вредоносный код.

Вот что мы ищем:

  • http: - так чаще всего начинаются ссылки, кроме того так могут начинаться и внутрисайтовые (полезные) ссылки, нужно будет просмотреть внимательно.
  • href= - то же самое что и http: .
  • display - поиск CSS кода для скрытых блоков, в которые часто прячут ссылочки в шаблонах и скриптах, как пример: <a href="злосайт.ком" style="display:none">сайт</a> в данном случае ссылка индексируется но на сайте не отображается никогда.
  • base64 - классика жанра, наиболее распространенный способ шифрования PHP кода с разным вредоносным функционалом - от простановки ссылки до трояна или бекдора. Данная функция из языка PHP также используется в мирных, полезных целях, например в скриптах для отправки почты и т.п., поэтому нужно будет провести беглый анализ найденных фрагментов кода.
  • eval( - функция выполнения PHP кода переданного в строке как аргумент. Часто используют в комплексе с base64. Кроме того данная функция часто используется в мирных целях, для инициализации переменных в движке и т.п.
  • chr( - функция вывода символа с указанным кодом, такими функциями можно зашифровать любой кусок кода, поэтому если встретится большое количество таких вызовов функции собранных вместе в одном скрипте то это вполне может быть обфусцированный(искаженный, шифрованный) скрипт.

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

По завершению поиска если файлы найдены то они будут отображены с полными абсолютными путями, жмем кнопочку "Файлы на панель" чтобы вывести все эти файлы в панели Total Commander.

Для дальнейшей работы нам понадобится очень удобный и функциональный редактор кода Notepad++. Программа бесплатна, скачать ее можно на сайте - notepad-plus-plus.org/ , скачиваем, устанавливаем и запускаем!

Теперь просматриваем файлы, преимущественно с расширением *.php и по очереди открываем их в Notepad++, хотя. зачем по очереди? - можно ведь сразу открыть все! Для этого правой клавишей мышки выделяем нужные файлы и зажав левую клавишу мыши на одном из выделенных перетаскиваем в окно открытого редактора Notepad++ - и вот оно чудо: все файлы открыты для редактирования. ))

Далее нажатием комбинации клавиш CTRL+F вызываем окно поиска. Во вкладке Find в поле "Find what" вводим строку-регулярное выражения, по которому мы производили поиск файлов:

В группе "Search mode" выбираем "Regular expression" и нажимаем кнопку "Find all in all Opened Documents". После этого в нижней части редактора появится окно со списком файлов и найденных фрагментов кода для каждого из них.

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

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

По ходу обнаружения и правок вредоносных участков кода вам нужно записывать в блокнот полные пути и имена файлов в которых были сделаны изменения (это нам пригодится при обновлении живого сайта). Чтобы долго не возиться, полный путь к файлу можно скопировать выбрав его вкладку в редакторе, клацнув на ней правой клавой мышки и выбрать пункт "Full FIle Path to Clipboard", теперь идем в блокнот и нажимаем CTRL+V.

После всех правок файлов изменения в них нужно сохранить - для этого нажимаем комбинацию клавиш CTRL+SHIFT+S.

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

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

Полезные рекомендации

К дополнения ко всему сказанному выше советую вам внимательно просмотреть корневой (в верхнем уровне директорий) файл .htaccess. В последнее время участились случаи наличия в нем разных редиректов на всякие сайты (при заходе используя мобильные устройства) в следствии взлома или получения доступа через бэкдор (Вики: Бэкдор).

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

  • Не покупайте сайтов у незнакомых источников, которым вы не можете доверять хотя бы на 80%, такой сайт в случае наличия в нем бекдора или трояна и размещенный на шаровом хостинге рядом с другими вашими сайтами может заразить их всех. Перед установкой купленного сайта рекомендую произвести поиск вредоносного кода описанным выше методом, а также произвести осмотр того что вам упаковали в качестве файликов.
  • Ваш хостер, сам не подозревая того, может иметь "дыры", которые позволяют пользователям с других аккаунтов используя нехитрые особенности скриптов читать (а иногда даже и писать. бывает и такое) произвольные файлы на сайтах вашего аккаунта зная относительные или полные пути к ним(их вычислить не так уж сложно, например php при достаточно высоком уровне отображения ошибок в случае возникновения ошибки может раскрыть полные пути к файлам в информационном сообщении). Используйте сертифицированные или же проверенные временем хостинги, про отзывы и рейтинги можно почитать на http://hosting101.ru/ или других подобных сайтах, в дополнение поищите отзывы о вашем хостинге на форумах, блогах.
  • Ваш хостер может оказаться "грязным", в котором работает отчасти "гнилой" персонал. Такой хостер может продавать другим умышленно сделанные дыры на вашем сайте, поэтому вы можете себе долго попарить мозГ прежде чем поймете в чем вся суть проблем.
  • Самый, пожалуй, надежный вариант это - свой VPS или выделенный сервер, там вы сам себе Бог и сами все решаете и держите под контролем. Достаточно неплохой хостинг FastVPS.ru - VPS от 2.9Э, работал с ними несколько лет, сервера очень быстрые, главное все хорошо настроить - в этом плане вам также помогут, если нет необходимых навыков.

В завершение

Ну вот пожалуй и все о чем хотел поделиться в данной статье. Желаю вам удачи в борьбе с нечистью на вашем пострадавшем сайте и пусть она обходит ваши проекты 100500й дорогой!

📎📎📎📎📎📎📎📎📎📎