亚洲日本免费-啊轻点灬太粗太长了三男一女-麻豆av电影在线观看-日韩一级片毛片|www.grbbt.com

安普諾張濤:再談webshell檢測

 

張濤

一、關于Webshell。

分為Web和shell,Web相當于對外開放的Web服務,Shell是用戶與操作系統之間的一個接口,操作過程中更多的是腳本語言,Webshell某種情況下是網站密碼。它更多的是對網站高危操作,具備高危操作權限。支持的腳本是ASP、PHP、ASP.NET、JSP等。什么情況下Webshell需要呢?一般是我們對網站進行滲透測試后期時,發現這個網站沒有更高權限了,但我們希望它提權,二是長期供應,這時候Webshell就會想到它。

Webshell主要功能。

除了一般的環境探針、資源管理器、文件編輯等,還有權限提升,上面一般會帶內置的POC,還有DDoS對待網絡掛馬。還有黑帽SEO,前段時間一個大型網絡廠商出現一個癥狀,輸入自己官方網站URL沒有問題,可以正常訪問,但當他通過百度或者搜狗、360搜索引擎搜索時,直接跳轉到菠菜網站,當我們后期介入它的應急保障之后,分析跟蹤發現它的服務器存在一些安全漏洞,被植入了14個各種類型的Webshell,相當于是個跑馬場。

Webshell的分類。

業界一般會分為三大類:大馬、好馬和一句話馬。大馬是什么事兒都能干,前面的基本功能、拓展功能都具備;小馬作為文件上傳,為上傳大馬做準備的一個跳轉平臺。一句話木馬相對比較精簡一些,后面是一句話木馬的類型,數據模型和數據傳遞。

Webshell的特點。

它會調用一些系統高危函數,比如eval、system,會有一些操作系統文件函數,比較多的是Webshell相對一般網站正常網頁訪問IP會比較少,訪問次數也比較少,相當于是個孤立頁面。但孤立頁面不一定就是Webshell,比如隱藏性的管理后臺也存在這種情況。Webshell在系統日志里是看不到的,主要是在網站Web日志,訪問Webshell頁面時會產生訪問數據。

二、針對Webshell的檢測。

第一,靜態檢測(靜態特征檢測)。

抽取它的典型特征,比如一句話木馬有一些常見代碼塊,不同的攻擊者會對它進行改造,大致模型是不變的。高危函數,修改時間是不是相對其他文件不一樣。井臺核心檢測依然匹配它的核心特征,比如正則、文件時間聚類、文件關聯度計算。典型Webshell的靜態性特征,檢測時目前市場上商用工具和看用工具基本都能支持。

它的特點是基于規則,會比較快,但漏報、誤報會比較明顯,一般的Webshell一句話木馬變形混淆會比較多。

第二,日志分析檢測。

個別訪問,Webshell頁面訪問次數比較少,訪問總數也比較少,上專Webshell到Web目錄時會自動化重命名,一般是隨機化的比較長的名稱。在GET請求里也有相對比較明顯的控制指令。

日志分析也有一些優缺點,網站新增頁面,在一些大的網站會比較明顯,用日志分析方法,但在一些中小型網站時和傳統的Webshell檢測、正常網頁區別不是特別大。畢竟是日志分析,相當于是事后的,難以觸及運維Webshell自身本質,就是它的腳本語言。

第三,動態檢測。

類似于一個沙箱機制,不管云平臺還是服務器本地,Webshell分析檢測層我們會用hook調用它的可疑函數,這是相對比較精確的,但也有一些問題,這是我們在實踐過程中遇到過,在本地會有一些開銷,而且開銷還是比較大的,在用戶的服務器上。如果我們把它放到一個云平臺上去做時,有很多Webshell是加密的,如何繞過它的加密機制或解決它的自動執行問題,這是在云平臺上需要解決的問題。

第四,統計學檢測。

除了之前幾個方法以外,基于統計學的,主要是長字符串,一般Webshell用base646(115)密碼之后字符會比較長,還有信息熵、重合指數、壓縮碼的方式,來看卡Webshell的可能,激勵的可能性比較大。基于統計學的,也有一些漏報誤報的情況。

三、懸鏡自身工作理念。

深度學習。

我們采用深度神經網絡算法。神經深度網絡具有端到端的學習能力,可以將我們研究對象原始表示方法直接輸入到模型中,從而避免人工設計特征帶來的劣勢,只要是特征,就涉及到特征顆粒度問題;一定會對原有信息有一定損耗。腳本原碼輸入模型,我們做預處理,相對原先的腳本原代碼,我們做了去噪,比如空格、換行符等做了處理,對字符串的線性結構轉換成更清晰,更緊湊的樹型結構,比如抽象語法樹。還涉及數據壓縮和向量化技術。

我們提出一些流水線整個檢測流程,包括預處理、樣本生成和檢測模塊。(圖)我們實現的關鍵技術是基于詞法單元流的循環神經網,主要流程包括預處理模塊,樣本生成模塊、檢測模塊。預處理模塊,我們做的主要工作是分詞,分詞做完之后我們還可以對一些加密文件根據再處理,處理完再做基本的過濾和替換。接下來是樣本生成模塊,考慮到不同的腳本文件它生成的詞法單元流的差距較大,比如一個大馬形成的我們對應處理的文件有幾萬個節點,但一句話木馬有幾十個,差異巨大。

