Как найти источник спама с сайта? Логгер стека вызова функций.
Друзья, очень нужен ваш совет.
Как отследить, каким модулем вызывается class.phpmailer.php? Именно на него ссылаются логи полученные от хостера.
Знаний не хватает, а хотелось бы, (но не знаю как) реализовать логгер стека вызова функций. Это должно помочь в поиске первоисточника «заразы».
Заранее каюсь, что «новичок», поэтому прошу сильно не троллить.
Как план действий:
Хочу обновить MODX и все дополнения до последних версий. Запилить по возможности логгер и попросить хостера разблокировать почту.
Если это была просто не закрытая уязвимость в неактуальных версиях софта и спам прекратиться, то хорошо. Если не прекратиться, то хотя-бы лог поможет отследить источник.
Подробности:
Хостер прислал письмо о спаме, рассылаемом с сайта, в связи с чем им была заблокирована возможность отправки почты.
Благо, аккаунт не заблокировали и сайт работает.
Прислали логи веб-сервера и почтовика. В логах почты обнаружились строки отсылающие к модулю «class.phpmailer.php» такого вида:
«X-PHP-Originating-Script: „1550:class.phpmailer.php“
Из этого лога так же видно, что спам рассылался на адреса зарегистрованных на сайте пользователей, а не просто „кому-попало“.
Сопоставление логов по времени не дало каких-либо зацепок.
Прогон по онлайн-сканерам virustotal.com, rescan.pro, drweb.ru и другим не выявил ничего подозрительного, равно как и сканирование AI-Bolit-ом через ssh и локальное сканирование Norton Security.
Пароли админа CMS, БД и хостинга поменял в первую очередь.
Исходные данные:
На сайте MODX Revo (2.5.4).
Компоненты: Login (1.9.2), FormIt (2.2.11), Tickets (1.8.0), pdoTools (2.8.0), EasyComm (1.2.6), ajaxform (1.1.8).
Знаю, что надо было обновляться вовремя, но момент уже упущен.
На сайте реализован форум на Tickets, сообщения могут оставлять только зареганные пользователи. Есть регистрация/авторизация пользователей через Login.
На формах обратной связи (FormIt) и EasyComm стоит гугловская Recapcha2.
Конкретных вопросов два:
1. Как бы вы поступили в подобном случае?
2. Как отследить откуда вызывается class.phpmailer.php?
Как отследить, каким модулем вызывается class.phpmailer.php? Именно на него ссылаются логи полученные от хостера.
Знаний не хватает, а хотелось бы, (но не знаю как) реализовать логгер стека вызова функций. Это должно помочь в поиске первоисточника «заразы».
Заранее каюсь, что «новичок», поэтому прошу сильно не троллить.
Как план действий:
Хочу обновить MODX и все дополнения до последних версий. Запилить по возможности логгер и попросить хостера разблокировать почту.
Если это была просто не закрытая уязвимость в неактуальных версиях софта и спам прекратиться, то хорошо. Если не прекратиться, то хотя-бы лог поможет отследить источник.
Подробности:
Хостер прислал письмо о спаме, рассылаемом с сайта, в связи с чем им была заблокирована возможность отправки почты.
Благо, аккаунт не заблокировали и сайт работает.
Прислали логи веб-сервера и почтовика. В логах почты обнаружились строки отсылающие к модулю «class.phpmailer.php» такого вида:
«X-PHP-Originating-Script: „1550:class.phpmailer.php“
Из этого лога так же видно, что спам рассылался на адреса зарегистрованных на сайте пользователей, а не просто „кому-попало“.
Сопоставление логов по времени не дало каких-либо зацепок.
Прогон по онлайн-сканерам virustotal.com, rescan.pro, drweb.ru и другим не выявил ничего подозрительного, равно как и сканирование AI-Bolit-ом через ssh и локальное сканирование Norton Security.
Пароли админа CMS, БД и хостинга поменял в первую очередь.
Исходные данные:
На сайте MODX Revo (2.5.4).
Компоненты: Login (1.9.2), FormIt (2.2.11), Tickets (1.8.0), pdoTools (2.8.0), EasyComm (1.2.6), ajaxform (1.1.8).
Знаю, что надо было обновляться вовремя, но момент уже упущен.
На сайте реализован форум на Tickets, сообщения могут оставлять только зареганные пользователи. Есть регистрация/авторизация пользователей через Login.
На формах обратной связи (FormIt) и EasyComm стоит гугловская Recapcha2.
Конкретных вопросов два:
1. Как бы вы поступили в подобном случае?
2. Как отследить откуда вызывается class.phpmailer.php?
Комментарии: 16
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
У меня пару раз были (сопоставил по времени access-лог и лог mail-сервера) массовые обращения к assets/components/office/action.php
Переименовал assets — все прошло )) Видно кто-то целенаправленно долбит Office. То же самое, теоретически возможно и с Login.
Только не забудьте после переименования переписать пути в core/config/config.inc.php
Ну и потестируйте — в некоторых дополнениях assets явно задан (например, в JS-скрипте Shopkeeper).
Пробегитесь поиском по mysql по фразе «modx->mail», может где встречается в плагинах, сниппетах.
И так же по этой фразе по всем файлам.
Далее — самое сложное, нужно логировать отправку писем, т.е. везде дописать лог (факт) отправки писем. (время, тема, тело письма и т.д.).
Лучше начать с тех мест, до которых дотронулись руки не автора компонента (системы).
Правильно понимаю?
Сори заранее за нубский вопрос. Сформулирую как смогу.
Получается, если нам известно из логов, что при отправке спама был задействован модуль «class.phpmailer.php», то в любом случае был использован встроенный почтовик MODXа?
То есть, в любом случае был использован метод modx->mail->send()?
Нет ли каких то обходных вариантов, при которых метод modx->mail->send() не используется, но в конечном итоге задействуется «class.phpmailer.php»?
У вас не вирус, не троян серверный. У вас ошибка разработчика (фрилансера или сотрудника, хз). Что-то упустили, и письма строчатся по кд.
Похоже, что дело вовсе не в зловреде каком-то. А все гораздо прозаичнее.
У нас к сайту почта mail.ru привязана, и есть подозрение, что забанили за большое количество одновременно высылаемых писем-уведомлений от Tickets-a. Такие дела :)
Сейчас жду ответа от саппорта мэйла.
Насколько помню у меня даже запись в лог не пошла. Пробовал как то так:
и так:
Оба варианта вешали страницу с 500-й ошибкой.
Спасибо!
file_put_contents(
dirname($_SERVER['DOCUMENT_ROOT']). '/~phpmailer.log',
json_encode(debug_backtrace()). PHP_EOL,
FILE_APPEND
);
Дело было не во взломе и не в каком-либо зловредном скрипте.
На сайте блог на Tickets. Когда пользователи оставляют комментарий, Tickets отсылает всем подписанным на данный пост уведомления на электронку. Робот хостера посчитал большое количество этих писем-уведомлений за спамную активность и отрубил почтовый сервис. Решилось все после добавления пары доменных записей DKIM и SPF и общения с тех.поддержкой хостера.