如何检测哪个 PHP 脚本正在发送垃圾邮件

如何检测哪个 PHP 脚本正在发送垃圾邮件

一个 php 脚本正在发送大量电子邮件。我想检测来源是什么。所有电子邮件都是通过使用 apache 用户使用的 www-data 发送的。当我检查进程时,我得到了以下结果:

www-data 16220  0.7  4.7 402508 95924 ?        S    09:37   0:06 /usr/sbin/apache2 -k start
www-data 16352  0.4  3.8 402132 78064 ?        S    09:39   0:03 /usr/sbin/apache2 -k start
www-data 16725  0.6  3.8 402472 78624 ?        S    09:46   0:02     /usr/sbin/apache2 -k start
www-data 16840  0.8  4.2 410744 87204 ?        S    09:48   0:01 /usr/sbin/apache2 -k start
www-data 16949  1.0  4.5 417560 93436 ?        S    09:49   0:01 /usr/sbin/apache2 -k start
www-data 16958  1.0  3.5 402120 72748 ?        S    09:50   0:01 /usr/sbin/apache2 -k start
www-data 16978  1.2  4.6 425160 94864 ?        S    09:51   0:00 /usr/sbin/apache2 -k start
www-data 16980  0.8  3.5 402140 72208 ?        S    09:51   0:00 /usr/sbin/apache2 -k start
www-data 16983  0.4  2.6 402160 54400 ?        S    09:51   0:00 /usr/sbin/apache2 -k start

Apache 正在使用许多进程,我不知道发送邮件的脚本是什么。

有没有办法做到这一点?

答案1

您可能能够执行 strace 将所有正在运行的 Apache 进程转储到一个文件中,然后一旦垃圾邮件发出去,看看您是否可以追踪到正在发生的事情(例如,如果通过查看文件路径从 strace 中看不出来,则可以使用 mod_status 保存服务器状态的频繁转储)。

您可以尝试以下类似操作 - 但请注意,这可能会耗费大量资源。-s根据需要调整参数。

pidlist=''; \
for pid in `ps ax | grep apache2 |grep /usr/sbin/apache2 | awk '{print $1}'`;\
    do pidlist="$pidlist -p $pid"; \
done; \
strace -s 1024 -tt -F -f $pidlist  > strace_apache2.out 2>&1

相关内容