結合強化學習與CNN的Webshell檢測方法
簡介
該文為發表于ICICS 2021的Improving Convolutional Neural Network-Based Webshell Detection Through Reinforcement Learning。目前,Webshell檢測對于網絡安全保護非常重要。傳統方法主要基于關鍵字匹配,這在很大程度上依賴于領域專家的經驗。近些年來,機器學習被引入到Webshell檢測中,并被證明效果很不錯。因此,如何將自動特征選擇的優勢和基于專家知識的方式的優勢恰當地結合起來成為一個關鍵問題。在這項工作中,作者提出了一種通過強化學習改進基于卷積神經網絡(CNN)的Webshell檢測的新方法。
方法
整體框架圖如下所示,首先從網絡請求的數據流中共提取80種特征,然后使用基于A3C的自動化特征提取方法,將提取得到的特征交由CNN模型進行分類,之后通過分類結果計算獎勵函數從而優化特征選擇過程。周而復始,完成對Webshell的檢測。
作者從流量中提取的特征包括接口基本特征、流量來源特征、流量請求特征、流量響應特征和內容特征。其中,接口特征描述了目標接口本身的安全特性。流量來源特征反映了請求來源的合法性。流量請求特征和流量響應特征就是這個HTTP請求報文中表達的特征。內容特征是HTTP請求正文中特定字段的特征,由正文中的字段結構和字段內容組成。部分典型特征的詳細描述如下表所示。
對于特征選擇階段,使用的是強化學習領域的A3C算法,主要就是要明確獎勵函數、動作空間和狀態這三個概念在本論文中的設置即可。首先,獎勵函數是CNN檢測WebShell的正確率。動作空間為{選擇任意特征,停止特征選擇}。最后,雖然筆者沒有看到明確的狀態空間定義,但是動作空間的描述,合理猜測狀態空間應該是表示特征是否被選擇。
實驗
作者首先針對他們的方法和一些商業軟件進行對比,之后又將他們的方法和沒用使用A3C進行特征選擇的CNN檢測方法進行對比,效果上確實有一定提升。

綜上,作者的方法能夠提高Webshell檢測效果、有效抑制CNN模型過擬合現象。但是,強化學習每做一次動作就要重新訓練CNN模型計算獎勵函數的方式可能會導致效率較低。