国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Simhash算法的Webshell檢測(cè)方法*

2018-03-21 00:56孔德廣蔣朝惠
通信技術(shù) 2018年3期
關(guān)鍵詞:分詞校驗(yàn)漏洞

孔德廣,蔣朝惠,郭 春,周 燕

0 引 言

Webshell是一種黑客對(duì)服務(wù)器進(jìn)行控制的后門程序[1]。如果黑客發(fā)現(xiàn)Web應(yīng)用存在文件上傳漏洞,46%的黑客都會(huì)上傳Webshell進(jìn)行后續(xù)的攻擊[2]。根據(jù)《2016年中國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報(bào)告》[3]的統(tǒng)計(jì),CNCERT/CC共監(jiān)測(cè)到境內(nèi)82 072個(gè)網(wǎng)站被植入了后門(Webshell)。黑客可以暗中對(duì)Web服務(wù)器進(jìn)行遠(yuǎn)程控制,上傳、查看、修改、刪除網(wǎng)站服務(wù)器上的文件,讀取并修改網(wǎng)站數(shù)據(jù)庫(kù)的數(shù)據(jù),甚至可以直接在網(wǎng)站服務(wù)器上運(yùn)行系統(tǒng)命令。文件上傳漏洞普遍存在于網(wǎng)站中,各大SRC也相繼爆出過(guò)嚴(yán)重的文件上傳漏洞[4-5]。文件上傳漏洞雖然數(shù)量上不如SQL注入漏洞,但一旦爆發(fā),危害要比SQL注入漏洞大很多,可以直接上傳Webshell,從而拿下Web服務(wù)器。

目前,檢測(cè)Webshell主要還停留在事前和事后。事前防御有可能被繞過(guò),事后防御屬于亡羊補(bǔ)牢,只有做到事中,才能確保Web服務(wù)器的安全。什么造成了文件上傳漏洞?主要是因?yàn)槌绦騿T在編寫網(wǎng)站的過(guò)程中,缺乏安全開發(fā)經(jīng)驗(yàn)[6-9]。目前,主要防御文件上傳漏洞的方法是客戶端校驗(yàn)、服務(wù)端校驗(yàn)和WAF校驗(yàn)。

(1)客戶端校驗(yàn)

不少程序員為了省事,直接在前端編寫限制文件上傳的過(guò)濾規(guī)則,通常有白名單也有黑名單形式。但是,這種做法會(huì)導(dǎo)致攻擊者通過(guò)直接捕獲數(shù)據(jù)包進(jìn)行改包而繞過(guò)客戶端校驗(yàn)。

(2)服務(wù)端校驗(yàn)

服務(wù)端校驗(yàn)是確保網(wǎng)站安全最基本的一個(gè)要求,主要方法有文件頭Content-type字段校驗(yàn)、文件內(nèi)容頭校驗(yàn)、后綴名黑名單校驗(yàn)、后綴名白名單校驗(yàn)和自定義正則校驗(yàn)等手段。但是,如果程序員在編寫服務(wù)端代碼時(shí)考慮不周全,以上幾種防御手段都可以繞過(guò)。同時(shí),黑客可以結(jié)合文件包含漏洞、服務(wù)器解析漏洞、操作系統(tǒng)文件命名規(guī)則、Cms或者編輯器漏洞等繞過(guò)服務(wù)端校驗(yàn),從而上傳木馬得到Webshell。

(3)WAF校驗(yàn)

目前,主流的防御方法是服務(wù)端校驗(yàn)配合WAF校驗(yàn)。但是,有些主機(jī)WAF為了不影響服務(wù)器的性能,會(huì)對(duì)校驗(yàn)的用戶上傳數(shù)據(jù)設(shè)置大小上限。這種情況可以使用垃圾數(shù)據(jù)進(jìn)行填充,當(dāng)超過(guò)設(shè)置的校驗(yàn)數(shù)據(jù)大小上限時(shí),再填充木馬,從而達(dá)到繞過(guò)WAF上傳木馬的目的。不同的WAF都存在或多或少的繞過(guò)方式,大部分原因在于WAF設(shè)置的檢測(cè)策略存在缺陷。

