最近有一个客户的网站被挂马了,具体表现如下:
- 通过Google搜索网站访问的时候,会跳转到其他网站;直接通过网址访问网站的时候,不会跳转,隐蔽性极强
- 网站根目录的
index.php
和wp-config.php
文件被插入@include
代码加载恶意文件 - 网站很多目录会多出一些随机命名的php文件以及
.ico
文件 - 网站主题或插件会被插入恶意代码,并且带有特征码
Array();global
倡萌在大概2年前就遇到过这类木马,如果想彻底清理是非常麻烦的,但凡一个恶意的文件未清理干净,都可能触发再次感染,因为攻击者会不定时访问他投放的恶意文件(通过远程直接访问或服务器定时任务触发),如果这个恶意文件存在,就会再次执行。
以下分享一下清理该类木马的操作步骤。由于木马文件很多,靠人工是很难找到所有恶意文件的,所以要求通过ssh登录服务器去执行操作命令批量查找,也就是说,如果你的是一般的虚拟主机,通常没有ssh操作权限,无法按照本文命令执行。
首先,通过SSH登录服务器,具体方法可以参考教程《使用 WinSCP 和 PuTTY 管理 Linux 服务器》或咨询你的主机商。
第1步:删除所有可疑的 ico 文件
#查找ico格式的文件
find . -name '*.ico'
进入到网站所在的根目录,执行上面的命令,就看已查找到所有 ico 格式的文件,这些文件的名称一般是随机的,或者带有点号.
开头的,删除它们!
第2步:检查包含特征码 Array();global
的所有文件
#检查所有php文件是否包含木马的特征码 Array();global
find . -type f -name '*.php' | xargs grep -l " *Array();global*"
攻击者一般会在主题或插件的某些文件插入上面的恶意代码,通过上面的命令可以找到包含这个特征码的文件,然后下载它们,并删除整段恶意代码。注意不要删除这些文件,因为文件包含了正常功能的代码。
第3步:查找通过 @includes
引入恶意文件的代码
攻击者一般会在网站根目录的index.php
和wp-config.php
文件被插入 @include
代码加载恶意文件,所以我们要先删除这两个文件开头的 @include
部分的代码。
然后可以通过下面的命令去查找包含了 @include
的php文件,逐一检查确认是否有问题。
#检查所有php文件是否包含@includes
find . -type f -name '*.php' | xargs grep -l " *@include*"
第4步:查找更多可疑的PHP文件
如果你的网站有访问日志,通过日志去查找上面找到的包含恶意代码的php文件,就会发现还有很多其他恶意文件,如下图所示:
通过分析,发现这些恶意文件的名称都是8位数随机字母命名的,所以我们可以通过下面的命令,找到所有8位字母命名的php文件,只要名称不是规则的英文单词,就下载下来检查,通常都是木马文件。
#检索出所有8位字符命名的php文件,随机命名的文件极为可疑文件
find . -type f | egrep './[a-z]{8}\.php'
第5步:检查静态文件(images、css、js)等目录的php文件
通常来说,这些静态文件所在的目录是不会有php文件的,即使有,也可能是一个空白的或者只有一两句话的index.php文件。通过下面的命令,我们可以找到这些目录中包含的所有php文件。
#检查静态文件所在目录是否有php文件,查看文件大小判断是否可疑
find . -name '*.php' -exec ls -l {} \; | grep "uploads"
find . -name '*.php' -exec ls -l {} \; | grep "images"
find . -name '*.php' -exec ls -l {} \; | grep "css"
find . -name '*.php' -exec ls -l {} \; | grep "js"
find . -name '*.php' -exec ls -l {} \; | grep "assets"
find . -name '*.php' -exec ls -l {} \; | grep "javascript"
然后看下文件的大小,通常小于100字节的index.php都是正常的,大于100字节的就可疑了,下载它们进行检查。
第6步:检查服务器的定时任务
正如前文提到的,有时候攻击者会在服务器添加定时任务来执行恶意文件。我们可以通过下面的命令查看和修改服务器的定时任务:
#查看服务器定时计划是否有异常
crontab -l
#编辑定时任务
crontab -e
第7步:更新WordPress核心、主题和插件
由于我们不知道通过上面的步骤能否彻彻底底删除所有恶意文件,所以,建议大家手动更新WordPress核心、主题和插件,具体操作方法参考《WordPress入门:手动更新WordPress核心、主题和插件》
第8步:修改一切账号密码
我们不清楚攻击者是否收集了我们的账号信息,所以建议修改所有账号密码:
- 主机商网站登录密码
- 服务器SSH密码、FTP密码
- 网站mysql密码、phpMyAdmin密码
- 网站管理员密码等等
第9步:安装一个WordPress安全插件
安全无小事,我们到目前为止,仍然不知道攻击者利用了什么漏洞进行挂马,所以建议大家安装一个WordPress安全防护插件来增加一些保护。具体可以看下《10个好用的免费WordPress安全插件》
有用的工具
- 可以解密恶意代码的工具:https://malwaredecoder.com/
- 网站安全扫描工具:https://sitecheck.sucuri.net/
总结
ico木马潜伏性非常高,彻底清理难度极大,由于操作步骤涉及到一些linux命令,所以对操作者有一定的难度,而且不适用于没有ssh操作权限的虚拟主机。
如果需要专业的帮助,可以联系倡萌付费处理。