如何找出哪个脚本/程序/用户调用exim(并发送垃圾邮件)?

问题

我的一个客户要求我看看他的共享主机的networking服务器,以解决以下问题,但是我一直在发现什么是错的。 他的服务器被许多主要阻止列表(如CBL,Spamhaus和Outlook.com中的阻止列表)列入黑名单。

我已经试过了

我从在他的DirectAdmin环境中查看用户开始,但是我没有发现每天发送超过两封电子邮件的用户。 我下载了他的exim日志,看看邮件队列,但找不到任何不寻常的东西。 接下来我想到的是从CBL运行findbot.pl ,但只是出现了误报。

我尝试的另一件事是改变php.inisendmail_pathlogging每个通过sendmail发送的电子邮件。 但是,每次我更改sendmail_path时,所有PHP进程都开始挂起。 我尝试了不同的方式( MailCatcher ,我自己的脚本),但是每一个改变都使得这个过程成为悬念 。 真的很奇怪,但是在我尝试了几次之后,我转向了下一步。

下一步:安装lsof并创build一个打印lsof -i | grep smtp的输出的bash脚本 lsof -i | grep smtp到日志文件,每秒钟,同时打印每秒另一个日志文件的ps auxw outpot。 这给了我一些有价值的信息,但我还没有跟踪这个问题。

我卡在哪里

所以让它运行几个小时后,我打开了两个日志文件,看到了这个规则的大部分:

lsof – 日志文件

 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME exim 10921 mail 9u IPv4 2260427 0t0 TCP hostname-from-server.com:smtp->208.93.4.208:49711 (ESTABLISHED) exim 10921 mail 10u IPv4 2260427 0t0 TCP hostname-from-server.com:smtp->208.93.4.208:49711 (ESTABLISHED) 

当我查看日志文件并searchlsof日志文件中提到的PID时,我看到以下几行:

ps auxw – 日志文件

 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND mail 1750 0.0 0.0 59032 1320 ? Ss Nov28 0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid root 10909 0.0 0.0 103388 896 pts/2 S+ 17:44 0:00 grep mail mail 1750 0.0 0.0 59032 1320 ? Ss Nov28 0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid root 10917 0.0 0.0 103388 896 pts/2 S+ 17:44 0:00 grep mail mail 1750 0.0 0.0 59032 1320 ? Ss Nov28 0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid mail 10921 0.0 0.0 61112 1792 ? S 17:44 0:00 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid root 10923 0.0 0.0 103388 896 pts/2 S+ 17:44 0:00 grep mail mail 1750 0.0 0.0 59032 1320 ? Ss Nov28 0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid root 10931 0.0 0.0 103388 896 pts/2 S+ 17:44 0:00 grep mail mail 1750 0.0 0.0 59032 1320 ? Ss Nov28 0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid root 10939 0.0 0.0 103388 896 pts/2 S+ 17:44 0:00 grep mail 

问题是:这条线没有什么特别之处,我看不到哪个脚本,用户程序叫做exim。 当我看看exim的mainlog和rejectlog时,我找不到ip 208.93.4.208也不能在17:44左右(按照ps auxw log的时间)find任何一行。

当我遵循自己发送的电子邮件的日志文件中的行时,我可以在ps auxw日志中提到的时间内从exim的mainlog中find它们。 看来,不知何故,垃圾邮件没有loginimport或在发送后立即被删除。

我的问题

  • 我想我可以解决我的问题,如果我知道哪个脚本,程序或用户称为PID和调用exim /邮件。 有没有人有一个想法?
  • 是否有其他服务器,而不是我们的,发送垃圾邮件,例如,欺骗我们的IP地址? 也许这是一个非常愚蠢的问题,但我很好奇,因为它很容易欺骗头。

附加信息

通过Outlook.com的提供商门户,我们设法获得了其中一个电子邮件标题:

 X-HmXmrOriginalRecipient: [email protected] X-Reporter-IP: [IP-from-some-who-flagged-as-spam] X-Message-Guid: a2236172-9474-11e5-9c3a-00215ad6eec8 x-store-info:4r51+eLowCe79NzwdU2kR3P+ctWZsO+J Authentication-Results: hotmail.com; spf=none (sender IP is [OUR-IP-ADDRESS]) [email protected]; dkim=none header.d=blackberrysa.com; x-hmca=none [email protected] X-SID-PRA: [email protected] X-AUTH-Result: NONE X-SID-Result: NONE X-Message-Status: n:n X-Message-Delivery: Vj0xLjE7dXM9MDtsPTA7YT0wO0Q9MjtHRD0yO1NDTD02 X-Message-Info: 11chDOWqoTmjqhOzvWWho/vK8oL2x1FIoEm0Tn+r3D4Vy8IHo2wUnqS07yp2Fxclyw07ONZgeH1xFUrogbJOZz8Pfl5FrUXTGgolDal8+UhiPOrwCAKsLtRr0R42oH/Du2inmiSwuWc/pY9oiWRqLA5If7jw818pUulf3QP7m+wKn2HEVHAg2VBr+OqDk1w/hWWO68tIy1BSoE8QFSPMNXh31MYdKh4mif3jAqDU+0qWqWSAxPdE/A== Received: from [our-hostname] ([our-ip-address) by COL004-MC2F4.hotmail.com with Microsoft SMTPSVC(7.5.7601.23143); Thu, 26 Nov 2015 11:34:05 -0800 Return-path: <[email protected]> Received: (qmail 18660 invoked by uid 61081); 26 Nov 2015 20:52:03 -0000 Date: 26 Nov 2015 20:52:03 -0000 Message-ID: <[email protected]> From: "Meghann Gasparo" <[email protected]> To: "someone-who-received-spam-from-our-server" <[email protected]> Subject: You could strike all your limpid seed right into my love tunnel text me 1.970.572.00.14 Mime-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Mime-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 26 Nov 2015 19:34:06.0061 (UTC) FILETIME=[69C119D0:01D12881] <html><body>Throw some of your hot cum on my face, deep into my door<br> or <a href="http://holidayextravaganza.org/wp-content/themes/">run my humps rubbed</a> once again.<br> <a href="http://holidayextravaganza.org/wp-content/themes/">Watch my profile</a> to receive much more spicy fun or just sms right now 1-970-572-00-73</body></html> --70969AA2-2F73-4465-8DF3-26DC57EA3967-- 

我们不使用qmail作为MTA。 毋庸置疑,但域blackberrysa.com是不是我们的一个。

您可以尝试查看netstat来获取出站连接并过滤端口25

 netstat -nptw | grep :25 

您可以使用iptables将出站连接logging到端口25

 iptables -I OUTPUT -p tcp -m tcp --dport 25 -j LOG --log-prefix 'Outbound SMTP connection' 

这会产生一个类似的日志logging

11月29日18:15:56主机名内核出站连接IN = OUT = eth0 SRC = 192.168.254.16 DST = 192.0.2.1 LEN = 60 TOS = 0x00 PREC = 0x00 TTL = 64 ID = 36829 DF PROTO = TCP SPT = 39355 DPT = 25 WINDOW = 14600 RES = 0x00 SYN URGP = 0

注意SPT=39355你可以用它来search你的netstat输出

 netstat -anp | grep 39355 tcp 0 1 192.168.254.16:39355 192.0.2.1:25 SYN_SENT 13992/someprogram 

您的标题表示邮件没有经过exim。 qmail“收到”头是一个垃圾邮件制造者。 如果你在这个服务器上有一个networking服务器,那么有可能是有一些被攻破的脚本。 如果您正在为其他主机执行NAT,则问题可能在其他主机上。 否则,你可能有一个妥协的服务器。

如果你犹豫不决,试试吧

 iptables -I OUTPUT -m state --state NEW -p tcp --dport 25 -j LOG --log-uid --log-prefix 'New SMTP Outbound' 

这将logging发送邮件的进程的用户标识。

我build议检查一下networking服务器的安装,你可能会发现很多恶意的PHP。 这些PHP代码可能是通过某人/某些机器人滥用您的服务器或其PHP文件的一个或多个漏洞而到达您的networking服务器的。 请注意,这些PHP代码可能在许多地方和格式中find:在GIF或JPEG图像的注释中,md5-summed,倒置等。在知道它们的地方find这些PHP函数和邪恶的eval和grep可能不在那里。