由于 Web 應(yīng)用程序的復(fù)雜性和重要性, 導(dǎo)致其成為網(wǎng)絡(luò)攻擊的主要目標(biāo)之一。攻擊者在入侵一個網(wǎng)站后, 通常會植入一個 Webshell, 來持久化控制網(wǎng)站。但隨著攻防雙方的博弈, 各種檢測技術(shù)、終端安全產(chǎn)品被廣泛應(yīng)用, 使得傳統(tǒng)的以文件形式駐留的 Webshell 越來越容易被檢測到, 內(nèi)存型 Webshell 成為新的趨勢。本文面向 Java 應(yīng)用程序, 總結(jié)內(nèi)存型 Webshell 的特征和原理, 構(gòu)建內(nèi)存型Webshell 威脅模型, 定義了高對抗內(nèi)存型 Webshell, 并提出一種基于RASP(Runtime application self-protection, 運行時應(yīng)用程序自我保護(hù))的動靜態(tài)結(jié)合的高對抗內(nèi)存型 Webshell 檢測技術(shù)。實驗表明, 與其他檢測工具相比, 本文方法檢測內(nèi)存型 Webshell 效果最佳, 準(zhǔn)確率為 96.45%, 性能消耗為 7.74%,具有可行性, 并且根據(jù)檢測結(jié)果可以準(zhǔn)確定位到內(nèi)存型Webshell 的位置。?
???????
目錄
5 實驗與分析
5.1 實驗環(huán)境與數(shù)據(jù)
?5.2 檢測能力分析
5.3 案例分析
5.4 性能分析
6 總結(jié)與展望
5 實驗與分析
通過內(nèi)存型 Webshell 請求和正常請求對本文提出的基于 RASP 動靜態(tài)結(jié)合的高對抗內(nèi)存型Webshell 檢測方法進(jìn)行評估。從準(zhǔn)確率、精確率、召回率、F1 值 4 個指標(biāo)評估本文方法的檢測能力, 并結(jié)合實際利用場景對兩種類型 Webshell 的檢測結(jié)果分析, 從時間開銷和資源消耗兩方面評估本文方法的檢測性能, 最后對檢測方法進(jìn)行討論。
5.1 實驗環(huán)境與數(shù)據(jù)
測試環(huán)境使用 1 臺服務(wù)器, 操作系統(tǒng)為 Ubuntu 20.04, 配置為雙核處理器和 16G 內(nèi)存。
實驗采取的數(shù)據(jù)集來自于 GitHub 上的樣本, 以及 Webshell 的管理工具, 例如冰蝎、哥斯拉等。樣本覆蓋組件類和Agent類的內(nèi)存型Webshell, 組件類包括 Filter、Servlet、Listener、Valve、Controller、Interceptor 等。部分?jǐn)?shù)據(jù)集來源如表 7 所示。
?5.2 檢測能力分析
實驗對正常請求和內(nèi)存型 Webshell 的請求分別測試。內(nèi)存型 Webshell 請求分為兩部分, 分別對其注入過程和利用過程進(jìn)行測試。組件類是實時檢測, 能夠檢測注入過程, Webshell 注入成功后會被再次訪問, 所以包含注入過程和利用過程兩部分。Agent 類是靜態(tài)檢測, 只包含利用過程。注入過程包括組件類的 31個樣本, 利用過程包括組件類和Agent類的全部樣本,共 40 個, 目前 Agent 樣本比較少, 實驗數(shù)據(jù)共 9 條。內(nèi)存型Webshell共71個樣本; 正常請求共70個樣本,如表 8 所示。本次實驗對 Tomcat 容器、Spring 框架、Weblogic 容器進(jìn)行了測試。
準(zhǔn)確率表示檢測正確的結(jié)果占總樣本的百分比,即預(yù)測正確的概率, 計算公式如下:
精確率是檢測為 Webshell 的樣本中實際為Webshell 的概率, 表示對 Webshell 檢測的準(zhǔn)確程度,計算公式如下:
召回率是實際為 Webshell 的樣本中被檢測為Webshell 的概率, 計算公式如下:
Precision和Recall都越高越好, 但兩者是一對矛盾的度量, F 1 值是 Precision 和 Recall 的一種調(diào)和平均, 同時權(quán)衡這兩個指標(biāo), F 1 值越高越好。計算公式如下:
?
通過對 71 個 Webshell 和 70 個正常請求的測試 ,4 個工具的檢測結(jié)果如表 9 所示。
OpenRASP 是基于 RASP 的動態(tài)檢測工具 , 目前只能在程序啟動時指定 Java Agent 以 premain 的方式對程序進(jìn)行檢測 , 在程序運行時無法嵌入檢測程序 ,因此運行時如果檢測需要重啟服務(wù)。該工具對于 Listener 、 Valve 組件的命令執(zhí)行后的利用過程也檢測不到 , 準(zhǔn)確率和召回率較低。該工具只能通過觸發(fā)后門的方式攔截并報警 , 本文將該工具對內(nèi)存型Webshell 攻擊的攔截報警認(rèn)為是檢測到了內(nèi)存型Webshell, 因此精確率為 100% 。該工具只收集了目標(biāo)程序的運行時信息 , 無法定位到存在后門的類。 F1值也較低。
Copagent 是一款基于規(guī)則匹配的靜態(tài)檢測工具。該工具無法對目標(biāo)程序?qū)崟r檢測 ,無法對內(nèi)存型 Webshell 的注入過程進(jìn)行檢測。該工具設(shè)定的字符串匹配比較單一 , 只針對 Webshell 常使用的字符串 , 所以精確率高。但設(shè)定的規(guī)則比較簡單 , 無法檢測到 Controller 、 Interceptor 、 Valve 類的內(nèi)存型 Webshell, 并且實驗可以繞過該工具匹配的字符串 , 該工具無法檢測高對抗內(nèi)存型 Webshell, 準(zhǔn)確率、召回率、 F1 值都比較低。
5.3 案例分析
搭建內(nèi)存型 Webshell 實際利用場景 , 分析本文檢測方法對組件類和 Agent 類 Webshell 后門的檢測過程案例分析。搭建反序列化漏洞的 Web 服務(wù) , 測試對組件類內(nèi)存型 Webshell 的檢測過程 ; 搭建任意文件上傳漏洞的 Web 服務(wù) , 測試對 Agent 類內(nèi)存型 Webshell 的檢測過程。
(1) 組件類內(nèi)存型 Webshell
搭建 Tomcat 環(huán)境和 Shiro 框架 , 利用 Shiro 的反序化漏洞注入組件類內(nèi)存型 Webshell 。首先使用Shiro_Attack 工具 [39] 爆破密鑰 , 然后使用反序列化攻擊解除 Shiro 對 header 的長度限制 , 之后選擇一個Filter 類內(nèi)存型 Webshell, 對其進(jìn)行序列化、 AES 加密、 base64 編碼 , 最后將其作為 cookie 的字段值發(fā)送到目標(biāo)應(yīng)用程序中。
內(nèi)存型 Webshell 調(diào)用的注冊組件函數(shù)是 org.apache.catalina.core. Applica-tion-Context@addFilter, 注 冊 的 組 件 類 名 為com.shiro.vu-ln.Controller.TomcatMemShellInject,Webshell 注入過程中的調(diào)用棧信息如圖 9 所示。
(2) Agent 類內(nèi)存型 WebShell
搭建 Tomcat 任意文件上傳漏洞的測試環(huán)境 , 改造冰蝎中的 Agent 內(nèi)存型 Webshell, 并注入混淆的高對抗代碼 , 通過冰蝎上傳改造后的 jar 包 , 注入Webshell 后門。注入成功后 , 可以訪問到 Webshell后門 , 并且磁盤上不存在該文件。
用本文檢測方法防御后 , 成功檢測到被內(nèi)存型Webshell 修改的系統(tǒng)類并發(fā)送郵件。結(jié)果顯示內(nèi)存型Webshell 存在的類是 org.apache.jasper.servlet.Jsp-ervlet, 高危類是 javax/servlet/Servlet 接口。如圖 10所示。
5.4 性能分析
因為動態(tài)檢測方法是在應(yīng)用程序運行時進(jìn)行檢測 , 為了不影響用戶的正常訪問 , 性能評估尤為重要。檢測方法和OpenRASP 進(jìn)行性能測試分析和對比。使用 Apache公司的 JMeter性能測試工具進(jìn)行測試。以 Tomcat 服務(wù)作為實驗環(huán)境 , 每次請求將執(zhí)行 1000 次哈希計算操作 , 使系統(tǒng)響應(yīng)時間更加接近實際的用戶體驗度。在沒有任何安全防護(hù)的情況下 ,測試服務(wù)的平均響應(yīng)時間 , 然后在服務(wù)上部署本文檢測方法和 OpenRASP 后分別測試服務(wù)的平均響應(yīng)時間。
設(shè)置 JMeter 的線程數(shù)為 2000, Ramp-up period 為60s, 來模擬 2000 個用戶在 60s 內(nèi)隨機(jī)進(jìn)行訪問 , 將此過程循環(huán) 10 次 , 總體請求數(shù)為 20000 個。假如運行檢測工具前后的平均響應(yīng)時間分別是
T 1 、 T 2 , 則性能消耗的計算公式 T 如下所示。
檢測結(jié)果如表 11 所示。檢測工具運行前系統(tǒng)的平均響應(yīng)時間是 1.55s, 本文檢測方法運行后的平均
響應(yīng)時間是 1.67s, 平均響應(yīng)時間延遲 0.12, 性能消耗是 7.74%, 在可接受范圍。 OpenRASP 運行后的平均響應(yīng)時間是 1.98s, 平均響應(yīng)時間延遲 0.43s, 性能消耗是 27.74%, 較為明顯。
由于 Copagent 工具和某工具無法檢測高對抗內(nèi)存型 Webshell, 為了測試其靜態(tài)檢測能力 , 只對部分Agent 類內(nèi)存型 Webshell 改造為高對抗內(nèi)存型Webshell 進(jìn)行測試。受限于內(nèi)存型 Webshell 樣本的稀缺 , 無法達(dá)到更全面的檢測效果。
6 總結(jié)與展望
?對 Java 內(nèi)存型 Webshell 進(jìn)行了研究 , 分析兩種類型的內(nèi)存型 Webshell 原理 , 并提出高對抗內(nèi)存型 Webshell 定義 , 設(shè)計了一種動靜態(tài)相結(jié)合的方法檢測高對抗內(nèi)存型 Webshell 。從內(nèi)存型 Webshell 的輸入源、觸發(fā)器、特征狀態(tài)方面出發(fā) ,利用 RASP 技術(shù)對輸入源中的注冊組件類函數(shù) , 以及特權(quán)類函數(shù)進(jìn)行監(jiān)測 , 根據(jù)內(nèi)存型 Webshell 的特性 , 針對不同的觸發(fā)器場景分析 , 結(jié)合數(shù)據(jù)流分析技術(shù)進(jìn)行動態(tài)檢測 ; 針對攻擊載荷改造的高對抗內(nèi)存型 Webshell, 基于深度學(xué)習(xí)模型訓(xùn)練 , 進(jìn)行靜態(tài)文本特征的檢測。對本文檢測方法進(jìn)行了實驗評估 , 對71 個內(nèi)存型 Webshell 樣本和 70 正常樣本進(jìn)行測試 ,結(jié)果表明本文檢測方法的準(zhǔn)確率達(dá)到 96.45%, 性能消耗為 7.74%, 具有可行性。文章來源:http://www.zghlxwxcb.cn/news/detail-596677.html
下一步工作中 , 將完善針對 Java Web 內(nèi)存型Webshell 的檢測方案 , 本文檢測方案中在內(nèi)存型Webshell 注入過程中監(jiān)測了注冊組件類的函數(shù) , 沒有對內(nèi)存型 Webshell 注入過程中的可利用漏洞處進(jìn)行監(jiān)測 , 后續(xù)將針對這部分內(nèi)容進(jìn)行補(bǔ)充 , 增加內(nèi)存型 Webshell 在注入時的檢測效率。另外研究其他語言 Web 服務(wù)的內(nèi)存型 Webshell 檢測技術(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-596677.html
到了這里,關(guān)于小研究 - 面向 Java 的高對抗內(nèi)存型 Webshell 檢測技術(shù)(五)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!