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