2007年3月17日 星期六

【轉貼】問世20年 對電腦病毒仍束手無策

問世20年 電腦病毒仍無解



在科技年鑑記載的種種豐功偉業當中,Fred Cohen的貢獻絕對堪稱一絕:是他把「病毒」(virus)一詞引進電腦詞彙。



在1984年發表的研究論文中,這位New Haven大學教授首度使用「病毒」一詞,用來形容 會自我散佈的程式及其帶來的威脅,並建議可能的防禦之道。三年後,他向美國國家科學基金會申請補助以進一步研究反制措施時,卻遭到回絕。



「被他們否決了,」目前也擔任研究公司Burton Group分析師的Cohen說:「他們說,那與時下的興趣不符。」



二十年後的今天,無數的企業和個人仍為那個錯誤決定付出代價。如今,病毒和蠕蟲與日俱增,在網際網路上四處橫行,對電腦構成最大的威脅,但科技業尚未能想出一勞永逸的辦法把它們趕盡殺絕。諸如Sobig和Slammer這類數位傳染病蔓延,導致企業疲於應付,每年損失數十億美元。



在惡意入侵電腦系統的網路駭客備受矚目的同時,電腦病毒的由來為何,卻一直乏人聞問。早期病毒不是忿忿不平的青少年或反社會的電腦高手創造的,而是出自大學研究員、系統管理者和一群舊派駭客之手,他們把程式自動複製的能力視為一種巧妙的功能。



結果是,科技天才、純真學者、傲慢官僚以及渴望反抗體制的民眾共同撰寫了一篇仍在連載中的長篇故事。



賽門鐵克安全反應中心資深研究員Sarah Gordon記得,她在十多年前中了第一隻電腦病毒,讓她對這種現象深深著迷,從而費時數年探究病毒作者藏身暗處的祕密世界。



「網際網路的設計加速各種資訊的傳佈,這是一把雙面刃,」Gordon在最近一場電子郵件訪問中寫道:「即使(病毒)起初並無惡意或危險性,但一旦釋放到外頭就控制不了,可能產生始料未及的後果。」



那正是電腦病毒始祖的遭遇:病毒程式呈等比級數繁衍,可把微小的錯誤放大到極致,使一起無害的惡作劇演變成一波破壞力十足的攻擊。不像孤立網路攻擊只靠簡單的技術發動,可自我繁殖的能力為病毒增添了複雜度,常常連病毒作者本身即使想踩煞車也無能為力。雖然許多程式很快就後繼乏力,但也有些病毒活得遠比作者當初賦予它們的壽命還長。



1983年11月,當時還是南加州大學研究生的Cohen率先構思這個問題時,就隱約預見病毒未來的發展。在一場討論電腦安全性的每週例行座談會上,他就已構思一種可自我複製並感染其他系統的程式。



「突然間,燈泡亮了,我大叫:『啊哈!』」Cohen回憶當年的情景:「在那一瞬間,我知道如何撰寫可行的程式。」



他當時的指導教授,Len Adleman,是著名的公鑰加密(public-key encryption)技術發明者之一,也是著名RSA(Rivest, Shamir & Adleman)安全技術縮寫當中的「A」。Adleman當時說,這種程式可比喻成數位版的病毒。就這樣,「病毒」之名從此根深柢固。



概念的誕生

次年,他發表一篇論文,把病毒定義成「一種可『感染』其他程式的程式,方法是把別的程式加以修改,並且把可能已進化的自身程式包括在其中」。Cohen以實例證明,即使在安全技術存在的環境,這種病毒仍可透過任何允許資訊共享、通譯和傳佈的系統擴散。



為展示病毒的潛在危險,Cohen編寫了一個測試程式,以觀察病毒蔓延的速度可能有多快,進而判斷一部大型電腦主機的安全性如何。他在一個把Unix檔案組織以圖形方式呈現的指令中植入病毒程式,然後執行五次攻擊。



平均來說,在一個半小時之內,病毒即「取得系統權限──實質掌控了電腦。最快的一次只花了五分鍾。



「當時,縱有種種安全技術把關,病毒照樣蔓延,」Cohen說:「那項測試顯示,最不受信賴的使用者是安全防護最弱的環節,而程式能快速蔓延到最受信賴的使用者。」