我們采用了兩種方法,一是完全隨機的采樣、抽樣,二是采取貪心算法的抽樣。最終形成利用Word 2 vactor(音),將它向量化提交給我們的機器學習模型。

預處理模塊主要做了一些詞法分析,按照字符讀取腳本原代碼,最后將屬于同一個詞法單元的字符組合在一起,也就是詞法單元對象,我們并為其添加一些屬性。

我們在實踐過程中也遇到了加密的情況,對字符串進行嘗試解碼,做完解碼之后再做嘗試詞法的分析,直到結束。接下來我們對字符串、整數、浮點數的常量按統一規則做整體的替代。比如馬化騰、馬云,我們認為在不同上下文中其實代表了是一類,李彥宏標記時我們也用一類,類似于用shot int種統一的字符串常量統一標記。

神經網絡,這是我們在實踐過程中經典的RNN神經網絡模型。為什么用這種模型呢?主要原因是我們的詞法單元流向量長度不一,它具有上下文的關系。大家如果熟悉RNN算法的話應該知道,它對序列化處理能力,特別是添加了一些記憶單元處理得比較出色,向量1、向量2的我們提交的一些輸入,通過LSTM,長短期進行二層處理,處理完交給我們拼接層,再進一步將中間結果處理之后交給三層全鏈接層。層數的一層兩層三層,基本根據大家在訓練中的經驗進行調倉,當然層數處理復雜問題越強,但帶來的訓練損耗也會越大。

除了TNS-RRN技術之外,我們自己嘗試創新發明了一個基于抽象語法樹的遞歸循環神經網絡,它相對于前面的TNS-RRNN最主要的區別是,對抽象語法樹,語法分析做了更進一步的處理,在前期預處理主要做了抽象語法樹的構建。前面也重點強調了,一般腳本文件的大馬抽象語法樹有上萬個節點,一般木馬是幾十個節點,差距是巨大的,這樣的情況下,我們需要對抽象語法樹進行進一步壓縮。我們實心的路徑是,對一般的抽象語法樹會用一組規模較小的抽樣指數進行替換,最后交給檢測模塊LSTM進行處理。

抽象語法樹主要是語法分析器對詞法單元流進行語法分析,構造出一個抽象語法樹,比如圖中加法復制語句可以自然構造出一個抽象語法樹,但這個抽象語法樹里的噪音還是比較多的。接下來我們考慮對這個樹進行簡化,一是分葉節點,葉節點通常存放標量信息,例如自定義變量名、常量值等,我們需要把葉節點單獨提取出來進行亮相化表示,后期訓練直接提交給訓練模型。二是輔助節點基本提供的是輔助信息,對我們后續的構造沒有多大幫助,經過反復實驗,我們是將一些輔助信息刪除,最后得到簡化后的抽象語法樹。

葉子節點向量化表示。

深度學習模型核心是數學計算模型,它的輸入是向量化表示,操作方法從兩個方面入手,一是危險函數,構建危險函數列表,將葉子節點包含的危險函數用詞袋模型表示。二是統計特征,統計學上,主要是5個,NeoPi方法中字符串長度、重合指數、信息熵幾個重要指標考慮進去,嵌入到程序代碼和編碼中,其中重合指數代表的是字符串序列里任意的一段函數重合的概率,重合概率越大代表相當于它是個正常文件,一般Webshell經過編碼或加密之后隨機性會比較大。

基于抽象語法樹的遞歸循環神經網絡的檢測模塊。

我們依據語法樹的遞歸思想,一般一棵樹的向量化表示主要由它的根結點及子樹結合的根節點,通過非線性結合運算而成。前面的葉子節點向量化表示主要是通過特征工程,比如它的一些規則,統計學的方法把它形成我們向量化表示,而對于子樹集合的向量化表示,通過依次將它們輸入到LSTM長短期記憶層進行計算而成。最后提交給拼接層,由拼接層將中間處理結果提交給全鏈接層,最后做預期處理。

這是我們通過深度學習得出來的一個結果,無論是在準確率還是召回率上,前幾年有比較火的SVM知識向量機的方法大幅度提升。我們對前兩種方法做了綜合,將中間結果提交給選型訓練結果,準確率和召回率上有進一步提升。通過市面上一些規則檢測的產品還是有明顯優勢。這里要提一下,這也有今后需要改進的地方,比如檢測時間,SVM是300毫秒左右,在檢測率比較高的計算模型能達到900毫秒,這對于實際的商用部署還是有一些影響,所以我們將它部署到我們GPU云平臺上。

我們全球安全實驗室在Webshell檢測方面所做的工作。

將研發基于詞法單元流、神經網絡和抽象語法樹,遞歸循環神經網絡Webshell檢測等技術,這個技術已經申請了專利,將這些技術應用到我們產品神經復習衛士(音)當中,并已經提供商用。在Web安全威脅深度檢測上,去年12月份全球安全實驗室發布了第一款國內第一看用深度學習SQL注入檢測并提供公測,也得很多團隊進行深度學習,正式發布出來的用于SQL注入檢測的我們當時是第一家做到的。

除了Webshell檢測以外,語言分析技術和深度學習技術結合,也將在惡意代碼分析、漏洞挖掘等諸多安全領域發揮重要作用。

上一篇:天空衛士楊明非:核心數據資產的管理和保護

下一篇:農信互聯李元龍:登山之路——互聯網公司安全建設的心得體會