天天看點

程序管理代碼_惡意代碼隐藏之程序僞裝介紹

惡意代碼隐藏之程序僞裝

介紹

      通常情況下,為了永久駐留在使用者計算機上面,木馬程式會披上厚厚的僞裝,來躲過使用者的常識判斷和一些殺軟的檢測。很多病毒都需要巧妙地隐藏手段來讓自己和一個正常的程式一樣正大光明的運作在作業系統上。隐藏的手段多種多樣,有些是利用較為隐蔽的自啟動和植入技術,不需要額外僞裝也能起到免殺的效果。

程序僞裝

       當一個惡意程式将自己的名稱改為和系統自帶的一些程式名稱相同,有時就能騙過使用者和殺軟的“眼睛”,即使和被冒充的那個程序資訊相同,但是内部執行的代碼确實我們自己定義的,通過修改指定程序的

PEB

中的路徑和指令行資訊來實作僞裝。

  • 一些系統程序的作用
程序名稱 作用描述

smss.exe

會話管理(Session Manager)

csrss.exe

子系統伺服器程序

winlogon.exe

管理使用者登入

services.exe

包含很多系統服務

svchost.exe

包含很多系統服務,從

DLL

中運作的服務的通用主機名稱

SPOOLSV.EXE

将檔案加載到記憶體中以便之後列印

explorer.exe

資料總管
  • 函數介紹

函數

NtQueryInformationProcess

:擷取指定程序的資訊

程式管理代碼_惡意代碼隐藏之程式僞裝介紹
  • 實作原理

       程序僞裝的關鍵在于程序環境塊的擷取,可由上述函數

NtQueryInformationProcess()

來擷取指定程序的

PEB

位址,擷取之後通過調用函數

ReadProcessMemory()

WriteProcessMemory()

來讀寫目标程序記憶體。具體實作流程如下:

  1. 根據

    PID

    打開指定程序
  2. ntdll.dll

    中擷取

    NtQueryInformationProcess()

    函數的導出位址
  3. 使用

    NtQueryInformationProcess

    函數擷取指定的程序基本資訊

    PROCESS_BASIC_INFORMATION

    并從中擷取指定程序的

    PEB

程式管理代碼_惡意代碼隐藏之程式僞裝介紹
  1. 最後,就可以根據程序環境塊中的

    ProcessParameters

    來擷取指定程序的

    RTL_USER_PROCESS_PARAMETERS

    資訊,這是因為

    PEB

    的路徑資訊、指令行資訊存儲在這個結構體 中。調用

    WriteProcessMemory()

    ReadProcessMemory()

    函數可以修改

    PEB

    中的路徑資訊、指令行資訊等,進而 實作程序僞裝。
程式管理代碼_惡意代碼隐藏之程式僞裝介紹

注意:在實作的時候要注意系統的版本是32位還是64位