计算机病毒

電腦程式
(重定向自电脑病毒

電腦病毒是一種恶意軟體,當執行時,會通過修改其他電腦程式並將自己的代碼插入這些程式中來複製自身。如果這種複製成功,受影響的區域就被稱為「感染」了電腦病毒,這是從生物病毒中衍生出來的隱喻。

计算机病毒的一种症状:随机重命名文件名和扩展名

電腦病毒通常需要一個宿主程式。病毒會將自己的代碼寫入宿主程式。當程式運行時,先執行寫入的病毒程式,導致感染和損害。相比之下,電腦蠕蟲不需要宿主程式,因為它是一個獨立的程式或代碼片段。因此,它不受宿主程式的限制,可以獨立運行並主動發動攻擊。

病毒作者使用社交工程欺騙和詳細了解安全漏洞,最初感染系統並傳播病毒。病毒使用複雜的反檢測/隱蔽策略來逃避防病毒軟體。創建病毒的動機可以包括尋求利潤(例如,使用勒索軟體),傳達政治信息的渴望,個人娛樂,展示軟體中存在漏洞,進行破壞和阻斷服務,或僅僅是因為他們希望探討網絡安全問題、人工生命和進化算法等問題。

電腦病毒每年造成數十億美元的經濟損失。作為回應,一個防病毒軟體產業已經出現,為各種操作系統的使用者提供銷售或免費分發的病毒防護。

病毒作者

有不少製作病毒的黑客被逮捕及起诉,判决的轻重各国皆不同,如罗马尼亚西欧班尼花费15分钟写的MSBlast.F变种大约只感染了1,000台電腦,按羅馬尼亞的法律他就有可能最高会被判15年有期徒刑

1998年台湾病毒作者陈盈豪寫的CIH病毒據猜測造成全球600万台電腦瘫痪,但他因为在被逮捕后无人起诉而免于法律制裁,在2001年有人以CIH受害者的身份起诉陈盈豪, 才使他再次被逮捕,按照台湾當時的法律,他被判损毁罪,面临最高3年以下的有期徒刑。

中国大陆的木马程序“证券大盗”作者張勇因使用其木馬程序截获股民账户密码,盗卖股票价值1, 141.6万元人民币,非法获利38.6万元人民币,最终的判决结果是無期徒刑

一公司的分析报告指出:目前全世界现有200万有能力写较成熟电脑病毒的程序员[1]

历史

學術工作

 
计算机病毒

第一份關於計算機病毒理論的學術工作(雖然"病毒"一詞在當時並未使用)於 1949年由约翰·冯·诺伊曼完成。當時是以"Theory and Organization of Complicated Automata"為題的一場在伊利诺伊大学的演講,稍後改以"Theory of self-reproducing automata"為題出版。冯·诺伊曼在他的論文中描述一個計算機程式如何複製其自身。

1972年,Veith Risak根據冯·诺伊曼在自我複製上的工作為基礎發表"Self-reproducing automata with minimal information exchange"一文。該文描述一個以西門子4004/35計算機系統為目標,用組合語言編寫,具有完整功能的計算機病毒。

1980年,Jürgen Kraus於多特蒙德大學撰寫他的學位論文"Self-reproduction of programs"。在他的論文中,他假設計算機程式可以表現出如同病毒般的行為。

“病毒”一词最早用来表达此意是在弗雷德·科恩(Fred Cohen)1984年的论文《电脑病毒实验》。

科幻小说

而病毒一词广为人知是得力于科幻小说。一部是1970年代中期大卫·杰洛德(David Gerrold)的《When H.A.R.L.I.E. was One》,描述了一个叫“病毒”的程序和与之对战的叫“抗体”的程序;另一部是约翰·布鲁勒尔(John Brunner)1975年的小说《震荡波骑士(ShakewaveRider)》,描述了一个叫做“磁带蠕虫”、在网络上删除数据的程序。[2]

病毒程式

1960年代初,美国麻省理工学院的一些青年研究人员,在做完工作后,利用业余时间玩一种他们自己创造的计算机游戏。做法是某个人编制一段小程序,然后输入到计算机中运行,并销毁对方的游戏程序。而这也可能就是计算机病毒的雏形。[來源請求]

感染策略

為了能夠複製其自身,病毒必須能夠執行代碼並能夠對內存執行寫操作。基於這個原因,許多病毒都是將自己附著在合法的執行檔上。如果使用者企圖執行該執行檔,那麼病毒就有機會運行。病毒可以根據執行時所表現出來的行為分成兩類。非常駐型病毒會立即尋找其它宿主並伺機加以感染,之後再將控制權交給被感染的應用程式。常駐型病毒被執行時並不會尋找其它宿主。相反的,一個常駐型病毒會將自己載入內存並將控制權交給宿主。該病毒於背景中執行並伺機感染其它目標。

非常駐型病毒

非常駐型病毒可以被想成具有搜尋模組和複製模組的程式。搜尋模組負責尋找可被感染的檔案,一旦搜尋到該檔案,搜尋模組就會啟動複製模組進行感染。

常駐型病毒

常駐型病毒包含複製模組,其角色類似於非常駐型病毒中的複製模組。複製模組在常駐型病毒中不會被搜尋模組調用。病毒在被執行時會將複製模組載入內存,並確保當作業系統執行特定動作時,該複製模組會被調用。例如,複製模組會在作業系統執行其它檔案時被調用。在這個例子中,所有可以被執行的檔案均會被感染。常駐型病毒有時會被區分成快速感染者和慢速感染者。快速感染者會試圖感染盡可能多的檔案。例如,一個快速感染者可以感染所有被存取到的檔案。這會對防毒軟體造成特別的問題。當執行全系統防護時,防毒軟體需要掃描所有可能會被感染的檔案。如果防毒軟體沒有察覺到內存中有快速感染者,快速感染者可以藉此搭便車,利用防毒軟體掃描檔案的同時進行感染。快速感染者依賴其快速感染的能力。但這同時會使得快速感染者容易被偵測到,這是因為其行為會使得系統效能降低,進而增加被防毒軟體偵測到的風險。相反的,慢速感染者被設計成偶而才對目標進行感染,如此一來就可避免被偵測到的機會。例如,有些慢速感染者只有在其它檔案被拷貝時才會進行感染。但是慢速感染者此種試圖避免被偵測到的作法似乎並不成功。

传播途径和宿主

由于操作系统桌面环境90%的市场都是使用微软Windows系列產品[3], 所以病毒作者纷纷把病毒攻击对象选为Windows。制作病毒者首先应该确定要攻击的操作系统版本有何漏洞,这才是他所写的病毒能够利用的关键。Windows當時並沒有有效的安全與防禦功能,且用户常以管理员权限运行未经安全检查的软件,这也为Windows下病毒的泛滥提供了温床。LinuxMac OS操作系统,因使用的人群比较少,病毒一般不容易擴散。大多病毒发布作者的目的有多种,包括恶作剧、想搞破坏、报复及想出名与对研究病毒有特殊嗜好。 病毒主要通过网路浏览以及下载電子郵件以及可移动磁盘等途径迅速传播。[4]

可移动驱动器

市面上大多的可移动驱动器都是屬於可讀寫模式,因此很容易寫入Autorun.inf檔案以及許多惡意程式。受到感染的USB隨身碟病毒插入電腦裡後,病毒會躲藏在作業系統中的處理程序,偵測電腦上的一舉一動。當使用者將其他乾淨的USB隨身碟插入受感染的電腦裡,病毒會複製到乾淨的USB隨身碟裡,然後一傳十、十傳百。公用電腦的使用亦導致USB病毒快速散播。[5]

解決方法
可移动驱动器插入電腦前,先將防寫功能打開;使用者自行刪除autorun.inf檔案;使用防毒軟體來修復受感染的電腦;開啟虛擬机檢測USB的安全性。
中毒後主要症狀
防毒軟體關閉;經常跑出看不懂的視窗;癱瘓電腦運作。

躲避偵測的方法

隱蔽

病毒會藉由攔截防毒軟體對作業系統的呼叫來欺騙防毒軟體。當防毒軟體要求作業系統讀取檔案時,病毒可以攔截並處理此項要求,而非交給作業系統執行該要求。病毒可以返回一個未感染的檔案給防毒軟體,使得防毒軟體認為該檔案是乾淨未被感染的。如此一來,病毒可以將自己隱藏起來。現在的防毒軟體使用各種技術來反擊這種手段。要反擊病毒匿蹤,唯一完全可靠的方法是從一個已知是乾淨的媒介開始啟動。

自修改

大部分防毒軟體透過所謂的病毒特徵碼來偵知一個檔案是否有被感染。特定病毒,或是同屬於一個家族的病毒會具有特定可辨識的特徵。如果防毒軟體偵測到檔案具有病毒特徵碼,它便會通知使用者該檔案已被感染。使用者可以刪除或是修復被感染的檔案。某些病毒會利用一些技巧使得透過病毒特徵碼進行偵測較為困難。這些病毒會在每一次感染時修改其自身的代碼。換言之,每個被感染的檔案包含的是病毒的變種。只能重灌或下載防毒軟體.

隨機加密

胡搞更甚者是對病毒本身進行簡單的加密。這種情況下,病毒本身會包含數個解密模組和一份被加密的病毒拷貝。如果每一次的感染,病毒都用不同的密鑰加密,那病毒中唯一相同的部分就只有解密模組,常會附於檔案尾端。防毒軟體無法直接透過病毒特徵碼偵測病毒,但它仍可以偵知存在解密模組,這就可以間接偵測病毒。因為這部分是存放在宿主上面的對稱式密鑰,防毒軟體可以利用密鑰將病毒解密,但這並不必要。因為自修改代碼很少見,防毒軟體可以先將這類檔案標記成可疑。

一個古老但簡潔的加密技術將病毒中每一個位元組和一個常數做逻辑异或,欲將病毒解密只需簡單的逻辑异或。一個程式若可修改自身程式碼就十分可疑,因此許多病毒定義中,將加解密部分視為病毒特徵碼的一部分。

多態

多態是第一個對防毒軟體造成嚴重威脅的技術。就像一般被加密的病毒,一個多態病毒以一個加密的自身拷貝感染檔案,並由其解密模組加以解碼。但是其加密模組在每一次的感染中也會有所修改。因此,一個仔細設計的多態病毒在每一次感染中沒有一個部分是相同的。這使得使用病毒特徵碼進行偵測變得困難。防毒軟體必須在一模擬器上對該病毒加以解密進而偵知該病毒,或是利用加密病毒其統計樣板上的分析。要使得多態代碼成為可能,病毒必須在其加密處有一個多態引擎(又稱突變引擎)。關於多態引擎的技術細節請參閱Polymorphic code

有些多態病毒會限制其突變的速率。例如,一個病毒可能隨著時間只有一小部分突變。或是病毒偵知宿主已被同一個病毒感染,它可以停止自己的突變。如此慢速的突變其優點在於,防毒專家很難得到該病毒具有代表性的樣本。因為在一輪感染中,誘餌檔案只會包含相同或是近似的病毒樣本。這會使得防毒軟體偵測結果變得不可靠,而有些病毒會躲過其偵測。

變形

為了避免被防毒軟體模擬而被偵知,有些病毒在每一次的感染都完全將其自身改寫。利用此種技術的病毒被稱為可變形的。要達到可變形,一個變形引擎是必需的。一個變形病毒通常非常龐大且複雜。舉例來說,Simile英语Simile (computer virus)病毒包含14000行匯編語言,其中90%都是變形引擎。

命名

以下表格所示是国际上对病毒命名惯用的前缀释义,DOS下的病毒一般无前缀:

前缀 含义
WM Word6.0、Word95宏病毒
WM97 Word97宏病毒
XM Excel5.0、Excel95宏病毒
X97M Excel5.0和Excel97版本下发作
XF Excel程序病毒
AM Access95宏病毒
AM97M Access97宏病毒
W95 Windows95、98病毒
Win Windows3.x病毒
W32 32位病毒,感染所有32位Windows系统
WINT 32位Windows病毒,只感染Windows NT
Trojan/Troj 特洛伊木马
VBS VBScript程序语言编写的病毒
VSM 感染Visio VBA(Visual Basic for Applications)巨集或script的巨集或script病毒
JS JScript程式語言編寫的病毒
PE 32位寻址的Windows病毒
OSX OS X的病毒
OSXL OS X Lion或者更新版本的病毒
Virus 其他病毒(如感染型、開機型、終結型等)

中间部分指的是病毒的英文名,而后缀一般是变种代号。

特征

计算机科学裡,电脑病毒是类似生物病毒一样的程序,它会复制自己并传播到其他宿主,并对宿主造成损害。宿主也是程序,通常是操作系统,从而进一步传染到其他程序、其他的电脑。电脑病毒在传播期间一般会隐蔽自己,由特定的条件触发,并开始产生破坏。

电脑病毒具有的不良特征有传播性、隐蔽性、感染性、潜伏性、可激发性[6]、表现性或破坏性,通常表现两种以上所述的特征就可以认定该程序是病毒。

计算机病毒的生命周期为开发期→传染期→潜伏期→发作期→发现期→消化期→消亡期。[4][7]

主要特征详解

传播性

病毒一般会自动利用电子邮件传播,利用对象为某个漏洞。将病毒自动复制并群发给存储的通讯录名单成员。邮件标题较为吸引人点击,大多利用社会工程学如“我愛妳”这样家人朋友之间亲密的话语,以降低人的警戒性。如果病毒制作者再应用脚本漏洞,将病毒直接嵌入邮件中,那么用户一点邮件标题打开邮件就会中病毒。

隐蔽性

一般的病毒仅在数KB左右,这样除了传播快速之外,隐蔽性也极强。部分病毒使用“无进程”技术或插入到某个系统必要的关键进程当中,所以在任务管理器中找不到它的单独运行进程。而病毒自身一旦运行后,就会自己修改自己的文件名并隐藏在某个用户不常去的系统文件夹中,这样的文件夹通常有上千个系统文件,如果凭手工查找很难找到病毒。而病毒在运行前的伪装技术也不得不值得我们关注,将病毒和一个吸引人的文件綁紮合并成一个文件,那么运行正常吸引他的文件时,病毒也在我们的操作系统中悄悄的运行了。

感染性

某些病毒具有感染性,比如感染中毒用户计算机上的可执行文件,如exe、bat、scr、com格式,通过这种方法达到自我复制,对自己生存保护的目的。通常也可以利用网络共享的漏洞,复制并传播给邻近的计算机用户群,使邻里通过路由器上网的计算机或网吧的计算机的多台计算机的程序全部受到感染。

電腦病毒潜伏性

部分病毒有一定的“潜伏期”,在特定的日子,如某个节日或者星期几按时爆发。如1999年破坏№BIOSCIH病毒就在每年的4月26日爆发。如同生物病毒一樣,這使電腦病毒可以在爆發之前,以最大幅度散播開去。

可激发性

根据病毒作者的“需求”,设置触发病毒攻击的“玄机”。如CIH病毒的制作者陈盈豪曾打算设计的病毒,就是「精心」为简体中文Windows系统所设计的。病毒运行后会主动检测中毒者操作系统的语言,如果发现操作系统语言为简体中文,病毒就会自动对计算机发起攻击,而语言不是简体中文版本的Windows,那么你即使运行了病毒,病毒也不会对你的计算机发起攻击或者破坏。[8]

表现性

病毒运行后,如果按照作者的设计,会有一定的表现特征:如CPU佔用率100%,在用户无任何操作下读写硬盘或其他磁盘数据,蓝屏死机鼠标右键无法使用等。但这样明显的表现特征,反倒帮助被感染病毒者发现自己已经感染病毒,并對清除病毒很有帮助,隐蔽性就不存在了。

分类

病毒类型根据中国国家计算机病毒应急处理中心发表的报告统计,占近45%的病毒是木马程序,蠕虫占病毒总数的25%以上,占15%以上的是脚本病毒,其余的病毒类型分别是:文件型病毒、破坏性程序和宏病毒。

木马/僵尸网络

  • 有些也叫作远程控制软件,如果木马能连通的话,那么可以说控制者已经得到了远程计算机的全部操作控制权限,操作远程计算机与操作自己计算机基本没什么大的区别,这类程序可以监视、摄录被控用户的摄像头与截取密码等,以及进行用户可进行的几乎所有操作(硬件拔插、系统未启动或未联网时无法控制)。而Windows NT以后的版本自带的“远程桌面连接”,或其他一些正规远控软件,如若未进行良好的安全设置或被不良用户篡改利用,也可能起到类似作用。但他们通常不会被称作病毒或木马软件,判断依据主要取决于软件的设计目的和是否明确告知了计算机所有者。
  • 用户一旦感染了特洛伊木马,就会成为“僵尸”(或常被称为“肉鸡”),成为任黑客手中摆布的“机器人”。通常黑客或脚本小子(script kids)可以利用数以万计的“僵尸”发送大量伪造包或者是垃圾数据包对预定目标进行拒绝服务攻击,造成被攻击目标瘫痪。

有害软件

  • 蠕虫病毒漏洞利用类,也是我们最熟知的病毒,通常在全世界范围内大规模爆发的就是它了。如针对旧版本未打补丁的Windows XP冲击波病毒震荡波病毒。有时与僵尸网络配合,主要使用缓存溢出技术。
  • 间谍软件流氓软件,是部分不良网络公司出品的一种收集用户浏览网页习惯而制订自己广告投放策略的软件。这种软件本身对计算机的危害性不是很大,只是中毒者隐私遭到洩露被收集走和一旦安装上它就无法正常删除卸载了。比如对Internet Explorer的广告软件会自动修改并锁定用户缺省主页以及加载广告公司的工具条。
  • 恶作剧的破坏性软件,如破坏性很大的“格盘炸弹”,运行程序后自动格式化硬盘,原本只为“愚人”目的,但这种恶意程序运行后就会对用户重要数据造成很大的损失。与此相同的还有文件感染器(File infector)以及在DOS下的根扇区病毒。
  • 檔案型病毒通常寄居於可執行檔(副檔名為.EXE或.COM的檔案),當被感染的檔案被執行,病毒便開始破壞電腦,這種病毒都是偽裝成遊戲,成人影片軟體等釣魚的形態出現引發使用者點擊,病毒便明顯地或是偷偷的安裝上去。

脚本病毒

  • 宏病毒的感染对象为Microsoft开发的办公系列软件,也有專門針對其他軟體的變種。Microsoft WordExcel这些办公软件本身支持运行可进行某些文件操作的命令,所以也被Office文档中含有恶意的宏病毒所利用。openoffice.org对Microsoft的VBS宏仅进行编辑支持而不运行,所以含有宏病毒的MS Office文档在openoffice.org下打开后病毒无法运行。

免殺技術以及新特徵

免殺是指:對病毒的處理,使之躲過防毒軟體查殺的一種技術。通常病毒剛從病毒作者手中傳播出去前,本身就是免殺的,甚至可以說「病毒比防毒軟體還新,所以防毒軟體根本無法識別它是病毒」,但由於傳播後部分用戶中毒向防毒軟體公司舉報的原因,就會引起安全公司的注意並將之特徵碼收錄到自己的病毒庫當中,病毒就會被防毒軟體所識別。

病毒作者可以通過對病毒進行再次保護如使用彙編花指令或者給文件加殼就可以輕易躲過防毒軟體的病毒特徵碼庫而免於被防毒軟體查殺。

美國的Norton AntivirusMcAfeePC-cillin,羅馬尼亞的Bitdefender,俄羅斯的Kaspersky Anti-Virus,斯洛伐克的NOD32等產品在國際上口碑較好,但殺毒、查殼能力都有限,目前病毒庫總數量也都僅在數十萬個左右。

自我更新性是近年來病毒的又一新特徵。病毒可以借助於網絡進行變種更新,得到最新的免殺版本的病毒並繼續在用戶感染的計算機上運行,比如熊貓燒香病毒的作者就建立了「病毒升級伺服器」,在最勤時一天要對病毒升級8次,比有些殺毒軟件病毒庫的更新速度還快,因為開發者對代碼編輯十分勤奮,所以就造成了殺毒軟件無法識別病毒。

除了自身免殺自我更新之外,很多病毒還具有了對抗它的「天敵」殺毒軟件和防火牆產品反病毒軟件的全新特徵,只要病毒運行後,病毒會自動破壞中毒者計算機上安裝的殺毒軟件和防火牆產品,如病毒自身驅動級Rootkit保護強制檢測並結束殺毒軟件進程,可以過主流殺毒軟件「主動防禦」和穿透軟、硬件還原的機器狗[9],自動修改系統時間導致一些殺毒軟件廠商的正版認證作廢以致殺毒軟件作廢,從而病毒生存能力更加強大。

免殺技術的氾濫使得同一種原型病毒透過插件,理論上可以衍生出近乎無窮無盡的變種,給依賴於特徵碼技術檢測的殺毒軟件帶來很大困擾。近年來,國際反病毒行業普遍開展了各種前瞻性技術研究,試圖扭轉過分依賴特徵碼所產生的不利局面。目前比較有代表性產品的是基於虛擬機技術的啟發式掃瞄軟件,代表廠商NOD32,Dr.Web,和基於行為分析技術的主動防禦軟件,代表廠商中國的微點主動防禦軟件等。

防範與治療

修补操作系统以及其捆绑的软件的漏洞
安裝系统以及其捆绑的软件如Internet ExplorerWindows Media Player的漏洞安全补丁,以操作系统Windows为例Windows NT以及以下版本可以在Microsoft Update页面存档备份,存于互联网档案馆)更新系统,Windows 2000SP2以上,Windows XP以及Windows 2003等版本可以用系统的“自动更新”程序下载补丁进行安装。设置一个比较强的系统密码,关闭系统默认网络共享,防止局域网入侵或弱口令蠕虫传播。定期检查系统配置实用程序启动选项卡情况,并对不明的Windows服务予以停止。
安装并及时更新杀毒软件与防火墙产品
保持最新病毒库以便能够查出最新的病毒,如一些反病毒软件的升级服务器每小时就有新病毒库包可供用户更新。而在防火墙的使用中应注意到禁止来路不明的软件访问网络。由于免杀以及进程注入等原因,有个别病毒很容易穿过杀毒以及防火墙的双重防守,遇到这样的情况就要注意到使用特殊防火墙来防止进程注入,以及经常检查启动项、服务。一些特殊防火墙可以“主动防御”以及注册表实时监控,每次不良程序针对计算机的恶意操作都可以实施拦截阻断。
不要点来路不明连接以及运行不明程序[10]
来路不明的连接,很可能是蠕虫病毒自动通过电子邮件或即时通讯软件发过来的,如QQ病毒之一的QQ尾巴,大多这样信息中所带连接指向都是些利用IE浏览器漏洞的网站,用户访问这些网站后不用下载直接就可能会中更多的病毒。另外不要运行来路不明的程序,如一些“诱惑”的文件名骗人吸引人去点击,点击后病毒就在系统中运行了。

参見

参考資料

外部連結