亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于機器學習的WebShell檢測方法與實現是怎樣的

發布時間:2021-12-18 14:26:58 來源:億速云 閱讀:138 作者:柒染 欄目:網絡管理

基于機器學習的WebShell檢測方法與實現是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

一、概述

Webshell是攻擊者使用的惡意腳本,其目的是升級和維護對已經受到攻擊的WEB應用程序的持久訪問。Webshell本身不能攻擊或利用遠程漏洞,因此它始終是攻擊的第二步。

攻擊者可以利用常見的漏洞,如SQL注入、遠程文件包含(RFI)、FTP,甚至使用跨站點腳本(XSS)作為攻擊的一部分,以上傳惡意腳本。通用功能包括但不限于shell命令執行、代碼執行、數據庫枚舉和文件管理。

為什么使用webshell ?

1.持續的遠程訪問

Webshell通常包含一個后門,允許攻擊者遠程訪問,并能在任何時候控制服務器。這樣攻擊者省去了每次訪問攻擊服務器需要利用漏洞的時間。攻擊者也可能選擇自己修復漏洞,以確保沒有其他人會利用該漏洞。這樣,攻擊者可以保持低調,避免與管理員進行任何交互。值得一提的是,一些流行的Webshell使用密碼驗證和其他技術來確保只有上傳Webshell的攻擊者才能訪問它。這些技術包括將腳本鎖定到特定的自定義HTTP頭、特定的cookie值、特定的IP地址或這些技術的組合。

2.特權升級

除非服務器配置錯誤,否則webshell將在web服務器的用戶權限下運行,該用戶權限有限的。通過使用webshell,攻擊者可以嘗試通過利用系統上的本地漏洞來執行權限升級攻擊,以假定根權限,在Linux和其他基于Unix的操作系統中,根權限是“超級用戶”。通過訪問根帳戶,攻擊者基本上可以在系統上做任何事情,包括安裝軟件、更改權限、添加和刪除用戶、竊取密碼、讀取電子郵件等等。
黑客在入侵一個網站后,通常會將asp或php后門文件與網站服務器web目錄下正常的網頁文件混在一起,然后就可以使用瀏覽器來訪問asp或者php后門,得到一個命令執行環境,以達到控制網站服務器的目的。Webshell一般有三種檢測方式:基于流量的方式、基于Agent模式、基于日志分析模式。本文重點研究基于流量的webshell檢測。

整個流程,先是采集webshell數據,然后結合網絡安全專家知識對webshell產生的流量和正常流量進行觀察研究、統計分析,挖掘出較好的能區分兩類流量的特征,然后選用二分類算法訓練模型,然后評估算法性能做出參數調整等,最后將模型做工程化落地。文中會依次展開詳細說明。

二、數據采集

在真實的環境中webshell樣本缺少,基本在數萬條的http流量中,都難有一條webshell所產生的流量。因此對于機器學習來說,高質量、多數量的的樣本將會是個挑戰。為了解決這個樣本難的棘手問題,我們特意模擬搭建了webshell入侵的環境,按照webshell的種類、攻擊的行為寫好自動化腳本,運行時產生大量webshell流量,使用網絡嗅探工具(如Wireshark,Tcpdump等)收集了Webshell流量。

2.1 構建數據類型

webshell大致可分為以下三大類:

●一句話
該webshell通過工具菜刀進行連接,可實現的功能包括對文件的增刪修、數據庫的CRUD、命令執行。

●大馬
該webshell文件較大,包含的服務端代碼多。功能強大,除了包含對文件的增刪修、數據庫的CRUD、命令執行。還包括提權,內網掃描、反彈shell等功能。

●小馬
該webshell文件小,代碼量小。包含的功能比較單一,實現的功能為一個或兩個。主要為文件上傳或服務端執行文件下載、命令執行等功能。

在構建數據采集類型時,根據常見的webshell類型并結合執行命令進行劃分,如下所示:

是否需要登陸:

●direct:無需登陸,直接訪問即可。可實現的功能較多;

●login:需要密碼或賬戶進行登陸,又分為登陸前與登陸后(before/latter);

以是否需要登陸劃分完后開始以用戶行為進行劃分即操作類型。

操作類型:

●cmd:命令執行;

●file:文件操作;

●sql:數據庫操作。

2.2 搭建數據收集環境

流量采集搭建的整體環境:

系統環境為Linux虛擬機,通過建立橋接模式與宿主服務器完成網絡數據交互。各類webshell運行的環境如下:

●PHP:phpstudy

●JSP:jspstudy

●ASP:Ajiu AspWebServer+Mysql

本地主機采用Wireshark對webshell的網絡流量進行收集和保存。

2.3 流量數據生成

●direct:

直接訪問的webshell,采用腳本的方式對其進行批量訪問,產生對webshell訪問的流量數據。對文件的操作、命令執行、數據庫操作的流量,采用手工錄入。

●login:

登陸型webshell,采用腳本進行登陸,運行selenium模塊實現模擬瀏覽器登陸webshell。解決因cookie驗證機制而無法成功登陸webshell的問題。對文件的操作、命令執行、數據庫操作的流量,采用手工錄入。

●cmd:

該webshell的利用方式,采用腳本的方式實現。根據腳本,實現不同系統命令的執行,獲取相應的結果。

●caidao:

菜刀型webshell的界面訪問及登陸采取腳本的方式來批量實現。

2.4 流量數據分類

流量數據包命名規則為(webshell類型)_(操作),按照具體的類型和操作進行劃分,分開收集。保證流量數據的類型統一。

2.5 流量收集

本地主機采用WireShark進行流量收集。

三、基于流量的webshell檢測

3.1 特征工程

使用機器學習構建基于流量檢測模型,重要步驟是對webshell流量進行特征挖掘分析。特征工程要結合webshell的特點和相關的專家知識去挖掘。先根據webshell的行為特點總結了以下幾條webshell本身自帶的特征。

(1)存在系統調用的命令執行函數,如eval、system、cmd_shell、assert等;

(2)存在系統調用的文件操作函數,如fopen、fwrite、readdir等;

(3)存在數據庫操作函數,調用系統自身的存儲過程來連接數據庫操作;

(4)具備很深的自身隱藏性、可偽裝性,可長期潛伏到web源碼中;

(5)衍生變種多,可通過自定義加解密函數、利用xor、字符串反轉、壓縮、截斷重組等方法來繞過檢測;

(6)訪問IP少,訪問次數少,頁面孤立,傳統防火墻無法進行攔截,無系統操作日志;

(7)產生payload流量,在web日志中有記錄產生。

流量檢測是為了區分正常訪問與webshell,因此也簡單的陳列下webshell與正常業務的網頁有何區別,如圖3所示:

3.1.1  特征挖掘

根據特征工程中,收集到的專家經驗知識,和實際的歷史數據統計分析后,下面開始我們的特征分析。(注:過多技術細節披露較為敏感,因此僅枚舉部分特征進行闡述)

1.基于關鍵詞的特征

對于webshell本身的行為分析 ,它帶有對于系統調用、系統配置、數據庫、文件的操作動作,它的行為方式決定了它的數據流量中多帶參數具有一些明顯的特征,另外再關鍵詞匹配之前先對流量進行decode操作。查閱各類webshell操作方式,以及觀察了所產生的數據流量進行統計分析后,共采集了部分關鍵詞羅列如圖4。經統計發現這些關鍵詞在正負樣本中出現的占比十分懸殊,因此作為特征是非常合適的。以下是正負樣本中關鍵詞出現次數的對比條形圖(如圖4),可以顯示出分布差異。

2.流量中get/post參數個數

經觀察發現,一般來說webshell get/post的參數個數比較少,可作為一個特征。

3.流量中get/post的信息熵

一般請求都會向服務器提交數據,webshell也不例外。但是,如果提交的數據經過加密或者編碼處理了,其熵就會變大。對于正常的web業務系統來說,如果向某一URI提交數據的熵明顯偏大于其他頁面,那么該URI對應的源碼文件就比較可疑了。而一般做了加密通信的webshell提交數據的熵值會偏大,所以就可以檢測出來。例如如下對比:

正常頁面:”pid=12673&aut=false&type=low”

Webshell: ”ac=ferf234cDV3T234jyrFR3yu4F3rtDW2R354”

4.基于cookie的特征提取

在正常的http訪問中,因為http訪問是無狀態的協議,服務器也不會自動維護客戶的上下文信息,于是采用session來保存上下文信息。session是存儲在服務器端的,為了降低服務器存儲的成本于是當有http請求時,服務器會返回一個cookie來記錄sessionID并保存在瀏覽器本地,下一次訪問時request中會攜帶cookie。cookie的內容主要包括:名字,值,過期時間,路徑和域。路徑與域一起構成cookie的作用范圍。據觀察分析,webShell所產生的cookie有的為空,有的雖然有鍵值對的結構但是基本數量非常少,且命名沒有實際的含義。所以提取這一特征用來區分webShell和正常網站訪問。

另外從cookie角度思考,可以發現webshell的鍵值對會比較混亂,不像正常流量中的那么有規律或是參數有實際可讀含義的。如下選取了一條webshell的Cookie,可以發現鍵值對的值比較混亂。因此選取鍵值對的熵值作為特征。

Cookie:KCNLMSXUMLVECYYYBRTQ=DFCXBTJMTFLRLRAJHTQLDNOXSKXPZEIXJUFVNNTA

5.返回網頁結構相似度值

黑客在進行webshell提權攻擊的時候,通常是用已經有的webshell工具,比如拿大馬進行直接使用或者稍作修改。因此很多返回的頁面具有結構相似性,可以提取網頁結構相似度這一特征進行比對。設計思路為,與已經采集的webshell產生的網頁結構相似度進行對比,用返回網頁結構相似度作為一個特征。

6.網頁路徑層數

黑客在成功入侵一個網站,植入webshell網頁,通常需要這些后門軟件具有隱蔽性,因此網頁路徑會比較深,網頁藏匿的比較深,不易被正常瀏覽者發現。

7.訪問時間段

webshell和正常業務相比,瀏覽的時間是有差異的,黑客通常會選擇在正常流量稀少的時間進行訪問。因此抽出時間特征作為一個維度。按照時間大類特征,可以展開幾下幾種小類特征, 一天中哪個時間段(hour_0-23) ,一周中星期幾(week_monday…),一年中哪個星期,一年中哪個季度,工作日、周末。

8.有無referer

在流量中,如果網頁沒有跳轉過來的上一頁網頁,那么referer參數將為空。一般的小馬和一句話webshell鮮有跳轉關系,大馬登陸的首頁也和上一頁網頁沒有跳轉關系,因此選此特征作為一種輔助判斷。

3.1.2 特征提取

綜上分析,共提取了關鍵詞、網頁路徑結構層次數、cookie鍵值對數、返回網頁結構相似度、POST/GET熵值、cookie鍵值對熵值等多個特征(注:過多技術細節披露較為敏感,因此僅枚舉部分特征進行闡述)。并使用數據采集階段生成的數據作為數據源,生成機器學習模型特征,之后將特征做歸一化處理。其中正常流量60349條,webshell流量51070條。

3.2 模型構建及評估

選取了adboost、SVM、隨機森林、邏輯回歸四種算法進模型訓練,其中正常流量60349條,webshell流量51070條。各模型訓練效果對比如下圖5所示。綜合考量到最小化算法運行時間,和最大化可解釋性,在多個算法檢測效果相似情況下,選擇隨機森林作為實際產品化使用的模型算法。

四、具體實施

4.1 檢測流程

基于機器學習的webshell檢測整體業務邏輯如下圖6所示,簡述如下:首先,從各種終端設備和第三方庫中導入數據進行特征提取模型訓練;之后,將訓練好的模型部署到生產環境中對真實數據做檢測,對檢出產生告警信息;最后將檢出結果做人工確認,并將誤報數據重新導入訓練庫中定期重訓練模型。

4.2 技術選型

將基于機器學習的Webshell檢測部署到生產環境中,需要考慮大數據規模對模型的時效性、吞吐量等性能指標的影響。經多方考量,最終選用如下圖7所示的組件搭配作為產品化的技術選型。此方案結合了spark大數據處理的高效性,Kafka對數據流動的中高性能低延遲性,Hbase對對大規模數據集的實時讀性訪問性。采用下圖中技術架構,可保證大流量環境中對Webshell的檢測,和機器學習模型的自動優化。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌图县| 伊通| 红原县| 观塘区| 阳曲县| 太谷县| 安塞县| 新建县| 苏尼特右旗| 砚山县| 平泉县| 宁波市| 怀集县| 乌鲁木齐市| 大余县| 铜梁县| 北宁市| 广德县| 章丘市| 临沂市| 监利县| 松溪县| 福清市| 鹤峰县| 建始县| 承德市| 巫溪县| 文登市| 丽水市| 青河县| 昌宁县| 宁德市| 甘孜县| 进贤县| 瓮安县| 怀远县| 德昌县| 于田县| 阳曲县| 罗山县| 广汉市|