压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

ModSecurity技巧:使用ssdeep檢測Webshell

  最新版本的ModSecurity增加了ssdeep檢測webshell的接口,于是猛地回憶起搞客戶端安全(游戲安全)的時候買過一本書《惡意軟件分析訣竅與工具箱-對抗“流氓”軟件的技術與利器》,這本書就提到了用ssdeep來查找惡意軟件(webshell是惡意軟件的一種,安全領域是互通的嘛)。本文介紹如何使用它來檢測webshell。

  一 、安裝ssdeep

  下載ssdeep并安裝 http://ssdeep.sourceforge.net/

  tar zxvf ssdeep-2.12.tar.gz

  cd ssdeep-2.12

  ./configure

  make

  make 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,filename

  384: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

  ssdeep檢測webshell – 碳基體 – 碳基體

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

  ssdeep檢測webshell – 碳基體 – 碳基體

  ssdeep檢測webshell – 碳基體 – 碳基體

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

  ssdeep檢測webshell – 碳基體 – 碳基體

  修改完畢后,分別用md5與ssdeep來看發生了什么。

  md5 webshell/b374k.php.bak

  MD5 (webshell/b374k.php.bak) = b8d3f0f9ad8b1083f24072f8cfe13e04

  md5值發生了變化,說明webshell文本內容發生了變化;接著使用ssdeep來查看修改后的webshell的相似度

  ssdeep -bm b37_hashs.txt webshell/*

  b374k.php matches b37_hashs.txt:b374k.php (100) #原始webshell

  b374k.php.bak matches b37_hashs.txt:b374k.php (97)#修改了登錄賬號與作者標記

  b374k.php.bak2 matches b37_hashs.txt:b374k.php (88)#修改了登錄賬號、作者標記、cookie特征

  最后,我們選擇一個合適的相似度來判斷是否為webshell(真實場景中,調參找到合適的閾值才是考驗人的活…)。

  例如,只篩選相似度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來查找相似的惡意軟件(靜態文本),我們還可以逆向思維,根據相似度來判斷混在正常進程中的惡意進程,依據是進程在運行時由于變量變化而發生的變動是輕微的,而代碼被加殼后的的變化是相當顯著的,例如UPX加殼會使相似度瞬降到0%。

 

上一篇:智能無懼挑戰 山石網科轟動RSA2015

下一篇:披著羊皮的狼:小心隱藏在“刺客信條”游戲中的惡意程序