此外,黑客還可以通過(guò)其他方式上傳Webshell,如網(wǎng)站權(quán)限過(guò)大,SQL注入能將Webshell寫入Web服務(wù)器;部分命令執(zhí)行漏洞可以寫入Webshell,這給防御帶來(lái)了很多麻煩。因此,提出一種阻止黑客將Webshell寫入Web服務(wù)器的方法迫在眉睫。

1 相關(guān)工作

為了抵御Webshell對(duì)網(wǎng)站的持續(xù)性危害,研究人員對(duì)Webshell的檢測(cè)進(jìn)行了大量研究。目前,主要的檢測(cè)手段包括靜態(tài)分析和動(dòng)態(tài)分析兩種。Truong Dinh Tu等人[10]采用靜態(tài)分析的手段,檢測(cè)文件中是否包含系統(tǒng)命令執(zhí)行函數(shù)、惡意文件操作函數(shù),并統(tǒng)計(jì)關(guān)鍵字出現(xiàn)的頻率,設(shè)置閾值來(lái)判斷被檢文件是否為Webshell,但該方法不能檢測(cè)代碼混淆的Webshell。石劉洋等人[11]采用動(dòng)態(tài)分析手段,從Web服務(wù)器日志中提取相關(guān)特征,如URL特征、網(wǎng)站交互頻率、文本特征匹配以及頁(yè)面關(guān)聯(lián)性分析等識(shí)別Webshell,但日志過(guò)多,導(dǎo)致該檢測(cè)方法效率很低。此外,由于WebShell是通過(guò)80端口與遠(yuǎn)程主機(jī)進(jìn)行數(shù)據(jù)交換的,隱蔽性強(qiáng)導(dǎo)致檢測(cè)效果不高。2006年,Jesse Kornblum[12]提出了模糊哈希算法,主要用于文件相似性比較,后被用于取證和惡意代碼檢測(cè)。而Jason Sherman將該算法應(yīng)用于SSdeep[13],同時(shí)最新版的ModSecurity也增加了SSdeep檢測(cè)Webshell的接口[14]。

目前,市面上檢測(cè)工具非常多,NeoPI[15]就是一款國(guó)外流行的基于統(tǒng)計(jì)特征的Webshell檢測(cè)工具。但是,該工具并沒有提供一個(gè)閾值來(lái)確定哪些文件是Webshell,需要依靠專家知識(shí)來(lái)判斷。而著名的Webshell檢測(cè)工具D盾,主要使用規(guī)則是對(duì)文件靜態(tài)特征進(jìn)行匹配,但檢測(cè)效果依賴于規(guī)則的有效性,很容易被繞過(guò)。目前,大部分檢測(cè)工具基本都是事后查殺Webshell,即Webshell已經(jīng)存留于服務(wù)器很長(zhǎng)時(shí)間后才被查殺。這種檢測(cè)方案缺陷很大,黑客有可能早已獲得了相關(guān)隱私文件,達(dá)到了滲透的目的。因此,本文提出了一種基于Simhash的Webshell檢測(cè)方法。該方法檢測(cè)效率高,可以實(shí)現(xiàn)事中檢測(cè),即黑客上傳成功Webshell后,在黑客還沒采取后續(xù)行動(dòng)前就能檢測(cè)出Webshell并將其清除。

2 基于Simhash的Webshell檢測(cè)方法及關(guān)鍵點(diǎn)

2.1 Simhash計(jì)算

Simhash是一種局部敏感散列算法,在2002年被Charika等人[16]提出,后來(lái)谷歌Manku等人[17]將該算法用于海量網(wǎng)頁(yè)去重。該算法可將文本降維,生成一串位數(shù)較小的指紋。目前,Simhash算法在多種研究中得到應(yīng)用,但在Webshell檢測(cè)上還沒有相關(guān)應(yīng)用。

