騰訊lake2 :Webshell檢測的前世今生

青藤雲安全|騰訊lake2 :Webshell檢測的前世今生

本文作者lake2

lake2,逾十五年網絡安全經驗,現任騰訊安全平臺部總監,負責騰訊的數據保護、入侵檢測、DDoS防護、安全漏洞收斂等基礎安全體系建設運營;創立了國內首個企業自建漏洞獎勵平臺騰訊安全應急響應中心(TSRC)、安全研究團隊Tencent Blade Team以及騰訊藍軍。

從名動安全圈的白帽黑客,到如今的網絡安全專家,十五年來,lake2一直奮戰於安全一線,用技術踐行著自己的網絡安全守護夢。

Web時代,ASP、PHP這種新興的動態腳本技術被大量網站使用,即由服務端執行腳本程序返回結果給客戶端,客戶端的瀏覽器僅展示結果。如果服務端執行的腳本是一個控制服務器的後門程序呢?那這就是被稱為WebShell的Web後門程序(相對傳統的命令行Shell而言,這是一種基於Web的Shell)。

WebShell是與冰河、灰鴿子這種傳統二進制木馬不同的一類木馬,它是文本文件,由Web Server運行環境解釋執行的。跟所有的新技術一樣,它給安全行業帶來了新的挑戰:1)當時基於特徵檢測的殺毒軟件根本沒見過這種新木馬,更不要說查殺了;2)它本身是一個CGI文件,控制走的HTTP協議,對網絡層的防火牆來說這就是一次網頁瀏覽行為,查不了也攔不住。

當年著名的WebShell有cmd.asp、海陽頂端ASP木馬(還有個全是粉紅色的紅粉佳人修正版)、c99shell、PHP一句話、PHPSpy、JSPSpy、ASPXSpy等,我也貢獻過最小的ASP木馬(eval一句話)及其客戶端還有ASP.Net環境的WebShell(WebAdmin系列)。

下圖是著名的海陽頂端ASP木馬和PHPSpy:

青藤雲安全|騰訊lake2 :Webshell檢測的前世今生

青藤雲安全|騰訊lake2 :Webshell檢測的前世今生

後來殺毒軟件倒是更新了字符串特徵,但是解釋執行的文本語法鬆散,變形很多,很容易就變形躲過檢測,而且還可以找一些不常用的能執行代碼的函數;防火牆也更新了特徵,會簡單檢測下HTTP請求及返回內容,發現一些關鍵字可能阻斷,這個更容易繞過,簡單做個字符移位變換即可。

老是寫WebShell沒意思,我看市面上沒有好的WebShell查殺工具,就寫了一個ASP WebShell查殺工具(ASP版和VBS版都有,整合到了“雷客圖ASP站長助手”裡面),採用了樸素的字符串特徵加人工確認的方式,把可疑的ASP文件找出來輔助管理員判斷是否是WebShell。可惜現在源代碼我自己也沒有了,幸好網上可以下載到。

來看一下更新日誌:

青藤雲安全|騰訊lake2 :Webshell檢測的前世今生

還看到不少老熟人哦:

青藤雲安全|騰訊lake2 :Webshell檢測的前世今生

吹噓下史上第一個WebShell對抗眾測(順便懷念一下邪惡八進制論壇):

青藤雲安全|騰訊lake2 :Webshell檢測的前世今生

可惜VBScript、ASP、ASP.Net統統沒落了。

後來我加入騰訊安全中心,正好參與建設服務器安全系統“洋蔥”,就把PHP、JSP、ASP、ASPX這些語言的WebShell特徵全部提取了一遍,基本上可以發現當時市面上所有的WebShell,連見多識廣的烏雲白帽之王“豬豬俠”ring04h嘗試後也不得不承認“騰訊在PHP安全領域的防護實力,當屬國內第一”。當然,要縱深防禦,更要在事前防禦,送你一個Web安全秘訣:“目錄默認不可寫,可寫目錄不解析,Web Server非root,管理頁面不對外”。

青藤雲安全|騰訊lake2 :Webshell檢測的前世今生

這段時間的WebShell檢測主要是以字符串特徵碼正則表達式檢查為主,分為強特徵和語言特徵,強特徵就是那種只出現在WebShell的字符串,比如腳本文件裡面出現“WebShell”、“wscript.shell”、“海陽頂端”、“kevin1986”、“lcx”、“4ngel”等字樣就立即視為WebShell,簡單粗暴有效絕無錯誤但容易被變形繞過(不過確實遇到一個誤報,4ngel後來又寫了一個Blog程序SaBlog);另一種是WebShell使用的腳本語言高危函數,如CreateObject、.exec、.run,也可以進行一些簡單的字符串跟蹤,最後再用各個特徵權重綜合判斷,會有誤報和漏報。還有一種思路是通過網絡流量來檢測,利用WebShell在HTTP傳輸中的特徵來檢測,同樣容易被繞過。

有檢測就有對抗,WebShell進入對抗時代,各種針對性的新的變形方法被提出來,腳本語言鬆散的語法使得簡單地通過特徵字符串來檢測WebShell越來越顯得吃力,急需新的檢測方案。新的方案大致可以分為以下幾類:


1. 動態執行。採用RASP方式,把腳本運行起來,各種危險函數都hook掉,各種混淆就失效了,還可以實時阻止後門行為。xti9er、bghost一直在做這方面的研究,取得一些成績,後面讓他們分享下;

2. 語義分析。把代碼進轉換成語法樹,然後去進行分析,還可以帶上汙點追蹤和虛擬執行,各種奇怪語法和混淆最終會現形。從代碼分析安全漏洞常使用這種方法;

3. 統計分析。通過對文件信息熵、元字符、特殊字符串頻率等統計方式發現WebShell有別於正常文件的規律,老牛曾經嘗試過用貝葉斯;

4. 機器學習。通過機器學習方法來對各類樣本做訓練生成模型,發現異常。不過這種方法需要大量樣本做基礎訓練,而有些算法可解釋性比較差,不利於運營。職業欠錢在騰訊時也帶隊實測過,AI在一定場景下有效;另外就是算法人員需要了解一定的安全知識,我還記得當時算法團隊說樣本不足以訓練,要flyh4t給出十萬個WebShell樣本來,flyh4t氣得把桌子都摔了;


在WAF語義分析引擎眾測完畢後,我們的“洋蔥”團隊也推出了基於語義分析新的WebShell檢測引擎眾測活動,同時青藤雲安全也將推出新的檢測WebShell的雷火引擎,兩者殊途同歸,都採用了新的檢測方案。我跟青藤雲安全CEO張福交流過(也實測過),雷火引擎的思路和效果都很不錯。另外,青藤雲安全即將推出的兩個新產品/服務也不錯,很有新意,不得不擊節讚賞。

接下來,TSRC和青藤雲安全將會聯合開展WebShell對抗眾測,以攻促防,互相交流,歡迎大家來玩。詳情可關注TSRC和青藤雲安全官方微信公眾號。

一個點有可能可以繞過,但是整個縱深防禦模型難以繞過,期待有人能突破邊界。一代人終老去,總有人正年輕。

青藤雲安全|騰訊lake2 :Webshell檢測的前世今生

騰訊lake2將作為【雷火引擎】公測賽的專家裁判之一,對賽事給予最為公正、最為權威的判別。

諸神之戰來襲,百萬賞金,挑戰極限,你會是最耀眼的白帽英雄嗎?欲知活動詳情,請查看微信號“青藤雲安全資訊”。


分享到:


相關文章: