萬盛學電腦網

 萬盛學電腦網 >> 病毒防治 >> 流氓軟件技術篇:技術角度解析流氓軟件

流氓軟件技術篇:技術角度解析流氓軟件

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

copyright © 萬盛學電腦網 all rights reserved