從流氓軟件說說DLL動態(tài)插入技術(shù)與Rootkit技術(shù) 第一篇 從技術(shù)角度解析流氓軟件
作者:不詳 文章來源:華盟收集 點擊數(shù): 144 更新時間:2007-8-13 1:21:14
早期,流氓軟件在沒有被正式定性為惡意程序時,流氓軟件使用的技術(shù)比較簡單,往往是修改主頁,使用戶只要一登陸瀏覽器,就自動跳轉(zhuǎn)到流氓軟件提供的廣告網(wǎng)址,或者安裝到系統(tǒng)中后,私下收集用戶的信息發(fā)送出去。而后來,隨著利益的驅(qū)動和流氓軟件正式作為惡意程序被反病毒廠商絞殺,流氓軟件采用的技術(shù)也越來越先進,如今已經(jīng)形成了與殺毒軟件對抗的態(tài)勢,魔道之爭真正進入白熱化。 了解了它們使用的技術(shù),會對它們有一個更加清晰的認識,以下便是流氓軟件使用的經(jīng)典技術(shù)。
秘密潛入-流氓軟件的隱藏技術(shù)
隱藏是流氓軟件的天性,也是病毒的一個特征,任何流氓軟件都希望在用戶的電腦中隱藏起來不被發(fā)現(xiàn),由于隱藏的目的,衍生出隱藏的技術(shù)。
首先是隱藏窗口。我們知道,在Windows操作系統(tǒng)下,所有的程序執(zhí)行時都是以窗口的形式出現(xiàn)的,每個窗口都有不同的屬性,流氓軟件的目的就是不想為人所知,因此它們在運行的過程會將自己的程序窗口的屬性設為“不可見”,這樣用戶就看不到程序的窗口了。
但是,我們知道,每個程序運行時雖然用戶看到的是窗口,但是對于系統(tǒng)來說,其實是執(zhí)行了一個進程,對于稍微專業(yè)的用戶來說,雖然窗口不能看見,但是程序產(chǎn)生的進程卻是很容易通過系統(tǒng)的任務管理器看到,從而使流氓軟件暴露。因此便出現(xiàn)了隱藏進程技術(shù)。
隱藏進程其實是調(diào)用了微軟的一個未公開函數(shù),將流氓軟件本身注冊為服務,這樣系統(tǒng)的任務管理器就無法顯示這類程序的進程了,從而達到了隱藏自己的目的。
對于一些細心的用戶來說,電腦出現(xiàn)了新的文件會引起他們的懷疑,因此流氓軟件作者又采用了隱藏文件技術(shù)。它們在安裝時會將自身拷貝到系統(tǒng)目錄,然后將文件的屬性設置為隱藏,這樣,用戶如果采用的是默認系統(tǒng)設置,則就無法看到他們。
但是,這些都是初級的隱藏技術(shù),對電腦熟悉的用戶,只要利用系統(tǒng)提供的工具就可以找到這些流氓軟件的蛛絲馬跡,或者安裝一個防火墻軟件,只要有程序訪問網(wǎng)絡,立刻就會報警,從而能夠暴露流氓軟件的行蹤。
我中有你-流氓軟件的線程插入技術(shù)
為了更好地隱藏自己,流氓軟件開始大量采用線程插入技術(shù)。
上面講到,一個程序進入系統(tǒng)中,會首先產(chǎn)生文件,該文件運行時,會產(chǎn)生窗口,在內(nèi)存中產(chǎn)生進程。進程說白了就是一個被激活了的程序文件。而進程又會產(chǎn)生許多線程。
線程是Windows系統(tǒng)為程序提供的并行處理機制,它允許一個程序在同一時間建立不同的線程,完成不同的操作。另外,由于Windows操作系統(tǒng)為了提高軟件的復用性,減少重復開發(fā)的開銷,采用了動態(tài)鏈接庫機制,即將一些公用的程序放在DLL文件中,程序不用包括這些代碼,只要在運行時對這些DLL文件直接進行調(diào)用就可以完成各種功能,因此每一個可執(zhí)行程序除了自身的程序體外,還包括許多外部的模塊。如果我們用一些內(nèi)存查看工具的話,能看到每一個應用程序都包含了大量的DLL動態(tài)鏈接庫文件。
而流氓軟件正是利用了這一點。他們的可執(zhí)行程序并不是EXE形式的,而是DLL形式,這類文件一般是存在于系統(tǒng)中,由可執(zhí)行程序進行調(diào)用。
而流氓則是將DLL文件載入內(nèi)存,然后通過“線程插入”的方式,插入到某個進程的地址空間。一般地,如果流氓軟件想控制瀏覽器,則它們往往會將自己注入到瀏覽器(explorer.exe)的進程空間,只要瀏覽器運行,就會自動調(diào)用該流氓軟件。
由于瀏覽器程序本身會調(diào)用大量的DLL文件,因此即使用戶用第三方進程查看工具,也分辨不清哪個DLL是流氓軟件。面且,采用線程注入技術(shù)的流氓軟件由于已經(jīng)并入了正常程序的內(nèi)存空間,即使是防火墻程序也不會攔截,從而可以在用戶電腦自由出入。
銷聲匿跡-流氓軟件的RootKit技術(shù)
線程插入對于普通用戶來說,或者對于用戶的手工清除來說,是很難處理的, 但是這些招數(shù)對于殺毒軟件來說,是非常簡單的,為了能夠躲避殺毒軟件的追殺,流氓軟件的研制者又引入了RootKit技術(shù)。
本來RootKit是LINUX的概念,指能夠以透明的方式隱藏于系統(tǒng),并獲得LINUX系統(tǒng)最高權(quán)限的一組程序集。而后來被病毒制作者借鑒,病毒的RootKit技術(shù)指的是那些能夠繞過操作系統(tǒng)的API調(diào)用,直接利用更底層的調(diào)用,然后接管系統(tǒng)的高級API調(diào)用,當有程序試圖查找它們時,便返回假信息,從而得以隱藏自己的技術(shù)。由于目前的殺毒軟件都是直接調(diào)用系統(tǒng)API來進行病毒掃描的,因此采用這種技術(shù)的病毒,都能夠輕松躲避殺毒軟件的追殺,因為如此,所以目前的流氓軟件開始越來越多地采用這種方式來保護自己。
不過,殺毒軟件也開始繞過API調(diào)用,通過更加底層的應用,來對抗這種技術(shù)。
借尸還魂-流氓軟件的碎片技術(shù)
流氓軟件之所以要流氓,那是因為巨大的利益,而為了巨大的利益,流氓就變得更流氓。目前流氓軟件大多數(shù)還會采用一項流行的技術(shù),那就是碎片技術(shù)。這種技術(shù)的思想其實很簡單,就是在進入用戶系統(tǒng)時,就產(chǎn)生多個或相同,或不同的碎片文件,這些文件除了分布在系統(tǒng)目錄、一些盤符的根目錄下,它們還會隱藏在其它軟件的目錄、臨時文件夾、甚至回收站里。
這些文件之間互相保護,一旦一個文件被刪除了,另一些碎片就會重新將這個文件恢復。只要系統(tǒng)中存在有這樣的碎片文件,這些碎片文件只要有一個能夠激活,在用戶連接網(wǎng)絡的時候,就能夠連通網(wǎng)絡進行升級,從而重新還原成一個完整的流氓軟件體系,而且一旦升級,這些新升級的流氓軟件還會將這些碎片文件刪除,然后產(chǎn)生新的碎片文件,從而能夠在一定程度上躲過了反病毒軟件的查殺。
有的流氓軟件多達數(shù)十個碎片文件,這對于手動清除的用戶來說,幾乎是不可能完成的任務,而即便是殺毒軟件也未必能夠?qū)?shù)十種碎片文件都一一識別,因此會產(chǎn)生殺不干凈的問題,即使是只有一個碎片,流氓軟件就有可能通過升級和下載借尸還魂,繼續(xù)為惡。
以上便是目前流氓軟件用得最多的技術(shù),當然,隨著同各種反病毒軟件的對抗,它們會采用越來越多的底層技術(shù),有些流氓已經(jīng)開始采用寫固件的方式,通過BIOS來進行傳播了。而隨著流氓軟件的發(fā)展,手工清除越來越不可能,人們將會越來越依賴于專業(yè)的流氓軟件清除工具。
流氓軟件的8大癥狀
1.強迫性安裝:不經(jīng)用戶許可自動安裝,或者是不給出明顯提示,欺騙用戶安裝 。
2.無法卸載:不提供正常的卸載程序,或當用戶選擇卸載時,不真正卸載。
3.彈出廣告窗:在用戶上網(wǎng)時,頻繁彈出廣告窗口,干擾用戶正常使用電腦
4.首頁修改:瀏覽器的默認首頁,在沒有經(jīng)過用戶的同意擅自被修改。
5.修改瀏覽器:在菜單欄上添加不需要的按鈕,在瀏覽器的地址欄中添非法內(nèi)容,自動添加菜單。
6.資源占用:CPU資源被大量占用,系統(tǒng)變得越來越慢。
7.使瀏覽器崩潰:流氓軟件由于太信賴于瀏覽器,因此,經(jīng)常會出現(xiàn)使瀏覽器莫名崩潰的情況。
8.干擾軟件:流氓軟件為了達到它的常久生存的目的,總是干擾一些如殺毒軟件的正常運行,使這些軟件出現(xiàn)莫名其妙的錯誤。
-- | | - 帖子
- 187
- 積分
- 440
- 貢獻值
- 5
- 表現(xiàn)值
- 377
- 飄香幣
- 3759
- 狀態(tài)
- 當前離線
|