記憶體馬其實由來已久,早在十幾年前,記憶體馬的技術雛形就已經在Windows平台出現,以執行緒注入為代表的這一類技術,通過將木馬注入到系統進程和刪除自身進程的方式,來躲避防毒軟體的查殺和實現自身的隱藏。
隨著技術的發展,攻擊目標的變遷,記憶體馬也漸漸在不同的層面獲得了發展,攻擊範圍涵蓋作業系統腳本、進程,Java容器和Web服務程式等,攻擊方式多變且複雜。
由於記憶體馬刪除自身並且在記憶體中駐留隱藏的特點,具有很高的隱蔽性,檢測難度極高。因此,如何快速和準確的檢測出伺服器中是否被植入記憶體馬,對信息系統的安全來說至關重要。
基本介紹
- 中文名:記憶體馬
- 外文名:memory Trojan
- 所屬學科:信息安全
- 別名:無檔案馬
定義,特點,分類,檢測方法,
定義
記憶體馬是指一種只在記憶體中運行,沒有檔案落地或者運行後能夠刪除自身的木馬。
特點
- 無邏輯結構邊界,難以被發現。
記憶體馬僅存在於進程的記憶體空間中,通常與正常的的代碼、數據混淆。
- 缺乏穩定的靜態特徵,難以被識別。
記憶體馬缺乏結構化的靜態形式,它依附於進程運行期間的輸入數據,數據可能被加密混淆,因此,無法通過記憶體馬本身的特徵識別。
- 種類多,檢測機制複雜而多樣。
記憶體馬有二進制代碼片段(Shellcode)、PowerShell腳本、Web中間件等類型,每種類型又可細分,不同類型記憶體馬的執行方式、惡意代碼觸發機制各不相同,導致檢測方式多樣。
分類
當前主流的記憶體馬攻擊通常發生在作業系統腳本和進程、Web服務程式及Java容器中:
針對作業系統
針對作業系統的記憶體馬主要有如下兩類 :
- PowerShell、WMI、VBA、JS、VBS等類型的腳本攻擊,它們會依託系統的一些白程式或工具,通過這些白程式或工具在記憶體中執行腳本程式。
- 二進制Shellcode攻擊,這類攻擊會通過控制程式執行流讓Shellcode獲得執行機會,Shellcode在磁碟中沒有檔案跟它對應,只在記憶體中存在。
針對Web服務程式
針對Web程式的記憶體馬根據開發語言不同有多種如PHP記憶體馬、ASP記憶體馬、Python記憶體馬等
針對Java容器
Java記憶體馬根據實現技術可以分為以下三種類型:Servlet-api類、Spring類、和Instrumentation類
檢測方法
可利用記憶體安全保護技術,結合Hook技術,在VM層部署監控模組,通過VMM層和部署在VM層的監控模組截獲系統底層信息和套用層信息,建立一個有限狀態自動機,對虛擬化層和套用層的行為生成狀態機。最後對程式進行監視,通過狀態機的狀態比對方式發現異常,識別記憶體馬攻擊。