自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在內(nèi)存中檢測惡意軟件

存儲(chǔ) 存儲(chǔ)軟件
本文將介紹一些基于內(nèi)存的攻擊中最常見的技術(shù),并尋求一種低干擾方法來檢測隱藏在內(nèi)存中的攻擊。

 

本文將介紹一些基于內(nèi)存的攻擊中最常見的技術(shù),并尋求一種低干擾方法來檢測隱藏在內(nèi)存中的攻擊。

內(nèi)存攻擊技術(shù)

內(nèi)存攻擊常見的技術(shù)包括shellcode注入,反射式DLL注入,內(nèi)存模塊,Process Hollowing,重寫模塊以及Gargoyle(ROP / APC)。

ShellCode注入技術(shù)

Shellcode注入是最基本的內(nèi)存攻擊技術(shù),也是使用時(shí)間最長的。 shellcode注入的基本方法是包含四個(gè)步驟:

1.打開目標(biāo)進(jìn)程(OpenProcess);

2.在進(jìn)程中分配一大塊內(nèi)存(VirtualAllocEx);

3.將shellcode有效內(nèi)容寫入新分配的部分(WriteProcessMemory);

4.在遠(yuǎn)程進(jìn)程中創(chuàng)建一個(gè)新的線程來執(zhí)行shellcode(CreateRemoteThread);

臭名昭著的遠(yuǎn)程控制木馬Poison Ivy使用就是這種技術(shù),這是多年來其吸引很多APT攻擊組織的一個(gè)重要原因。

如果你使用x64dbg提取Poison Ivy樣本并在VirtualAllocEx上設(shè)置斷點(diǎn),你將能很快找到負(fù)責(zé)注射的代碼塊。

 

如上圖所示,調(diào)用VirtualAllocEx之前的push 40指令對(duì)應(yīng)于PAGE_EXECUTE_READWRITE的頁面訪問保護(hù)值。在ProcessHacker下面的一個(gè)Poison Ivy植入的內(nèi)存布局的截圖中,你可以看到它分配了以下這些RWX部分。

 

典型的代碼部分類型為“Image”,并映射到磁盤上的文件。不過,由于有些類型不會(huì)映射到磁盤上的文件。因此,它們被稱為未回調(diào)的可執(zhí)行部分或浮動(dòng)代碼。從這些類型的內(nèi)存區(qū)域開始的線程是異常的,是惡意活動(dòng)進(jìn)行攻擊的預(yù)兆。 ProcessHacker還可以顯示惡意軟件線程的調(diào)用堆棧,調(diào)用堆棧中會(huì)有多個(gè)函數(shù)不映射到與加載的模塊相關(guān)聯(lián)的內(nèi)存。

 

反射DLL注入

由Steven Fewer開發(fā)的反射式DLL注入是另一種內(nèi)存攻擊技術(shù)。 Metasploit的Meterperter有效載荷是第一次完全把這種技術(shù)工具化的嘗試,截至目前,仍有許多惡意軟件家族在使用Meterperter有效載荷。反射式DLL注入通過創(chuàng)建一個(gè)DLL,在執(zhí)行攻擊時(shí)會(huì)將自身映射到內(nèi)存中,而不依賴于Window的加載器。除了shellcode被替換為自映射DLL,注入過程與shellcode注入是一樣的。添加到DLL的自映射組件負(fù)責(zé)解析導(dǎo)入地址,修復(fù)重定位以及調(diào)用DllMain函數(shù)。攻擊者可以從C / C ++而不是匯編語言編寫更高級(jí)別的語言。

經(jīng)典反射式DLL注入,如Meterpreter所使用的,很容易被檢測到。因?yàn)檫@個(gè)過程中留下了大量的RWX內(nèi)存部分,即使是關(guān)閉會(huì)話進(jìn)程。這些未回執(zhí)的可執(zhí)行存儲(chǔ)器部分的開頭包含完整的MZ / PE標(biāo)題,如下圖所示。但是,其他反射式DLL實(shí)現(xiàn)可以刪除標(biāo)題并修復(fù)內(nèi)存泄漏。

 

加載在內(nèi)存中的DLL也方便地導(dǎo)出一個(gè)名為ReflectiveLoader()的自描述函數(shù)。

 

內(nèi)存模塊

內(nèi)存模塊是另一種內(nèi)存駐留攻擊技術(shù),它類似于反射式DLL注入,注射器或加載器負(fù)責(zé)將目標(biāo)DLL映射到內(nèi)存而不是DLL映射本身。本質(zhì)上,內(nèi)存模塊加載器重新實(shí)現(xiàn)了LoadLibrary函數(shù),但它在內(nèi)存中的緩沖區(qū)而不是磁盤上的文件中起作用。最初的設(shè)計(jì)是為了在當(dāng)前流程中進(jìn)行映射,但升級(jí)后的技術(shù)可以將模塊映射到遠(yuǎn)程進(jìn)程。大多數(shù)攻擊的實(shí)現(xiàn)都會(huì)使用目標(biāo)DLL的部分權(quán)限,并避免使用痕跡太重的RWX方法。

NetTraveler是一個(gè)使用內(nèi)存模式攻擊技術(shù)的惡意軟件家族。NetTraveler在啟動(dòng)時(shí),它解包核心功能并將其映射到內(nèi)存中。頁面權(quán)限更接近于合法的DLL,但是內(nèi)存區(qū)域仍然是私有的,而不是映像過來的。

 

活動(dòng)線程在這些私有區(qū)域有起始地址,調(diào)用堆棧還顯示了這些惡意部分。

 

Winnti是使用內(nèi)存模塊技術(shù)的另一個(gè)惡意軟件家族,如下所示,它們會(huì)在第一頁的部分權(quán)限上有一小部分內(nèi)存模塊。

 

然而,Winnti的示例顯然更加先進(jìn)一些,因?yàn)镈LL中的MZ / PE頭被擦除,使其更難以檢測。

 

Process Hollowing

Process Hollowing是現(xiàn)代惡意軟件常用的一種進(jìn)程創(chuàng)建技術(shù),雖然在使用任務(wù)管理器之類的工具查看時(shí),這些進(jìn)程看起來是合法的,但是該進(jìn)程的代碼實(shí)際上已被惡意內(nèi)容所替代。

它涉及創(chuàng)建一個(gè)暫停的進(jìn)程,從進(jìn)程中取消映射的原始可執(zhí)行文件,為進(jìn)程分配和寫入一個(gè)新的有效載荷,使用SetThreadContext將原始線程的執(zhí)行重定向到新的有效載荷,最后調(diào)用ResumeThread來完成。而更加隱蔽的變體會(huì)使用創(chuàng)建/映射部分API來避免WriteProcessMemory。寫入代碼后,必須知道進(jìn)程新的入口點(diǎn)在哪里,新的Process Hollowing攻擊都會(huì)采用跳轉(zhuǎn)來修改入口點(diǎn),而不是使用SetThreadContext。

DarkComet是使用Process Hollowing的許多惡意軟件家族之一,它可以同時(shí)使用幾種工具來檢測Process Hollowing,它的惡意活動(dòng)會(huì)用CREATE_SUSPENDED標(biāo)志攻擊過程的發(fā)生,如以下所示的DarkComet樣本。

 

重寫模塊

到目前為止,所有討論的技術(shù)都能導(dǎo)致執(zhí)行非映像支持的代碼,因此可以直接對(duì)這些代碼進(jìn)行檢測。而重寫模塊技術(shù)則避開了這些,使其更難以被檢測。該技術(shù)包括將未使用的模塊映射到目標(biāo)進(jìn)程,然后用自己的有效載荷重寫模塊,F(xiàn)lame病毒是第一個(gè)大規(guī)模利用此技術(shù)的惡意軟件家族。最近,Careto和Odinaff惡意軟件家族也使用了重寫模塊技術(shù)。可以使用各種技術(shù)來檢測重寫模塊的使用,主要利用的是將存儲(chǔ)器與磁盤上的相關(guān)數(shù)據(jù)進(jìn)行比較。

GARGOYLE

gargoyle是一個(gè)將一個(gè)程序的所有可執(zhí)行代碼都隱藏在不可執(zhí)行的內(nèi)存塊中的技術(shù)。在一些程序員定義區(qū)間內(nèi),gargoyle會(huì)活躍起來,結(jié)合一些ROP欺騙,把自己標(biāo)記為可執(zhí)行并實(shí)施攻擊。

在掃描內(nèi)存來尋找異常時(shí),通常會(huì)掃描可執(zhí)行的內(nèi)存塊,gargoyle可以在Windows上實(shí)現(xiàn)將數(shù)據(jù)隱藏在不可執(zhí)行的內(nèi)存塊中。

檢測這種攻擊者技術(shù)的一種方法是檢查線程和用戶APC,以獲取ROP鏈的證據(jù)。

如何檢測內(nèi)存中的攻擊

鑒于這些技術(shù)的廣泛應(yīng)用,安全人員必須對(duì)基于內(nèi)存的攻擊技術(shù)保持高度警惕。然而,目前大多數(shù)安全產(chǎn)品還無法大規(guī)模地對(duì)這種技術(shù)進(jìn)行檢測,從而使其肆意橫行。

為此,有安全公司實(shí)現(xiàn)了可以廣泛進(jìn)行檢測的方法,即在其PowerShell工具Get-InjectedThreads上實(shí)現(xiàn)了一種相對(duì)較低干擾的內(nèi)存威脅檢測方法。該方法可以掃描系統(tǒng)上的活動(dòng)線程可疑的起始地址。用戶可以利用它掃描其網(wǎng)絡(luò)中的主機(jī),并快速識(shí)別許多內(nèi)存常駐惡意軟件技術(shù)。該腳本通過使用NtQueryInformationThread函數(shù)查詢每個(gè)活動(dòng)線程來檢索其起始地址。然后,使用VirtualQueryEx函數(shù)查詢起始地址,以確定相關(guān)的節(jié)點(diǎn)屬性。如果線程啟動(dòng)的存儲(chǔ)器區(qū)域是未回調(diào)的并且是可執(zhí)行的,即不是映像類型并且具有執(zhí)行位設(shè)置,那么該線程就被認(rèn)為是注入的。下圖就顯示了在感染9002 RAT樣本的系統(tǒng)上運(yùn)行時(shí)的樣本檢測。

 

該腳本將捕獲各種惡意軟件家族利用shellcode注入,反射DLL,內(nèi)存模塊和一些Process Hollowing技術(shù)。但是,它不能替代全面防止內(nèi)存攻擊的安全產(chǎn)品,如EndGame。

責(zé)任編輯:武曉燕 來源: 4hou
相關(guān)推薦

2021-11-18 14:01:25

網(wǎng)絡(luò)安全數(shù)據(jù)技術(shù)

2019-03-26 09:11:32

無文件惡意軟件

2013-10-29 15:17:41

2021-03-08 11:47:34

內(nèi)核Linux內(nèi)核模塊

2021-06-02 09:36:49

物聯(lián)網(wǎng)惡意軟件IoT

2021-06-03 10:16:15

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)設(shè)備惡意軟件

2010-03-02 10:28:11

2012-12-10 09:49:28

2017-04-14 08:33:47

2014-03-13 09:28:34

2017-07-24 13:42:38

2011-05-16 09:30:59

2013-11-20 09:47:40

2021-11-02 11:48:39

深度學(xué)習(xí)惡意軟件觀察

2022-10-27 13:38:25

2012-11-19 13:25:21

2021-12-15 08:00:00

YARA安全工具

2014-02-24 09:13:49

2024-01-18 08:38:34

.NET數(shù)組內(nèi)存管理

2020-10-04 11:25:18

安全技術(shù)工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)