元智大學資訊管理學系第二十八屆實習成果
(112-2)
指導老師:王仁甫
實習單位:財團法人資訊工業策進會
webshell檢測研究
Webshell 研究
我研究的主題是Webshell檢測,屬於網頁安全的範疇,目標是可以提高檢測Webshell,網頁伺服器惡意後門的準確度。
從開始實習以來,我看了許多篇關於Webshell檢測的論文,了解Webshell的駭客攻擊情境、撰寫方式、混淆方式,了解檢測Webshell所需的export knowledge。
駭客攻擊情境
Webshell 撰寫
Webshell 混淆
文獻調查
再去做文獻調查,統整不同檢測方法的優缺點,像是靜態檢測與動態檢測,並且實作論文提出的想法,接觸到了CNN、LSTM等深度學習模型,並且了解深度學習如何用在Webshell檢測上,像是靜態檢測的惡意程式碼分析以及動態檢測的封包分析,達到偵測惡意行為的效果。
CNN
LSTM
機器學習如何應用在 Webshell 檢測
資料來源主要可以分為兩大類 Webshell Script, Web Traffic
Webshell Script
又可以分為source code, Opcode
-
Source code
Webshell的原本的樣子,是高階語言的形式,像是php, jsp, python
優點:提供關於樣本的豐富的資訊,可以由程式碼推斷出這隻程式碼功能或意圖
缺點:容易受到程式碼混淆影響,降低準確度
-
Opcode
是assembly,一種低階語言,可將php使用工具Zend engine轉換成opcode。
優點:可以將大部分程式碼混淆,也就是雜訊去除。
缺點:
-
經過轉化,雖然程式碼的功能還是沒有變,但是會失去一些高階語言才有的特徵,可能導致失去重要特徵。
-
不是所有的高階語言都可以轉換成Opcode
下面是可以從webshell script得到的特徵
-
Lexical:
惡意程式碼撰寫的模式
-
Syntactical
變數、函數名稱,流程控制(if else)
-
Semantical
從lexical, syntactical得到的特徵
-
Statistical
關於惡意程式碼的統計數據,信息熵、壓縮比、最長字串長度
-
Abstract
抽象特徵,向輸入的資料向量化,利用機器學習的方法找出有沒有固定的pattern
Web Traffic
網路流量、封包
-
HTTP-request
HTTP協定請求的方法。最常見的是POST, GET
-
Payload
封包傳輸的內容
-
Log
包含系統上有發生甚麼事件的資訊。錯誤訊息、執行程式、建立連線訊息。
優點:可以用來分析惡意行為。如果可以依據使用者的行為進行判別,這樣對未知或被混淆的webshell就會有比較好的效果。因為駭客的目的基本上就是竊取機敏資料或其他,所以行為基本上都差不多,不會因為使用不同工具而不同。
缺點:log檔有可能被駭客刪除、修改,導致某部分訊息缺失,就會導致無法辨識出惡意行為。
Feature Work
目前在源碼檢測透過將程式碼轉成 Opcode,減少程式碼混淆技術的干擾,並用深度學習技術學習Opcode的抽象特徵,解讀程式碼的意圖,對已知 webshell 有極高的準確度,但是駭客如果使用新的寫法,就有可能繞過模型,因此需要持續蒐集新的樣本,並重新訓練模型。雖然駭客使用各種不同混淆技術撰寫 webshell ,但駭客的目的還是不變,竊取資料、提升權限、上傳、下載檔案,而這些動作會透過封包進行傳遞。我目前在對 webshell 惡意流量進行研究,然後發現當中最大的問題是惡意流量加密。所以我接下來想往偵測惡意加密流量進行研究,希望能提高檢測系統在面對未知加密流量的準確度。