PHP服务器被黑客入侵后的应急处理与取证方法详解
你的 PHP 服务器如果被黑客入侵该怎么办呢?这是我最近在处理 Linux Web 服务器的过程中所发现的一个问题。

PHP 服务器被黑时会出现新的 PHP 文件,这与服务器上运行的 wordpress 应用程序无关,也与特定的用户代理无关,所有流量都被重定向到另一个站点。
第一次被攻击之后,我禁用了他所检测到的所有恶意文件。同时,我修复了重定向。一直到服务器再次被黑客攻击。
为此,需把这些应用程序转移到新的设备来进行分析,并且我得在原系统上对以下 3 个线索进行取证:
需要说明的是,我的目的并非是构建一个合法且有效的保护机制,而是要明确以下几点:
我获得了域名、IP 和 SSH 证书之后,便开始收集被黑的证据。
收集证据
我注意到了我的 IP ,在连接到服务器之前 ,这样以后就能在日志中把它区分开了 。
然后我进行了 SFTP 连接。因为服务器的磁盘在安装和运行过程中,我无法进行映像操作。所以我下载了所有能够获取到的日志文件以及其他我感兴趣的文件。
我复制了整个 /var/log/ 这个目录。我还从虚拟主机根文档所在的目录里复制了 Apache 特定的日志文件。同时我也复制了被黑的 PHP 应用程序。并且复制了在事件发生后没多久的一些备份。
很不幸,我没有备份管理员所做的更改。所以,一些关键的文件或许已经被修改了。
我启动了 Kali 系统。接着,我运行了一个名为 Nmap 的程序,这个程序带有 portscan 端口扫描器。同时,我还安装了 WPScan。
服务器运行着一个旧的 Wordpress 实例,此实例还执行了重定向,基于此,Wordpress 很可能是攻击的初始点。
Wordpress 在遭受黑客攻击之后进行了更新。WPScan 并未检测到任何当下存在的漏洞。portscan 为 FTP、SSH、HTTP 以及 HTTPS 提供了开放端口,然而在 Web 服务器上这种情况是不可能出现的。
我在 wp-content 目录下找到了所有的 Shell。这在一定程度上表明 Wordpress 应用程序已遭破坏。
一切看起来都很正常。
我决定通过控制台登录系统。不过我之前不知道服务器上的二进制文件是否被感染。所以为了减少取证的影响,我带来了自己的静态链接二进制文件。
我下载了来自 busybox 的二进制 coreutil,然后把它们上传到了服务器上。同时,我也通过 SLEUTH Kit 上传了 chkrootkit 以及一个名为 mac-robber 的工具。
我借助静态二进制文件对系统进行检查,从而获得了一个运行流程的列表,其中包含 cronjob……
netstat -tulpen
为了获取一个包含 tcp 和 udp 的监控列表进程,我并未涵盖 portscan 里的所有端口,所以此处的输出或许会很有趣。
netstat -taupn
服务器显示出活动的传出连接,包括 tcp 和 udp。然而,这两个连接清单都未显示出可疑的活动。
对 chkrootkit 进行 rootkit 检测,未找到任何东西。rkhunter 未产生异常,clamav 也未产生异常。ClamAV(Linux 杀毒软件)未检测到 PHP Shell 和 Windows 木马程序。
我很努力,但是到现在为止,没有发现有端口异常打开,也没有发现有异常的进程在运行。接着,我和一位管理员核实了 FTP 和 ssh 帐号,经核实,这些账号看起来是正常的。
我没有放弃。使用 mac-robber 工具后,我收集了在服务器上创建和修改的文件信息,这些信息稍后可以用来创建事件的时间轴。
./mac-robber 执行后,输出的内容被重定向到了 /root/forensics/timeline.txt 这个文件中。
截至目前,我收集的证据包括:
分析证据
已经发现了攻击者放置的一些 Web Shell,经过分析后,我认为这些文件很像 Xjrop.php 等,并且很可能驻留在常规应用程序文件中。
然而,存在一个被调用的 up.php 文件,它有着相似的目的,同时还有其他的源代码。Xjrop.php、Nwfqx.php 和 Rwchn7.php 是相同的,而 up.php 是另一种具有稍微不同功能的 Shell。通过使用 diff 命令,对文件进行比较:
diff Xjrop.php Nwfqx.php
或者通过他们的 md5sum 进行比较:
md5sum Xjrop.php
md5sum Nwfqx.php
有 2 个文件,分别是 bjrnpf.php 和 jemkwl.php。它们是相同的,与其他文件不一样。一个被命名为 windoze 的可疑可执行文件,我怀疑是一些恶意软件从这个主机分发出去的。
我构建了这个文件的 md5sum ,同时也检查了 VirusTotal 的哈希值。需要注意的是,在 VirusTotal 上上传的文件是可以被其他研究人员看到的,所以它是公开的。VirusTotal 认定这个文件为木马,为了便于后续的分析,我将其保存了下来。
一些 PHP Shell 的代码,如下所示: