相關文章:Windows 7初階防毒概念(續篇)
我常聽到一些「比較專業」的IT人員說,「使用者裝了防毒軟體也就算了,但是一點防毒的概念都沒有,以為這樣就不會中毒嗎?」
但是,一般人聽到這種話,大概會有如下的想法:
「是啊?不然哩?」
在前兩期裡,本欄大致說明了「安裝防毒軟體」和「USB儲存裝置」的安全防護原則,但這期我想要更進一步說明病毒的運作原理,以及防毒軟體的保全之道,希望對於一般企業的電腦使用者,能提供一些夠用的「防毒概念」。也許不能「保證」什麼,但至少你對於電腦發生的事情能夠有個梗概性的認識吧!
精巧脆弱的開機程序
用電腦都得先開機,從打開電源一直到作業系統載入完成,這就是俗稱的「開機程序」。由於病毒大多會設法讓自己成為「開機程序」的一部分(以便寄生並感染),所以你得先知道這整個程序有哪些步驟:
1. 電源開啟,如果硬體一切正常則進行下一個步驟
2. BIOS(基本輸入/輸出系統)執行例行開機檢查,然後以預設的儲存裝置接管開機程序
3. 依照業界公認的規格,預設的開機裝置(通常是硬碟機)開始進行軟體開機程序,依序載入作業系統的核心、驅動程式……
4. 作業系統核心載入後,還可以依據設定,載入使用者指定的各種常駐程式(防毒軟體、IM軟體……)
上述的每一個開機程序中,從這一個步驟轉到下一個步驟,都會留下一個「掛鉤點」。比方說,主機板上的BIOS系統要把執行儲存媒體的開機程序,它會從固定的位置去執行開機命令,這固定的位置是哪裡?我們一般人不用知道,但這位置鐵定是公開的規格。
所以,寫作業系統的人知道儲存媒體開機的位置,寫磁碟維護程式的人也知道,寫工具程式的人知道,而寫病毒的人……當然也知道,所以就有所謂的「開機型病毒」。
不過,現代這種「開機型病毒」很罕見了,主要是因為開機後,載入的作業系統都相當龐大且複雜,這類病毒難以在這麼複雜的開機狀況下還能正常運作。目前大部分的病毒,大多選擇在作業系統這一塊進行破壞。
不能開機的可能性有……
不管是Windows、Mac OS、Linux還是BSD,作業系統的起始載入都是由精巧的循序步驟所構成,一環接著一環。作業系統通常必須設定處理器的運作模式,載入系統核心、驅動程式和繪圖介面,然後載入常駐程式,最後再把使用權交給使用者。如果這一連串「精巧」卻也「脆弱」的過程出了一點小差錯,系統載入不能,使用者就會說「啊我這臺電腦掛了/當機了/葛屁了/不能開了/死掉了……種種說法,不一而足:
● 驅動程式出了問題
● 核心程序出了問題
● 儲存OS核心程序的磁碟出了問題
● 使用者的常駐程式出了問題
只要有一個小環節出錯,就可能讓作業系統無法正常載入──幸好這種狀況不會常常發生。
到此為止,上述的概念聽起來都似乎很簡單?
請引進「記憶體」的概念
無論是哪個作業系統,等開機程序完成後,使用者就可以執行各種應用軟體。比方說,你可以執行瀏覽器、文書處理程式、影片播放程式……,具體的行為就是用滑鼠在應用程式的圖示上,連續按兩下滑鼠左鍵,是的,就是這麼的「easy」。
只是一般人時常忘記的是:電腦裡有個很重要的「元件」,稱為「記憶體」。當使用者按下電源,執行開機程序時,這程序很重要的一個步驟就是:把作業系統的核心「從儲存媒體載入到記憶體裡面」。
作業系統的核心載入到記憶體裡面之後,依照開發廠商的設計,會不斷地維護著自身核心和使用者應用程式的正常運作,這個過程一樣是精巧而脆弱的。此外,由於程式是「人」寫的,若是寫程式的人「亂寫」(無論是有意還是無意的),應用程式有可能會造成作業系統核心程序被破壞而導致當機。
至於病毒呢?
病毒會希望自己能夠有下列能力:
● 常駐在記憶體中,把自己偽裝成作業系統的一部分
● 偽裝的過程中,最好讓任何人、任何軟體都發現不到
● 盡可能不要干擾原先程式的運作,以免自己被察覺
● 盡可能用各種方法,把自己(病毒)附身到別人(別臺電腦)身上
● 如果有必要,可以作一些對作者有用(或是好玩)的事情,包括竊取個資、造成破壞……
可執行檔學問多
好,如果病毒要把自身藏到記憶體中,首先它得讓你去「執行」它。
問題是,哪個人會傻傻執行病毒──如果病毒的額頭上寫著「我是病毒,來喔來喔,來執行我」,那你會去碰它嗎?鐵定不會吧!(也許會有例外……但我不想討論這種例外。)
所以,病毒的寫作者會想方設法、處心積慮的讓使用者在不知不覺中執行之,以達成「感染」的目的。
所以,「可執行檔」,就成了大部分病毒「寄生」的主要目標了。
所謂的可執行檔,就是我們所說的「程式」、「軟體」,通常這類軟體也是一個(或數個)檔案所構成。前面已經說過,軟體要載入到記憶體中,才能被使用者所執行、運用之,因此軟體的作者會使用開發工具將「原始程式」編譯成「可執行檔」,然後運送給使用者,讓使用者可以執行之。
以前,可執行檔只有固定幾種格式:副檔名是.COM、.EXE、.BAT的,這些都是可執行檔。到了Windows 7時代,這還是沒變。不過,Windows後來引進了很多「比較罕見」的可執行檔案格式。比方說,.DLL是「動態連結程式庫」,它也是一種「必須依附在主程式」底下的一種可執行檔案;.SCR是螢幕保護程式,它也是一種特殊功能的可執行檔;.MSI(Windows Installer Package)通常見於「安裝程式」,但是……它也是一種可執行檔;有些敘述檔,像是.VBS、.JS……,它們也是可執行檔案。
這裡有一個「可執行檔案」的副檔名列表,看到這類副檔名就要小心了,有害的東西就可能藏身於其中。執行就是最危險的事
問題是,Windows預設會隱藏它認得的檔案的副檔名,所以,老實說,你也不知道你到底執行了什麼。
那也沒關係,各位只要想像:當你在某個圖示上按兩下滑鼠左鍵時──你肯定是要執行什麼。
執行個什麼時──你一定要記住:這是我們「使用者絕對要注意的『Red Flag』信號了」。如果有個什麼事情你一定得提高警覺的話,除了「有人問你密碼」這件事情以外,另一件事就是這個了。
所以,你一定要記住:
「執行個啥東西時一定要小心。」
就這麼簡單。
因為,很多病毒會依附在可執行檔案裡面,你「一執行就中毒了」。不僅如此,中毒的電腦沒清乾淨前,它們會不斷感染電腦裡的檔案,或是發出病毒信件,或是感染伺服器上的其他檔案……而且這類病毒還會修改系統設定,讓使用者「即使發現不對了」的清理工作變得困難──有時幾乎是不可能。
所以,有時候,中毒的電腦非得整個重裝不可,就是因為所有的可執行檔都被感染而無法復原了。
Internet更是「地獄之門」
但是,恐怕還有個真正防不勝防的東西──那就是網頁!
當你用瀏覽器去連任意一個網頁,老實說……地獄之門就打開了(我上期已經用過這梗了,算老梗)。因為網頁可以讓你作很多事,執行很多功能──而且大多是自動而你不自知的。正常的網頁當然不會整你,或是讓你中毒……但是,不正常的網頁其實還不少哩!
事實上,各位要知道,瀏覽器本身就是個「執行者」,它本身就是被設計成「用來執行各種功能」的工具。不僅如此,作業系統尚有所謂的「相容性」問題,但是瀏覽器本身就被設計成所謂的「跨平台」,最好所有的瀏覽器都能有相同的能力,好讓網頁開發者可以寫一個功能──就可以讓全世界所有的使用者都能使用──gosh!世界大同的實現真是莫過於此了。但是,這也讓網頁病毒撰寫者有了可乘之機……有什麼方式會讓這些病毒寫手更省事呢?當然是寫個跨平台的萬用病毒啦!
網頁類病毒的形式很多,有的會利用所謂的「敘述」(JavaScript)不斷地彈跳惱人的視窗,有的會偷偷地把病毒塞到你電腦,有的會直接執行一些該死的動作……而且老實說,這類問題要比可執行檔中毒更麻煩,因為使用者根本無法知道。
所以,防毒軟體(或是所謂的Internet Security)在這種情況下就異常重要了。
本期結論:不讓病毒被執行的方法
那麼,能夠只靠使用者的小心就防堵病毒的流竄嗎?如果可以,那我也可以當藍帶廚藝學校畢業的廚師了……顯然這不可能嘛,所以我們得系統化的想想,每一個環節之下,我們可以做什麼,底下是一些常見的「防堵毒的方法」列舉:
● 每個程式都要經過某種認證
為了不讓使用者執行到不該執行的髒東西,於是作業系統廠商就規定「你所執行的每個程式都要給它檢查過」。呵呵,你覺得好笑?不,iPhone就是這樣──雖然它本意未必是要防毒,可是這個封閉系統就還相當安全──因為所有軟體上架都要經過Apple核可。
● 每個程式(只要被認定有危險性)都要使用者同意執行
Windows Vista/7底下有個UAC,只要判斷你的程式有危險性就會跳出來要你「確定」,這樣會讓病毒「比較難默默的感染你」,只是一般人還沒受其利,可能就氣到先關掉這功能了。但平心而論,要防毒又要方便,這也是某種程度的必要之惡。
● 裝上防毒軟體
防毒軟體「理應」可以防堵可執行檔病毒,而防火牆軟體「理應」可以防堵來自Internet內外的攻擊,而且你別說「我都不亂執行髒東西我不用裝防毒軟體」──最好是,你最好都不要上網。有些網路蠕蟲根本只是利用所謂的「漏洞」直接鑽到你電腦的記憶體裡面,然後你的網路連線就自動癱瘓了。你就算什麼都不做,也會有中毒的可能。所以請一定要用防毒軟體──不管是免費版還是付費版。
● 執行任何「可執行」的東西,你都得多注意
確實,很多人亂執行程式──並順帶執行到病毒,這是殺傷力最大的問題──何故?因為,這是「你自己去執行到的」,所以病毒逮到機會就絕對可以為所欲為,它會替換系統註冊檔,隱身到電腦硬碟的深處,感染各種重要的檔案……結果呢?結果就是「輕則重裝,重則死當」,所以這未必是「唯一原則」,但確實是一般使用者所該知道的最重要原則。
熱門新聞
2025-12-12
2025-12-12
2025-12-15
2025-12-12
2025-12-12
2025-12-12