Cohen的研究成果為病毒下了具體的定義,並展示其他的程式,像是蠕蟲,其實是那個定義下的分支。不過,有一些病毒似的程式在他發表研究報告之前就已經存在,而病毒的許多理論基礎係John von Neumann所建立的,他是電腦學的開山祖師之一。



1903年生於匈牙利,von Neumann為電腦學、數學和物理學的許多支系貢獻了許多具啟發性的研究,包括一種稱為「賽局理論」(game theory)策略的邏輯分析,以及新興的量子物理學支系學派。1948至1956年間,他把同儕也就是著名電腦學家Alan Turing的研究成果發揚光大。



Turing提出通用運算系統(universal computing system)的觀念,意指一種邏輯性的建構體系,使用一個處理器和儲存程式及資料的磁帶,即可解決林林總總的問題。直至今日,電腦仍採用Turing所指的基本分工:處理器與儲存裝置。



Von Neumann把Turing首創的概念進一步擴充,成為一種通用的建構體系,一種可自我複製的系統。這種自我複製的自動機體(automaton),如他所述,採用成千上萬的元素──每一元素均可能處於29種狀態當中的任一種──共同在一個假想的網格(grid)上形成另一個自動機體。這套系統相當複雜,以至於耗時逾40年,才打造出有限度仿造這種系統的硬體。



電腦程式適者生存

Von Neumann的研究後來被當作電腦學新興支派蜂巢式自動裝置理論(cellular automata theory)的基礎,啟發研究員發展簡化的電腦「生物」和投入人工智慧生命領域。受他的開例性研究激勵,三位貝爾實驗室研究員在1960年代初將他的構想付諸行動。



1961年8月,研究員Victor Vyssotsky發明一種稱為「達爾文」(Darwin)的遊戲,讓若干小程式爭相攻佔一個數位地盤。此遊戲的大部分程式由他的同事Douglas McIlroy撰寫,包括執行模擬的程式碼。第三位研究員,Robert Morris Sr.,則創作一個致命的數位生物,會隨時間推進而演化,並且把自己成功的攻擊能力傳給後代。



這個遊戲在IBM 7090系統上執行,後來大致已被遺忘。但這群研究員和他們的後繼者對電腦以及網際網路產生了深遠的影響。



Morris後來轉赴國家安全局任職,1988年11月,他的兒子Robert Jr.創造了第一隻在網際網路上廣為擴散的蠕蟲。儘管「達爾文」的壽命只到IBM 7090電腦系統為止,但這些研究員的娛樂活動卻催生更多的遊戲,包括大受歡迎的「Core War」,係玩家用Redcode語言所寫的作戰程式,然後透過稱為「陣列Redcode模擬器」(或稱MARS)的虛擬記憶場散佈。至今仍有許多死忠愛用者在網路上玩這個遊戲。



但這些數位生物都被關在人工創造的環境。直到一種不同的遊戲問世,才把病毒引進電腦,進而傳染全世界。



那個遊戲稱為「動物」(Animal),是類似「20 Questions」的程式。「20 Questions」在1970年代備受大型電腦操作者的歡迎。該遊戲要玩家聯想一種動物,接著就發問,要玩家提供那一型生物的線索。如果程式猜錯了,就會要求玩家提供一組問題和答案,讓新的動物與其他動物有所區別。



在某大跨國公司擔任UNIVAC(通用自動計算機)系統程式設計師的John Walker,於1974年改寫那種遊戲,並加以改良,讓後來的玩家可修正先前其他玩家輸入的錯誤資料。此遊戲立刻引起熱烈迴響。



從遊戲演變成病毒

在網際網路誕生前的時代,Walker要求前來索取遊戲的人把磁帶寄過來,然後他會把複製一份的遊戲寄回。沒多久,他就對這種費力的過程感到厭煩。「那真的不勝其擾,促使我思考怎樣才是散播遊戲的最佳方式。就是在那個時候,我想出讓遊戲自我複製的點子。」



1975年元月,Walker寫了另一個程式,「Pervade」,此程式可搭新版「動物」遊戲的便車。每回玩家玩「動物」遊戲時,「Pervade」就會執行目錄檢查,然後把自己複製到任一個尚未拷貝一份的目錄,或是覆寫已有的舊版程式。



Walker記得,當時曾花了兩、三個月思索此程式可能產生的影響,以確定不會造成破壞性的錯誤。隨後便發佈出去。



