Иногда при попытке зайти на сайт Вы получаете предупреждение от браузера либо антивируса о возможной небезопасности Вашего сайта для компьютера. Происходит это потому, что Ваш сайт был заражен вирусом.
Заражая страницы вашего сайта, вирус, обеспечивает себе дальнейшее распространение. Обычно, он просто дописывает в конец индексных файлов тег <iframe>
, но иногда шифрует код с помощью JavaScript и может помещать себя в самые разные участки страницы.
Иногда злоумышленники изменяют содержимое конфигурационных файлов .htaccess, вследствие чего с Вашего сайта происходит перенаправление на вредоносные или нежелательные страницы. В случае такого заражения обновляется дата последнего редактирования файла, что позволяет предположить, что Ваш сайт инфицирован.
Принцип заражения
Как происходит взлом сайта и заражение его файлов?
Очень часто злоумышленники взламывают сайты программами в автоматическом режиме. Это значит, что собирается большая база сайтов из поисковых систем по определенным критериям, например определенные версии популярных CMS (Joomla, Wordpress и т.д.) и их плагинов, подверженных какой-либо известной уязвимости. Далее эта база используется для размещается вредоносного кода в файлах сайта. Именно по этому необходимо всегда своевременно обновлять используемую CMS и ее плагины.
Также, Ваш сайт может быть заражен, если Ваш компьютер заражен вирусом. Вирус может перехватывать логины и пароли от FTP и отсылать их злоумышленнику. Далее злоумышленник, имея доступ к файлам, размещает вредоносные строки в скриптах сайта.
Таким образом, основные источники заражения сайтов — вирусы на компьютере, с которого происходит загрузка сайта, а также устаревшие версии CMS. Со стороны хостинга Ваши сайты максимально защищены, и даже в случае заражения какого-либо сайта на сервере, злоумышленник не сможет попасть к Вам на сайт и заразить его.
Меры безопасности
Для того, чтобы оградить Ваш сайт от взлома,следует придерживаться несколько простых советов:
- Нигде не храните учётные данные доступа.
- Устанавливайте корректные права на каталоги и файлы. На файлы права 644 на папки 755.
- Используйте актуальные версии CMS и плагинов, желательно подписаться на почтовую рассылку или RSS, информирующие о выходе обновлений безопасности.
- Всегда используйте длинные комплексные пароли и нестандартные логины, периодически выполняйте их смену.
- Пользуйтесь антивирусным программным обеспечением и регулярно обновляйте антивирусные базы.
- Устанавливайте обновления операционной системы по мере их выхода.
- Не используйте устаревшие браузеры, в особенности устаревшие версии Internet Explorer (ниже версии 7).
- Не загружайте неизвестные скрипты на Ваш хостинг. Часто, например во взломанных (nulled) версиях платных скриптов имеются вирусы.
- Не переходите по неизвестным ссылкам в письмах, в социальных сетях и интернет мессенджерах (icq, jabber).
- Не сохраняйте пароли в FTP-клиентах — очень часто вирусы берут информацию из FTP-клиента.
- Имейте локальные бекапы сайтов.
Если сайт уже заражен
Если вдруг Ваш сайт был заражен, то проверьте его на вирусы антивирусным программным обеспечением с актуальными базами, например:
Lynis, Chkrootkit.
Также у Вас есть возможность запросить восстановление сайта из резервной копии.
После восстановления работоспособности сайта поменяйте пароль доступа к FTP-аккаунту и к базам данных.
После восстановления сайта из бэкапа обновите CMS до актуальной версии, так же обновите ее дополнения.
Поиск вирусов вручную
Поверхностный осмотр.
find /var/www/user/data/www/domain.com/ -type f -mtime -10
данная команда поможет отыскать файлы сайта domain.com, которые были изменены меньше, чем 10 дней назад. Чтобы быстро отыскать нужные файлы, можно изменять параметр ключа mtime на приблизительную дату заражения.
Просмотрим лог-файла ftp /var/log/xferlog например также поможет в поиске вирусов, если заражение было осуществлено по ftp.
Tue Aug 28 09:32:22 2017 0 <IP> 17151 /var/www/user/data/www/domain.com/include/virus.php a _ i r user ftp 0 * c
такая запись говорит о том, что в папку include 28 августа по ftp был загружен файл virus.php размером 17кб, пользователем user с ip адресом . Обращаем внимание на ключ i в записи, который говорит нам, что файл был загружен на сервер.
Также, можно просмотреть директории, доступные кругу пользователей. Это такие директории, как uploads, image и д.р. Те, в которые могут писать пользователи сайта.
file /var/www/user/data/www/domain.com/uploads/* | grep -i php
покажет php файлы в папке uploads, независимо от их расширения. Вряд ли вы позволяете своим посетителям загружать php файлы на сервер. А уж если это php файл, притворяющийся картинкой... Например
file in.jpg
in.jpg: PHP script text
Детальный осмотр.
Если ничего небыло найдено при поверхностном осмотре. Переходим к детальному изучению .htaccess
Бывает так, что редиректы прописываются в файлы .htaccess.
find /var/www/user/data/www/domain.com/ -type f -iname '*htaccess'
команда поможет найти все файлы .htaccess для сайта domain.com. Внимательно изучите эти файлы на предмет посторонних перенаправлений.
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/domain.com
покажет все файлы в папке domain.com, в которых встречается 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