本文將每一個(gè)Webshell當(dāng)成一個(gè)文本,經(jīng)過(guò)分詞、散列、加權(quán)、合并、降維,最終生成64 bit的Simhash值。因?yàn)閃ebshell與網(wǎng)頁(yè)和文本具有不同特性,所以對(duì)Simhash的傳統(tǒng)算法做如下2點(diǎn)改動(dòng)。

分詞。因?yàn)閃ebshell的特殊性,需要調(diào)用一些命令執(zhí)行類函數(shù)、文件系統(tǒng)函數(shù)、數(shù)據(jù)庫(kù)操作函數(shù),回調(diào)函數(shù)、反射函數(shù)等特殊關(guān)鍵字,所以本文將Webshell按照換行符和特殊關(guān)鍵字進(jìn)行分詞。

權(quán)值。在文本分類中,一般依據(jù)分詞的頻率、屬性計(jì)算權(quán)值。在Webshell的Simhash計(jì)算中,將各分詞設(shè)置一個(gè)基礎(chǔ)權(quán)值。由于Webshell中存在一些特殊關(guān)鍵字,如pwd、password、username、system、fopen等,可對(duì)這類字符進(jìn)行加權(quán),將其權(quán)值設(shè)為其他分詞權(quán)值的2倍。

具體過(guò)程如下:

輸入:Webshell文件

輸出:每個(gè)Webshell的Simhash值

(1)創(chuàng)建一個(gè)64 bit向量,將其初始化為0。

(2)將Webshell文件進(jìn)行分詞處理,一般按照換行符進(jìn)行分詞,特殊情況下將特殊關(guān)鍵字單獨(dú)分詞。

(3)對(duì)特殊關(guān)鍵字進(jìn)行加權(quán),如system、popen、fopen、opendir、pathinfo、mysql_query、array_filter、array_reduce等特殊字符,將其權(quán)值設(shè)為其他分詞權(quán)值的2倍。

(4)對(duì)每個(gè)Webshell分詞進(jìn)行散列,取其中64 bit散列值。

(5)加權(quán)合并。

(6)降維。

2.2 Simhash指紋庫(kù)構(gòu)建

目前,黑客使用的Webshell基本是前人寫好的,也不排除有黑客使用新型的未知Webshell,但這些未知Webshell其中的大部分功能函數(shù)也是以前寫好的函數(shù)。如圖1所示,在網(wǎng)站內(nèi)測(cè)過(guò)程中,收集市面上功能結(jié)構(gòu)不重復(fù)的Webshell,通過(guò)Simhash算法生成Simhash初始指紋庫(kù)。當(dāng)網(wǎng)站運(yùn)行期間,如果發(fā)現(xiàn)新增可疑文件是Webshell且Simhash指紋庫(kù)中沒有收錄此指紋,即海明距離不等于零且最小值小于閾值時(shí),就將其Simhash指紋更新至初始Simhash指紋庫(kù)。

圖1 Simhash指紋庫(kù)構(gòu)建

2.3 基于Simhash算法的webshell檢測(cè)方法

如圖2所示,對(duì)Web應(yīng)用站點(diǎn)所有具有寫權(quán)限的文件夾進(jìn)行監(jiān)控。當(dāng)文件夾有新增文件即可疑文件時(shí),計(jì)算可疑文件的Simhash值,然后與Simhash指紋庫(kù)進(jìn)行海明距離比較。如果海明距離等于0,則該可疑文件就是Webshell,直接刪除該文件,并發(fā)郵件提醒網(wǎng)站管理員此網(wǎng)站正在遭受黑客攻擊。如果海明距離的最小值小于閾值,則該可疑文件是變種Webshell,即黑客對(duì)Webshell代碼進(jìn)行了混淆。此時(shí),將該變種Webshell的Simhash指紋添加到Simhash指紋庫(kù),刪除該文件并通知網(wǎng)站管理員。如果海明距離大于閾值,則該文件為用戶上傳的正常文件。