一週之內,另一企業部門的UNIVAC管理者開始傳出「動物」遊戲 突然出現在他們的系統中。數週之後,其他的公司也發現此程式現身於他們的系統。



「過了數月,許多人開始談論這個程式,索取者也增多,」Walker說:「它加速傳播,一方面是靠自我複製到新目錄的功能,另方面也是靠口耳相傳。」



後來,隨著UNIVACT發佈新版作業系統,改變了目錄結構,「Pervade」程式隨即停止運作。但Walker堅稱,將他的程式加以改良,可輕易克服新作業系統的安全功能。



「UNIVAC推出這種種安全措施,但這個例證顯示此威脅讓所有的防禦措施束手無策,」他的話與十年後Cohen的看法遙相呼應。Walker在1980年代初創立Autodesk,至今仍是該公司最大的個人股東。



儘管為病毒無可預知的本性作證,但Walker也未料到他創造的自我複製生物竟能存活得那麼久。



Walker最近聽一位系統管理員說,他的程式至今仍在一部Unisys 2200系統(UNIVAC電腦的後代)上現蹤。Walker說:「它仍在搜尋一個已過時30年的檔案系統。」



進駐個人電腦

桌上型電腦的普及化,讓病毒呈等比級數孳生。個人電腦的盛行不但擴大了病毒可傳染的機器數量,也培養出科技水平高的新一代使用者,賦予他們製造這類程式的知識。



Rich Skrenta就是典型實例。1982年,他還是匹茲堡地區的九年級生,卻已對蘋果二號電腦(Apple II)瞭如指掌,喜歡用軟體來戲弄同學。當時,還是青少年的Skrenta把蘋果二號的程式拷貝給朋友,其中添加了他一些特製的「功能」,例如讓機器在使用次數達到某個數字時便自動關機,然後顯示嘲笑的訊息。



「幾次被我作弄後,沒人願意再接受我提供的軟體,」即將創立搜尋公司Topix.net且將出任該公司總裁的Skrenta說:「所以,我開始思索如何把我的惡作劇程式弄到他們的磁碟上去。」



於是他想到撰寫一個能自我繁殖的程式,可感染蘋果二號磁片。Skrenta的「複製者」(cloner)程式──他未使用「病毒」一詞──傳染的目標是蘋果二號系統磁碟常用的一個指令。他自創的程式,「Elk Cloner」,會計算某磁碟片使用的數目,累計使用到五次,就把電腦關機,或執行其他的「把戲」。每當電腦開機次數累計達第50次,「Elk Cloner」就會顯示一首詩。



四年後,兩位巴基斯坦籍的兄弟(Amjad和Basit Farooq Alvi)創造了第一隻感染IBM PC的電腦病毒,稱為「Brain」病毒。兩兄弟把這個程式當作行銷工具使用:每一份程式都會在電腦螢幕上閃礫一則訊息,為兩兄弟在巴基斯坦開的 Brain電腦服務公司打廣告。



這則訊息說:「當心這隻病毒......請與我們接洽防疫事宜」。至今,此訊息仍張貼在兩兄弟的網站上。



這只是起步而已。儘管病毒和蠕蟲歷經十餘年的演化才達到可觀的數量,但接下來的幾年之間,數量卻飛快暴增。到1990年末,已被辨認出的病毒約200種,如今數目已躍增到超過7萬種。電腦安全協會說,雖然其中只有不到1%的病毒在網際網路上大肆感染電腦,卻已有80%以上的公司染上數位病毒惡疾。



賽門鐵克公司的Gordon說,不同於最早的老前輩,現在大多數病毒的作者都不瞭解病毒程式在網際網路上蔓延的能力有多厲害。「他們大體上只是好奇。他們通常是表達能力強的人,與他人的關係和互動風格各不相同,」她說。



但Cohen表示,今日網際網路病毒背後的複雜學理基礎,早在1980年代就奠定完成。其他的一切,他認為,都不過是技術細節罷了。



「現在我們所知的一切,當時老早就知道了,」他說:「現在我們看到的一切,只是根據舊學問而衍生的技術解決之道。」



數位病毒的形成

從理論到實際應用,自我複製感染的程式碼花了數十年時間才逐漸形成網路威脅,以下是主要發展歷程:



