воскресенье, 8 февраля 2015 г.

Как найти источник спам-рассылки на сервере?

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

Итак, имеем VPS-сервер на Linix Debian, сайт(ы) на популярном движке (WordPress, Drupal, Joomla) и почтовый сервер Exim. 
И вот некий хакер используя дырявый плагин, шаблон, форму обратной связи залил в папку сайта свой зловредный скрипт рассылающий спам. Как определить где он расположен?
Способ 1. Смотрим название зловредного скрипта в заголовках писем командой:
cat /var/spool/exim4/input/*-D  | grep X-PHP-Originating-Script: | sort | uniq

В ответ получим что-то типа:
X-PHP-Originating-Script: 33:test.php

Чтобы найти источник спам-рассылки на сайте, нужно в файле /etc/php5/php.ini включить логирование рассылаемой почты директивами:

mail.add_x_header = On
mail.log = /var/log/php.mail.log


В случае спам-рассылки в логе php.mail.log будут записи вида:
mail() on [/var/www/vhosts/site.com/httpdocs/pages/modules/system/system.mail.inc:83]: To: smith@domain.co.uk -- Headers: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed; delsp=yes Content-Transfer-Encoding: 8Bit X-Mailer: Drupal Sender: smith@domain.co.uk From: smith@domain.co.uk

Способ 2. Во всех папках сайтов смотрим подозрительные php-файлы, содержащие закодированные данные функцией base64:
grep -r "base64_decode" /var/www/ > result.txt

Получим текстовый файл result.txt, содержащий строки вида:

/var/www/********.ru/wp-content/uploads/2014/09/.javascript.php:return base64_decode($vE0DI59);}
/var/www/********.ru/wp-content/uploads/2014/09/.dir22.php:return base64_decode($v024M41);}
/var/www/********.ru/wp-content/uploads/2014/09/.info28.php:return base64_decode($v4ANRRC);}
/var/www/********.ru/wp-content/plugins/wp-portfolio/cache/ajax67.php:return base64_decode($vKUK0W6);}

Там будут найдены и другие файлы, однако, обратите внимание на файлы, содержащие строки base64_decode($XXXXXX). Подобные файлы я бы без раздумий удалил, особенно если они лежат в папках типа /uploads среди картинок.
Если, тем не менее, вы сомневаетесь удалять скрипт и хотите проверить, а что за код зашифрован этой функцией, то воспользуйтесь онлайн-дешифровщиками по адресам:
Способ 1 и Способ 2, примененные вместе дают высокий процент нахождения зловредных скриптов.

Совет по безопасности: рекомендую перепроверить права на папки, в которых были найдены зловреды, возможно стоит усилить безопасность, сняв права исполнения для всех. Т.е. понизить права на папку /uploads с 775(rwxrwxrw-) или 755(rwxrw-rw-) до 666(rw-rw-rw-). Таким образом, даже если хакер сможет загрузить зловредный скрипт в папку /uploads, то выполнить он его не сможет. 

Команда, выставляющая права рекурсивно на все подпапки в папке /uploads:
chmod -R 666 /var/www/********.ru/wp-content/uploads

P.S.: Использование сканера уязвимостей типа rkhunter не оградило от зловредов. Тем не менее я рекомендую использовать этот сканер, как дополнительный слой защиты периметра.

P.P.S.: После удаления заразы рекомендую проверить сайт антивирусными онлайн-сканерами:

Комментариев нет: