說說計算機惡意代碼
解濱
前兩天寫了一個關於上網安全的帖子,有不少網友表示贊同我的觀點,也有網友提出了一些問題。 我覺得有些問題還是要從技術的角度上說詳細一點,這樣大家也許會有進一步的了解。
有人以為,只要從不下載,不安裝任何不花錢的軟體,從來不在任何不收費的網站註冊,不去獲那些所謂的大獎,上網就很安全。 這是古代的觀點。 如果抱著這種觀點去上網,那麼我對你說:Good luck!
對計算機有害的東西,我們統稱「malware」,中文翻譯成「惡意軟體」。 這個詞在十年前還沒有,是個新詞。Malware是從「malicious software」合併而成。 Malware 裡面大致可分為六類:病毒(Virus),蠕蟲(Worm),木馬 (trojan horse),間諜軟體(spyware),惡意廣告(adware)和 rootkits。
計算機病毒是什麼大家都知道了。 病毒的一個生存條件是要「粘」在一個現成的軟體或文件中,跟隨軟體或文件的傳播而傳播。 蠕蟲不需要「粘」在別的軟體或文件中,可以自我繁殖,自我傳播,惡性膨脹。 木馬是一種可以「合法正當」的面目存在於計算機中的,道貌岸然的惡意軟體,其目的是打開一個「後門」供黑客隨時侵入。 間諜軟體的目的是竊取計算機上的信息,如密碼,銀行賬戶信息,信用卡賬號,等等。惡意廣告,顧名思義,是用來播發垃圾廣告的。Rootkits是用來獲取目標計算機的管理許可權。
另外,還有一些malware並不那麼惡毒,但也居心不良。 例如,tracking cookies,其目的是跟蹤你的上網行為,然後報告給有關的公司。 那些廣告公司根據這些結果來向你推銷產品。 當然tracking cookies也可以用來達到profile一個人的目的。 根據一個人的某些上網特點來決定要不要對該人下手。
如果上網時從不下載,不安裝任何不花錢的軟體,從來不在任何不收費的網站註冊,不去獲那些所謂的大獎,那最多只能減少被計算機病毒和某些木馬感染的幾率。 其它的惡意軟體,都是從網路直接傳播的,跟你下載不下載軟體沒有關係。 例如蠕蟲,只要你的計算機存在某個安全漏洞,那麼蠕蟲可以自動發現那個漏洞,只要你的計算機在網上,哪怕你不去任何網站,都會被蠕蟲感染上。 要不被蠕蟲感染,唯一的辦法就是我上次文章里說的那樣,及時打安全補丁。
間諜軟體,惡意廣告,tracking cookies,這些都是在上網的時候才有可能跑到你的計算機上的,但跟你下載不下載毫無任何關係。 說的再清楚一點,你只要訪問那些含有那些個惡意代碼的網頁了,即使不點擊任何東西,不下載任何東西,你的計算機照樣會被那些東東感染。 英文把這一過程叫做「drive-by installation 」。
間諜軟體是最惡毒的東西。 它的目的是窺探你計算機中的機密。 例如,有一類間諜軟體叫「key logger」,其目的是通過記錄你的按鍵來偷竊你的passwords。
那麼,我們如何知道我們的計算機被感染了呢? 這就是我說的防毒軟體。 還有一個重要的好習慣,就是不去訪問那些毫無任何accountability的網站。
一個有accountability的網站,會想盡一切辦法避免其用戶被感染上那些malware的。 例如,MySpace那個網站,八年前是最紅的。 他們曾經允許用戶自己帶來一些代碼在那個網站上運行。 但那樣一來,許多惡意代碼也就魚目混在在那些用戶代碼之中。 我當時在自己的僱主那個公司發現公司的很多計算機是被MySpace感染的。 於是我通知管理防火牆的部門阻止員工訪問MySpace。 很快,MySpace發現他們的網站被很多公司阻攔,於是就開始嚴打,把那些東東一掃而光,恢復了那個網站的名譽。
谷歌、微軟、雅虎,乃至於非死不可、新浪、倍可親,都是有accountability的網站。 這些網站是要靠運營賺錢,所以就必須對客戶負責。 客戶出了問題,他們必須解決。 大的例子太遠。 就拿貝殼村來說,有的村民覺得每一次軟體系統升級都帶來一些不便,使一些多媒體的東東玩不轉了,必須加以修改才能運行。 其實每一次升級都是包括了軟體補丁,其目的是堵住一些安全漏洞。 雖然造成了一點不便,但這是對用戶負責的一個具體行動。 如果你訪問一個沒有基本信息的網站,那個網站毫無accountability,出了問題,你去找誰?
有人認為,我的IP即使被人知道,又能拿我怎樣? 大不了知道我住在某個城市而已,難道能知道我的住址、姓名、電話號碼等信息嗎? 知道了你的IP,在你計算機上放一個key logger,壞人對你的所有passwords就一覽無餘了,這包括你訪問你銀行網站的passwords。 都能進入你的銀行賬戶了,難道還需要知道你更多的信息嗎? 另外,知道了你住在哪個城市,把你的博客閱讀一遍,你的很多東東就可比較容易地挖出來。 另外,知道你的IP,下次你造馬甲可就不那麼容易了,哈哈。
一個大的惡意代碼網站,往往會很快被計算機安全公司抓住,然後通過防毒軟體、防火牆等辦法防止網民的計算機被那些網站感染。
最難辦的是那些既無註冊信息又沒有明確的accountability的網站。 那些小網站散布的malware由於感染的計算機數量不大,不會引起計算機安全公司的重視。 所以即使安裝了殺毒軟體、防火牆,按時打補丁,也很難防止被那些小網站感染。 最好的辦法,就是不去訪問那些網站。
會寫軟體的,大都能寫一點惡意代碼。 寫一套小型惡意代碼,大概幾個小時就行了。 網上有大量的現成的惡意代碼的源代碼,稍加改寫,又會生成新的惡意代碼。
這些道理,可能說了也白說。