对进程的隐藏技术
進(jìn)程的隱藏
- 隱藏進(jìn)程并不被查殺
- 一、進(jìn)程的偽裝
- 二、基于系統(tǒng)服務(wù)的進(jìn)程隱藏技術(shù)
- 三、基于API HOOK的進(jìn)程隱藏技術(shù)
- 四、基于 DLL 的進(jìn)程隱藏技術(shù):遠(yuǎn)程注入Dll技術(shù)
- 五、基于遠(yuǎn)程線程注入代碼的進(jìn)程隱藏技術(shù)
- 六、Rootkit方式
- 七、比較
隱藏進(jìn)程并不被查殺
工作接到的第一個任務(wù)(如何讓一個進(jìn)程隱藏,并且不被殺毒軟件查殺掉,并且是在64位的操作系統(tǒng)上)
典型的進(jìn)程隱藏的技術(shù)有:
- 進(jìn)程的偽裝
- 基于系統(tǒng)服務(wù)的進(jìn)程隱藏技術(shù)
- 基于API HOOK的進(jìn)程隱藏技術(shù)
- 基于 DLL 的進(jìn)程隱藏技術(shù):遠(yuǎn)程注入Dll技術(shù)
- 基于遠(yuǎn)程線程注入代碼的進(jìn)程隱藏技術(shù)
- Rootkit方式
一、進(jìn)程的偽裝
對病毒木馬來說,最簡單的進(jìn)程偽裝方式就是修改進(jìn)程名,例如將本地文件名修改成services.exe等系統(tǒng)進(jìn)程名,從而不被用戶發(fā)現(xiàn)。進(jìn)程偽裝指的是可以修改任意指定進(jìn)程信息,即該進(jìn)程信息再系統(tǒng)中顯示的是另一個進(jìn)程的信息。這樣指定進(jìn)程和偽裝進(jìn)程相同,但實際,執(zhí)行的操作是不同的。
二、基于系統(tǒng)服務(wù)的進(jìn)程隱藏技術(shù)
在win9x系列操作系統(tǒng)中,系統(tǒng)進(jìn)程列表中不能看到任何系統(tǒng)服務(wù)進(jìn)程, 因此只需要將指定進(jìn)程注冊為系統(tǒng)服務(wù)就能夠使該進(jìn)程從系統(tǒng)進(jìn)程列表中隱形。(Windows 9x是指對Windows 95及Windows 98、Windows ME等以Windows 95作基礎(chǔ)的微軟操作系統(tǒng)的通稱。)
三、基于API HOOK的進(jìn)程隱藏技術(shù)
API HOOK指的是通過特殊的編程手段截獲WINDOWS系統(tǒng)調(diào)用的API函數(shù),并將其丟棄或者進(jìn)行替換。 通過API HOOK編程方法,截獲系統(tǒng)遍歷進(jìn)程函數(shù)并對其進(jìn)行替換,可以實現(xiàn)對任意進(jìn)程的隱藏。(SSDT HOOK也是其中的一種)
四、基于 DLL 的進(jìn)程隱藏技術(shù):遠(yuǎn)程注入Dll技術(shù)
DLL文件沒有程序邏輯,不能獨立運行,由進(jìn)程加載并調(diào)用,所以在進(jìn)程列表中不會出現(xiàn)DLL文件。如果是一個以DLL形式存在的程序,通過某個已有進(jìn)程進(jìn)行加載, 即可實現(xiàn)程序的進(jìn)程隱藏。
在windows系統(tǒng)中, 每個進(jìn)程都有自己的私有地址空間, 進(jìn)程不能創(chuàng)建屬于另一個進(jìn)程的內(nèi)存指針。而遠(yuǎn)程線程技術(shù)正是通過特殊的內(nèi)核編程手段, 打破進(jìn)程界限來訪問另一進(jìn)程的地址空間, 以達(dá)到對自身進(jìn)行隱藏的目的。
遠(yuǎn)程線程注入DLL技術(shù)指的是通過在某進(jìn)程中創(chuàng)建遠(yuǎn)程線程的方法進(jìn)入該進(jìn)程的內(nèi)存空間, 然后在其內(nèi)存空間中加載啟動DLL程序。
(http://www.cnblogs.com/BoyXiao/archive/2011/08/11/2134367.html)參考文章鏈接
五、基于遠(yuǎn)程線程注入代碼的進(jìn)程隱藏技術(shù)
這種方法與遠(yuǎn)程線程注入 DLL 的原理一樣,都是通過在某進(jìn)程中創(chuàng)建遠(yuǎn)程線程來共享該進(jìn)程的內(nèi)存空間。所不同的是,遠(yuǎn)程線程注入代碼通過直接拷貝程序代碼到某進(jìn)程的內(nèi)存空間來達(dá)到注入的目的。因為程序代碼存在于內(nèi)存中, 不僅進(jìn)程列表中無法檢測, 即使遍歷進(jìn)程加載的內(nèi)存模塊也無法找到被隱藏程序的蹤跡。
六、Rootkit方式
Intel CPU 有4 個特權(quán)級別: Ring 0, Ring 1, Ring 2, Ring 3。Windows 只使用了其中的 Ring 0 和 Ring 3 兩個級別。(RING0層擁有最高的權(quán)限,RING3層擁有最低的權(quán)限。按照Intel原有的構(gòu)想,應(yīng)用程序工作在RING3層,只能訪問RING3層的數(shù)據(jù),操作系統(tǒng)工作在RING0層,可以訪問所有層的數(shù)據(jù),而其他驅(qū)動程序位于RING1、RING2層,每一層只能訪問本層以及權(quán)限更低層的數(shù)據(jù)。如果普通應(yīng)用程序企圖執(zhí)行RING0指令,則Windows會顯示“非法指令”錯誤信息。)
Rootkit 是攻擊者用來隱藏自己的蹤跡和保留 root 訪問權(quán)限的工具,它能使攻擊者一直保持對目標(biāo)機(jī)器的訪問,以實施對目標(biāo)計算機(jī)的控制。從 Rootkit 運行的環(huán)境來看,可將其分為用戶級 Rootkit 和內(nèi)核級Rootkit。
用戶態(tài)下,應(yīng)用程序會調(diào)用 Win32子系統(tǒng)動態(tài)庫(包括Kernel32.dll, User32.dll, Gdi32.dll等)提供的Win32 API函數(shù),
它們是 Windows 提供給應(yīng)用程序與操作系統(tǒng)的接口,運行在Ring 3 級。用戶級 Rootkit 通常就是通過攔截 Win32 API,建立系統(tǒng)鉤子,插入自己的代碼,從而控制檢測工具對進(jìn)程或服務(wù)的遍歷調(diào)用,實現(xiàn)隱藏功能。
內(nèi)核級Rootkit是指利用驅(qū)動程序技術(shù)或其它相關(guān)技術(shù)進(jìn)入Windows 操作系統(tǒng)內(nèi)核,通過對 Windows 操作系統(tǒng)內(nèi)核相關(guān)的數(shù)據(jù)結(jié)構(gòu)或?qū)ο筮M(jìn)行篡改,以實現(xiàn)隱藏功能。
由于Rootkit 運行在 Ring 0 級別,甚至進(jìn)入內(nèi)核空間,因而可以對內(nèi)核指令進(jìn)行修改,而用戶級檢測卻無法發(fā)現(xiàn)內(nèi)核操作被攔截。
下面介紹兩種使用 Rootkit 技術(shù)來實現(xiàn)進(jìn)程隱藏的方法。注冊表來實現(xiàn)啟動,因而易于被檢測出來。顯然,要增強(qiáng)進(jìn)程的隱蔽性,關(guān)鍵在于增強(qiáng)加載程序文件的隱藏性。
https://www.cnblogs.com/BoyXiao/archive/2011/09/03/2164574.html
使用DKOM方法進(jìn)行進(jìn)程隱藏。在Windows操作系統(tǒng)中,系統(tǒng)會為每一個活動進(jìn)程創(chuàng)建一個進(jìn)程對象EPROCESS,為進(jìn)程中的每一個線程創(chuàng)建一個線程對象 ETHREAD。
在 EPROCESS 進(jìn)程結(jié)構(gòu)中有個雙向鏈表 LIST_ENTRY,LIST_ENTRY結(jié)構(gòu)中有FLINK 和BLINK 兩個成員指針,分別指向當(dāng)前進(jìn)程的前驅(qū)進(jìn)程和后繼進(jìn)程。
如果要隱藏當(dāng)前進(jìn)程,只需把當(dāng)前進(jìn)程的前驅(qū)進(jìn)程的BLINK 修改為當(dāng)前進(jìn)程的BLINK,再把當(dāng)前進(jìn)程的后繼進(jìn)程的FLINK修改為當(dāng)前進(jìn)程的FLINK。
七、比較
| 注冊系統(tǒng)服務(wù) | 較差 | 很好 | 簡單 | 簡單 | 存在于系統(tǒng)服務(wù) | win9x 系列 |
| API HOOK | 很好 | 很好 | 較難 | 簡單 | 仍以進(jìn)程存在 | winNT及以上 |
| 注冊表注入DLL | 一般 | 很差 | 簡單 | 簡單 | 以DLL形式存在于所有加載user32.dll的進(jìn)程中 | winNT及以上 |
| Rundll32加載DLL | 一般 | 好 | 簡單 | 簡單 | 以DLL形式存在于Rundll32.exe進(jìn)程中 | winNT及以上 |
| 遠(yuǎn)程線程注入DLL | 較好 | 很好 | 較難 | 較復(fù)雜 | 以DLL形式存在于任一進(jìn)程中,包括系統(tǒng)進(jìn)程 | winNT及以上 |
| 遠(yuǎn)程線程注入代碼 | 很好 | 較好 | 很難 | 很復(fù)雜 | 存在于任一進(jìn)程的內(nèi)存空間中,包括系統(tǒng)進(jìn)程 | winNT及以上 |
參考文獻(xiàn):
總結(jié)
- 上一篇: 2020博客之星年度总评选 - 显示排名
- 下一篇: 我的日程安排表(理解代码)学习记录Jav