第二代Process隱藏技術:Process Injection 或 DLL Injection
1.Process Injection是什麼
在Windows中,每個Process都有自己的專有記憶體位址空間,當使用指標查詢記憶體時,一個Process無法存取另一個Process的記憶體位址空間。
在應用程式被執行後,就相當於將應用程式裝進容器裏了,你可以往容器裡加其他東西(如:應用程式在運行時所需的變數資料、需要引用的DLL檔案等) 。
但仍有很多種方法可以打破Process的界限,查詢另一個Process的記憶體位址空間,那就是”Process Injection”。
而利用或植入Process中的DLL檔案手法則特稱之為”DLL Injection” 。例如木馬(鍵盤側錄)的DLL插入了另一個程式(帳號密碼程式)Process的記憶體位址空間後,就可以對另一個程式為所欲為。
2.木馬是如何盜走遊戲或MSN密碼
正常情況下,一個應用程式所接收的鍵盤、滑鼠操作的訊號,別的應用程式是”無權過問”的。可盜號木馬是怎麼偷偷記錄下我的密碼的呢?
木馬首先將1個DLL檔插入到MSN的Process中並成為MSN Process中的一個Thread ,這樣該木馬DLL就赫然成為了MSN的一部分!然後在用戶輸入密碼時,因為此時木馬DLL已經進入MSN Process的內部,所以也就能夠接收到用戶傳遞給MSN的密碼輸入了,真是“家賊難防”啊!
3.如何插入Process
使用註冊表插入DLL (第二代技術)
早期的Process插入式木馬的伎倆,通過修改註冊表中的[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs]來達到插入Process的目的。
缺點是不即時,修改註冊表後需要重新啟動才能完成Process Injection 。 但目前也有些新一代的木馬不必重新啟動也能達到啟動木馬服務的效果。