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

?

基于污點(diǎn)分析的WebShell 檢測研究

2022-07-11 01:17李娜
電子技術(shù)與軟件工程 2022年7期
關(guān)鍵詞:污點(diǎn)靜態(tài)加密

李娜

(國家計(jì)算機(jī)網(wǎng)絡(luò)與信息安全管理中心寧夏分中心 寧夏回族自治區(qū)銀川市 750001)

1 引言

互聯(lián)網(wǎng)的高速發(fā)展帶來信息化的快速推進(jìn),隨著《“十四五”數(shù)字經(jīng)濟(jì)發(fā)展規(guī)劃》、《要素市場化配置綜合改革試點(diǎn)總體方案》等國家指導(dǎo)文件正式發(fā)布,“東數(shù)西算”工程全面啟動,我國正式步入數(shù)字經(jīng)濟(jì)發(fā)展時(shí)代,數(shù)據(jù)已成為核心生產(chǎn)要素,越來越多的信息數(shù)據(jù)實(shí)現(xiàn)了網(wǎng)絡(luò)化,Web服務(wù)充斥于我們的生活中,隨之而來的針對Web 服務(wù)的攻擊也越來越多,其中最為著名的有Webshell。Webshell 憑借其靈活多變和強(qiáng)隱秘性成為備受黑客青睞的攻擊后門之一,植入成功后攻擊者可以隨時(shí)通過被利用的Web 應(yīng)用漏洞或“上傳到其他受感染的系統(tǒng)”來啟動,這就等于為攻擊者在Web 服務(wù)提供了一個永久后門,可以隨時(shí)注入惡意代碼實(shí)現(xiàn)破壞用戶程序、竊取用戶敏感信息等操作,危害極大,因此Webshell 查殺歷來都是Web 服務(wù)安全防護(hù)的重要領(lǐng)域之一。

當(dāng)前應(yīng)用Webshell 檢測方法大多是基于規(guī)則匹配代碼做檢測,這樣會存在大量誤報(bào)和漏報(bào),需要增加大量的人工干預(yù)來提升Webshell 檢出效果,且不具備對未知Webshell 變種的檢測能力。最近幾年來,不少Webshell 檢測研究都在嘗試?yán)脵C(jī)器學(xué)習(xí)提高Webshell 檢測效果,但機(jī)器學(xué)習(xí)模型訓(xùn)練耗時(shí)巨大且嚴(yán)重依賴樣本的豐富度,而優(yōu)質(zhì)的Webshell正負(fù)樣本很難采集到導(dǎo)致現(xiàn)有的模型檢出Webshell 的準(zhǔn)確率不高。

針對上述問題,本文結(jié)合現(xiàn)有的檢測技術(shù)的同時(shí)提出一種基于污點(diǎn)分析的Webshell 檢測方法,即在傳統(tǒng)Webshell檢測方法之上引入基于污點(diǎn)分析技術(shù),全程跟蹤數(shù)據(jù)處理過程并且記錄整個數(shù)據(jù)處理過程中的所有流向信息,即通過標(biāo)記污點(diǎn)數(shù)據(jù)、跟蹤污點(diǎn)傳播過程、污點(diǎn)檢測實(shí)現(xiàn)Webshell攻擊檢測,進(jìn)而提高Webshell 檢測效果。

2 Webshell檢測概述

2.1 Webshell定義

Webshell 是一種惡意后門,主要以jsp、asp 和其它Scripting language等網(wǎng)頁文件形式存在于網(wǎng)站的運(yùn)行環(huán)境中。攻擊者在入侵網(wǎng)站之后利用Webshell 工具將其注入到網(wǎng)站的服務(wù)器中,為了使網(wǎng)站使用及維護(hù)人員無法發(fā)現(xiàn),通常將Webshell 工具存儲在網(wǎng)站服務(wù)器目錄下,放置于正常的網(wǎng)頁文件中,從而實(shí)現(xiàn)利用Web 服務(wù)訪問該Webshell 文件,竊取用戶數(shù)據(jù)、執(zhí)行系統(tǒng)命令等操作,達(dá)到控制服務(wù)器的目的。目前應(yīng)用最為廣泛的Webshell 后門包括蚊劍、冰蝎、哥斯拉等,其中冰蝎、哥斯拉此類的Webshell 后門通信中流量使用隨機(jī)填充字符后通過AES 等加密方式進(jìn)行傳輸,這種加密流量的傳輸方式使得在通信過程中檢測Webshell 異常困難。