圖2 Simhash指紋庫(kù)構(gòu)建

3 實(shí)驗(yàn)與分析

為了選取合適的閾值,本實(shí)驗(yàn)搜集了200個(gè)功能結(jié)構(gòu)不重復(fù)的Webshell,然后使用Simhash算法計(jì)算生成200個(gè)Webshell指紋,以構(gòu)建Simhash指紋庫(kù)。

黑客在使用Webshell前,最可能做的是只更改Webshell的登錄口令。少部分黑客會(huì)刪除作者信息、敏感特征,以繞過(guò)安全檢測(cè)。極少數(shù)黑客會(huì)進(jìn)行代碼復(fù)用,重新編寫Webshell并進(jìn)行代碼混淆。本文根據(jù)黑客心理,分別對(duì)200個(gè)Webshell進(jìn)行編輯:修改登錄口令,刪除作者信息和注釋,刪除或者添加功能函數(shù),增加無(wú)用代碼進(jìn)行混淆處理。計(jì)算它的Simhash指紋,并與未修改前的Webshell指紋比較海明距離。如表1所示,200個(gè)Webshell修改登錄口令、作者信息、注釋前后,海明距離不是0就是1;添加或刪除功能函數(shù)、代碼混淆前后,海明距離也在1~3波動(dòng)。所以,本次實(shí)驗(yàn)將閾值設(shè)定為4,即如果海明距離小于4,則該可疑文件是Webshell。

表1 閾值變化情況

為了測(cè)試本文提出的檢測(cè)方法的有效性,另外收集100個(gè)Webshell和1 000個(gè)正常文件混合作為實(shí)驗(yàn)樣本。然后,分別使用本文檢測(cè)方法、SSdeep、D盾進(jìn)行檢測(cè)。如表2所示,基于Simhash算法的檢測(cè)方法一共檢測(cè)出94個(gè)Webshell,有6個(gè)未檢測(cè)出來(lái),主要是因?yàn)镾imhash指紋庫(kù)指紋量較少所致。SSdeep只檢測(cè)出84個(gè)Webshell,主要因?yàn)镾Sdeep閾值變化較大,在確保沒有誤報(bào)的情況下,漏報(bào)就會(huì)增多。D盾漏報(bào)較少,但誤報(bào)較高,這與其檢測(cè)規(guī)則有很大關(guān)系。通過(guò)對(duì)比可以發(fā)現(xiàn),本文檢測(cè)方法在低誤報(bào)的情況下,能較好地檢測(cè)出Webshell。同時(shí),在檢測(cè)時(shí)間方面,SSdeep所使用的比較算法會(huì)影響其檢測(cè)速度;D盾檢測(cè)規(guī)則大量運(yùn)用正則匹配,嚴(yán)重影響檢測(cè)速度;而本文提出的方法檢測(cè)時(shí)間較短。究其原因,主要在于Simhash算法生成指紋效率高,計(jì)算海明距離速度快。

表2 市面上其他檢測(cè)工具和本文檢測(cè)方法效果對(duì)比

4 結(jié) 語(yǔ)

Webshell后門一直是我國(guó)面臨的巨大威脅,本文提出一種基于Simhash算法的Webshell檢測(cè)方法。該檢測(cè)方法和傳統(tǒng)的檢測(cè)方法相比,誤報(bào)大大降低。同時(shí),由于Simhash算法的高效性,可以做到Webshell的實(shí)時(shí)檢測(cè),給應(yīng)急響應(yīng)留下了充足時(shí)間。但是,該檢測(cè)方法的有效性需依靠完備的Simhash指紋庫(kù),僅依靠樣本數(shù)據(jù)和少量更新的數(shù)據(jù),不能滿足新的安全需求,還要不斷進(jìn)行研究。

[1] Stranieri A,Zeleznikow J.WebShell:The Development of Web Based Expert Systems[J].Research and Development in Intelligent Systems XVIII,2002:245-258.

