0x01 前言
有朋友問我,網(wǎng)站莫名其妙被黑、頁面被篡改、數(shù)據(jù)被刪,怎么處理比較好,問我這樣的問題也是比較多的了,怎么辦?如果處理不好,掛馬文件仍然存在,即再次被黑的概率很高,不同的攻擊手法也會隨著時代技術(shù)的進(jìn)步而隨之出現(xiàn),處理的方案會變得多樣而復(fù)雜。工作之余,聊一聊這個話題,我對應(yīng)急響應(yīng)的一些實戰(zhàn)經(jīng)驗,把這塊知識做了一個梳理,希望對各位同學(xué)會有所幫助,歡迎糾正,大佬勿噴。

0x02 網(wǎng)站為什么會被莫名其妙被黑?
我們可以參考以下圖,一般黑客攻擊網(wǎng)站會從以下幾個步驟進(jìn)行。

多數(shù)情況下黑客拿到網(wǎng)站的控制權(quán)后,都會放置一個webshell(也就是后門程序),來達(dá)到長期控制網(wǎng)站服務(wù)器的目的,為了出現(xiàn)不可預(yù)知的事件,一定要定期對服務(wù)器內(nèi)所有數(shù)據(jù)備份。
webshell就是一個web后門,但是它的功能非常強(qiáng)大,可以獲得一些管理員不希望你獲得的權(quán)限,比如執(zhí)行系統(tǒng)命令、刪除web頁面、修改主頁等,下圖就是部分webshell樣本代碼。

下圖這些網(wǎng)站頁面就已經(jīng)被webshell篡改了,流量被劫持,已經(jīng)淪陷了。

0x03 網(wǎng)站入侵后排查思路
3.1、清除網(wǎng)站的webshell、后門
網(wǎng)站頁面被篡改、數(shù)據(jù)庫被脫庫、文件被刪、等等安全事件一但被觸發(fā),黑客就可能在站點的各個目錄上傳多種大大小小的webshell木馬文件,為防止事態(tài)擴(kuò)大,我們第一步是關(guān)閉網(wǎng)站對外的各種訪問(如不影響重要業(yè)務(wù)),再找到webshell、后門,在第一時間把后門清除掉。
可以對網(wǎng)站內(nèi)所有文件、日志、可疑文件全部打包起來,用工具結(jié)合人工全面分析、查殺。
3.1.1 使用工具查殺
這里推薦以下四款工具,同學(xué)行可以把工具綜合起來,一起對文件進(jìn)行掃描查殺。


- 深信服webshell查殺:http://edr.sangfor.com.cn/backdoor_detection.html

- 百度webshell查殺:https://scanner.baidu.com/#/pages/intro

3.1.2 人為分析
就目前而言,工具不可能實現(xiàn)100%無遺漏查殺,所有的查殺工具都可能存在漏報或者誤報,所以就一定需要人為對網(wǎng)站內(nèi)的可疑文件進(jìn)行上機(jī)動態(tài)調(diào)試分析。
webshell常見的特征:
- 存在系統(tǒng)調(diào)用的命令執(zhí)行函數(shù),如eval、system、cmd_shell、assert等
- 存在系統(tǒng)調(diào)用的文件操作函數(shù),如fopen、fwrite、readdir等
- 存在數(shù)據(jù)庫操作函數(shù),調(diào)用系統(tǒng)自身的存儲過程來連接數(shù)據(jù)庫操作
- 具備很深的自身隱藏性、可偽裝性,可長期潛伏到web源碼中
- webshell可能衍生變種多,可能會自定義加解密函數(shù)、利用xor、字符串反轉(zhuǎn)、壓縮、截斷重組等方法來繞過檢測
我們也就可以對著這些特征做檢查,人為定位webshell,技術(shù)一直在創(chuàng)新,也可以針對性的去寫規(guī)則、正則、打標(biāo)簽、建模、語義分析法、利用前沿技術(shù)機(jī)器學(xué)習(xí)來識別webshell。
在這里推薦幾篇文章同學(xué)們可以參考一下:
- https://blog.csdn.net/liushu_it/article/details/49990861 基于行為分析來發(fā)現(xiàn)"未知的Webshell"
- http://www.onescorpion.com/research/webshelllun.html 基于深度學(xué)習(xí)和半監(jiān)督學(xué)習(xí)的webshell檢測方法
- https://www.freebuf.com/articles/web/183520.html Webshell入侵檢測初探
0x04 分析此次被入侵的原因
在確認(rèn)webshell、木馬被清除完了之后,我們要做的就是分析此次被入侵的原因,只有把入侵的原因找到,才可能保證下一次不會被同樣的方式入侵。
4.1 分析網(wǎng)站日志(nginx、apche、數(shù)據(jù)庫、容器、中間件 、等產(chǎn)生的日志),如圖:

分析webshell第一次產(chǎn)生的原因,是哪個請求,對應(yīng)又是哪個模塊下面的頁面,步步跟進(jìn),直到找到源頭為此。
但是有時候日志動不動就有幾個G以上,小編推薦使用Splunk日志分析系統(tǒng)對日志進(jìn)行分析,splunk可以用來分析web日志、數(shù)據(jù)庫日志、系統(tǒng)日志、程序日志、錯誤日志、中間件日志,可以快速幫助我們定位到源頭。