2.2 傳統(tǒng)Webshell檢測方法

主流的Webshell 檢測方法目前主要有三種:

(1)靜態(tài)檢測,可細(xì)分為正則、ssdeep 等方式,是通過匹配特征碼和危險(xiǎn)函數(shù)來檢車識別Webshell,也可結(jié)合語法解析,剝離代碼、注釋、分析變量以及函數(shù)字符串等,缺點(diǎn)是因查Webshell 時(shí)不涉及函數(shù)執(zhí)行時(shí)的動態(tài)行為,會帶來一定的誤報(bào);

(2)基于行為的動態(tài)檢測,類似沙箱方式,是對payload 的行為分析檢測,重點(diǎn)監(jiān)測Webshell 的訪問路徑、主機(jī)異常行為,訪問特征(如IP、cookie)等;

(3)基于日志分析的檢測,主要利用日志分析訪問特征(如訪問頁面是否是孤立,日志中是否含有payload,頁面訪問次數(shù)等)并進(jìn)行識別。

其中基于行為的動態(tài)檢測和基于日志分析的檢測方法,會在檢測過程中產(chǎn)生大量的實(shí)時(shí)記錄大幅度影響服務(wù)器性能,且只能在攻擊者實(shí)施攻擊后檢出異常,因此基于源碼的靜態(tài)查殺相對使用更廣泛。

2.2.1 基于源碼的靜態(tài)檢測

基于源碼的靜態(tài)檢測主要有基于正則、ssdeep、機(jī)器學(xué)習(xí)、統(tǒng)計(jì)學(xué)和基于語法分析這五種檢測方法。其中基于正則的Webshell 檢測,是對已經(jīng)人為定義好的Webshell 關(guān)鍵特征進(jìn)行掃描,匹配其腳本文件中的特征碼字符串,如高危函數(shù)eval、system 等,從而判斷文件是否為Webshell;基于ssdeep 的Webshell 檢測,是一種基于模糊哈希算法的工具,通過文件的相似性比較發(fā)現(xiàn)其與源文件的相似關(guān)系。需要先獲取已知Webshell 樣本的ssdeep 哈希值然后設(shè)置相似度范圍識別同一系列的變形shell;基于統(tǒng)計(jì)學(xué)的Webshell 檢測,通過統(tǒng)計(jì)分析大量已知Webshell 表現(xiàn)出來的特殊統(tǒng)計(jì)特征,來綜合判斷當(dāng)前腳本是否為Webshell;基于機(jī)器學(xué)習(xí)的Weshell 檢測,通過對大量被披露出的Webshell 正負(fù)樣本數(shù)據(jù)學(xué)習(xí)模擬建立Webshell 檢測模型,這種檢測模型還需要安全領(lǐng)域的技術(shù)人員通過以往積累的知識經(jīng)驗(yàn)加以輔助。

2.2.2 基于行為的動態(tài)檢測

基于行為的動態(tài)檢測又稱為沙箱檢測,是指Webshell 在運(yùn)行過程中進(jìn)行的一種檢測方式,通過監(jiān)測其在運(yùn)行過程中的狀態(tài),對比運(yùn)行過程中執(zhí)行的系統(tǒng)命令、產(chǎn)生的流量等內(nèi)容綜合判斷是否存在異常情況,一般來說,Webshell 為了躲避靜態(tài)特征的檢測會提前將其加密,但攻擊者如若想控制數(shù)據(jù)庫和系統(tǒng),就需要遠(yuǎn)程運(yùn)行Webshell 工具,這時(shí)只要監(jiān)測到系統(tǒng)存在異常調(diào)用的情況,就可以檢測出Webshell,攔截攻擊者對系統(tǒng)下達(dá)的命令,保障正常網(wǎng)頁文件的安全性。

2.2.3 基于日志分析的檢測

基于日志分析的檢測,是指通過對服務(wù)器日志記錄進(jìn)行提取、分解、過濾、刪除和合并進(jìn)行分析,尤其是訪問、操作數(shù)據(jù)等記錄,網(wǎng)站系統(tǒng)被植入Webshell 腳本工具后,利用算法通過對日志分析判斷是否為正常行為或者Webshell行為,常用的算法如K 近鄰算法。

2.3 傳統(tǒng)Webshell檢測方法優(yōu)劣分析

Webshell 具有多變性、復(fù)雜性、隱秘性的特點(diǎn),任何一種檢測方法都無法實(shí)現(xiàn)Webshell 全類型的檢測覆蓋,經(jīng)過調(diào)研分析,所有傳統(tǒng)Webshell 檢測方法都各有所長,優(yōu)劣分析對比如表1 所示。

