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

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

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

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

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

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

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

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