最近有一個(gè)客戶的網(wǎng)站被掛馬了,具體表現(xiàn)如下:
- 通過(guò)Google搜索網(wǎng)站訪問(wèn)的時(shí)候,會(huì)跳轉(zhuǎn)到其他網(wǎng)站;直接通過(guò)網(wǎng)址訪問(wèn)網(wǎng)站的時(shí)候,不會(huì)跳轉(zhuǎn),隱蔽性極強(qiáng)
- 網(wǎng)站根目錄的
index.php和wp-config.php文件被插入@include代碼加載惡意文件 - 網(wǎng)站很多目錄會(huì)多出一些隨機(jī)命名的php文件以及
.ico文件 - 網(wǎng)站主題或插件會(huì)被插入惡意代碼,并且帶有特征碼
Array();global
倡萌在大概2年前就遇到過(guò)這類(lèi)木馬,如果想徹底清理是非常麻煩的,但凡一個(gè)惡意的文件未清理干凈,都可能觸發(fā)再次感染,因?yàn)楣粽邥?huì)不定時(shí)訪問(wèn)他投放的惡意文件(通過(guò)遠(yuǎn)程直接訪問(wèn)或服務(wù)器定時(shí)任務(wù)觸發(fā)),如果這個(gè)惡意文件存在,就會(huì)再次執(zhí)行。
以下分享一下清理該類(lèi)木馬的操作步驟。由于木馬文件很多,靠人工是很難找到所有惡意文件的,所以要求通過(guò)ssh登錄服務(wù)器去執(zhí)行操作命令批量查找,也就是說(shuō),如果你的是一般的虛擬主機(jī),通常沒(méi)有ssh操作權(quán)限,無(wú)法按照本文命令執(zhí)行。
首先,通過(guò)SSH登錄服務(wù)器,具體方法可以參考教程《使用 WinSCP 和 PuTTY 管理 Linux 服務(wù)器》或咨詢你的主機(jī)商。
第1步:刪除所有可疑的 ico 文件
#查找ico格式的文件
find . -name '*.ico'
進(jìn)入到網(wǎng)站所在的根目錄,執(zhí)行上面的命令,就看已查找到所有 ico 格式的文件,這些文件的名稱(chēng)一般是隨機(jī)的,或者帶有點(diǎn)號(hào).開(kāi)頭的,刪除它們!
第2步:檢查包含特征碼 Array();global 的所有文件

#檢查所有php文件是否包含木馬的特征碼 Array();global
find . -type f -name '*.php' | xargs grep -l " *Array();global*"

攻擊者一般會(huì)在主題或插件的某些文件插入上面的惡意代碼,通過(guò)上面的命令可以找到包含這個(gè)特征碼的文件,然后下載它們,并刪除整段惡意代碼。注意不要?jiǎng)h除這些文件,因?yàn)槲募苏9δ艿拇a。
第3步:查找通過(guò) @includes 引入惡意文件的代碼
攻擊者一般會(huì)在網(wǎng)站根目錄的index.php和wp-config.php文件被插入 @include 代碼加載惡意文件,所以我們要先刪除這兩個(gè)文件開(kāi)頭的 @include 部分的代碼。
然后可以通過(guò)下面的命令去查找包含了 @include 的php文件,逐一檢查確認(rèn)是否有問(wèn)題。
#檢查所有php文件是否包含@includes
find . -type f -name '*.php' | xargs grep -l " *@include*"
第4步:查找更多可疑的PHP文件
如果你的網(wǎng)站有訪問(wèn)日志,通過(guò)日志去查找上面找到的包含惡意代碼的php文件,就會(huì)發(fā)現(xiàn)還有很多其他惡意文件,如下圖所示:

通過(guò)分析,發(fā)現(xiàn)這些惡意文件的名稱(chēng)都是8位數(shù)隨機(jī)字母命名的,所以我們可以通過(guò)下面的命令,找到所有8位字母命名的php文件,只要名稱(chēng)不是規(guī)則的英文單詞,就下載下來(lái)檢查,通常都是木馬文件。
#檢索出所有8位字符命名的php文件,隨機(jī)命名的文件極為可疑文件
find . -type f | egrep './[a-z]{8}\.php'

第5步:檢查靜態(tài)文件(images、css、js)等目錄的php文件
通常來(lái)說(shuō),這些靜態(tài)文件所在的目錄是不會(huì)有php文件的,即使有,也可能是一個(gè)空白的或者只有一兩句話的index.php文件。通過(guò)下面的命令,我們可以找到這些目錄中包含的所有php文件。
#檢查靜態(tài)文件所在目錄是否有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字節(jié)的index.php都是正常的,大于100字節(jié)的就可疑了,下載它們進(jìn)行檢查。
第6步:檢查服務(wù)器的定時(shí)任務(wù)
正如前文提到的,有時(shí)候攻擊者會(huì)在服務(wù)器添加定時(shí)任務(wù)來(lái)執(zhí)行惡意文件。我們可以通過(guò)下面的命令查看和修改服務(wù)器的定時(shí)任務(wù):
#查看服務(wù)器定時(shí)計(jì)劃是否有異常
crontab -l
#編輯定時(shí)任務(wù)
crontab -e
第7步:更新WordPress核心、主題和插件
由于我們不知道通過(guò)上面的步驟能否徹徹底底刪除所有惡意文件,所以,建議大家手動(dòng)更新WordPress核心、主題和插件,具體操作方法參考《WordPress入門(mén):手動(dòng)更新WordPress核心、主題和插件》
第8步:修改一切賬號(hào)密碼
我們不清楚攻擊者是否收集了我們的賬號(hào)信息,所以建議修改所有賬號(hào)密碼:
- 主機(jī)商網(wǎng)站登錄密碼
- 服務(wù)器SSH密碼、FTP密碼
- 網(wǎng)站mysql密碼、phpMyAdmin密碼
- 網(wǎng)站管理員密碼等等
第9步:安裝一個(gè)WordPress安全插件
安全無(wú)小事,我們到目前為止,仍然不知道攻擊者利用了什么漏洞進(jìn)行掛馬,所以建議大家安裝一個(gè)WordPress安全防護(hù)插件來(lái)增加一些保護(hù)。具體可以看下《10個(gè)好用的免費(fèi)WordPress安全插件》
有用的工具
- 可以解密惡意代碼的工具:https://malwaredecoder.com/
- 網(wǎng)站安全掃描工具:https://sitecheck.sucuri.net/
總結(jié)
ico木馬潛伏性非常高,徹底清理難度極大,由于操作步驟涉及到一些linux命令,所以對(duì)操作者有一定的難度,而且不適用于沒(méi)有ssh操作權(quán)限的虛擬主機(jī)。
如果需要專(zhuān)業(yè)的幫助,可以聯(lián)系倡萌付費(fèi)處理。




