惡意程式碼的定義
惡意程式碼是有害的電腦程式指令碼,目的是要製造或利用系統漏洞。威脅者設計這些程式碼的目的是要對電腦系統進行不想有的更改、破壞或持續存取。惡意程式碼可能會導致後門、安全漏洞、資訊和資料盜竊,以及對檔案和電腦系統造成其他潛在損害。
甚麽是惡意程式碼?
惡意程式碼是敵對方為操控電腦系統進行危險行為而創造的「語言」。惡意程式碼是透過對電腦程式、檔案和基礎設施的現有程式進行更改或添加而創造的。
大多數網絡安全攻擊都會使用這種威脅作為基礎工具。黑客根據電腦所用的程式語言來探查和發現漏洞。然後,他們會創造稱為指令碼或命令清單的「短語」,以便濫用這些語言中的漏洞。這些指令碼可以重複使用,並透過巨集指令(簡稱「宏」)實現自動化。
如果黑客和其他威脅者只能使用人工方法利用電腦系統,他們的行動將非常緩慢。不幸的是,惡意程式碼可以協助他們將攻擊自動化。有些程式碼甚至可以自行複製、傳播並造成破壞。其他類型的程式碼可能需要人類使用者下載或與它進行互動。
惡意程式碼通常會導致以下後果:
- 資料損壞
- 分散式拒絕服務
- 憑證盜竊和私人資訊盜竊
- 贖金和勒索
- 滋擾和不便
為了幫助你保護自己,我們來探討一下這些威脅是如何運作的。
惡意程式碼是如何運作的?
電腦系統的任何程式設計元件都有可能被惡意程式碼操控。電腦網絡基礎設施等大型元件和流動或桌面應用程式等小型元件都是常見的攻擊目標。網站和網上伺服器等網絡服務也可能成為攻擊目標。惡意程式碼可以感染任何使用電腦運行的設備,例如:
- 傳統電腦設備 -- 桌面電腦、手提電腦、手機、平板電腦。
- 物聯網設備 -- 智能家居設備、車載資訊娛樂系統(IVI)。
- 電腦網絡設備 -- 數據機、路由器和伺服器。
攻擊者使用惡意指令碼和程式入侵電腦系統的受信任部分。從這一點出發,他們的目標是完成以下一項或多項任務:
- 令用戶接觸惡意程式碼,使其受到感染並進一步傳播。
- 存取被入侵系統的私人資訊。
- 監控被入侵系統的使用情況。
- 入侵系統的更深層地方。
惡意程式碼的創造和使用分為幾個不同的階段。在每一個階段,惡意指令碼都可能需要與人類互動或其他電腦操作來觸發下一個事件。請注意,有些程式碼甚至可以完全自動運行。大多數惡意程式碼都遵循以下結構:
- 探測和調查漏洞。
- 編寫程式碼來利用漏洞。
- 令電腦系統接觸惡意程式碼。
- 透過相關程式執行程式碼或自動執行。
探測和編寫程式是攻擊的準備階段。攻擊者入侵系統之前,他們必須首先擁有入侵系統所需的工具。如果程式碼不存在,他們就需要編寫程式碼,但也可能使用或修改現有的惡意程式碼來準備攻擊。
完成的惡意指令碼可以是一個可自動執行的應用程式,它可以自我啟動和有各種形式。其中一些可能包括 JavaScript 的宏和指令碼、ActiveX 控制項、Powershell 濫用、推送內容、外掛程式、指令碼語言或其他旨在增強網頁和電子郵件的程式語言。
電腦系統可以透過 USB 等直接介面埠或連接流動和 Wi-Fi 等網絡而出現暴露狀況。只需要讓惡意程式碼有一個途徑到達你的機器就能實現成功的暴露。
大範圍的暴露攻擊依賴高接觸度的渠道,如熱門網站和垃圾郵件,而更有針對性的攻擊則使用社會工程方法,如魚叉式網絡釣魚。一些內部人員甚至可透過將 USB 磁碟直接連接本地終端使用者的電腦,將惡意程式碼植入企業內聯網等私人網絡。
當暴露的系統與惡意程式碼兼容時,惡意程式碼就會執行。一旦目標設備或系統暴露於惡意程式碼中,由此而產生的攻擊可能包括嘗試進行以下各種未經授權的行動:
- 修改資料 -- 未經許可進行加密、削弱安全性等。
- 刪除或損壞資料 -- 網站伺服器等。
- 獲取資料 -- 帳戶憑證、個人資訊等。
- 存取受限制的系統 -- 私人網絡、電子郵件帳戶等。
- 執行行動 -- 自我複製、傳播惡意程式碼、遙距控制設備等。
惡意程式碼是如何傳播的?
惡意程式碼可能會被用來自行入侵系統,進行二次惡意活動,或自我複製和傳播。在任何情況下,原始程式碼都必須從一個設備轉移到另一個設備。
這些威脅幾乎可以透過任何可以傳輸資料的通訊渠道傳播。傳播媒介通常包括 :
- 網上網絡 -- 內聯網、P2P 檔案分享、公共網站等。
- 社交通訊 -- 電子郵件、短訊、推送內容、手機即時通訊應用程式等。
- 無線連接 -- 藍牙等
- 直接設備介面 -- USB 等
瀏覧受感染的網站或點擊有害電子郵件中的連結或附件是惡意程式碼潛入系統的標準途徑。不過,這種威脅既可以從合法來源進入,也可以從明確的惡意來源進入。從公共 USB 充電站到被利用的軟件更新工具都曾經被濫用於這些目的。
惡意程式碼的「包裝」通常都不明顯,但公共數據連接和任何即時通訊服務都是最需要注意的途徑。下載和網址連結經常被攻擊者用來嵌入危險程式碼。
惡意程式碼的類型
很多惡意程式碼類型都可以透過找到入口來獲取你的寶貴資料,從而對你的電腦造成危害。在不斷增加的惡意程式碼中,以下是一些常見的罪魁禍首。
病毒
病毒是一種可自我複製的惡意程式碼,可附於能啟用巨集的程式上執行。這些檔案透過文檔和其他下載的檔案傳播,讓病毒潛入你的設備。病毒一旦執行,就會在系統和連接的網絡中自我傳播和擴散。
蠕蟲
蠕蟲也像病毒一樣具有自我複製和自我傳播程式碼的能力,但不需要採取任何進一步的行動。一旦電腦蠕蟲進入你的設備,這些惡意威脅就會完全自動執行,無需使用者協助運行程式。
木馬程式
木馬程式是攜帶惡意程式碼負載的誘餌檔案,需要使用者使用檔案或程式才能執行。這些威脅無法自我複製或自動傳播。不過,它們的惡意有效負載可能包含病毒、蠕蟲或任何其他程式碼。
跨網站指令碼(XSS)
跨網站指令碼透過向使用者可能使用的網站應用程式注入惡意命令來干擾使用者瀏覽網站。通常的做法是更改網頁內容、截取機密資訊或感染使用者的設備。
後門攻擊
應用程式後門進入可以透過編寫程式碼讓網絡犯罪分子以遙距方式存取被入侵的系統。除了暴露公司的私人資訊等敏感資料外,後門還可以讓攻擊者成為高級長期威脅(APT)。
網絡犯罪分子之後可以透過新獲得的存取權限級別橫向移動,清除電腦資料,甚至安裝間諜軟件。這些威脅可以達到很嚴重的程度:美國政府問責署甚至就惡意程式碼對國家安全的威脅發出了警告。
惡意程式碼攻擊實例
惡意程式碼有各種各樣的形式,在過去也非常活躍。在這些攻擊實例中,以下是幾個最著名的事件:
Emotet 木馬程式
Emotet 於 2014 年首次出現,從惡意軟件的根基演變成為帶有惡意程式碼的垃圾電子郵件。攻擊者使用網絡釣魚戰術,例如緊急電子郵件主題行(例如:「需要付款」),誘騙使用者下載。
據瞭解,一旦進入設備,Emotet 就會運行指令碼來傳播病毒、安裝用於殭屍網絡招募的命令和控制(C&C)惡意軟件等。這種威脅在 2018 年短暫休整後又捲土重來,成為一種短訊惡意軟件威脅。
Stuxnet 蠕蟲
自 2010 年以來,Stuxnet 電腦蠕蟲及其後繼者一直以國家基礎設施為目標。首次有記錄的攻擊是透過 USB 磁碟攻擊伊朗核設施,摧毀了關鍵設備。此後,Stuxnet 已經停止使用,但其原始程式碼在 2018 年之前一直被用於製造類似的高度針對性攻擊。
如何防範惡意程式碼的攻擊
對於大多數惡意威脅,具有自動更新、惡意軟件清除和網絡瀏覽安全防護功能的防毒軟件是最好的防禦方法。但是,僅靠防毒軟件本身可能無法防止惡意程式碼。
防毒軟件通常可以預防和清除病毒和其他形式的惡意軟件,而惡意軟件是惡意程式碼的一個子類別。更廣泛的惡意程式碼類別包括可利用漏洞上傳惡意軟件的網站指令碼。根據定義,並非所有防毒軟件都能處理惡意程式碼造成的某些感染或行為。
雖然防毒軟件對於主動清除和防禦感染仍然是必需工具,但以下是一些保護自己的重要方法:
- 安裝防指令碼軟件,防止在未經授權的情況下運行 JavaScript 和相關程式碼。
- 謹慎對待連結和附件。任何包含網址連結或附件的訊息,無論是電子郵件還是短訊都可能成為惡意程式碼的載體。
- 啟動瀏覽器的彈出視窗攔截器,防止指令碼在不想出現的瀏覽器視窗中提供惡意內容。
- 避免在日常使用中使用管理員級別帳戶。自動運行的指令碼和程式通常需要高級許可權限。
- 利用資料備份來保護不可替代的檔案和文檔
- 警惕使用任何公共資料連接。USB 連接通常會被忽視,但惡意程式碼很容易藏匿其中。公共 Wi-Fi 也是攻擊者用來傳播惡意程式碼的常見威脅。
- 使用正確設定的防火牆來阻止未經授權的連接。如果惡意程式碼入侵了你的機器並向外連接請求惡意軟件負載,防火牆可以幫助阻止這種請求。確保將防火牆設定為預設阻止並將任何預期和受信任的連接納入白名單中。