4.2 分析網(wǎng)站使用的套件、框架、CMS、組件版本 是否有公開漏洞但未修復(fù)的。
比如最近流行的Thinkphp注入漏洞、織夢cms注入漏洞、phpmyadmin包含漏洞、編輯器上傳漏洞、Struts2命令執(zhí)行、等等漏洞,結(jié)合自己的網(wǎng)站進(jìn)行綜合分析可能存在的問題。
比如:網(wǎng)站是一個商城系統(tǒng),就查看一下自己的網(wǎng)站是不是基于開源的Thinkphp框架寫的,或者是不是基于Ecshop二次開發(fā)的,針對性去尋找最新安全漏洞,這里推薦幾個漏洞查詢平臺,可以快速查詢最新漏洞情況:

4.3 查看WAF、入侵檢測日志
如果網(wǎng)站部署了第三方的Waf、Agent、入侵檢測、安全狗、云鎖、等等相關(guān)安全防護(hù)設(shè)備,被入侵時會可能會引起報警、可以查看相關(guān)記錄來結(jié)合分析,如圖:

0x05 查看黑客在我機(jī)器上都干了些什么
黑客在我們服務(wù)器上做過什么東西、執(zhí)行過什么命令、創(chuàng)建過什么文件、添加過什么賬號,如果系統(tǒng)安裝了堡壘機(jī),設(shè)置了相關(guān)規(guī)則,一般會自動監(jiān)控起來,當(dāng)執(zhí)行一些危險操作,如添加賬戶、寫文件、添加注冊表、添加服務(wù)器等操作,都會引起異常報警。
如果沒有安裝相關(guān)安全軟件,操作系統(tǒng)本身也都會勤勤懇懇的幫我們記錄這些操作進(jìn)行存檔,那我們需要查看系統(tǒng)中哪些記錄呢,在下面我做了一些梳理,Linux和windows的操作系統(tǒng)是完全不一樣的,所以小編在這里做一下區(qū)分。
5.1 Linux系統(tǒng)


推薦以下兩篇Linux應(yīng)急響應(yīng)文章給同學(xué)們哈,我覺得還不錯:
5.2 Windows系統(tǒng)
查看Windows安全事件日志,其中詳細(xì)記錄了是誰在什么時候通過什么手段登錄到系統(tǒng)或者注銷了登錄,通過分析該日志可以詳細(xì)了解服務(wù)器的安全情況以及黑客都做過什么。
在“事件查看器”窗口,展開Windows日志,選擇“安全”,登錄日志就顯示出來了,如圖:

但日志一條一條的看完,非常不方便,不利于我們進(jìn)行我們進(jìn)行分析。推薦使用:LogonTracer工具配合分析,可以詳細(xì)的查看黑客在我們計算機(jī)中操作過什么。
LogonTracer:是一款用于可視化分析Windows安全事件日志尋找惡意登錄的工具。它會將登錄相關(guān)事件中找到的主機(jī)名(或IP地址)和帳戶名稱關(guān)聯(lián)起來,并將其以圖形化的方式展現(xiàn)出來。

推薦一篇關(guān)于LogonTracer工具的介紹:https://anquan.baidu.com/article/409
0x06 網(wǎng)站漏洞修復(fù)
針對性修復(fù)漏洞
問題原因找到了,后門查殺了,那我們就要針對性的漏洞修復(fù),每個平臺的系統(tǒng)可能不一樣,那修復(fù)方式也是不一樣的,請根據(jù)實際情況修復(fù)漏洞,可以參考官方網(wǎng)站。
舉個例子,比如:
基于Thinkphp框架任意代碼執(zhí)行漏洞的修復(fù)演示 :
使用編輯器打開\thinkphp\library\think\Request.php,找到第525、526行代碼:
$this->method = strtoupper($_POST[Config::get('var_method')]);
$this->{$this->method}($_POST);
將其修改為如下代碼:
$method = strtoupper($_POST[Config::get('var_method')]);
if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) {
$this->method = $method;
$this->{$this->method}($_POST);
}
0x07 服務(wù)器加固
除了必備常用的安全軟件、waf、idc、之外,還要對各端口、賬號權(quán)限、文件、流量傳輸、后臺、密碼校驗、做好完整的安全體系。
同學(xué)們可以參考如下文章:
- https://www.jb51.net/article/69567.htm Windows server 服務(wù)器系統(tǒng)安全防御加固方法
- [https://blog.csdn.net/qq_33168577/article/details/79585116 Linux服務(wù)器加固方案](https://blog.csdn.net/qq_33168577/article/details/79585116 Linux服務(wù)器加固方案)
- https://www.kancloud.cn/mkchristina/phpsafe/106504 PHP配置文件 · LANP/LAMP環(huán)境安全規(guī)范
- https://www.freebuf.com/column/162119.html 服務(wù)器被黑,安全事故排查和處置的方法
- https://www.freebuf.com/articles/system/147985.html Linux主機(jī)加固丨 防御者如何加強(qiáng)主機(jī)權(quán)限控制