表1:

3 基于污點(diǎn)分析的Webshell檢測實(shí)踐方案

3.1 污點(diǎn)分析基本概念與定義

污點(diǎn)分析是對數(shù)據(jù)流進(jìn)行分析的技術(shù),工作原理主要是追蹤所有數(shù)據(jù)處理相關(guān)操作,并記錄數(shù)據(jù)全程的流向情況從而尋找源數(shù)據(jù)與對象數(shù)據(jù)之間的依存關(guān)系。污點(diǎn)分析一般包括以下幾個環(huán)節(jié),其一對污點(diǎn)數(shù)據(jù)進(jìn)行標(biāo)識,其二是傳遞污點(diǎn)屬性,其三對污點(diǎn)進(jìn)行檢測。一般來講,整個污點(diǎn)傳播的過程主要分為以下兩個步驟:第一步,將數(shù)據(jù)標(biāo)記為污點(diǎn)之前,需得判斷外源數(shù)據(jù)是否值得信任;第二步,算術(shù)、邏輯等運(yùn)算擴(kuò)散被標(biāo)記的源污點(diǎn)數(shù)據(jù),通過運(yùn)算得到的新結(jié)果數(shù)據(jù)依賴源數(shù)據(jù),這樣通常認(rèn)定其不可信,即依舊將其被標(biāo)記為污點(diǎn)。污點(diǎn)檢測一般是檢測腳本程序中包含的變量是否具備污點(diǎn),在分析過程中根據(jù)應(yīng)用狀態(tài)分為存在兩種:一種是需要使腳本程序處于運(yùn)行狀態(tài),被稱為動態(tài)污點(diǎn)分析;另一種是靜止?fàn)顟B(tài),被稱為靜態(tài)污點(diǎn)分析。

3.1.1 靜態(tài)污點(diǎn)分析

靜態(tài)污點(diǎn)分析的對象是程序代碼或中間表示(Intermediate Representation,IR),此過程中既不運(yùn)行目標(biāo)程序也無需修改代碼,通過分析非運(yùn)行狀態(tài)下目標(biāo)程序的數(shù)據(jù)、控制依存關(guān)系,確定其從源傳播到匯聚點(diǎn)的整個過程。對數(shù)據(jù)依賴進(jìn)行分析時(shí),主要分析程序特性函數(shù)間內(nèi)的污點(diǎn)傳播,包括調(diào)用、賦值等依賴關(guān)系;對控制依賴進(jìn)行分析時(shí),一般是選用遞歸的算法:對基本塊進(jìn)行A 分析,然后對后續(xù)基本塊B 和C 進(jìn)行識別并增加到控制流程圖中,之后重復(fù)的對B 和C 進(jìn)行相同遞歸分析,直到所有基本塊都被識別以及全部添加到控制流程圖中。靜態(tài)污點(diǎn)分析是基于程序源代碼或IR 基礎(chǔ),分析程序所有執(zhí)行路徑,污點(diǎn)傳播規(guī)則清晰容易識別,但是靜態(tài)污點(diǎn)分析的過程并不運(yùn)行目標(biāo)腳本、程序,缺失其運(yùn)行時(shí)的特殊信息,所以從分析結(jié)果上看不夠精準(zhǔn)。

3.1.2 動態(tài)污點(diǎn)分析

動態(tài)污點(diǎn)分析是通過插樁的方式實(shí)時(shí)跟蹤和監(jiān)控程序的運(yùn)行過程,記錄跟蹤和監(jiān)控過程中產(chǎn)生的過程數(shù)據(jù)值,進(jìn)而確定污點(diǎn)數(shù)據(jù)從源A 傳播到匯聚點(diǎn)B 的行為。但頻繁的插樁操作會導(dǎo)致占用過多的系統(tǒng)資源,相較于靜態(tài)污點(diǎn)分析,其執(zhí)行效率不高并且無法覆蓋到所有路徑,有概率產(chǎn)生漏報(bào)。

3.2 基于污點(diǎn)分析的Webshell檢測

