Как удалить вирус, троян или вредоносный код со своего сайта
Из заголовка должно быть все понятно - мы будем заниматься поисками вредоносного кода на сайте под управлением 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:
# apt-get install p7zip-full
# 7z a site_com_backup.zip /var/www/data/site_com/* /var/www/data/site_com/.htaccess
- /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 - для поиска только по скриптах, ставим галочку возле поля "С текстом" и ниже галочку "Регулярные выражения".
В поле "С текстом" пишем строку-регулярное выражение для поиска, она состоит из списка фрагментов кода, который будем искать
http:|href=|display|base64|eval\(|chr\(
Когда все заполнено нажимаем "Начать поиск" и дожидаемся завершения операции, длительность зависит от мощности процессора вашего компьютера, а также от скорости работы с файлами вашего жесткого диска (достаточно быстро ищет если у вас 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" вводим строку-регулярное выражения, по которому мы производили поиск файлов:
http:|href=|display|base64|eval\(|chr\(
В группе "Search mode" выбираем "Regular expression" и нажимаем кнопку "Find all in all Opened Documents". После этого в нижней части редактора появится окно со списком файлов и найденных фрагментов кода для каждого из них.
Заранее хочу вас предупредить что найденных файлов может быть достаточно много, все зависит от движка и его структуры, поэтому можно ограничиться поиском наиболее опасных функций:
base64|eval\(
Производим просмотр кода и в случае обнаружения странного куска клацаем дважды на нем чтобы открыть данный файл для правки в основном окне редактора.
По ходу обнаружения и правок вредоносных участков кода вам нужно записывать в блокнот полные пути и имена файлов в которых были сделаны изменения (это нам пригодится при обновлении живого сайта). Чтобы долго не возиться, полный путь к файлу можно скопировать выбрав его вкладку в редакторе, клацнув на ней правой клавой мышки и выбрать пункт "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й дорогой!
Сам попал так что уже немогу выкарабкаться несколько месяцев. Сайты заражаются файлами с расширением JS с компа или бука по очереди. Чистит на устройствах sophos, на сайтах antiVirus http://prntscr.com/biokan -видит, но не могу зачистить. Как только зачищу поставлю новые пароли на базу и через 24 часа и снова эта беда.
Здравствуйте.
Похоже на то, что у вас на одном или нескольких сайтах (если они на одном аккаунте или сервере) присутствуют скрипты (PHP) с уязвимостью и черными ходами (back-doors), также может быть неправильно настроен веб-сервер. Этим и пользуются взломщики для внедрения различной заразы на сайты, для заработка и кражи трафика.
Данная проблема очень актуальна, сейчас во всем мире доля зараженных и уязвимых сайтов постоянно растет. Причин тому может быть очень много, приведу несколько наиболее значимых:
Тем не менее, ситуация не безнадежна если подойти ответственно и с разумом!
Недавно у моего знакомого была подобная проблема - массово ломали сайты один за другим, которые размещались как на одном, так и на разных серверах.
Приведу некоторые важные рекомендации:
Если есть возможность то арендуйте вирутальный приватный сервер на Linux (VPS), это поможет держать полный контроль над тем что творится с вашими сайтами (об этом я упоминал в статье).
Настройте сервер так чтобы на нем не было ничего лишнего. Из основного:
Эти базовые (немножко параноидальные) рекомендации помогут избавиться от множества проблем, сберечь нервы, время и здоровье вебмастера-администратора сайтов. Пусть вы и ваши сайты будут здоровы!