惡意程式碼定義
惡意程式碼意指能建立或利用系統漏洞的有害電腦程式腳本。威脅人士設計惡意程式碼用於導致惡意更改、損壞或對電腦系統的持續存取。惡意程式碼可能會導致後門、安全漏洞、資訊和資料竊取以及對檔案和運算系統的其他潛在損害。
什麼是惡意程式碼?
惡意程式碼是惡意方用來操縱電腦系統進行危險行為的「語言」,並透過對既有的電腦程式、檔案和基礎設施的編寫更改或附加元件來建立。
惡意程式碼是用來執行絕大多數網路安全攻擊的基本工具。駭客根據電腦程式設計所使用的語言探測並發現弱點。然後,建立稱為腳本或指令列表的「短語」,以利用語言中的漏洞。這些腳本可以透過巨集指令(簡稱巨集)重複使用和自動化。
如果駭客或其他威脅人士手動利用電腦系統的漏洞,攻擊行動則會非常緩慢。不幸的是,惡意程式碼能自動進行攻擊。有些程式碼甚至能自我複製、傳播並造成損害。其他類型的程式碼可能需要人類使用者下載或互動。
惡意程式碼通常會導致下列情況:
- 資料損壞
- 分散式阻斷服務(
- 登入憑證盜竊和私人資訊盜竊
- 勒索和敲詐
- 騷擾和不便
為了保護自己,讓我們探討惡意程式碼威脅的運作方式。
惡意程式碼的運作方式為何?
電腦系統的任何程式組件都可能受到惡意程式碼操縱。電腦網路基礎架構等大型元件和手機或桌面應用程式等小型元件都是常見目標。網路服務(例如:網站和線上伺服器)也可能成為目標。惡意程式碼可以感染任何使用電腦進行操作的裝置,例如:
- 傳統電腦裝置-桌上型電腦、筆記型電腦、手機、平板電腦。
- 物聯網設備-智慧居家裝置、車用資訊娛樂系統(IVI)。
- 電腦網路裝置-數據機、路由器、伺服器。
攻擊者使用惡意腳本和程式能入侵電腦系統的受信任部分,並在入侵後進行下列一項或多項目標:
- 讓使用者接觸到惡意程式碼而受到感染,並進一步傳播。
- 存取受入侵系統上的私人資訊。
- 監控受入侵系統的使用情況。
- 更深入地侵入系統。
惡意程式碼的創立和使用可分為幾個不同的階段。惡意腳本程式碼可能需要人機互動或其他電腦操作才能觸發每個階段的下個步驟。值得注意的是,某些程式碼能夠完全自主運作,但大多數惡意程式碼都遵循下列結構:
- 探查並調查漏洞。
- 編寫程式來利用漏洞。
- 暴露電腦系統於惡意程式碼。
- 執行程式碼,透過相關程式或獨自執行。
探測和編寫程式:攻擊的設定階段。攻擊者在入侵系統之前,需要先擁有入侵工具。如果還沒有程式碼,則需要製作該程式碼,但也可能使用或修改現有的惡意程式碼來準備攻擊。
惡意腳本通常能自動啟動並具有各種形式的自動執行應用程式,其中可能包括 JavaScript、ActiveX 控制項、Powershell 誤用、推播內容、外掛程式、腳本語言或其他能增強網頁和電子郵件的程式語言中的巨集和腳本。
暴露:透過 USB 等直接介面連接埠或行動網路和 Wi-Fi 等網路連線可對電腦系統進行暴露。任何能讓惡意程式碼傳播到電腦的方法都可進行暴露。
廣泛攻擊的暴露會使用到熱門網站和垃圾電子郵件等高接觸管道,而更有針對性的攻擊則會使用魚叉式網路釣魚等社會工程方法。透過內部人員的話,甚至可以直接透過本地終端使用者電腦上的 USB 驅動器連接將惡意程式碼植入企業內部網路等專用網路中。
執行:當暴露的系統與惡意程式碼相容時就會執行。目標裝置或系統暴露於惡意程式碼時,所產生的攻擊可能包括下列未經授權的嘗試:
- 修改資料-未經允許的加密、削弱安全性等。
- 刪除或損壞資料-網站伺服器等。
- 取得資料-帳戶登入憑證、個人資料等。
- 存取受限制的系統-私人網路、電子郵件帳號等。
- 執行操作-自我複製、傳播惡意程式碼、遠端裝置控制等。
惡意程式碼如何傳播?
惡意程式碼可用於自動破壞系統、執行二次惡意活動或自我複製和傳播。無論如何,原始程式碼需要從一台裝置移動至另一台裝置以進行傳播,
,並可透過幾乎所有能傳輸資料的通訊管道傳播。通常,傳播媒介包括:
- 線上網路-內部網路、P2P 檔案共享、公共網站等。
- 社群通訊-電子郵件、簡訊、推播內容、行動通訊應用程式等。
- 無線連線-藍牙等。
- 直接裝置介面-USB 等
造訪到受感染的網站或點擊到有問題的電子郵件連結或附件是惡意程式碼潛入系統的常見方式。然而,惡意程式碼可能來自合法來源,也可能來自明顯惡意的來源。公共 USB 充電站或軟體更新工具都可能受到利用而成為惡意程式碼的來源。
惡意程式碼的「包裝」並不總是明顯而容易察覺,但公共連線和訊息服務是最需要注意的傳播途徑。攻擊者經常使用下載內容和 URL 連結來嵌入危險程式碼。
惡意程式碼類型
許多類型的惡意程式碼會尋找能入侵重要資料的入口點來損害電腦。惡意程式碼的類型不斷增加,但以下是一些常見的類型。
病毒
病毒是會自我複製的惡意程式碼,並附帶在啟用巨集的程式上執行。病毒透過檔案傳送和檔案下載進行傳播而進入裝置。病毒受到執行後能自我複製並透過系統和連接的網路進行傳播。
蠕蟲
蠕蟲也是像病毒一樣能自我複製和自我傳播的程式碼,但不需要任何動作即可進行。蠕蟲進入設備後可以完全自行執行,無需使用者執行程式。
木馬程式
木馬程式帶有惡意程式碼負載的誘餌檔案,需要使用者使用檔案或程式來執行。木馬程式無法自我複製或自主傳播,但其帶有的惡意負載可能包含病毒、蠕蟲或其他類型的程式碼。
跨站腳本攻擊(XSS)
跨站腳本能將惡意指令注入使用者可能使用的網路應用程式來影響使用者的網路瀏覽,通常用於更改網路內容、攔截機密資訊或感染使用者的裝置。
後門攻擊
後門攻擊能對應用程式的後門存取進行編碼,讓網路犯罪份子能夠遠端存取受感染的系統。除了用於暴露敏感資料(例如:公司私密資訊)外,後門攻擊還能讓攻擊者進行進階持續性威脅(APT),
網路犯罪份子再透過新獲得的存取等級橫向發展、清除電腦資訊或甚至安裝間諜軟體。後門攻擊的影響等級很高:美國政府問責署甚至就惡意程式碼對國家安全的威脅發出警告。
惡意程式碼攻擊例子
惡意程式碼的形式很多,並且一直以來都非常活躍。以下為一些最著名的攻擊實例:
Emotet 木馬程式
Emotet 於 2014 年首次出現,其從原本的惡意軟體演變為充滿惡意程式碼的垃圾郵件。攻擊者使用了網路釣魚策略,例如:緊急的電子郵件主旨(例如:「尚未付款」)來欺騙使用者下載。
Emotet 在進入裝置後就會運行傳播病毒的腳本、安裝用於招募殭屍網路的指令和控制(C&C)惡意軟體等。該威脅在 2018 年短暫消失後再次成為 SMS 惡意軟體威脅。
Stuxnet 蠕蟲
Stuxnet 蠕蟲及其後續版本自 2010 年以來一直以國家基礎設施為目標。其首次記錄到的攻擊為透過 USB 隨身碟對伊朗核設施進行的攻擊,並摧毀了重要設備。Stuxnet 此後已消失,但其原始程式碼在 2018 年後一直被用於建立類似的高度針對性攻擊。
如何防範惡意程式碼攻擊
具有自動更新、惡意軟體清除、網頁瀏覽安全功能的防毒軟體是針對大多數惡意威脅最好的防禦。然而,單靠防毒軟體可能無法阻止惡意程式碼。
防毒軟體通常可以抵禦和刪除病毒和其他形式的惡意軟體(惡意程式碼的一個子類別)。更廣義的惡意程式碼類別包括可以利用漏洞上傳惡意軟體的網站腳本。根據定義,並非所有防毒保護都可以處理惡意程式碼引起的某些感染或動作。
防毒軟體對主動清除和防禦感染非常重要,但除此之外還是有另一些保護自己的有效方法:
- 安裝防腳本軟體以防止 JavaScript 及相關程式碼未經授權執行。
- 請對連結和附件保持謹慎。任何含有 URL 連結或附件的訊息(無論是電子郵件還是簡訊)都可能成為惡意程式碼的載體。
- 使用瀏覽器彈出視窗封鎖程式以防止腳本在瀏覽器視窗中提供惡意內容。
- 避免以管理員級別帳戶作為日常使用帳戶。自動運行腳本和程式通常需要高階權限。
- 進行資料備份來保護重要的檔案和文件。
- 謹慎使用任何公共連線。USB 連接很容易隱藏惡意程式碼,經常受到忽視。公共 Wi-Fi 也是攻擊者用來傳遞惡意程式碼的常見途徑。
- 使用妥善設定的防火牆來阻止未經授權的連線。防火牆能幫助阻止惡意程式碼進入電腦並向外聯絡並請求惡意軟體負載。確保防火牆設定為預設封鎖並將任何預期和可信任連線加入白名單。