Webshell 最根本的惡意行為就是任意執(zhí)行外部命令,而要執(zhí)行外部命令則不可避免要獲取外部數(shù)據(jù),因此如果發(fā)現(xiàn)腳本中的外界變量通過不斷傳遞,最終進(jìn)入危險(xiǎn)函數(shù),就可準(zhǔn)確識別Webshell。結(jié)合污點(diǎn)分析在數(shù)據(jù)流分析中的優(yōu)勢,本文提出一種設(shè)計(jì)思路,即在傳統(tǒng)Webshell 檢測方法中引入污點(diǎn)分析技術(shù),綜合靜態(tài)污點(diǎn)分析、動態(tài)污點(diǎn)分析和深度還原技術(shù),多管齊下實(shí)現(xiàn)Webshell 攻擊檢測。

3.2.1 整體實(shí)現(xiàn)架構(gòu)

在傳統(tǒng)Webshell 檢測中,增加動靜態(tài)污點(diǎn)分析、動態(tài)污點(diǎn)分析技術(shù)以及深度還原技術(shù),以PHP 樣本為例,整體架構(gòu)圖如圖1。

圖1

PHP 腳本常用$_GET,$_POST 等變量接收http 請求,利用污點(diǎn)分析來檢測這類變量傳遞行為,將外界變量視為污點(diǎn)源,將eval,system 等危險(xiǎn)函數(shù)視為污點(diǎn)匯聚點(diǎn),全過程涉及字符串處理、條件分支等操作,這就需要全程跟蹤污點(diǎn)傳播過程,判斷污點(diǎn)變量是否被洗白,最終是否進(jìn)入污點(diǎn)匯聚點(diǎn)。一旦獲取到相關(guān)變量后通過不斷傳遞,進(jìn)入危險(xiǎn)函數(shù)中執(zhí)行命令,則判定Webshell。

其中涉及到的靜態(tài)污點(diǎn)分析技術(shù)主要是將各種主流腳本語言進(jìn)行詞法語法分析,將其轉(zhuǎn)換成一種統(tǒng)一的中間標(biāo)識。得到中間表示后,構(gòu)建數(shù)據(jù)依賴圖和控制依賴圖,并在圖上跟蹤外界污點(diǎn)變量的傳遞,如發(fā)生使用外部變量且執(zhí)行高危函數(shù),則判定為Webshell。

動態(tài)污點(diǎn)分析技術(shù)的加入是為了更好的關(guān)注攻擊行為的發(fā)生,在內(nèi)部設(shè)計(jì)了一個安全精巧的虛擬執(zhí)行解釋,可以將Webshell 在安全、穩(wěn)定的前提下執(zhí)行并觸發(fā)惡意行為,同時(shí)利用動態(tài)污點(diǎn)跟蹤技術(shù),對惡意行為進(jìn)行檢測。動態(tài)分析會監(jiān)控樣本中讀取外界變量并對這些變量做污點(diǎn)標(biāo)記,監(jiān)控執(zhí)行中的各種函數(shù)調(diào)用和賦值操作,確保這些污點(diǎn)變量如何傳遞都能被跟蹤。最后對eval,system 等高危函數(shù)進(jìn)行攔截,分析其是否使用了污點(diǎn)變量實(shí)現(xiàn)WebShell 檢測。

除了靜態(tài)污點(diǎn)分析和動態(tài)污點(diǎn)分析以外,為了分辨各種加密后的樣本和代碼,對于加密混淆流量引入深度還原技術(shù)用于部分加密流量的解密還原。首先利用傳統(tǒng)脫殼技術(shù),對已知的加密混淆方案進(jìn)行專項(xiàng)處理實(shí)現(xiàn)對常見加密混淆進(jìn)行“脫殼”,另外還利用虛擬執(zhí)行器進(jìn)行虛擬執(zhí)行,將混淆加密的代碼進(jìn)行動態(tài)還原,實(shí)現(xiàn)“解密”。針對多次加密的樣本還會進(jìn)行多次解密,深度還原。解密后的明文可用于特征識別和動靜分析,可以在提高檢出率同時(shí)降低部分加密正常樣本的誤報(bào)率。

3.2.2 污點(diǎn)分析模塊

上文架構(gòu)中提到的污點(diǎn)分析模塊是整個檢測方法的核心部分,其主要通過預(yù)先設(shè)定好污染源、沉降點(diǎn)和污染傳播策略,對代碼或程序進(jìn)行標(biāo)記、追蹤和分析。下面闡述污點(diǎn)分析模塊的工作原理及污點(diǎn)分析模塊初始化流程圖(圖2)。

圖2

(1)首先定義HashTable 類型符號表sy_tb,將全局變量GS、預(yù)定義變量$_C00KIE,_POST_等保存在sy_tb 表中;

