最近博客中了木马病毒,花了很大精力才把病毒清除。本文记录了此次感染后清除病毒的过程,以备忘。
博客网站使用的是wordpress系统。
时间回到一个月之前。我的博客设置了版本自动升级,某次自动升级后,发现某些页面显示不正常,究其原因是博客主题不兼容,于是我决定做些优化。优化完毕后,使用SFTP上传到服务时,意外发现某些目录多了些奇怪的文件。经审视,发现是木马病毒。
怎样感染病毒的呢?大概率是插件或主题的漏洞吧。
PHP 作为一种服务器端脚本语言,常常成为恶意攻击的目标。以下是一些常见的 PHP 木马病毒类型:
- 文件包含漏洞利用: 攻击者可能通过利用 PHP 应用程序中的文件包含漏洞,将恶意代码包含到网页中。
- eval() 函数滥用: 恶意用户可能尝试通过在代码中使用 eval() 函数执行任意 PHP 代码,从而实现对系统的控制。
- 后门脚本: 攻击者可能在受感染的服务器上放置后门脚本,以便后续访问和控制。
- 基于 WebShell 的攻击: WebShell 是一种通过浏览器远程控制服务器的工具,攻击者可能尝试通过注入 WebShell 来获取对服务器的控制权。
- 数据库注入: 如果应用程序对数据库的输入验证不足,攻击者可能通过 SQL 注入将恶意代码插入数据库,进而执行任意 PHP 代码。
- 跨站脚本(XSS): 虽然不是直接攻击 PHP 代码,但通过 XSS 攻击,攻击者可以注入恶意脚本并执行客户端的恶意操作。
- 恶意上传: 如果网站允许用户上传文件而没有足够的验证,攻击者可能上传包含恶意 PHP 代码的文件。
- 植入恶意函数: 攻击者可能尝试在现有的 PHP 函数中植入恶意代码,以执行恶意操作。
感染病毒后需要审视整个系统。初步审视后,发现了一些问题:
- 在Wordpress目录中凭空多了一些莫名奇妙的目录和文件(如图1)。也有些病毒文件的文件名看起来像Wordpress系统的文件名,如options.php、rss.php等,文件内容大多采用了混淆或转码方式,刻意隐藏代码意图(如图2)。
- 在原有系统的文件(如index.php)中注入病毒代码(如图3)用以运行恶意代码。
- 运行恶意代码的文件(图3中恶意代码所指向的文件)权限为200,即只有所有者有权限写入。
接下来就得清除病毒。
首先,停掉网站,避免在清除病毒的过程中继续感染。
接着,清除以上显而易见的问题。
针对权限为 200 的文件,很容易解决。可以把服务器上所有的文件下载到本地,因为而权限为200的文件一定会下载失败,因此很容易筛选出来。
针对恶意代码的文件,初步归纳出:如果文件内容中包含 \x 、chr 等方法,那么它的病毒嫌疑很大,全文搜索之后,逐一排查,能筛选出部分文件。但这只能解决部分问题。
此时需要借助工具了。PHP 病毒检查工具主要用于检测服务器或网站上的 PHP 文件是否感染了病毒或恶意代码。以下是一些常见的 PHP 病毒检查工具:
- Linux Malware Detect (LMD): LMD 是一款用于检测 Linux 服务器上的恶意软件和病毒的工具。它可以扫描文件系统,并提供详细的报告。
- ClamAV: ClamAV 是一款开源的反病毒引擎,可以用于检测各种恶意软件,包括 PHP 文件中的病毒。它可以与其他工具集成,实现实时扫描。
- maldet (Linux Malware Detect): maldet 是基于 ClamAV 的 Linux 恶意软件检测工具,专门设计用于检测 PHP 文件中的恶意代码。
- PHP Malware Finder (php-malware-finder): 这是一款专门用于扫描 PHP 文件中的恶意代码的工具。它可以检测常见的恶意代码模式和签名。
- Sucuri SiteCheck: Sucuri 提供了一个在线工具,可以检查网站是否感染了病毒、恶意软件或其他安全问题。它可以扫描 PHP 文件以及其他文件类型。
- Quttera Web Malware Scanner: 这是一款在线工具,可以扫描网站以检测潜在的恶意代码。它支持 PHP 文件的检测。
- VirusTotal: 虽然 VirusTotal 主要是一个多引擎在线病毒扫描服务,但它也可以用于扫描单个 PHP 文件。用户可以上传文件并查看多个反病毒引擎的检测结果。
我使用了2个工具php-malware-finder和ClamAV进行交叉使用。先使用php-malware-finder,按照readme文件在linux虚拟机中安装,运行,搜出全部有病毒嫌疑的文件(如图4)。
这些列表文件中,虽然大部分属于误报,不过还好在列表并不是很长,逐一审视所有文件不会耗费太多精力。
然后,再安装ClamAV,进一步扫描,系统提示没有病毒(如图5)。
两个工具都检测没有问题,基本可以认定系统文件的病毒清除完毕。
但病毒感染可能不仅仅是文件,还可能涉及数据库。我把数据库中的内容导出来,再逐一审视。幸好,数据库中的数据没有被污染。
除此之外,不能排除账号密码已经泄露的可能性。为了以防万一,我修改了SFTP密码和MySQL数据库的连接密码,并修改了登录账号密码。
整个系统的病毒清除完毕,恢复网站。
恢复之后,升级wordpress系统中所有已经启用的插件,删除不需要的插件,同时还删除了所有不使用的主题,尽量降低因系统漏洞而造成病毒感染的风险。
接下来跟踪了2周,没发现网站被重新感染的现象。
参考资料:windows 下安装clamav 免费杀毒软件教程
请你留言