top of page

webshell檢測研究

Webshell 研究

我研究的主題是Webshell檢測,屬於網頁安全的範疇,目標是可以提高檢測Webshell,網頁伺服器惡意後門的準確度。

從開始實習以來,我看了許多篇關於Webshell檢測的論文,了解Webshell的駭客攻擊情境、撰寫方式、混淆方式,了解檢測Webshell所需的export knowledge。

駭客攻擊情境

image.png

Webshell 撰寫

image.png

Webshell 混淆

image.png

文獻調查

再去做文獻調查,統整不同檢測方法的優缺點,像是靜態檢測與動態檢測,並且實作論文提出的想法,接觸到了CNN、LSTM等深度學習模型,並且了解深度學習如何用在Webshell檢測上,像是靜態檢測的惡意程式碼分析以及動態檢測的封包分析,達到偵測惡意行為的效果。

CNN

image.png

LSTM

image.png

機器學習如何應用在 Webshell 檢測

資料來源主要可以分為兩大類 Webshell Script, Web Traffic

Webshell Script

又可以分為source code, Opcode

  1. Source code

Webshell的原本的樣子,是高階語言的形式,像是php, jsp, python

優點:提供關於樣本的豐富的資訊,可以由程式碼推斷出這隻程式碼功能或意圖

缺點:容易受到程式碼混淆影響,降低準確度

  1. 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檔有可能被駭客刪除、修改,導致某部分訊息缺失,就會導致無法辨識出惡意行為。

image.png

Feature Work

目前在源碼檢測透過將程式碼轉成 Opcode,減少程式碼混淆技術的干擾,並用深度學習技術學習Opcode的抽象特徵,解讀程式碼的意圖,對已知 webshell 有極高的準確度,但是駭客如果使用新的寫法,就有可能繞過模型,因此需要持續蒐集新的樣本,並重新訓練模型。雖然駭客使用各種不同混淆技術撰寫 webshell ,但駭客的目的還是不變,竊取資料、提升權限、上傳、下載檔案,而這些動作會透過封包進行傳遞。我目前在對 webshell 惡意流量進行研究,然後發現當中最大的問題是惡意流量加密。所以我接下來想往偵測惡意加密流量進行研究,希望能提高檢測系統在面對未知加密流量的準確度。

bottom of page