Поиск вирусов на сайте

Материал из Энциклопедия хостинга
Перейти к: навигация, поиск


Содержание

Превентивные меры

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

1. Своевременно обновлять ПО на сервере;
2. Своевременно обновлять CMS;
3. Своевременно делать резервные копии;
4. Использовать стойкие пароли. Желательно, чтобы пароли, которыми вы пользуетесь, содержали не менее 8 символов, включая цифры и спецсимволы ($%#/*);
5. По возможности, не хранить пароли в открытом виде;
6. Использовать минимально возможные права на доступ к папкам и файлам. 


Поиск вирусов

Итак, вы подозреваете, что у вас на сайте вирус. Для начала, стоит выяснить, а так ли это. Полезно будет изучить сайт при помощи, например, Firebug. Если при загрузки сайта/страницы на вкладках сеть или консоль, мы видим подозрительную активность: редирект, загрузка iframe, подгрузка посторонних страниц или файлов — есть повод задуматься. Далее стоит попробовать «скормить» URL вашего сайта онлайн сервисам, таким как antivirus-alarm.ru или vms.drweb.com/online. Они помогут определить наличие на ваших сайтах вредоносного кода. После работы сервисов вам остается лишь посмотреть файлы, которые указаны в выводе. Чаще всего зловредный код прописывается в начало или в конец файла. Итак, онлайн сервис что-то нашел или не нашел, но у вас остаются подозрения, что скрипты инфицированы. Самое время приступить к ручному осмотру.

ISPmanager 5

Обладателям ISPmanager 5 можно докупить модуль VirusDie, который заметно облегчает поиск и устранение вредоносного программного обеспечение. Интеграция с антивирусной системой Virusdie. Позволяет проверять сайты пользователей на наличие вредоносного кода (включая вирусы, трояны, спам-боты и пр.) в файлах PHP, JS, HTML и системных файлах, а также выполнять лечение зараженных файлов

Подробнее о том как установить плагин и как он работает описано тут.

Поиск вирусов вручную

Поверхностный осмотр.

find /var/www/user/data/www/site.ru/ -type f -mtime -20

данная команда поможет отыскать файлы сайта site.ru, которые были изменены меньше, чем 20 дней назад. Если вы знаете приблизительную дату заражения, изменяя параметр ключа mtime можно довольно быстро отыскать нужные файлы.

Осмотр лог-файла ftp (/var/log/xferlog, например) также поможет в поиске вирусов, если заражение было осуществленно по ftp.

Tue Jun 19 10:56:38 2012 0 <IP> 16171 /var/www/user/data/www/site.ru/include/virus.php a _ i r user ftp 0 * c

такая запись говорит нам о том, что в папку include 19 июня по ftp был загружен файл virus.php размером 16кб, пользователем user с ip адресом <IP>. Обращаем внимание на ключ i в записи, который говорит нам, что файл был загружен на сервер.

Также, вероятно, будет полезно осмотреть директории, доступные широкому кругу пользователей. Это такие директории, как uploads, image и д.р. Те, в которые могут писать пользователи сайта.

file /var/www/user/data/www/site.ru/uploads/* | grep -i php

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

file in.jpg 
in.jpg: PHP script text

Детальный осмотр.

Допустим, вы ничего не нашли при поверхностном осмотре. Переходим к детальному изучению.

htaccess

Бывает так, что редиректы прописываются в файлы htaccess.

find /var/www/user/data/www/site.ru/ -type f -iname '*htaccess'

команда поможет вам найти все файлы htaccess для сайта site.ru. Внимательно изучите эти файлы на предмет посторонних перенаправлений.

Php/js код

Вручную вредоносный код можно искать по паттернам. Чаще всего, это либо закодированный в base_64 код, либо обфусцированный по определенному алгоритмому. Имеет смысл искать следующие, наиболее распространенные, паттерны:

FilesMan, try{document.body, String["fromCharCode"], auth_pass, fromCharCode, shell_exec, passthru, system, base64_decode, chmod, passwd, mkdir, eval(str_replace, eval(gzinflate, ="";function, "ev"+"al",md5=,ss+st.fromCharCode, e2aa4e

Поиск вредоносного кода можно осуществлять с помощью команды grep, например

grep -ril base64_decode /var/www/user/site.ru

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

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

stat infected.js

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

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

sed -i "" 's/начало_паттерна.*конец_паттерна//g' infected.js

например, код @preg_replace («\x40\50\x2e\53\x29\100\x69\145»,"\x65\166\x61\154\x28\142\x61\163\x65\66\x34 удалиться с помощью команды

sed -i "" 's/@preg.*34//g' infected.js

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

Действия после очистки

После завершения чистки ваших скриптов желательно сделать следующее:

- сменить пароли доступа к вашему серверу;
- обновить CMS, которую вы используете и все сопутствующее ПО (плагины, модули);
- сделать чистую резервную копию сайта.

Эти действия снизят вероятность последующего взлома и уберегут от потери данных.

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты

Заметили ошибку?

Выделите ее и нажмите CTRL+ENTER