[2] Canali D,Balzarotti D.Behind the Scenes of Online Attacks:An Analysis of Exploitation Behaviors on the Web[C].20th Annual Network & Distributed System Security Symposium(NDSS 2013),2013.

[3] National Internet Emergency Center.China Internet Security Report in 2016[EB/OL].(2017-06-23)[2017-12-18].http://www.cert.org.cn/publish/main/upload/File/2016_cncert_report.pdf.

[4] CNVD.PHPEMS File Upload Vulnerability[EB/OL].(2017-11-20)[2017-12-18].http://www.cnvd.org.cn/flaw/show/CNVD-2017-35716.

[5] CNVD.Berta CMS Any File Upload Vulnerability[EB/OL].(2017-11-20)[2017-12-18].http://www.cnvd.org.cn/flaw/show/CNVD-2017-34604.

[6] Kieyzun A,Guo P J,Jayaraman K,et al.Automatic Creation of SQL Injection and Cross-site Scripting Attacks[C].Software Engineering,ICSE,2009:199-209.

[7] Martin M,Lam M S.Automatic Generation of XSS and SQL Injection Attacks with Goal-directed Model Checking[C].Proceedings of the 17th Conference on Security Symposium USENIX Association,2008:31-43.

[8] Balzarotti D,Cova M,Felmetsger V,et al.Saner:Composing Static and Dynamic Analysis to Validate Sanitization in Web Applications[C].Security and Privacy,2008:387-401.

[9] Appelt D,Nguyen C D,Briand L C,et al.Automated Testing for SQL Injection Vulnerabilities:an Input Mutation Approach[C].Proceedings of the 2014 International Symposium on Software Testing and Analysis,2014:259-269.

[10] Tu T D,Cheng G,Guo X,et al.Webshell Detection Techniques in Web Applications[C].International Conference on Computing,Communication and Networking Technologies IEEE,2014:1-7.

[11] 石劉洋,方勇.基于Web日志的Webshell檢測(cè)方法研究[J].信息安全研究,2016(01):66-73.SHI Liu-yang,FANG Yong.Webshell Detection Method Research Based on Web Log[J].Research on Information Security,2016(01):66-73.

[12] Kornblum J.Identifying Almost Identical Files Using Context Triggered Piecewise Hashing[J].Digital Investigation,2006,3(03):91-97.

[13] Jason S.Ssdeep Project[EB/OL].(2017-11-07)[2017-12-18].http://ssdeep.sourceforge.net.

[14] Ivan R.Modsecurity-handbook[EB/OL].(2017-07-15)[2017-12-18].https://www.feistyduck.com/books/modsecurity-handbook.

[15] Scott B,Ben H.NeoPI:Detection of Web Shells Using Statistical Methods[EB/OL].(2016-08-15)[2017-12-18].https://github.com/Neohapsis/NeoPI.

[16] Charikar M S.Similarity Estimation Techniques from Rounding Algorithms[C].Proceedings of the Thiryfourth Annual ACM Symposium on Theory of Computing ACM,2002:380-388.

[17] Manku G S,Jain A,Das Sarma A.Detecting Nearduplicates for Web Crawling[C].Proceedin gs of the 16th International Conference on World Wide Web ACM,2007:141-150.

猜你喜歡
分詞校驗(yàn)漏洞
漏洞
使用Excel朗讀功能校驗(yàn)工作表中的數(shù)據(jù)
分詞在英語(yǔ)教學(xué)中的妙用
結(jié)巴分詞在詞云中的應(yīng)用
結(jié)巴分詞在詞云中的應(yīng)用
爐溫均勻性校驗(yàn)在鑄鍛企業(yè)的應(yīng)用
電子式互感器校驗(yàn)方式研究
三明:“兩票制”堵住加價(jià)漏洞
漏洞在哪兒
高鐵急救應(yīng)補(bǔ)齊三漏洞