一次對(duì)個(gè)人服務(wù)器入侵事件的調(diào)查
這一切還要從我收到的通知郵件:“Your server is sending spam”說(shuō)起。首先要說(shuō)的是,這臺(tái)服務(wù)器是用來(lái)運(yùn)行之前項(xiàng)目的靜態(tài)網(wǎng)站,并不保存關(guān)鍵信息。由于不經(jīng)常使用,即使有Joomla和WordPress這樣的高危程序,我都懶得忘記定期更新了。這可能就是導(dǎo)致被入侵的原因。
1 通知郵件
經(jīng)過(guò)一夜的狂歡聚會(huì)后,我收到了服務(wù)器提供商OVH的通知郵件,郵件告知我的服務(wù)器成為了垃圾郵件發(fā)送源,其中還提及了一些細(xì)節(jié):
KenaGard是我之前創(chuàng)建的公司,現(xiàn)在已經(jīng)不運(yùn)行了,但是基于Joomla的公司網(wǎng)站www.kenagard.com仍然可以訪問(wèn),并且使用的還是老版本的Joomla!我想問(wèn)題有可能就出在Joomla上。
Joomla的問(wèn)題
我立即進(jìn)入網(wǎng)站目錄查看可疑情況:
最后兩行是我之前執(zhí)行過(guò)的合法操作,之后的操作就不得而知了,我想我的服務(wù)器已經(jīng)變成瑞士奶酪了!
入侵行為可能發(fā)生于2016-02-25、2016-02-29、2016-08-21三個(gè)時(shí)間點(diǎn)的操作。
探究入侵操作
2016-08-21的入侵操作中包含了文件jtemplate.php:

該P(yáng)HP文件是經(jīng)過(guò)加密的代碼,經(jīng)過(guò)UnPHP解密之后可以看到部分信息:

實(shí)際上,上述代碼的功能如下:

Base64和str_rot13為加密混淆函數(shù),起到逃避安全軟件和迷惑分析的作用。assert函數(shù)在這里,它被當(dāng)成一個(gè)提權(quán)命令來(lái)使用,用來(lái)上傳攻擊載荷和其它黑客工具。PHP一句話木馬!
探究入侵深度
在該網(wǎng)站設(shè)置中,只有www-data用戶組才能執(zhí)行php代碼文件。而且,我發(fā)現(xiàn)很難通過(guò)apt方式來(lái)安裝軟件,所以想要更新系統(tǒng)也變成了一件幾乎不可能的事了!現(xiàn)在,好像整個(gè)服務(wù)器已經(jīng)不屬于我的了!另外,我很難發(fā)現(xiàn)攻擊者的提權(quán)操作痕跡,所以,只能通過(guò)日期和ps aux命令來(lái)查看系統(tǒng)異常。
另外,我還發(fā)現(xiàn)了第四條關(guān)于WordPress的異常操作,雖然不能確定攻擊者意圖,但是看上去仍屬于入侵操作。而且網(wǎng)站系統(tǒng)內(nèi)每個(gè)目錄文件夾內(nèi)都有類似文件:logo_img.php, images/mbaig/emkwg.php, dir32.php, .htaccess。
其中某個(gè)文件不僅用來(lái)執(zhí)行遠(yuǎn)程代碼,還向遠(yuǎn)程地址4lmbkpqrklqv.net發(fā)送信息,經(jīng)查詢,域名4lmbkpqrklqv.net歸屬一位烏克蘭人Nikolay Pohomov所有。
2 解決方法
啊,在那分鐘,我真想砸了這臺(tái)機(jī)器!升級(jí)Joomla,升級(jí)WordPress, 格式化,重裝….,天哪,饒了我吧,我哪有這么多時(shí)間。所以我決定采取一些保守的安全解決對(duì)策。
停止向外發(fā)送垃圾郵件
ps aux命令顯示了很多垃圾郵件發(fā)送進(jìn)程,使用以下命令來(lái)終止:
- ps aux|grep -v grep|grep sendmail|awk {print $2} | xargs kill -9
清空郵件發(fā)送隊(duì)列
- rm /var/spool/mqueue/*
禁止CMS系統(tǒng)POST數(shù)據(jù)提交
因?yàn)樵撓到y(tǒng)網(wǎng)站已經(jīng)停止更新了,所以禁止POST方式,能簡(jiǎn)單阻塞攻擊者提交的數(shù)據(jù)。在nginx中簡(jiǎn)單進(jìn)行以下配置:

最后,別忘記服務(wù)重啟命令service nginx reload。
清除攻擊者后門
禁止POST方式不能完全堵塞攻擊者通道,你必須清除攻擊者在系統(tǒng)上留下的相關(guān)黑客工具和文件。
3 其它信息
通過(guò)日志分析,發(fā)現(xiàn)進(jìn)行jtemplate.php操作的IP為烏克蘭IP185.93.187.66,但是,貌似這個(gè)IP沒(méi)有提交過(guò)POST數(shù)據(jù)。

另外,我還發(fā)現(xiàn)一個(gè)可能屬于Amazon的可疑IP的操作:

因此,我決定把目錄/administrator (Joomla!) 和/wp-admin (WordPress)用以下方式做限制訪問(wèn)。最后,別忘記重啟命令service nginx reload

4 總結(jié)
由于我不是專業(yè)的安全人士,對(duì)于這些經(jīng)常不更新的老舊系統(tǒng),我能想到唯一防止黑客攻擊的方法可能就是使用Docker了。
以下是網(wǎng)友對(duì)我這篇博客的一些評(píng)論:
你的服務(wù)器已經(jīng)被入侵了,所以請(qǐng)別用家庭電腦遠(yuǎn)程連接來(lái)處理這類安全事件
在重裝系統(tǒng)過(guò)程中使用默認(rèn)配置
可以使用惡意程序檢測(cè)工具Linux Malware Detects和腳本ctimer.php
在防火墻上開啟僅系統(tǒng)所需的端口