1982年,9年級的學生Rich Skerta撰寫了Elk Cloner程式,成為第一個感染個人電腦(Apple II)的病毒。Elk Cloner透過條列檔案的指令進行散佈,Elk Cloner有時會造成系統當機,在電腦第50次受到感染時,螢幕上會顯示一首詩。



只花8小時

為了研究電腦病毒的理論,研究生Fred Cohen和他的指導教授Len Adleman將病毒植入以圖形顯示檔案結構的程式。這個病毒花了8個小時完成,測試結果顯示,病毒只要30分鍾就可侵入一個系統。



用病毒打廣告

巴基斯坦的一對兄弟Amjad和Basit Farooq Alvi,在1986年撰寫了第一個IBM個人電腦的病毒Brain。許多病毒歷史的研究者相信,Farooq Alvi兄弟是為了替自己的公司Brain Computer Services打廣告。Brain病毒在電腦啟動的開機磁區進行覆寫。



病蟲首度現身

Xerox Palo Alto Research Center的研究員John Shoch和Jon Hupp在1982年的一篇論文當中,使用了「病蟲(worm)」這個名稱,描述他們用來更新乙太網路效能的一個程式。這個程式當中的一個程式臭蟲,結果造成研究中心當中100台電腦當機。論文當中,引用了1972年出版的科幻小說「The Shockwave Rider」當中感染全球網路的「tapeworm」程式,定下了病蟲一辭。



首度見識威力

1988年11月康乃爾大學的研究生Robert Morris Jr.發佈了一個入侵Unix系統漏洞的程式,感染了網際網路上大約5%的電腦。Morris Internet Worm讓網路管理員意識到,這種程式在未來可能成為一個嚴重威脅。



巨集病毒

Sarah Gordon在1995年的時候,撰寫了Concept病毒,成為第一個利用巨集語言散佈的病毒。Gordon以微軟的WordBasic撰寫 Concept,Concept看起來像是Word文件,但是打開之後,卻可以執行另一個有毒程式。Concept病毒僅僅是作為散佈和執行有毒程式的測試之用,並未真的搭配另一個程式。



梅莉莎病毒

1999年3月開始散佈的巨集病毒Melissa是第一個大型的郵件病毒。David L. Smith所設計的Melissa使用了許多之前病毒的程式碼,最初的病毒郵件,則包含了一個成人網站的程式。



台灣來的病毒

依照陳盈豪英文縮寫所命名的Win95.CIH病毒,又稱車諾比(Chernobyl)病毒,在1998年開始出現, 並宣告病毒重回binary code 的時代。一直到2000年都還有利用CIH程式碼的巨集病毒繼續出現。以傳統形式出現的CIH,透過感染檔案和檔案的分享進行散佈,並在每月的26日發作,刪除硬碟資料。



越來越精明

2001年9月,Code Red引發攻擊的兩個月之後,Nimda對財金業造成嚴重攻擊。這個事件讓微軟警覺到病毒從多管道進行感染的可怕之處。Nimda和Code Red所使用的漏洞一樣,不過Nimda也透過硬碟的分享、電子郵件和網站等方式散佈。



快速部隊

第一個以閃電速度肆虐的病毒,則是2003年1月開始散佈Microsoft SQL Slammer。大多數的研究人員認為Slammer得透過有漏洞的網址,不過Slammer卻展現了他小巧及快速的威力。 







──天空藍──







真是神奇



雖然我不得不承認純惡意的病毒是愚蠢的副產品



但一個程式能夠仿效真實世界的病毒複製自己



並極盡所能的逃過使用者和防毒程式的捕捉



不覺得很奇妙嗎ˇˇˇ



唔轉貼這個純粹想讓大家吸收新知XDDD













引自:

http://www.kskg.org/showthread.php?t=30241

http://taiwan.cnet.com/news/special/...0086011,00.htm

http://taiwan.cnet.com/news/software...0086025,00.htm

4 則留言:

  1. 好可怕 我好像討厭看這種密麻麻字的資料|||


    回覆刪除
  2. 沒啦後面比較細節

    其實前面像故事一樣ˇ

    我好想要學寫病毒喔~囧

    回覆刪除
  3. 看無˙ˇ˙

    (我來亂的)

    回覆刪除
  4. 請練習看裹腳布文章好嗎囧

    不然大考會很吃虧啊

    (現在大考有裹腳布化的趨勢囧)

    回覆刪除