習慣上病毒主要被分成2大類: 開機型病毒(感染磁片和硬碟的開機區,停留於此處並於電腦開機時活動)和檔案型病毒(感染一種或多種程式檔,並於程式執行時活動)。直到1990年代中期,雖然已知病毒中數量最多的是檔案型病毒,感染情況最普遍的卻是開機型病毒。這是因為,病毒為了要散播得更廣,須要有從一部電腦散播到另一部電腦的方法。磁片常被共同分享(雖然遠不及早期”個人電腦革命”時代那麼普及),雖然不是所有的磁片都含有程式檔(降低了檔案型病毒擴散的機率),然而磁碟通常有一個開機區,也是開機病毒的潛伏區。當”sneakenet”是檔案分享與軟體流通的共同方法時,藉著人們交換磁片的共同習慣(且常忘記移除由A軟碟開機的設定)病毒可以有效地擴散出去。
巨集型病毒由巨集語言結構組成-例如,WordBasic或現在更流行的Visual Basic for Applications-並普遍地存在於應用軟體文件檔(如Word文件或Excel工作表)或這些檔案型態的範本裡。通常我們並不認為”文件”會被感染-它們常被當成”就是資料”而已。然而,任何被內建於(或以某種方式被包含在內)”文件’檔的巨集的應用程式都是巨集型病毒潛在的豐富平台。
巨集並不一定要被嵌入文件檔內才會使應用軟體或巨集環境成為”有病毒的”。例如,1999年初發現第一個CorelScript巨集語言病毒(被包含在幾個主要Corel產品內)。然而由於CorelScript對獨立巨集碼檔案的信任,這個CSC/CSV.A和其後續的病毒似乎沒有威脅到支援CorelScript的應用軟體的用戶。事實上,兩年後只有另一個CorelScript病毒被發現。
巨集病毒造成一些傳統檔案型病毒所沒有的威脅。它們可被內建於通常不會被視為明顯的文件內,此一事實已被提出討論。另一項威脅是最流行且散播最廣的巨集語言 VBA,不論成為病毒與否,它們很容易被寫入程式。當然這也是VBA病毒成為最常見病毒的部份原因-許多不會寫其它病毒的人可以寫出VBA巨集病毒。VBA也是一個很強的巨集語言。它可以易於利用Windows APIs(如Windows Automation(從前的OLE)和DDE), 那對低階語言程式來說較為困難。這也增添了它成為病毒發展平台的威脅,因為在早期應用軟體功能較弱的時期,”應用巨集”這個名詞建議許多使用者和管理者利用巨集建立常用按鍵的記錄。如果對某人來說”巨集”代表”按鍵記錄”,他們無法想像在一個”巨集病毒”內可能有許多危機。
最後,因為現在文件比磁碟流傳得更廣,透過網路和網際網路( 由其是藉著電子郵件),文件型的病毒變得非常普遍且在不久的將來可能會繼續保持它們流行的高峰。
通常這些是自行夾帶於COM和EXE檔案的病毒,雖然在某些情況下它們也散播到SYS、DRV、BIN、OVL和其它少見附檔名的檔案。這些檔案型病毒當中最成功的是居住型病毒,在受感染檔案第一次被執行時載入記憶體內,並暗中控制電腦。這種病毒通常會在執行其它程式時,或甚至只是在目錄列表時散播給它們。但也有很多非居住型病毒,每當受感染的病毒被執行時,即會感染一個或多個檔案。
Windows的出現減緩了開機型病毒和EXE病毒的發展。大部份開機型病毒與32 bit延伸檔案系統無法相容,第一個可用的是在Windows 3.1被當成一個選項,然後常被內建於Windows for WorkGroup 3.11,最後在Windows 95和之後的版本被當成標準配備。32-bit NT和Windows 2000系統也容易有開機感染的嚴重問題。新的更複雜難懂的16-bit Windows “New Executable”(NE)和32-bit Windows “Portable Executable”(PE) EXE檔案格式也使病毒作者減緩了初期考慮納入這些新的平台所作的努力。
感染各種scripting語言的病毒,從最基礎的(DOS batch)到極為複雜的JavaScript(JS)和Visual Basic Script(VBS)都是檔案型病毒的一種。DOS批次病毒一直只是有其好奇的價值而已,因其語言本身特質的限制,從未造成嚴重危害。然而,架構在Windows Scripting Host(WSH)之下的JS和VBS語言的複雜性增加,當然也加強了script檔案型病毒的吸引力。例如,string manipulation操作者的增加使得許多在DOS batch script下幾乎不可能達成的工作,在JS和VBS scripts之下則很平常。此外,scripting引擎和許多標準OS功能如檔案系統、網路和登記介面等的統合造成了許多機會-像VBA巨集病毒,這些scripting語言使得非程式設計師也可以成為病毒作者。由於現存的scripts很容易被改變而加劇了這個結果,像在原始的VBS/LoveLetter之後各式變種病毒的氾濫。最後,任何有關script 病毒的討論,如沒有指出其寄居檔案系統的scripting語言是一個潛在的病毒寄主,這樣的討論都不算完整。因此流行的IRC客戶軟體如mIRC和Pirch等的scripting 語言是可病毒化的,且由於這些應用軟體在單純的使用者間大受歡迎,已被設定為目標。
每個邏輯上的驅動,硬碟和軟碟,都含有一個開機區。即使是不含可開機作業系統的磁片也一樣。這個開機區是邏輯驅動的第一區並含有關於磁片格式化的特定訊息,儲存在這裡和電腦裡的資料要求含有一個稱為開機程式的小程式。
當電腦試著要從磁片開機時開機程式被要求載入適當的作業系統,如果作業系統檔案沒出現,通常會顯示類似”Non-system Disk or Disk Error”的訊息。磁碟上的開機程式越來越常單純地顯示警告磁片未含可開機系統的訊息 – 如果你使用複製作業系統檔案到磁碟的選項將磁片重新格式化,這個開機程式會被一個適當的程式覆蓋過去。
不顧它的正確本質,這也是一個被開機型病毒感染的程式。感染開機磁片最常見的方法就是將一片受感染的磁片放在磁碟機內並重新開機。如果軟碟機裡有磁片,在大部份的電腦預設從軟碟機開機,如果沒有就會繼續以硬碟中的Master Boot Record來開機。幾乎不曾撿查的,開機區內的程式就被讀取並執行。如果它是一個病毒就會被載入記憶體並像任何其它的開機程式一樣被執行。如果它是一個病毒,就會感染你的硬碟。
記住,因為每個磁片都有一個開機區,可能會從一片資料磁片感染到整台電腦。開機型病毒感染磁碟片的開機區;有些如Form也會感染硬碟中的開機區,也有其它的如Stoned會感染硬碟的Master Boot Record.
在每一個硬碟的實體紀錄區(Cylinder 0, Head 0, Sector 1)被稱之為Master Boot Record (MBR –也被稱之為Master Boot Sector, MBS).MBR包含紀錄這個硬碟的Partition Table. MBR就像是一般磁碟片的開機區(sector of a diskette),這裡記錄著一個開機的程式(boot program)。 然而, 不同於磁碟片,硬碟的開機程式經常不是直接指向作業系統的儲存位置及開始位置。
MBR的開機程式通常儲存於”啟動(active)”或是開機的硬碟的,然後載入開機的相關資訊。儲存開機資訊的區域就像是一個邏輯的硬碟( logical drive),如同磁碟片一樣,開機區域(boot sector)包含了這個硬碟的格式化資料及儲存於此區域的開機程式。如果這個硬碟設定正確,一個合法的磁區(sector)會被發現,而且一個開機程式會從MBR中載入記憶體中並且執行。如你所期盼的,從開機程式中取得作業系統的位置,載入後並且執行此作業系統。
MBR病毒如同開機型病毒一般,從磁碟機A感染並於重新開機後存於MBR。當開機程式從磁碟片載入並執行後,病毒就會自動載入記憶體並且感染硬碟的MBR。 此外,因為每一個磁碟都有一個開機區域(boot sector),使得電腦病毒得以從資料片(data disk)入侵。
開機型及MBR病毒可採取不使用驅動軟碟開機的簡單辦法予以避免。大部份在1990年代初期及中期製造的個人電腦的BIOS基本設定多不以軟碟機為開機的第一選擇。許多電腦甚至有設定BIOS不可由軟碟開機的組態可供選擇。奇怪的是很少系統管理者會利用此簡便、有效且免費的防毒技術。
多重分裂病毒是一種複合感染(combination infectors),感染不止於前面所提及的單一方式。也就是說多重分裂感染型病毒是病毒碼感染檔案及開機區域。此類病毒會自動散佈基本的病毒碼,感染開機程式並且改變開機程式的型態,成為巨集型病毒。最近,一些新型態的多重分裂病毒產生,例如,此類病毒會感染可執行程式(EXE)並且慢慢的滲透每一個文件檔案。
然而在多重分裂病毒(multi-partite viruses)與非多重分裂病毒(non-multi-partite)間是沒有多少分別。例如,巨集病毒O97M/Jerk可以感染Word及Excel,097M/Cross巨集病毒感染Word and Access,O97M/Corner 巨集病毒感染Word and Project , O97M/Tristate 巨集病毒感染Word、Excel 及 PowerPoint,或者其他複合型病毒感染Microsoft Office及其他相關軟體。因為這些病毒基本上都依賴Visual Basic語言替此類應用軟體所寫的巨集平台(platform),這類病毒通常感染不只一種型態。這類的病毒甚至可以在跨平台cross-platform 的環境之下工作成為跨平台病毒。例如Word VBA病毒可以在Windows環境的Word 97及Word 2000平台及Macintosh的Word 98 and Word 2001的平台進行感染。這類病毒在微軟的Office應用軟體之間進行相互感染被稱為ross-infectors 或 cross-application-infectors.
雖然在過去最常見的流行病毒是由檔案及boot multi-partites所組成的檔案型病毒,多重分裂病毒(Multi-partites viruses)仍然少見。如上所述,”worm”這個名詞並沒有明確的定義,然而在1990年代末期被廣泛採用的解釋是”經由網路連結擴散的病毒”。這個定義的缺點是大部份的病毒檔案會快速地感染在任何驅動程式上合適的主檔案,包含網路驅動程式在內,以大多數情況來說,一般使用者個人電腦都連到網路資源分享 ,因此大部份的病毒檔案也就成為” worms”。之所以採用名詞”worm”的要點是在強調病毒可在原主電腦或主網路以外的地方快速地擴散,所以非正式的定義被改為”經由網路連結公然地擴散的病毒”或”經由外部網路連結公然地擴散的病毒”。
Worms在此定義下,真的引導出1999年3月末W97M/Melissa.A病毒的釋放與廣氾的散佈。(接著其複製品就到處散播)。許多防毒研究者對於Melissa的所造成的損害並不感到驚訝,而是對Melissa作者鹵莽地釋放出此病毒感到訝異。作者後來被循線逮捕且定罪。
從W97M/Melissa起,許多病毒作者利用Microsoft Outlook的自動化介面製造了上百種病毒,它們打開Outlook電子郵件地址清單,然後傳遞夾帶病毒的電子郵件訊息到所有清單內的郵件地址。這種方式也在被下列病毒使用:VBA巨集病毒 (如Melissa)、Script病毒(此種功能的VBA碼,幾乎可以將Melissa的原始碼直接複製成為 VBS病毒)、及可執行檔病毒。
另一種主要病毒的變化型態是偽裝成Windows網路中的一份子,而居中做蠕蟲的破壞工作。這是由Win95/Ska領頭,它混入WSOCK32.DlL檔,攔截SMTP(e-mail)及NNTP(Usenet News)的通訊。當Ska偵測到新訊息是由電子郵件或新聞伺服器傳送時,它儲存位址及標題。然後它傳送自己的訊息,包含一附件(病毒本身的安裝檔)及原本給收信者的訊息。Ska成為有史以來最普遍及散播的病毒,至2000年年中,有許多病毒抄襲了Winsock水準的攔截網路通訊概念。
其他型式的電子郵件蠕蟲也時有所見但並不成功,是因為其攻擊的電子郵件軟體並不如Microsoft Outlook普遍。有兩個例外成功的例子為JS/Kak和”open share crawler” attack的幾種應用。
JS/Kak是第一個利用Microsoft's Outlook Express散播的電子郵件蠕蟲(e-mail worm)。雖然,一般公司用的很少(他們大多用Microsoft Office所附的Outlook 或 third-party e-mail),Outlook Express 還是被數百萬的個人或小型企業使用者做為基本的電子郵件軟體,因為它是Internet Explorer的內建軟體。Kok會修改中毒者的Outlook Express 組態,使得內建的病毒碼可依附在HTML格式的訊息傳送出去。這被使用的HTML檔案包含了內置的JavaScript程式,這個程式即是被複製的病毒。Kak還有另一個明顯的特徵-它是少數依賴產品的安全漏洞而執行感染工作的病毒之一。Kak的感染擊傳播方法對受感染者來說是無聲無息的,由於Internet Explorer 和Outlook Express 的內建安全設定太鬆了,使得在沒有對使用者發出警告的情況下,就允許病毒碼夾帶在電子郵件的訊息中傳遞。許多被感染的Internet Explorer 及Outlook Express 成為Kak大量流行的溫床。在2000年Kak在病毒的流行排行榜中占數一數二的地位,它巧妙的利用使用群最集中,卻最少發覺病毒的軟體。
“open share crawler” attack可能是首次在VBS/NetLog成功執行的,此種感染利用隨意選擇IP網路位址空間管道的簡便方法,然後試圖連結到這些位址的電腦中被稱為”C”的微軟網路資源分享區。由此作法VBS/Netlog很訝異且成功地發現Window使用者不但在網路上分享他們全部C碟,且並無任何密碼保護的措施。Netlog因此發現在數以千計的個人電腦有這樣的狀況,並且在這些電腦中做了大量的病毒複製。選擇侵入這些電腦的啟動目錄,病毒在受感染的電腦重開機時確定了新的活動。許多病毒作者似乎更喜愛別的病毒作者的成功,也因此在許多其他的版本上執行病毒的入侵均被拷貝照抄。
在ExploreZip及後續的少數病毒/蠕蟲上可顯示出微小的修正,病毒明確地透過Windows網路APIs找出網路中所有電腦,然候進行病毒感染及破壞。此類直接式入侵有一項好處,就是可保證連接上花費時間找到的易受感染電腦。
暫且不論上述議題及病毒趨勢,從1999年初以來,某些種類的non-viral malware的發展已有相當的成長。尤其是這些一般稱為〝remote accss Trojans〞(偶爾也稱〝remote accss trojans〞及〝backdoors〞)或稱RATs的程式快速發展到連家庭工業也致力於製造它們。
RAT背後的基本概念是一位攻擊者意圖去戲弄受害者所執行一個程式。然後此程式(RAT)開啟一個〝backdoor〞或〝trapdoor〞到受害者的電腦,因此攻擊者發現該收聽網路埠可附掛在受害者的電腦中,執行任何的指令,如複製檔案至該電腦或由該電腦複製檔案、發送使用者訊息、以及任何你想到可透過電腦執行的工作。通常一個特別的個人電腦程式是必須連接到RAT,且每個對應的RAT均不同。
早期有名的RATS如NetBus及BackDrifice已被近來的一些RATs所取代。由於RATs是針對個人及小型企業使用者所發動攻擊,它所引發的問題範圍是難以評估的。公司網路作業常使用防火牆來管理進出的權限,及經由入侵偵測系統來注意惡意的網路活動。然而,在網路中一定有不少被入侵的電腦,因為有證據顯示電腦以開放埠進行大量的撥接、專線及ADSL IP位址掃描是常與知名的RATs有關連的。更多證據顯示RATs會如此盛行,是因為在1999年中期一些病毒開始包含病毒碼來搜尋最通用的RATs預設埠,並複製自身至新電腦接著執行該受感染檔案再毒害整台電腦。
RATs及網路爬行蠕蟲(the network crawler type worms)所以會如此"成功"是因為"always on"的網路連接技術,如專線數據機及ADSL的擴展。習慣性保持連線,增加頻寬及愈來愈多的天真的使用者執行微軟網路作業卻沒有採取最基本的安全警戒,這些趨勢將會使問題更趨惡化。