應用層下基於異常行為的未知勒索軟體檢測
轉載地址:http://www.freebuf.com/articles/system/152387.html
墨攻安全實驗室通過對國外知名主機端防護軟體進行研究,發現了一個比較好的應用層的勒索軟體檢測方案:通過建立隱藏的誘餌檔案,實時攔截對誘餌檔案的加密操作,從而有效應對未知的勒索軟體。
下面我們以 windows 為例,給出應用層勒索軟體檢測程式碼原型。
1.建立誘餌檔案
關鍵點:
a. 在每個盤的根目錄、Users目錄、Users/Administrator/Documents 目錄建立誘餌。
b. 每次建立誘餌,都建立兩個目錄,一個是資料夾名按字母序能排到第一位,一個是資料夾名按字母序能排到最後一個
c. 建立的誘餌檔案種類涵蓋要儘量全。包括doc、 docx、 pem、jpeg等
a 點保證了勒索軟體試圖加密的目錄裡面都有誘餌。b 點則保證了無論資料夾訪問順序是正序還是逆序,誘餌檔案都能被最先訪問到。c 點保證了誘餌屬於勒索軟體感興趣的檔案。
以上誘餌檔案都是隱藏檔案。
2. 應用層監控檔案加密操作
在windows下面,如果使用檔案過濾驅動,其實很容易做到檔案加密行為的攔截。但鑑於目前的安全防護現狀,對大多數公司以及雲廠商而言,使用驅動帶來的穩定性的擔憂會遠遠超過它帶來的未知勒索軟體防護這種好處。
做安全防護的都知道,寧大家都查不出來,也不能搞死使用者機器啊!
如果不能找到穩定的應用層的解決方案,我們最終保衛地球、為國為民的願望就會流產。
這部分有兩個關鍵點:
a. 應用層檔案系統監控
b. 程序攔截
此處有個蛋疼的地方在於,應用層檔案系統監控發現變動的時候,我們獲得的僅僅是檔名資訊和變動的操作,並不能獲得當前導致變動的程序資訊。就是說,我們知道對哪個檔案有加密行為,但是不知道是誰幹的。
只能去查詢哪個程序持有該變動檔案的控制代碼。Windows下有兩種方式,一種是通過NtQuerySystemInformation來查詢的。一種可以通過 RestartManager來查詢。
主要區別在於NtQuerySystemInformation隨時會被幹掉。而RestartManager是微軟欽定的 api。
查詢到有問題的程序,直接OpenProcess,Suspend即可。(我原來對不 hook不加驅動攔截程序操作總覺得很不解。思維定勢啊)
測試方式:
1.找一臺乾淨的虛擬機器,我的環境是win2008。目前 RestartManager的支援是vista+,故建議環境是win7 , win2008這種。如果你要支援winxp,請將查詢控制代碼的函式用NtQuerySystemInformation 來實現。建議你不設定網路以及共享資料夾。
2.虛擬機器裡面建立以下目錄,並把github上 breadcrumb目錄下的蜜罐檔案放進去。(別問我為啥目錄是這幾個,因為我硬編碼的)
C:\Cversions245
C:\Xdata229
C:\Users\Acly09pk
C:\Users\Qtua
C:\Users\Administrator\Documents\Lmirror147C:\Users\Administrator\Documents\Nsetup158
3.編譯RansomDetection程式碼,放到虛擬機器裡面執行
4.解壓github上 test 目錄下的樣本並執行(這是locker,不是隨便造的勒索軟體)