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

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

问题

我的一位客户请我检查一下他的共享托管网络服务器是否存在以下问题,但我一直无法找出问题所在。他的服务器被许多主要阻止列表列入黑名单,例如 CBL、Spamhaus 和 Outlook.com 的阻止列表。

我已经尝试过

我首先查看了他的 DirectAdmin 环境中的用户,但没有发现任何用户每天发送超过几封电子邮件。我下载了他的 exim 日志,查看了邮件队列,但没有发现任何异常。我想到的下一件事是findbot.pl从 CBL 运行,但结果只有误报。

我尝试的另一件事是更改 insendmail_pathphp.ini记录通过 sendmail 发送的每封电子邮件。但是,每次我更改 sendmail_path 时,所有 PHP 进程都会开始挂起。我尝试了不同的方法(邮件捕手(我自己的脚本),但每次更改都会使进程挂起。真的很奇怪,但经过几次尝试后,我继续进行下一步。

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

我被困的地方

因此,让它运行几个小时后,我打开了两个日志文件并看到了大量这样的规则:

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)

当我查看日志文件并搜索 lsof 日志文件中提到的 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 和 rejectionlog 时,我找不到 ip,208.93.4.208也找不到 17:44 左右的任何行(根据 ps auxw 日志的时间)。

当我跟踪我自己发送的电子邮件日志文件中的行时,我可以在 exim 的主日志中找到它们,时间恰好与 ps auxw 日志中提到的时间一致。看来,不知何故,垃圾邮件没有记录在 exim 中,或者在发送后立即被删除。

我的问题

  • 如果我知道哪个脚本、程序或用户调用了 PID 并调用了 exim/mail,我想我就能解决我的问题。有人知道吗?
  • 是否有可能是其他服务器(不是我们的)在发送垃圾邮件,例如,伪造我们的 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 不是我们的。

答案1

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

netstat -nptw | grep :25

您可以使用 iptables 记录到端口 25 的出站连接

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

这将产生如下日志记录

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您可以使用它来搜索您的 netstat 输出

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

答案2

您的标头表明邮件未通过 exim。qmail 的“已接收”标头是垃圾邮件发送者捏造的。如果您在此服务器上有 Web 服务器,则很可能存在一些受感染的脚本。如果您正在为其他主机执行 NAT,则问题可能出在其他主机上。否则,您的服务器可能已受感染。

如果你犹豫不决,可以尝试

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

这将记录发送邮件进程的用户 ID。

答案3

我建议检查一下 Web 服务器的安装,您可能会发现许多恶意 PHP。这些 PHP 代码可能是由某人/某个机器人利用您的服务器或其 PHP 文件的一个或多个漏洞到达您的 Web 服务器的。请注意,这些 PHP 代码可能出现在许多地方,并且以多种格式出现:GIF 或 JPEG 图像的注释内、md5 求和、反转等。找到这些 PHP 函数和恶意代码,eval并在您知道它们可能不存在的地方查找它们。

相关内容