(2)在整個污點(diǎn)分析模塊初始化過程中,預(yù)先對變量結(jié)構(gòu)體中的flag-stu 空閑位進(jìn)行標(biāo)識,將保存在sy_tb 表中的值_POST_、$_C00KIE 標(biāo)記為污染,同步傳入關(guān)鍵函數(shù)并觸發(fā)關(guān)鍵函數(shù)的安全檢查代碼FCALLD、ICALL;

(3)劫持FCALLD、ICALL 來Hook 函數(shù)調(diào)用,獲取調(diào)用的函數(shù)和參數(shù)后,利用ZSUOHandle 來hook 代碼FCALLD、ICALL 監(jiān)控敏感函數(shù);

(4)當(dāng)函數(shù)通過上述FCALLD、ICAL 調(diào)用時(shí),在函數(shù)表中查找指定的函數(shù)名,然后返回function 類型的指針;

(5)獲取z_function 指針,判斷z_function 結(jié)構(gòu)體中的類型,這時(shí)分為兩種情況,第一種為內(nèi)部函數(shù),通過z_internal_function.handler 來執(zhí)行這個函數(shù),第二種為用戶自定義的函數(shù),調(diào)用z_execute 執(zhí)行函數(shù)中包含的z_op_array,觸發(fā)”handler”,在自定義函數(shù)中編寫污點(diǎn)記錄及啟用污點(diǎn)檢查策略。

污點(diǎn)分析的精準(zhǔn)性依賴于污染傳播策略的制定,污點(diǎn)檢查策略的內(nèi)部的函數(shù)其實(shí)就是污染在全部過程中的傳播,污點(diǎn)檢查策略的嚴(yán)格或?qū)捤蓵?dǎo)致最終監(jiān)測結(jié)果的差異,如漏報(bào)或者誤報(bào),人為設(shè)定的污染傳播策略具有一定局限性,如何在污染傳播策略中引入機(jī)器學(xué)習(xí),繼而從大量、隨機(jī)且不完全、雜亂的污點(diǎn)數(shù)據(jù)樣本中獲取需要的信息,進(jìn)而形成更高效的規(guī)則策略機(jī)制,是下一步的研究方向。

3.3 效果測試與評估

采用黑盒(不透明)的方式,隨機(jī)黑箱監(jiān)測搜集的3285 個樣本,對比基于污點(diǎn)分析的WebShell 檢測與某商業(yè)Webshell 檢測引擎在樣本集中的檢測能力。測試結(jié)果如表2所示。另外,兩種檢測方法同時(shí)告警2127 個,占比67.6%;同時(shí)漏報(bào)83 個,占比2.5%。

表2:

從測試結(jié)果分析不難看出,引入污點(diǎn)分析后的WebShell檢測方法檢出率明顯提升,漏報(bào)率明顯下降,且對于特殊Webshell 具備較高的獨(dú)報(bào)能力,其檢出效果要明顯優(yōu)于某商業(yè)Webshell 檢測引擎。

4 結(jié)語

本文針對目前存在的大量webshell 變種無法識別的情況,探索基于污點(diǎn)分析的Welshell 檢測方法,即在傳統(tǒng)的Webshell 監(jiān)測手段中引入污點(diǎn)分析技術(shù),通過提出新的設(shè)計(jì)思路重新構(gòu)建檢測機(jī)制,結(jié)合靜態(tài)污點(diǎn)分析、動態(tài)污點(diǎn)分析和深度還原技術(shù),多管齊下實(shí)現(xiàn)Webshell 的檢測。同時(shí)也選取了真實(shí)環(huán)境總的樣本數(shù)據(jù)做測試,相比傳統(tǒng)的Webshell檢測方法,本文設(shè)計(jì)的方法給出了較為滿意檢出結(jié)果。接下來將測試更多樣本,力求完善優(yōu)化判定規(guī)則、提高檢測準(zhǔn)確率。

猜你喜歡
污點(diǎn)靜態(tài)加密
基于代碼重寫的動態(tài)污點(diǎn)分析
最新進(jìn)展!中老鐵路開始靜態(tài)驗(yàn)收
一種基于熵的混沌加密小波變換水印算法
猜猜他是誰
使用Lightroom污點(diǎn)去除工具清理照片中的瑕疵
認(rèn)證加密的研究進(jìn)展
我國“污點(diǎn)證人”刑事責(zé)任豁免制度的構(gòu)建
基于ECC加密的電子商務(wù)系統(tǒng)
具7μA靜態(tài)電流的2A、70V SEPIC/升壓型DC/DC轉(zhuǎn)換器
基于格的公鑰加密與證書基加密