如何使用ssdeep檢測webshell
***版本的ModSecurity增加了ssdeep檢測webshell的接口,于是猛地回憶起搞客戶端安全(游戲安全)的時候買過一本書《惡意軟件分析訣竅與工具箱-對抗“流氓”軟件的技術與利器》,這本書就提到了使用ssdeep來查找惡意軟件(webshell是惡意軟件的一種,安全領域是互通的嘛),本文介紹如何使用它來檢測webshell。
一 、安裝ssdeep
下載ssdeep并安裝 http://ssdeep.sourceforge.net/
tar zxvf ssdeep-2.12.tar.gzcd ssdeep-2.12./configuremakemake install
二、識別webshell實例
接下來我們下載一個webshell,試一試如何使用ssdeep來識別webshell
以b374k.php為例
首先獲得webshell b374k.php的ssdeep hash(fuzzy hashing)值,并存儲到b37_hashs.txt文件中
ssdeep -b webshell/b374k.php >b37_hashs.txt
cat b37_hashs.txt
ssdeep,1.1--blocksize:hash:hash,filename384:UsaSwsF3RtJhwhxY5janx0Rig5xJx52FRsBU0ipgFHF3xR:44snx0Rig5x752EBUxpc5,"b374k.php"
然后使用這個值來獲得相似度,相似度為100(當然啦,因為沒有做任何修改)
ssdeep -bm b37_hashs.txt webshell/b374k.php
b374k.php matches b37_hashs.txt:b374k.php (100)
為了方便理解,我們拿ssdeep與md5做類比
md5 webshell/b374k.php
MD5 (webshell/b374k.php) = b8d3f0f9ad8b1083f24072f8cfe13e04
我們知道對文件取md5值是用于驗證文件的完整性的,因為它對任意的修改都能感受到(hash碰撞小概率事件除外)
而ssdeep則用于計算文件相似度,它是通過計算上下文相關的分段hash值(fuzzy hashing)來判斷文件相似度的。
在識別webshell的場景中,我們可以先獲取樣本的ssdeep hash值,然后設置相似度范圍,來識別同一系列的變形shell
想想一個小白黑客獲得一個好用的webshell后,***件事會干嘛?肯定是改變登錄賬號密碼
cp webshell/b374k.php webshell/b374k.php.bak
vim webshell/b374k.php.bak

想雁過留痕的,估計還會改webshell的title等文本來標記到此一游


心思稍微重點的想繞過WAF的童鞋,說不定還會修改cookie中的關鍵字
例如批量替換cookie txtauth關鍵字

修改完畢后,分別用md5與ssdeep來看發(fā)生了什么
md5 webshell/b374k.php.bak
MD5 (webshell/b374k.php.bak) = b8d3f0f9ad8b1083f24072f8cfe13e04
md5值發(fā)生了變化,說明webshell文本內(nèi)容發(fā)生了變化
接著使用ssdeep來查看修改后的webshell的相似度
ssdeep -bm b37_hashs.txt webshell/*
b374k.php matches b37_hashs.txt:b374k.php (100) #原始webshellb374k.php.bak matches b37_hashs.txt:b374k.php (97)#修改了登錄賬號與作者標記b374k.php.bak2 matches b37_hashs.txt:b374k.php (88)#修改了登錄賬號、作者標記、cookie特征
***,我們選擇一個合適的相似度來判斷是否為webshell(真實場景中,調(diào)參找到合適的閾值才是考驗人的活...)
例如,只篩選相似度90以上的
ssdeep -t 90 -bm b37_hashs.txt webshell/*
b374k.php matches b37_hashs.txt:b374k.php (100)b374k.php.bak matches b37_hashs.txt:b374k.php (97)
三、擴展
除了使用ssdeep來查找相似的惡意軟件(靜態(tài)文本),我們還可以逆向思維,根據(jù)相似度來判斷混在正常進程中的惡意進程,依據(jù)是進程在運行時由于變量變化而發(fā)生的變動是輕微的,而代碼被加殼后的的變化是相當顯著的,例如UPX加殼會使相似度瞬降到0%
參考:
http://blog.spiderlabs.com/2014/11/modsecurity-advanced-topic-of-the-week-detecting-malware-with-fuzzy-hashing.html
《惡意軟件分析訣竅與工具箱-對抗“流氓”軟件的技術與利器》
原文地址:http://danqingdani.blog.163.com/blog/static/1860941952014111291954550/