淺談關(guān)于Unix系統(tǒng)下的病毒特點(diǎn) (1) |
作者:e4gle 發(fā)文時(shí)間:2005.08.09 |
![]() |
ELK CLONER:第一個(gè)計(jì)算機(jī)病毒,它將會(huì)得到你磁盤上所有的東東,它甚至將滲透到芯片內(nèi)部,這就是Cloner!它會(huì)象膠水一樣粘住你,它還會(huì)修改內(nèi)存! 計(jì)算機(jī)病毒是大量的電子破壞技術(shù)手段中最著名的成員。它們實(shí)際上就是一些非常危險(xiǎn)的惡意程序,它們是丑陋的,不過(guò)在我看來(lái)它們很可愛,源于我對(duì)Internet的駕馭和對(duì)計(jì)算機(jī)程序的探索。它們會(huì)復(fù)制自己并且可以傳染其它文件,這些被傳染的文件甚至包括了那些很清白的文檔文件。而且它們很容易獲得,他們可以隨處傳播,任何時(shí)間、任何地點(diǎn)。實(shí)際上,沒有一個(gè)OS可以完全抵御病毒,一個(gè)病毒可以完全依靠系統(tǒng)本身進(jìn)行復(fù)制,比如利用Windows系列操作系統(tǒng)的pe格式的可執(zhí)行文件和利用類unix操作系統(tǒng)的elf格式。所以,任何計(jì)算機(jī)病毒都依附于OS的體系結(jié)構(gòu),各種OS的病毒的寫法都不一樣,但任何OS也逃避不了病毒,包括Linux。 正如以上所說(shuō),Linux也可以被感染,就像Windows NT或者M(jìn)ac OS這樣的操作系統(tǒng)一樣。不論是PC機(jī)上的DOS或Windows,或者是Amiga,都可以創(chuàng)造出病毒代碼。那么,我們?yōu)槭裁床粊?lái)看看在Windos NT或Linux系統(tǒng)上的一些病毒呢? 你也許會(huì)奇怪,事實(shí)上第一個(gè)計(jì)算機(jī)病毒是Unix病毒(有可能第一個(gè)就是ElkCloner,好象是編寫于1980到1982年之間)。FredCohen在4BSD的VAX系統(tǒng)上編寫了一些非常早的Unix病毒,一年以后ElkCloner就誕生了。由于Unix系統(tǒng)具有內(nèi)存保護(hù)機(jī)制,所以人們不太相信Unix系統(tǒng)上的病毒的危害性會(huì)超過(guò)Windows和DOS系統(tǒng),但他們錯(cuò)了。 一些公共的誤區(qū) 一個(gè)最大的誤區(qū)就是很多高性能的安全系統(tǒng)對(duì)病毒蔓延的預(yù)防。因?yàn)槲覀兪抢肈OS系統(tǒng)和它本身并不存在任何內(nèi)存保護(hù)機(jī)制和數(shù)據(jù)保護(hù)機(jī)制,我們認(rèn)為病毒可以完全控制計(jì)算機(jī)的所有資源。是的,它們會(huì)很輕易地成為DOS和簡(jiǎn)單Windows操作系統(tǒng)的完全控制用戶。沒有內(nèi)存保護(hù)機(jī)制和數(shù)據(jù)保護(hù)機(jī)制,計(jì)算機(jī)病毒可以?shī)Z取所有的計(jì)算機(jī)控制權(quán)。相對(duì)來(lái)說(shuō),Windows NT和Unix系統(tǒng)是非常高級(jí)的保護(hù)機(jī)制的系統(tǒng)。這可以預(yù)防大多數(shù)的病毒的傳染,但不是所有的。當(dāng)一個(gè)用戶以root或administrator的身份來(lái)操作的時(shí)候,這些系統(tǒng)的保護(hù)機(jī)制實(shí)際上是停止了的。一個(gè)設(shè)計(jì)的很巧妙的病毒可以利用自己的方法來(lái)找到文件系統(tǒng)上的每個(gè)文件,NT ownership或者ACL機(jī)制都沒有很好的重視這個(gè)問(wèn)題。 另一個(gè)誤區(qū)就是認(rèn)為L(zhǎng)inux系統(tǒng)尤其可以防止病毒的感染,因?yàn)長(zhǎng)inux的程序都來(lái)自于源代碼,不是二進(jìn)制格式,這才應(yīng)該值得重視,因?yàn)楫吘怪挥袠O少數(shù)的人(甚至管理員)才有足夠的能力來(lái)從源代碼中發(fā)現(xiàn)病毒代碼,而且這是一個(gè)相當(dāng)耗費(fèi)時(shí)間和精力的工作。一般的用戶習(xí)慣于用二進(jìn)制格式的文件來(lái)交流,因?yàn)樗麄儾幌朐谑褂眠@些程序的時(shí)候還要很繁瑣的執(zhí)行諸如make config、make之類的命令,他們喜歡很簡(jiǎn)單的運(yùn)行程序。所有的這些原因就給了Unix系統(tǒng)上的病毒有足夠的空間來(lái)訪問(wèn)和操控系統(tǒng)。 第三個(gè)誤區(qū)就是認(rèn)為Unix系統(tǒng)是絕對(duì)安全的,因?yàn)樗哂泻芏嗖煌钠脚_(tái),而且每個(gè)版本的Unix系統(tǒng)有很大的不一樣。但是現(xiàn)在不能這樣看了,現(xiàn)在的病毒都用標(biāo)準(zhǔn)C來(lái)編寫以適應(yīng)任何類Unix操作系統(tǒng),并且他們可以用make程序來(lái)跨平臺(tái)編譯。想想那個(gè)Morris寫的internet的蠕蟲病毒利用的就是這項(xiàng)技術(shù),并且擁有標(biāo)準(zhǔn)的ELF二進(jìn)制格式和庫(kù)文件。 Shell腳本 我們面臨的第一個(gè)問(wèn)題就是如何傳播的問(wèn)題,這是天生具有的問(wèn)題,至少在Unix系統(tǒng)上是如此,我們需要想辦法使各個(gè)平臺(tái)兼容,所以我們首先想到的是:shell腳本語(yǔ)言。shell在不同的Unix系統(tǒng)上面的差別很小,所以FredCohen在他的書《入侵者、蠕蟲和病毒》(發(fā)表于1990年)中寫道:“在unix的命令解釋語(yǔ)言中,病毒代碼可以被寫到200個(gè)字節(jié)之內(nèi)。”也許我們可以根據(jù)他的話來(lái)寫一個(gè)man page的病毒腳本,可以用來(lái)操作文件和可執(zhí)行程序,這和宏病毒非常相像。man page的病毒不會(huì)蔓延到別的系統(tǒng)上,除非你有為別的用戶改變man page的格式的習(xí)慣。無(wú)論如何,這種病毒都是一個(gè)公共的跨系統(tǒng)的病毒。同樣,也可以寫另個(gè)一個(gè)腳本病毒來(lái)控制mail的閱讀者。 書寫shell腳本病毒是一個(gè)很簡(jiǎn)單的制造Unix病毒的方法。我知道肯定會(huì)有很多同行會(huì)說(shuō),腳本病毒怎么會(huì)是真正的病毒呢?它只是用腳本語(yǔ)言來(lái)書寫的而不是用匯編。但是實(shí)際上,我們?cè)u(píng)定一個(gè)病毒是病毒本身可以在系統(tǒng)上任意感染傳播,而不是這個(gè)病毒的大小或者用什么語(yǔ)言來(lái)寫的。在USENIX1989 卷2上你可以看到Tom Duff和M. Douglas McIlroy的腳本病毒代碼。shell腳本病毒的危害性不會(huì)很大并且它本身極易被破壞,因?yàn)樗且悦魑姆绞骄帉懖?zhí)行的,任何用戶和管理員都可以發(fā)覺它的代碼。但是,我想大多數(shù)的用戶都不會(huì)理解一下代碼的吧: for %%f in (*.bat) do copy %%f + bfv.bat |
聯(lián)系客服