久久综合丝袜日本网手机版,日韩欧美中文字幕在线三区,亚洲精品国产品国语在线,极品在线观看视频婷婷

      <small id="aebxz"><menu id="aebxz"></menu></small>
    1. Windows NT/系統(tǒng)下進程隱藏的基本技術(shù)和方法

      時間:2022-06-30 05:29:33 技工 我要投稿
      • 相關(guān)推薦

      Windows NT/2000系統(tǒng)下進程隱藏的基本技術(shù)和方法

        摘要 進程的隱藏一直是木馬程序設(shè)計者不斷探求的重要技術(shù),本文采用遠程線程技術(shù),通過動態(tài)鏈接庫方法,較好地解決了這一問題,通過遠程線程將木馬作為線程隱藏在其他進程中,從而達到隱藏的目的。

        關(guān)鍵字進程 線程 木馬 動態(tài)鏈接庫

        木馬程序(也稱后門程序)是能被控制的運行在遠程主機上的程序,由于木馬程序是運行在遠程主機上,所以進程的隱藏無疑是大家關(guān)心的焦點。

        本文分析了Windows NT/2000系統(tǒng)下進程隱藏的基本技術(shù)和方法,并著重討論運用線程嫁接技術(shù)如何實現(xiàn)Windows NT/2000系統(tǒng)中進程的隱藏。

        1 基本原理

        在WIN95/98中,只需要將進程注冊為系統(tǒng)服務(wù)就能夠從進程查看器中隱形,可是這一切在Windows NT/2000中卻完全不同, 無論木馬從端口、啟動文件上如何巧妙地隱藏自己,始終都不能躲過Windows NT/2000的任務(wù)管理器,Windows NT/2000的任務(wù)管理器均能輕松顯示出木馬進程,難道在Windows NT/2000下木馬真的再也無法隱藏自己的進程了?我們知道,在WINDOWS系統(tǒng)下,可執(zhí)行文件主要是Exe和Com文件,這兩種文件在運行時都有一個共同點,會生成一個獨立的進程,尋找特定進程是我們發(fā)現(xiàn)木馬的方法之一,隨著入侵檢測軟件的不斷發(fā)展,關(guān)聯(lián)進程和SOCKET已經(jīng)成為流行的技術(shù),假設(shè)一個木馬在運行時被檢測軟件同時查出端口和進程,我們基本上認為這個木馬的隱藏已經(jīng)完全失敗。在Windows NT/2000下正常情況用戶進程對于系統(tǒng)管理員來說都是可見的,要想做到木馬的進程隱藏,有兩個辦法,第一是讓系統(tǒng)管理員看不見你的進程;第二是不使用進程。本文以第二種方法為例加以討論,其基本原理是將自已的木馬以線程方式嫁接于遠程進程之中,遠程進程則是合法的用戶程序,這樣用戶管理者看到的只是合法進程,而無法發(fā)現(xiàn)木馬線程的存在,從而達到隱藏的目的。

        2 實現(xiàn)方法

        為了弄清實現(xiàn)方法,我們必須首先了解Windows系統(tǒng)的另一種"可執(zhí)行文件"----DLL,DLL是Dynamic Link Library(動態(tài)鏈接庫)的縮寫,DLL文件是Windows的基礎(chǔ),因為所有的API函數(shù)都是在DLL中實現(xiàn)的。DLL文件沒有程序邏輯,是由多個功能函數(shù)構(gòu)成,它并不能獨立運行,一般都是由進程加載并調(diào)用的。因為DLL文件不能獨立運行,所以在進程列表中并不會出現(xiàn)DLL,假設(shè)我們編寫了一個木馬DLL,并且通過別的進程來運行它,那么無論是入侵檢測軟件還是進程列表中,都只會出現(xiàn)那個進程而并不會出現(xiàn)木馬DLL,如果那個進程是可信進程,(例如瀏覽器程序IEXPLORE.EXE,沒人會懷疑它是木馬吧?)那么我們編寫的DLL作為那個進程的一部分,也將成為被信賴的一員,也就達到了隱藏的目的。

        運行DLL方法有多種,但其中最隱蔽的方法是采用動態(tài)嵌入技術(shù),動態(tài)嵌入技術(shù)指的是將自己的代碼嵌入正在運行的進程中的技術(shù)。理論上來說,在Windows中的每個進程都有自己的私有內(nèi)存空間,別的進程是不允許對這個私有空間進行操作的,但是實際上,我們?nèi)匀豢梢岳梅N種方法進入并操作進程的私有內(nèi)存。動態(tài)嵌入技術(shù)有多種如:窗口Hook、掛接API、遠程線程等,這里介紹一下遠程線程技術(shù),它只要有基本的進線程和動態(tài)鏈接庫的知識就可以很輕松地完成動態(tài)嵌入。

        遠程線程技術(shù)指的是通過在另一個進程中創(chuàng)建遠程線程的方法進入那個進程的內(nèi)存地址空間。我們知道,在進程中,可以通過CreateThread函數(shù)創(chuàng)建線程,被創(chuàng)建的新線程與主線程(就是進程啟動時被同時自動建立的那個線程)共享地址空間以及其他的資源。但是很少有人知道,通過CreateRemoteThread也同樣可以在另一個進程內(nèi)創(chuàng)建新線程,被創(chuàng)建的遠程線程同樣可以共享遠程進程(是遠程進程)的地址空間,所以,實際上,我們通過一個遠程線程,進入了遠程進程的內(nèi)存地址空間,也就擁有了那個遠程進程相當?shù)臋?quán)限。

        3 實施步驟

        1) 用Process32Next()函數(shù)找到宿主進程,獲取宿主進程ID,并用

        OpenProcess()函數(shù)打開宿主進程。

        2) 用VirtualAllocEx()函數(shù)分配遠程進程地址空間中的內(nèi)存。

        3) 用WriteProcessMemory()函數(shù)將待隱藏的DLL的路徑名。

        4) 拷貝到步驟二已經(jīng)分配的內(nèi)存中。

        5) 用GetProcAddress()函數(shù)獲取LoadlibraryA()函數(shù)的實地址(在kernel32.dll中)。

        6) 用CreateRemoteThread()函數(shù)在遠程進程中創(chuàng)建一個線程。

        7) 它調(diào)用正確的LoadlibraryA()函數(shù)。

        8) 為它傳遞步驟二中分配的內(nèi)存地址。

      【W(wǎng)indows NT/系統(tǒng)下進程隱藏的基本技術(shù)和方法】相關(guān)文章:

      受力分析的基本技巧和方法03-21

      面試方法和技術(shù)07-11

      會議座次安排的基本方法和要求07-13

      如何管理windows的操作系統(tǒng)07-03

      Windows 10優(yōu)化提速方法07-11

      淺析windows7系統(tǒng)下顯卡出現(xiàn)問題會出現(xiàn)的幾個故障07-02

      解決exe進程無法關(guān)閉的情況的方法07-11

      基于ZigBee技術(shù)和Android系統(tǒng)智能家居系統(tǒng)的設(shè)計07-02

      化妝的基本方法07-03

      諾基亞windows8 系統(tǒng)怎么軟件07-12