0x01 前言
有朋友問(wèn)我,網(wǎng)站莫名其妙被黑亥至、頁(yè)面被篡改悼沈、數(shù)據(jù)被刪贱迟,怎么處理比較好,問(wèn)我這樣的問(wèn)題也是比較多的了絮供,怎么辦照棋?如果處理不好期虾,掛馬文件仍然存在,即再次被黑的概率很高,不同的攻擊手法也會(huì)隨著時(shí)代技術(shù)的進(jìn)步而隨之出現(xiàn)拱绑,處理的方案會(huì)變得多樣而復(fù)雜哲鸳。工作之余霜幼,聊一聊這個(gè)話題瘾婿,我對(duì)應(yīng)急響應(yīng)的一些實(shí)戰(zhàn)經(jīng)驗(yàn),把這塊知識(shí)做了一個(gè)梳理向拆,希望對(duì)各位同學(xué)會(huì)有所幫助亚茬,歡迎糾正,大佬勿噴浓恳。
0x02 網(wǎng)站為什么會(huì)被莫名其妙被黑刹缝?
我們可以參考以下圖,一般黑客攻擊網(wǎng)站會(huì)從以下幾個(gè)步驟進(jìn)行颈将。
多數(shù)情況下黑客拿到網(wǎng)站的控制權(quán)后梢夯,都會(huì)放置一個(gè)webshell(也就是后門(mén)程序),來(lái)達(dá)到長(zhǎng)期控制網(wǎng)站服務(wù)器的目的晴圾,為了出現(xiàn)不可預(yù)知的事件颂砸,一定要定期對(duì)服務(wù)器內(nèi)所有數(shù)據(jù)備份。
webshell就是一個(gè)web后門(mén)疑务,但是它的功能非常強(qiáng)大,可以獲得一些管理員不希望你獲得的權(quán)限梗醇,比如執(zhí)行系統(tǒng)命令知允、刪除web頁(yè)面、修改主頁(yè)等,下圖就是部分webshell樣本代碼叙谨。
下圖這些網(wǎng)站頁(yè)面就已經(jīng)被webshell篡改了温鸽,流量被劫持,已經(jīng)淪陷了手负。
0x03 網(wǎng)站入侵后排查思路
3.1涤垫、清除網(wǎng)站的webshell、后門(mén)
網(wǎng)站頁(yè)面被篡改竟终、數(shù)據(jù)庫(kù)被脫庫(kù)蝠猬、文件被刪、等等安全事件一但被觸發(fā)统捶,黑客就可能在站點(diǎn)的各個(gè)目錄上傳多種大大小小的webshell木馬文件榆芦,為防止事態(tài)擴(kuò)大柄粹,我們第一步是關(guān)閉網(wǎng)站對(duì)外的各種訪問(wèn)(如不影響重要業(yè)務(wù)),再找到webshell匆绣、后門(mén)驻右,在第一時(shí)間把后門(mén)清除掉。
可以對(duì)網(wǎng)站內(nèi)所有文件崎淳、日志堪夭、可疑文件全部打包起來(lái),用工具結(jié)合人工全面分析拣凹、查殺森爽。
3.1.1 使用工具查殺
這里推薦以下四款工具,同學(xué)行可以把工具綜合起來(lái)咐鹤,一起對(duì)文件進(jìn)行掃描查殺拗秘。
- 深信服webshell查殺:http://edr.sangfor.com.cn/backdoor_detection.html
- 百度webshell查殺:https://scanner.baidu.com/#/pages/intro
3.1.2 人為分析
就目前而言,工具不可能實(shí)現(xiàn)100%無(wú)遺漏查殺祈惶,所有的查殺工具都可能存在漏報(bào)或者誤報(bào)雕旨,所以就一定需要人為對(duì)網(wǎng)站內(nèi)的可疑文件進(jìn)行上機(jī)動(dòng)態(tài)調(diào)試分析。
webshell常見(jiàn)的特征:
- 存在系統(tǒng)調(diào)用的命令執(zhí)行函數(shù)捧请,如eval凡涩、system、cmd_shell疹蛉、assert等
- 存在系統(tǒng)調(diào)用的文件操作函數(shù)活箕,如fopen、fwrite可款、readdir等
- 存在數(shù)據(jù)庫(kù)操作函數(shù)育韩,調(diào)用系統(tǒng)自身的存儲(chǔ)過(guò)程來(lái)連接數(shù)據(jù)庫(kù)操作
- 具備很深的自身隱藏性、可偽裝性闺鲸,可長(zhǎng)期潛伏到web源碼中
- webshell可能衍生變種多筋讨,可能會(huì)自定義加解密函數(shù)、利用xor摸恍、字符串反轉(zhuǎn)悉罕、壓縮、截?cái)嘀亟M等方法來(lái)繞過(guò)檢測(cè)
我們也就可以對(duì)著這些特征做檢查立镶,人為定位webshell壁袄,技術(shù)一直在創(chuàng)新,也可以針對(duì)性的去寫(xiě)規(guī)則媚媒、正則嗜逻、打標(biāo)簽、建模缭召、語(yǔ)義分析法变泄、利用前沿技術(shù)機(jī)器學(xué)習(xí)來(lái)識(shí)別webshell令哟。
在這里推薦幾篇文章同學(xué)們可以參考一下:
- https://blog.csdn.net/liushu_it/article/details/49990861 基于行為分析來(lái)發(fā)現(xiàn)"未知的Webshell"
- http://www.onescorpion.com/research/webshelllun.html 基于深度學(xué)習(xí)和半監(jiān)督學(xué)習(xí)的webshell檢測(cè)方法
- https://www.freebuf.com/articles/web/183520.html Webshell入侵檢測(cè)初探
0x04 分析此次被入侵的原因
在確認(rèn)webshell、木馬被清除完了之后妨蛹,我們要做的就是分析此次被入侵的原因屏富,只有把入侵的原因找到,才可能保證下一次不會(huì)被同樣的方式入侵蛙卤。
4.1 分析網(wǎng)站日志(nginx狠半、apche、數(shù)據(jù)庫(kù)颤难、容器神年、中間件 、等產(chǎn)生的日志)行嗤,如圖:
分析webshell第一次產(chǎn)生的原因已日,是哪個(gè)請(qǐng)求,對(duì)應(yīng)又是哪個(gè)模塊下面的頁(yè)面栅屏,步步跟進(jìn)飘千,直到找到源頭為此。
但是有時(shí)候日志動(dòng)不動(dòng)就有幾個(gè)G以上栈雳,小編推薦使用Splunk日志分析系統(tǒng)對(duì)日志進(jìn)行分析护奈,splunk可以用來(lái)分析web日志、數(shù)據(jù)庫(kù)日志哥纫、系統(tǒng)日志霉旗、程序日志、錯(cuò)誤日志蛀骇、中間件日志厌秒,可以快速幫助我們定位到源頭。
4.2 分析網(wǎng)站使用的套件擅憔、框架鸵闪、CMS、組件版本 是否有公開(kāi)漏洞但未修復(fù)的雕欺。
比如最近流行的Thinkphp注入漏洞岛马、織夢(mèng)cms注入漏洞棉姐、phpmyadmin包含漏洞屠列、編輯器上傳漏洞、Struts2命令執(zhí)行伞矩、等等漏洞笛洛,結(jié)合自己的網(wǎng)站進(jìn)行綜合分析可能存在的問(wèn)題。
比如:網(wǎng)站是一個(gè)商城系統(tǒng)乃坤,就查看一下自己的網(wǎng)站是不是基于開(kāi)源的Thinkphp框架寫(xiě)的苛让,或者是不是基于Ecshop二次開(kāi)發(fā)的沟蔑,針對(duì)性去尋找最新安全漏洞,這里推薦幾個(gè)漏洞查詢(xún)平臺(tái)狱杰,可以快速查詢(xún)最新漏洞情況:
4.3 查看WAF瘦材、入侵檢測(cè)日志
如果網(wǎng)站部署了第三方的Waf、Agent仿畸、入侵檢測(cè)食棕、安全狗、云鎖错沽、等等相關(guān)安全防護(hù)設(shè)備簿晓,被入侵時(shí)會(huì)可能會(huì)引起報(bào)警、可以查看相關(guān)記錄來(lái)結(jié)合分析千埃,如圖:
0x05 查看黑客在我機(jī)器上都干了些什么
黑客在我們服務(wù)器上做過(guò)什么東西憔儿、執(zhí)行過(guò)什么命令、創(chuàng)建過(guò)什么文件放可、添加過(guò)什么賬號(hào)谒臼,如果系統(tǒng)安裝了堡壘機(jī),設(shè)置了相關(guān)規(guī)則吴侦,一般會(huì)自動(dòng)監(jiān)控起來(lái)屋休,當(dāng)執(zhí)行一些危險(xiǎn)操作,如添加賬戶(hù)备韧、寫(xiě)文件劫樟、添加注冊(cè)表、添加服務(wù)器等操作织堂,都會(huì)引起異常報(bào)警叠艳。
如果沒(méi)有安裝相關(guān)安全軟件,操作系統(tǒng)本身也都會(huì)勤勤懇懇的幫我們記錄這些操作進(jìn)行存檔易阳,那我們需要查看系統(tǒng)中哪些記錄呢附较,在下面我做了一些梳理,Linux和windows的操作系統(tǒng)是完全不一樣的潦俺,所以小編在這里做一下區(qū)分拒课。
5.1 Linux系統(tǒng)
推薦以下兩篇Linux應(yīng)急響應(yīng)文章給同學(xué)們哈,我覺(jué)得還不錯(cuò):
5.2 Windows系統(tǒng)
查看Windows安全事件日志事示,其中詳細(xì)記錄了是誰(shuí)在什么時(shí)候通過(guò)什么手段登錄到系統(tǒng)或者注銷(xiāo)了登錄早像,通過(guò)分析該日志可以詳細(xì)了解服務(wù)器的安全情況以及黑客都做過(guò)什么。
在“事件查看器”窗口肖爵,展開(kāi)Windows日志卢鹦,選擇“安全”,登錄日志就顯示出來(lái)了劝堪,如圖:
但日志一條一條的看完冀自,非常不方便揉稚,不利于我們進(jìn)行我們進(jìn)行分析。推薦使用:LogonTracer工具配合分析熬粗,可以詳細(xì)的查看黑客在我們計(jì)算機(jī)中操作過(guò)什么搀玖。
LogonTracer:是一款用于可視化分析Windows安全事件日志尋找惡意登錄的工具。它會(huì)將登錄相關(guān)事件中找到的主機(jī)名(或IP地址)和帳戶(hù)名稱(chēng)關(guān)聯(lián)起來(lái)驻呐,并將其以圖形化的方式展現(xiàn)出來(lái)巷怜。
推薦一篇關(guān)于LogonTracer工具的介紹:https://anquan.baidu.com/article/409
0x06 網(wǎng)站漏洞修復(fù)
針對(duì)性修復(fù)漏洞
問(wèn)題原因找到了,后門(mén)查殺了暴氏,那我們就要針對(duì)性的漏洞修復(fù)延塑,每個(gè)平臺(tái)的系統(tǒng)可能不一樣,那修復(fù)方式也是不一樣的答渔,請(qǐng)根據(jù)實(shí)際情況修復(fù)漏洞关带,可以參考官方網(wǎng)站。
舉個(gè)例子沼撕,比如:
基于Thinkphp框架任意代碼執(zhí)行漏洞的修復(fù)演示 :
使用編輯器打開(kāi)\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、之外笼沥,還要對(duì)各端口蚪燕、賬號(hào)權(quán)限、文件奔浅、流量傳輸馆纳、后臺(tái)、密碼校驗(yà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)限控制