網(wǎng)絡(luò)攻防原理與技術(shù) 第3版 教案 -第6講 惡意代碼_第1頁
網(wǎng)絡(luò)攻防原理與技術(shù) 第3版 教案 -第6講 惡意代碼_第2頁
網(wǎng)絡(luò)攻防原理與技術(shù) 第3版 教案 -第6講 惡意代碼_第3頁
網(wǎng)絡(luò)攻防原理與技術(shù) 第3版 教案 -第6講 惡意代碼_第4頁
網(wǎng)絡(luò)攻防原理與技術(shù) 第3版 教案 -第6講 惡意代碼_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

內(nèi)容備注《網(wǎng)絡(luò)攻防原理與技術(shù)》課程教案講課題目:第六講惡意代碼目的要求:了解惡意代碼中的計算機(jī)病毒、蠕蟲、木馬的基本概念;掌握惡意代碼的傳播與運(yùn)行、隱藏技術(shù);了解惡意代碼檢測及防御技術(shù)。重點(diǎn)難點(diǎn):惡意代碼的傳播與運(yùn)行技術(shù);惡意代碼的隱藏技術(shù)。方法步驟:理論講授。器材保障:電腦、投影儀。主要教學(xué)內(nèi)容:一、惡意代碼概述(一)基本概念惡意代碼(MaliciousCode),又稱為惡意軟件(MaliciousSoftware,Malware),是指在不為人知的情況下侵入用戶的計算機(jī)系統(tǒng),破壞系統(tǒng)、網(wǎng)絡(luò)、信息的保密性、完整性和可用性的程序或代碼。惡意代碼與正常代碼相比具有非授權(quán)性和破壞性等特點(diǎn),這也是判斷惡意代碼的主要依據(jù)。近年來,不同類別的惡意代碼之間的界限逐漸模糊,采用的技術(shù)和方法也呈多樣化、集成化。對惡意代碼的命名或分類也不再以技術(shù)形態(tài),而是基于代碼的功能,如病毒(Virus)、木馬程序(TrojanHorse)、蠕蟲(Worm)、后門程序(Backdoor)、邏輯炸彈(LogicBomb)、RootKit、間諜軟件(Spyware)、勒索軟件或勒索病毒(Ransomware)、挖礦木馬(MiningTrojan)、惡意腳本代碼(MaliciousScript)、Webshell等。計算機(jī)殺毒軟件中的“毒”也不再是只針對傳統(tǒng)的計算機(jī)病毒,而是指各類惡意代碼。(二)計算機(jī)病毒計算機(jī)病毒的定義最早由美國計算機(jī)研究專家科恩博士給出。按照他的定義,計算機(jī)病毒是一種計算機(jī)程序,它通過修改其他程序把自己的一個拷貝或演化的拷貝插入其他程序中實施感染。該定義突出了病毒的傳染特性,即病毒可以自我繁殖。同時,定義也提到了病毒的演化特性,即病毒在感染的過程中可以改變自身的一些特征??贫魉岬降牟《狙莼匦栽谥蟪霈F(xiàn)的很多病毒身上都有體現(xiàn),病毒往往通過自我演化來增強(qiáng)隱匿性,躲避反病毒軟件的查殺。我國在1994年2月18日正式頒布實施了《中華人民共和國計算機(jī)信息系統(tǒng)安全保護(hù)條例》,《條例》的第二十八條中明確指出“計算機(jī)病毒,是指編制或者在計算機(jī)程序中插入的破壞計算機(jī)功能或者毀壞數(shù)據(jù),影響計算機(jī)使用,并能自我復(fù)制的一組計算機(jī)指令或者程序代碼”。這個病毒的定義在我國具有法律性和權(quán)威性。2022年發(fā)布的國家標(biāo)準(zhǔn)《信息安全技術(shù)術(shù)語》(GB/T25069-2022)中對“病毒”的定義是:一種程序,即通過修改其他程序,使其他程序包含一個自身可能已發(fā)生變化的原程序副本,從而完成傳播自身程序,當(dāng)調(diào)用受傳染的程序,該程序即被執(zhí)行。計算機(jī)病毒典型特性:傳染性、潛伏性、可觸發(fā)性、寄生性、非授權(quán)執(zhí)行性、破壞性。典型計算機(jī)病毒的基本功能模塊:引導(dǎo)模塊、搜索模塊、感染模塊、表現(xiàn)模塊、標(biāo)識模塊。(三)計算機(jī)蠕蟲2022年發(fā)布的國家標(biāo)準(zhǔn)《信息安全技術(shù)術(shù)語》(GB/T25069-2022)對計算機(jī)蠕蟲的定義是:一種通過數(shù)據(jù)處理系統(tǒng)或計算機(jī)網(wǎng)絡(luò)傳播自身的獨(dú)立程序,經(jīng)常被設(shè)計用來占滿可用資源,如存儲空間或處理時間。國家互聯(lián)網(wǎng)應(yīng)急響應(yīng)中心(CNCERT)在每月發(fā)布的《CNCERT互聯(lián)網(wǎng)安全威脅報告》中,將蠕蟲定義為:能自我復(fù)制和廣泛傳播,以占用系統(tǒng)和網(wǎng)絡(luò)資源為主要目的的惡意代碼,按照傳播途徑,蠕蟲可進(jìn)一步分為:郵件蠕蟲、即時消息蠕蟲、U盤蠕蟲、漏洞利用蠕蟲和其它蠕蟲五類。網(wǎng)絡(luò)安全公司360將蠕蟲定義為:通過網(wǎng)絡(luò)將自身復(fù)制到網(wǎng)絡(luò)中其他計算機(jī)上的惡意程序,有別于普通病毒,蠕蟲病毒通常并不感染計算機(jī)上的其他程序,而是竊取其他計算機(jī)上的機(jī)密信息。上述三種定義對于蠕蟲的傳播途徑和功能的描述存在差異,但一般認(rèn)為計算機(jī)蠕蟲是一種可以獨(dú)立運(yùn)行,并通過網(wǎng)絡(luò)傳播的惡性代碼。它具有傳統(tǒng)計算機(jī)病毒的一些特性,如傳播性、隱蔽性、破壞性等,但蠕蟲也具有自己的特點(diǎn),如漏洞依賴性等,需要通過網(wǎng)絡(luò)系統(tǒng)漏洞進(jìn)行傳播,另外蠕蟲也不需要宿主文件,有的蠕蟲甚至只存在于內(nèi)存中。也就是說,大多數(shù)情況下,蠕蟲是指CNCERT定義中的“漏洞利用蠕蟲”。蠕蟲的基本功能模塊包括:1)搜索模塊。自動運(yùn)行,尋找下一個滿足感染條件(存在漏洞)的目標(biāo)計算機(jī)。當(dāng)搜索模塊向某個主機(jī)發(fā)送探測漏洞的信息并收到成功的反饋信息后,就得到一個可傳播的對象。搜索模塊通常會利用網(wǎng)絡(luò)掃描技術(shù)探測主機(jī)存活情況、服務(wù)開啟情況、軟件版本等。2)攻擊模塊。按漏洞攻擊步驟自動攻擊搜索模塊找到的對象,取得該主機(jī)的權(quán)限(一般為管理員權(quán)限),在被感染的機(jī)器上建立傳輸通道(通常獲取一個遠(yuǎn)程Shell)。攻擊模塊通常利用系統(tǒng)或服務(wù)中存在的安全漏洞,如緩沖區(qū)溢出漏洞,遠(yuǎn)程注入代碼并執(zhí)行,并在必要的時候進(jìn)行權(quán)限提升。3)傳輸模塊。負(fù)責(zé)計算機(jī)間的蠕蟲程序復(fù)制??衫眠h(yuǎn)程Shell直接傳輸,或安裝后門進(jìn)行文件傳輸。4)負(fù)載模塊。進(jìn)入被感染系統(tǒng)后,負(fù)載模塊可以實現(xiàn)與木馬相同的功能,如信息搜集、現(xiàn)場清理、攻擊破壞等,但通常不包括遠(yuǎn)程控制功能,因為攻擊者一般不需要控制蠕蟲,從這一點(diǎn)上看,蠕蟲更接近病毒。5)控制模塊。該模塊負(fù)責(zé)調(diào)整蠕蟲行為,控制被感染主機(jī),執(zhí)行控制端下達(dá)的指令。影響蠕蟲傳播速度的因素主要有三個:有多少潛在的“脆弱”目標(biāo)可以被利用;潛在的存在漏洞的主機(jī)被發(fā)現(xiàn)的速度,也就是單位時間內(nèi)能夠找到多少可以感染的主機(jī)系統(tǒng);蠕蟲對目標(biāo)的感染(拷貝自身)速度有多快。(四)計算機(jī)木馬計算機(jī)木馬,常稱為“特洛伊木馬”、“木馬”,名稱來源于《荷馬史詩》,是一種偽裝成正常文件的惡意程序。將《荷馬史詩》中的木馬映射到網(wǎng)絡(luò)安全領(lǐng)域,黑客相當(dāng)于希臘軍隊,計算機(jī)用戶相當(dāng)于特洛伊人。由于很多計算機(jī)用戶通過打補(bǔ)丁、安裝個人防火墻等方式對計算機(jī)進(jìn)行了安全防護(hù),黑客很難直接通過網(wǎng)絡(luò)攻擊的方法獲得計算機(jī)的控制權(quán),在這種情況下,黑客通過各種手段傳播木馬,并誘騙計算機(jī)用戶運(yùn)行,通過木馬繞過系統(tǒng)的安全防護(hù)手段后,獲得計算機(jī)的控制權(quán)限,盜取他人信息。木馬程序具有破壞性,會對計算機(jī)安全構(gòu)成威脅。同時,木馬具有很強(qiáng)的隱蔽性,會采用各種手段避免被計算機(jī)用戶發(fā)現(xiàn)。但與病毒不同,木馬程序不具備自我復(fù)制的能力,也就是其本身不具有傳染性。在計算機(jī)發(fā)展的早期,木馬出現(xiàn)較少,因為木馬編寫者必須通過手工傳播的方法散播木馬程序,難度較大。遠(yuǎn)程控制型木馬的組成結(jié)構(gòu)相對復(fù)雜,一般采用網(wǎng)絡(luò)應(yīng)用中常見的Client/Server模式,由客戶端程序和服務(wù)器端程序兩部分組成。其中,木馬的服務(wù)器端程序在黑客的主機(jī)上運(yùn)行,黑客通過服務(wù)器端程序?qū)Ρ恢踩肽抉R的遠(yuǎn)程主機(jī)實施監(jiān)視和控制。木馬的客戶端程序被廣泛傳播,植入受害者主機(jī)并獲得運(yùn)行機(jī)會后,與服務(wù)器端程序建立通信連接并接受服務(wù)器端的控制。由于遠(yuǎn)程控制型木馬的客戶端程序是實際執(zhí)行破壞活動的程序,一般將其簡稱為木馬程序,而將對應(yīng)的服務(wù)器端程序稱為控制端程序或命令與控制(Command&Control,C&C,簡稱C2)服務(wù)器。從主體功能看,遠(yuǎn)程控制型木馬與遠(yuǎn)程控制軟件相類似,都能夠?qū)崿F(xiàn)對遠(yuǎn)程主機(jī)的訪問操作,兩者的區(qū)別主要體現(xiàn)在兩個方面:①訪問是否經(jīng)過了授權(quán)。遠(yuǎn)程控制軟件一般需要訪問者輸入被訪問主機(jī)上的賬號和密碼等信息,只有通過身份驗證的用戶才能進(jìn)入系統(tǒng),根據(jù)賬戶的權(quán)限進(jìn)行操作,這種訪問是在身份認(rèn)證基礎(chǔ)上進(jìn)行的合法授權(quán)訪問。而利用遠(yuǎn)程控制型木馬對遠(yuǎn)程主機(jī)的訪問是非授權(quán)的;②訪問是否具有隱蔽性。通過遠(yuǎn)程控制軟件對主機(jī)進(jìn)行遠(yuǎn)程訪問時,被訪問主機(jī)的任務(wù)欄或者系統(tǒng)托盤等區(qū)域通常會有明顯的圖標(biāo)標(biāo)識,表明有用戶正在進(jìn)行遠(yuǎn)程訪問。如果計算機(jī)旁有用戶在操作計算機(jī),用戶能夠?qū)崟r了解到發(fā)生了遠(yuǎn)程訪問事件。而對于遠(yuǎn)程控制型木馬,必須考慮到一旦計算機(jī)用戶發(fā)現(xiàn)自己的主機(jī)感染木馬,會采用各種手段進(jìn)行清除,所以隱蔽性對于遠(yuǎn)程控制型木馬而言非常重要。在各類木馬中,遠(yuǎn)程控制型木馬的利用過程最為復(fù)雜,也最為常見。一般而言,黑客利用遠(yuǎn)程控制型木馬進(jìn)行網(wǎng)絡(luò)入侵主要包括五個步驟:配置木馬、傳播木馬、運(yùn)行木馬、建立通信和遠(yuǎn)程控制。近幾年來,一種針對Web應(yīng)用的遠(yuǎn)程控制木馬,Webshell被大量使用。Webshell是一種用PHP、ASP、JSP等網(wǎng)頁腳本語言編寫的Web網(wǎng)頁文件形式的可執(zhí)行代碼,其主要目的是在Web服務(wù)器上構(gòu)建一種命令執(zhí)行環(huán)境。顧名思義,其中“Web”指的是“Web服務(wù)”,“shell”通常是指用戶與操作系統(tǒng)之間的命令交互接口,合起來的“Webshell”就是通過Web服務(wù)器實現(xiàn)的與Web服務(wù)器操作系統(tǒng)進(jìn)行交互的命令接口。實際應(yīng)用時,只需將Webshell代碼文件上傳到網(wǎng)站服務(wù)器上的網(wǎng)站目錄中,然后通過網(wǎng)址訪問該網(wǎng)頁文件即可對Web服務(wù)器執(zhí)行各種管理和控制操作,極大地方便了網(wǎng)站管理人員對網(wǎng)站和服務(wù)器的管理。由于使用方便、功能強(qiáng)大、隱蔽性好,近幾年來,Webshell被黑客廣泛應(yīng)用于網(wǎng)站攻擊中,已成為黑客最常用的網(wǎng)站控制程序。在網(wǎng)絡(luò)攻防領(lǐng)域,很多時候Webshell這一名詞專指用于網(wǎng)站遠(yuǎn)程控制的網(wǎng)頁形態(tài)的計算機(jī)木馬,而不再是用于網(wǎng)站遠(yuǎn)程運(yùn)維的網(wǎng)頁腳本。二、惡意代碼傳播與運(yùn)行技術(shù)(一)傳播惡意代碼從傳播是否由攻擊者主動參與的角度,可以將惡意代碼傳播技術(shù)主要分為主動植入與被動植入兩類。主動植入,也稱為“定向滲透”,是指攻擊者主動將惡意程序植入到本地或者是遠(yuǎn)程主機(jī)上,這個行為過程完全由攻擊者主動掌握。按照目標(biāo)系統(tǒng)是本地還是遠(yuǎn)程,這種方法又分為本地安裝與遠(yuǎn)程安裝兩種場景。(1)本地安裝。就是攻擊者在能夠直接接觸的本地主機(jī)上進(jìn)行安裝。在經(jīng)常更換使用者的一些公共場所的公用計算機(jī)上或通過各種方式接觸到目標(biāo)計算機(jī)時,進(jìn)入目標(biāo)系統(tǒng)安裝惡意代碼。(2)遠(yuǎn)程安裝。就是攻擊者通過常規(guī)攻擊手段獲得遠(yuǎn)程目標(biāo)主機(jī)的一定權(quán)限后,將惡意代碼上傳到目標(biāo)主機(jī)上,并使其運(yùn)行起來。這種實現(xiàn)場景通常要求目標(biāo)主機(jī)上存在操作系統(tǒng)漏洞或第三方軟件漏洞,攻擊者利用目標(biāo)上的安全漏洞上傳惡意代碼??偟膩碚f,主動植入所需的技術(shù)難度和攻擊條件較高,因此傳播惡意代碼主要還是采用被動植入方法。被動植入,也稱為“自動傳播”,是指攻擊者預(yù)先設(shè)置某種環(huán)境,然后被動等待目標(biāo)設(shè)備或系統(tǒng)用戶的某種可能操作,只要用戶執(zhí)行了這種操作,惡意代碼程序就有可能植入目標(biāo)系統(tǒng)。具體來說,惡意代碼的傳播方式主要有以下幾種:1)利用安全漏洞傳播攻擊者利用弱口令、遠(yuǎn)程代碼執(zhí)行、緩沖區(qū)溢出等網(wǎng)絡(luò)產(chǎn)品安全漏洞,攻擊入侵用戶內(nèi)部網(wǎng)絡(luò)或目標(biāo)服務(wù)器,獲取管理員權(quán)限,進(jìn)而主動傳播惡意代碼。2)利用釣魚郵件傳播攻擊者將惡意代碼內(nèi)嵌至釣魚郵件的文檔、圖片、壓縮包等附件,或?qū)阂獯a鏈接寫入釣魚郵件正文中,通過網(wǎng)絡(luò)釣魚攻擊傳播惡意代碼。一旦用戶打開郵件附件,或點(diǎn)擊惡意鏈接,惡意代碼將被加載、安裝和運(yùn)行。3)利用網(wǎng)站掛馬傳播Web網(wǎng)站因搭建簡單、瀏覽量大而成為木馬、勒索病毒等惡意代碼的主要傳播渠道。攻擊者通過網(wǎng)絡(luò)攻擊網(wǎng)站,在網(wǎng)站植入惡意代碼的方式掛馬,或通過主動搭建包含惡意代碼的網(wǎng)站,誘導(dǎo)用戶訪問網(wǎng)站并觸發(fā)惡意代碼,劫持用戶當(dāng)前訪問頁面至惡意代碼下載鏈接并執(zhí)行,進(jìn)而向用戶設(shè)備植入惡意代碼。4)利用移動介質(zhì)傳播移動存儲介質(zhì),如U盤、移動硬盤、光盤等是很多惡意代碼的傳播媒介。攻擊者將惡意代碼寫入移動存儲介質(zhì),當(dāng)用戶將感染了惡意代碼的存儲介質(zhì)插入計算機(jī)時,惡意代碼可以利用Windows的Autorun、Autoplay機(jī)制來執(zhí)行其中的惡意程序,或當(dāng)用戶將惡意程序拷入計算機(jī)中,點(diǎn)擊運(yùn)行時感染目標(biāo)計算機(jī)。5)利用軟件供應(yīng)鏈傳播攻擊者利用軟件供應(yīng)商與軟件用戶間的信任關(guān)系,通過攻擊入侵軟件供應(yīng)商的相關(guān)服務(wù)器設(shè)備,利用軟件供應(yīng)鏈分發(fā)、更新等機(jī)制,在合法軟件正常傳播、升級等過程中,對合法軟件進(jìn)行劫持或篡改,規(guī)避用戶網(wǎng)絡(luò)安全防護(hù)機(jī)制,傳播惡意代碼。6)利用遠(yuǎn)程桌面入侵傳播攻擊者通常利用弱口令、暴力破解等方式獲取攻擊目標(biāo)服務(wù)器遠(yuǎn)程登錄用戶名和密碼,進(jìn)而通過遠(yuǎn)程桌面協(xié)議登錄服務(wù)器并植入木馬、勒索病毒等惡意代碼。同時,攻擊者一旦成功登錄服務(wù)器,獲得服務(wù)器控制權(quán)限,可以服務(wù)器為攻擊跳板,在用戶內(nèi)部網(wǎng)絡(luò)進(jìn)一步傳播惡意代碼。7)以虛擬化環(huán)境作為攻擊跳板,雙向滲透傳播惡意代碼勒索病毒、木馬等惡意代碼開始以虛擬環(huán)境為通道,通過感染虛擬機(jī)、虛擬云服務(wù)器等,強(qiáng)制中止虛擬化進(jìn)程,或利用虛擬化產(chǎn)品漏洞、虛擬云服務(wù)器配置缺陷等,實現(xiàn)虛擬化環(huán)境的“逃逸”,進(jìn)而向用戶和網(wǎng)絡(luò)“雙向滲透”傳播勒索病毒、木馬。8)利用即時通信工具植入隨著微信、QQ等社交軟件的廣泛普及,通過社交軟件傳播惡意代碼也成為黑客常用的手段。與電子郵件的傳播手法類似,黑客可以利用社交軟件直接發(fā)送惡意代碼,也可以欺騙計算機(jī)用戶去訪問掛馬的站點(diǎn)。(二)運(yùn)行惡意代碼運(yùn)行惡意代碼可以分為二個階段,第一個階段是首次植入到目標(biāo)系統(tǒng)中的運(yùn)行;第二個階段是長期駐留時的運(yùn)行,當(dāng)系統(tǒng)重啟后讓自身再次獲得執(zhí)行機(jī)會而不引起明顯異常,從而實現(xiàn)盡可能長時間的生存,也就是常說的“持久化”。1.植入時運(yùn)行首次植入到目標(biāo)系統(tǒng)中的運(yùn)行主要方法有:用戶操作運(yùn)行、利用安全漏洞運(yùn)行。用戶操作運(yùn)行是指用戶點(diǎn)擊運(yùn)行包含惡意代碼的程序,例如攻擊者將可執(zhí)行的惡意程序偽裝成文檔或圖片文件引誘用戶點(diǎn)擊運(yùn)行,用戶訪問網(wǎng)頁形式的惡意代碼(如Webshell)啟動了惡意程序,用戶打開存有惡意代碼文件的移動存儲設(shè)備等。利用安全漏洞運(yùn)行是指攻擊者利用安全漏洞來執(zhí)行惡意代碼,最常見的是利用緩沖區(qū)溢出漏洞執(zhí)行惡意代碼,例如很多蠕蟲、勒索病毒常利用網(wǎng)絡(luò)服務(wù)程序中存在的緩沖區(qū)溢出漏洞來執(zhí)行。2.持久化運(yùn)行對于那些需要長期駐留運(yùn)行的惡意代碼,特別是遠(yuǎn)程控制類惡意代碼,如木馬、Rootkit、后門等,當(dāng)目標(biāo)系統(tǒng)重啟或惡意代碼程序退出后需要有一種機(jī)制來自動啟動已駐留的惡意代碼,以實現(xiàn)持久化運(yùn)行。系統(tǒng)開機(jī)時自啟動是惡意代碼早期最常見的觸發(fā)方法。實現(xiàn)惡意代碼開機(jī)啟動的方法比較多。首先,可以在系統(tǒng)的“啟動”文件夾中進(jìn)行設(shè)置,該文件夾默認(rèn)的位置為C:\DocumentsandSettings\AllUsers\開始菜單\程序\啟動。按照系統(tǒng)的設(shè)定,該文件夾中的所有程序,都將在用戶登錄后啟動運(yùn)行。其次,惡意代碼還可以通過一些系統(tǒng)配置文件啟動,例如,在早期WindowsXP中,System.ini、Win.ini、Winstart.bat、Autoexec.bat等都是惡意代碼所關(guān)注的配置文件。這些文件能自動被Windows在啟動時加載運(yùn)行,惡意代碼將自身程序加入此類批處理文件中,達(dá)到開機(jī)啟動的目的。一些惡意代碼將自身注冊為系統(tǒng)服務(wù),并將相應(yīng)服務(wù)設(shè)置為系統(tǒng)開機(jī)時自啟動。例如,WindowsResourceKit工具包(其中包含的工具可能會根據(jù)用戶使用的Windows版本而有所不同)中的程序instsrv.exe常常被惡意代碼用來創(chuàng)建系統(tǒng)服務(wù),服務(wù)的管理和配置可以通過程序sc.exe來實施。與服務(wù)啟動相似的還有一種方法:Windows的任務(wù)計劃。在默認(rèn)情況下,任務(wù)計劃程序隨Windows一起啟動并在后臺運(yùn)行。如果把某個程序添加到任務(wù)計劃文件夾,并將任務(wù)計劃設(shè)置為“系統(tǒng)啟動時”或“登錄時”,這樣也可以實現(xiàn)程序自啟動。惡意代碼除了開機(jī)運(yùn)行這種啟動方式,還可以采用觸發(fā)式的啟動方式。這種啟動方式需要計算機(jī)用戶執(zhí)行某些操作觸發(fā)惡意代碼的運(yùn)行。最典型的觸發(fā)方式是修改文件關(guān)聯(lián),在用戶運(yùn)行指定類型的文件時惡意代碼程序觸發(fā)運(yùn)行。通過替換系統(tǒng)動態(tài)鏈接庫(DLL)來執(zhí)行也是早期惡意代碼常用的方法。這種方法通過APIHOOK實現(xiàn)(也稱為“DLL陷阱技術(shù)”),將Windows系統(tǒng)中正常的DLL文件,如kernel32.dll和user32.dll這些隨系統(tǒng)一起加載的DLL替換為木馬DLL。(三)惡意代碼隱藏技術(shù)從攻擊者的角度看,希望惡意代碼具有很強(qiáng)的隱蔽性,能夠長期隱藏在被感染主機(jī)中,而不會被計算機(jī)用戶發(fā)現(xiàn)。惡意代碼的隱藏涉及在目標(biāo)主機(jī)上植入(傳播)、存儲和運(yùn)行等各個環(huán)節(jié)。存儲時的隱藏惡意代碼的存儲,即惡意代碼文件也必須保證隱蔽性,避免用戶發(fā)現(xiàn)計算機(jī)中出現(xiàn)了異常文件。隱藏惡意代碼可執(zhí)行文件或快捷方式的方法有很多。首先,隱藏文件的可執(zhí)行屬性,包括文件類型圖標(biāo)偽裝,雙擴(kuò)展名,文件名用空格增加長度以隱藏后綴等。其中,雙擴(kuò)展名方法利用Windows系統(tǒng)“隱藏已知文件類型的擴(kuò)展名”的特性,把一個惡意代碼程序命名為帶雙擴(kuò)展名的形式。攻擊者通常用超長文件名來隱藏第二個擴(kuò)展名后綴,同時將文件的圖標(biāo)修改為第一個擴(kuò)展名對應(yīng)的文件類型默認(rèn)圖標(biāo)來增強(qiáng)迷惑性。其次,惡意代碼可以利用文件的“隱藏”屬性進(jìn)行隱藏。在Windows系統(tǒng)中,如果一個文件被設(shè)置了“隱藏”屬性,同時系統(tǒng)被設(shè)置為“不顯示隱藏的文件和文件夾”,那么用戶瀏覽文件夾時相應(yīng)的文件不會顯示。再者,惡意代碼可以利用系統(tǒng)中的一些特定規(guī)則實現(xiàn)自身的隱藏。在Windows系統(tǒng)中很多木馬會將自身所在的文件夾以回收站的形式顯示。Windows系統(tǒng)中回收站、控制面板和網(wǎng)上鄰居等都屬于特殊的文件夾,它們與一般文件夾的區(qū)別是具有特定的擴(kuò)展名。另外,惡意代碼還可以使用NTFS文件系統(tǒng)的數(shù)據(jù)流機(jī)制來隱藏自身。NTFS交換數(shù)據(jù)流(AlternateDataStreams,ADS)是NTFS磁盤格式的一個特性。在NTFS中,每個文件都可以存在多個數(shù)據(jù)流,即除了主文件流,還可以有許多非主文件流存儲于文件的磁盤空間中。通常情況下,一個文件默認(rèn)使用的是未命名的主文件流,而其它命名的非主文件流并不存在,除非用戶明確創(chuàng)建并使用這些非主文件流。這些命名的非主文件流在功能上和使用方式上與未命名文件流完全一致,可以用來存儲任何數(shù)據(jù)(包括惡意代碼文件)。惡意代碼還可以通過一些技術(shù)手段來隱藏自身,使用較多、隱藏效果較好的方法是在Windows系統(tǒng)中采用Hook技術(shù),截獲計算機(jī)用戶查看文件的指令并替換顯示結(jié)果。Hook技術(shù)是Windows中提供的一種用以替換DOS下“中斷”的一種系統(tǒng)機(jī)制,中文譯名為“掛鉤”或“鉤子”。通過Hook,可以改變應(yīng)用編程接口(API)的執(zhí)行結(jié)果。APIHook技術(shù)并不是惡意代碼的專有技術(shù),但是惡意代碼經(jīng)常使用這種技術(shù)來達(dá)到隱藏自己的目的。當(dāng)對特定的系統(tǒng)事件進(jìn)行Hook后,一旦相應(yīng)事件發(fā)生,對該事件進(jìn)行Hook的程序就會收到系統(tǒng)的通知,這時程序就能在第一時間對事件做出響應(yīng)。惡意代碼常常對系統(tǒng)服務(wù)描述符表中一些感興趣的內(nèi)容進(jìn)行Hook。例如,如果惡意代碼的目標(biāo)是實現(xiàn)文件的隱藏,那么可以選擇NtQueryDirectoryFile這個內(nèi)核API作為Hook的對象。在完成相應(yīng)的Hook操作以后,系統(tǒng)中所有與查看文件相關(guān)的操作都會被惡意代碼截獲,如果系統(tǒng)查看的內(nèi)容與惡意代碼文件無關(guān),惡意程序會調(diào)用NtQueryDirectoryFile,并且把NtQueryDirectoryFile返回的結(jié)果提交給用戶。如果查看的內(nèi)容與惡意代碼文件有關(guān),惡意代碼會將自己的文件信息從NtQueryDirectoryFile的返回結(jié)果中隱藏,并將剩余的結(jié)果返回給用戶。一些惡意代碼還會采用隱寫術(shù)將載荷和配置信息隱藏在其它信息中,或以不常見的載體來存儲信息。例如著名的AgentTesla竊密木馬采用的ReZer0加載器將PE格式的攻擊載荷隱藏在圖片像素中,運(yùn)行時通過解析圖片的像素點(diǎn)數(shù)據(jù)來還原載荷,以躲避檢測。運(yùn)行時的隱藏很多普通的計算機(jī)程序在運(yùn)行時,會有圖標(biāo)出現(xiàn)在任務(wù)欄或者桌面右下角的通知區(qū)域。惡意程序為了避免引起計算機(jī)用戶的注意,在運(yùn)行時都不會在這些區(qū)域出現(xiàn)運(yùn)行圖標(biāo)。這可以看作惡意代碼最基本的一種進(jìn)程隱藏方法。其次,一些惡意代碼會使用與系統(tǒng)進(jìn)程相似的名稱達(dá)到迷惑用戶的目的,比較常用的一種方法是采用一些數(shù)字取代與這些數(shù)字在形狀上相似的字母。如果計算機(jī)用戶查看進(jìn)程時不夠仔細(xì),很容易被木馬蒙混過關(guān)。惡意代碼可以通過Hook技術(shù)攔截相應(yīng)API函數(shù)的調(diào)用,一旦指定的API函數(shù)被調(diào)用,惡意程序?qū)⒘⒓吹玫酵ㄖ?。惡意代碼在隱藏過程中的主要工作是處理API調(diào)用返回的進(jìn)程信息,將惡意代碼進(jìn)程從進(jìn)程列表中移除,而后再將處理結(jié)果返回給發(fā)起調(diào)用的用戶程序。一般來說,惡意代碼除隱藏自身的進(jìn)程外,不會對其它進(jìn)程進(jìn)行隱藏,因為修改的內(nèi)容越多越容易引起用戶的懷疑,導(dǎo)致自身暴露。除了利用Hook技術(shù)實現(xiàn)進(jìn)程列表欺騙,惡意代碼還可以完全不使用進(jìn)程,而將需要完成的功能通過Windows系統(tǒng)的動態(tài)鏈接庫實現(xiàn)。動態(tài)鏈接庫是Windows系統(tǒng)的一種可執(zhí)行模塊,這種模塊中包含了可以被其它應(yīng)用程序或者其它動態(tài)鏈接庫共享的程序代碼和資源。除了直接調(diào)用惡意代碼DLL這種方法,惡意代碼還經(jīng)常使用一種稱為特洛伊DLL的技術(shù)。特洛伊DLL實際上是一種偷梁換柱的方法。黑客使用特洛伊DLL的第一步是將系統(tǒng)中的某一個或者某一些DLL文件進(jìn)行重命名,并將木馬DLL以系統(tǒng)中原有的DLL文件進(jìn)行命名。使用特洛伊DLL的第二步是當(dāng)惡意代碼DLL被調(diào)用時,根據(jù)具體情況轉(zhuǎn)發(fā)調(diào)用請求或者執(zhí)行破壞功能。微軟針對特洛伊DLL也采取了一些防護(hù)方法,例如,Windows2000以后的系統(tǒng)使用了一個專門的目錄來備份系統(tǒng)的DLL文件,一旦發(fā)現(xiàn)系統(tǒng)內(nèi)的DLL文件完整性受到了破壞,即自動從備份文件夾中恢復(fù)相應(yīng)的DLL文件。但是微軟的這種防護(hù)方法并不完善,攻擊者可以先修改備份文件夾中的DLL文件,進(jìn)而再對系統(tǒng)中的DLL進(jìn)行修改或者替換。惡意代碼還可以采用遠(yuǎn)程線程技術(shù),通過在指定的遠(yuǎn)程進(jìn)程中創(chuàng)建線程將自身的代碼作為線程注入其它進(jìn)程的內(nèi)存空間,隱匿在相應(yīng)進(jìn)程中執(zhí)行。由于木馬隱藏在其他進(jìn)程內(nèi)部,難以被發(fā)覺。遠(yuǎn)程控制類惡意代碼需要與其遠(yuǎn)程控制端進(jìn)行通信,以回傳信息或接受控制命令。很多安全機(jī)制,如入侵檢測系統(tǒng)、網(wǎng)絡(luò)防火墻等,可以對網(wǎng)絡(luò)通信流量進(jìn)行分析來發(fā)現(xiàn)惡意代碼產(chǎn)生的異常通信流量。因此,為逃避檢測,惡意代碼通常需要采用一些通信隱藏技術(shù)。由于很多安全系統(tǒng)會對TCP、UDP通信流量進(jìn)行安全檢測,如果惡意代碼與遠(yuǎn)程控制端建立TCP連接或用無連接的UDP直接通信,則比較容易暴露,因此,很多惡意代碼采用非TCP、UDP通信,如ICMP協(xié)議、IP協(xié)議,以避免由于端口使用所帶來的暴露問題。近年來,為了隱藏C&C服務(wù)器的IP地址,惡意代碼中很少硬編碼其服務(wù)器IP地址,而是使用服務(wù)器的域名。攻擊者經(jīng)常利用域名生成算法(DomainGenerateAlgorithm,DGA)來生成一個偽隨機(jī)的域名列表,并對其中部分域名進(jìn)行真實的注冊,同時綁定C&C服務(wù)器的IP地址,失陷主機(jī)自動請求列表中所有的域名,當(dāng)域名被注冊時,就能夠返回C&C服務(wù)器的IP地址列表,從而與其建立通信。CDN域前置也是惡意代碼用來偽裝流量和隱藏真實C&C服務(wù)器的一種常見手段。如果一個真實存在的合法域名A通過CDN進(jìn)行加速,那么攻擊者可以在同一個CDN運(yùn)營商中將C&C服務(wù)器與域名B進(jìn)行綁定,域名B可以是一個某合法域名下不存在的子域名(用于進(jìn)行偽裝)。因為CDN節(jié)點(diǎn)會根據(jù)HTTP請求首部的Host字段轉(zhuǎn)發(fā)到綁定的IP,所以如果攻擊者在Host字段填入自己的域名B,而向域名A發(fā)起請求,網(wǎng)絡(luò)通信數(shù)據(jù)實際上會被發(fā)送到CDN節(jié)點(diǎn),進(jìn)而轉(zhuǎn)發(fā)到攻擊者控制的IP。惡意代碼與其控制端也可以不直接進(jìn)行通信,而是通過中間人的方式交換信息,如將要傳輸?shù)男畔l(fā)送到公網(wǎng)郵箱、FTP服務(wù)器、網(wǎng)盤或利用云服務(wù)搭建的服務(wù)器上,由其控制端在適當(dāng)?shù)臅r間去獲取。一些惡意代碼還會實時檢測系統(tǒng)中是否有流量監(jiān)測、分析軟件在運(yùn)行,如果有則停止與C&C服務(wù)器間的通信。在信息交換策略方面,通信時應(yīng)盡量避免大流量、快速地傳輸信息,因為這樣很容易被部署的網(wǎng)絡(luò)安全設(shè)備,如入侵檢測系統(tǒng)、流量監(jiān)測系統(tǒng)發(fā)現(xiàn)。因此,好的傳輸原則是分批、小流量、緩慢地向外傳輸信息,這樣不會導(dǎo)致目標(biāo)網(wǎng)絡(luò)流量出現(xiàn)異常,這也是很多惡意代碼常常采用的傳輸策略。3.抗分析檢測技術(shù)惡意代碼為了抵抗用戶對其進(jìn)行靜態(tài)、動態(tài)逆向分析,通常會對其二進(jìn)制代碼進(jìn)行混淆,還會通過宿主機(jī)邏輯處理器數(shù)量、運(yùn)行內(nèi)存、CPU高速緩存、注冊表指定軟件安裝目錄、虛擬機(jī)驅(qū)動、鼠標(biāo)指針移動距離以及系統(tǒng)啟動時間來判斷自身是否處于虛擬機(jī)、沙箱之中,當(dāng)確認(rèn)所處環(huán)境不是虛擬機(jī)以及沙箱時才進(jìn)一步執(zhí)行惡意操作。為了逃避檢測,很多惡意代碼會對目標(biāo)環(huán)境中安裝的終端安全軟件,特別是殺毒軟件進(jìn)行檢測,關(guān)閉檢測到的安全軟件后再執(zhí)行惡意操作或下載實現(xiàn)惡意功能的有效負(fù)載。一些惡意代碼使用多層攻擊載荷嵌套加載,每層載荷使用不同的混淆手段在內(nèi)存中加載,規(guī)避安全檢測。三、惡意代碼檢測及防范(一)基本思想惡意代碼檢測的主要思想是基于采集到的與代碼有關(guān)的信息來判斷該代碼是否具有惡意行為。代碼信息采集主要在兩個階段進(jìn)行:代碼執(zhí)行前和代碼執(zhí)行后。代碼執(zhí)行前采集是指在不執(zhí)行代碼的情況下獲取任何與代碼有關(guān)的數(shù)據(jù),如文件格式信息、代碼描述、二進(jìn)制數(shù)據(jù)統(tǒng)計信息、文本/二進(jìn)制字符串、代碼片段等;代碼執(zhí)行后采集是指在代碼開始運(yùn)行后獲取該代碼進(jìn)程在系統(tǒng)中的各種行為信息或該進(jìn)程引發(fā)的各種事件。相應(yīng)地,將基于代碼執(zhí)行前信息的惡意代碼檢測技術(shù)稱為靜態(tài)檢測技術(shù),而將基于代碼執(zhí)行后信息的惡意代碼檢測技術(shù)稱為動態(tài)檢測技術(shù)。靜態(tài)檢測技術(shù)查其“形”,動態(tài)分析技術(shù)查其“行”,二者相輔相成。(二)靜態(tài)檢測技術(shù)典型的靜態(tài)檢測技術(shù)是特征碼檢測(也稱為“基于簽名的惡意代碼檢測”)。惡意代碼分析人員首先對惡意代碼進(jìn)行人工分析,提取代碼中特定的特征數(shù)據(jù)(Signature,特征碼或簽名),然后將其加入惡意代碼特征庫中。從理論上講掃描一個惡意代碼需要與數(shù)百萬個特征碼進(jìn)行匹配,但在實際殺毒軟件中,通過各種優(yōu)化技術(shù),可以大幅提高掃描效率。另外,隨著云計算技術(shù)的普遍應(yīng)用,為了提高檢測速度,很多殺毒軟件將提取到的特征碼發(fā)送到云上進(jìn)行匹配,而不是在用戶端進(jìn)行檢測,利用后臺強(qiáng)大的云計算能力來實現(xiàn)快速檢測。除了文件特征碼外,很多惡意代碼分析系統(tǒng),如VirusTotal,Sophos,McAfee,Bitdefender,Kaspersky等,也將URL、域名作為檢測惡意代碼的特征。這些系統(tǒng)構(gòu)建了一個龐大的惡意URL、域名數(shù)據(jù)庫用于檢測。特征碼檢測技術(shù)的主要優(yōu)點(diǎn)是簡單、檢測速度快、準(zhǔn)確率高,不足之處是不能檢測未知惡意軟件,對于惡意代碼變體的容忍度也很低,稍微變形便無法識別;用戶需要不斷地升級殺毒軟件特征庫,同時隨著特征庫越來越大,檢測的效率會越來越低。(三)動態(tài)檢測技術(shù)動態(tài)檢測技術(shù)根據(jù)惡意代碼運(yùn)行時所產(chǎn)生的動態(tài)行為來檢測未知惡意代碼。該技術(shù)監(jiān)控可疑代碼的動態(tài)行為是否符合惡意代碼通常具有的特征,這些行為主要包括:1)文件行為惡意程序通過使用內(nèi)存的地址空間來調(diào)用文件系統(tǒng)函數(shù),打開、修改、創(chuàng)建甚至刪除文件等,特別是敏感的系統(tǒng)或用戶文件,達(dá)到攻擊目的。2)進(jìn)程行為惡意代碼在運(yùn)行過程中通常會通過進(jìn)程或線程函數(shù)來創(chuàng)建、訪問進(jìn)程,如遠(yuǎn)程線程插入、修改系統(tǒng)服務(wù)、控制窗口等方式來入侵系統(tǒng)、提升權(quán)限、隱藏蹤跡等,因此檢測系統(tǒng)中是否已啟動新服務(wù)或進(jìn)程、線程,或者監(jiān)控正在運(yùn)行的進(jìn)程的狀態(tài)變化可以發(fā)現(xiàn)惡意代碼所產(chǎn)生的一些異常進(jìn)程行為。3)網(wǎng)絡(luò)行為惡意代碼運(yùn)行后會產(chǎn)生很多網(wǎng)絡(luò)行為,例如,蠕蟲通過某個網(wǎng)絡(luò)安全漏洞進(jìn)行自動傳播,DNS請求的次數(shù)較多、失敗率較高等。通過監(jiān)測特定進(jìn)程的網(wǎng)絡(luò)流量,可以發(fā)現(xiàn)惡意代碼產(chǎn)生的一些異常網(wǎng)絡(luò)行為。4)注冊表行為注冊表是Windows系統(tǒng)存儲應(yīng)用程序配置信息、直接控制操作系統(tǒng)啟動以及驅(qū)動裝載的重要數(shù)據(jù)庫。很多惡意代碼都會隱蔽地改變注冊表部分信息,以實現(xiàn)惡意代碼長期隱藏、運(yùn)行之目的。所以,幾乎所有殺毒軟件都會重點(diǎn)監(jiān)控Windows注冊表操作。與特征碼靜態(tài)檢測技術(shù)相比,動態(tài)檢測技術(shù)能夠檢測未知惡意代碼、惡意代碼的變種,但也存在著不足,如產(chǎn)生的誤報率較高,且不能識別出病毒的名稱和類型等。因此,現(xiàn)在很多殺毒軟件在檢測到異常時,如檢測到應(yīng)用修改Windows注冊表、一個進(jìn)程在進(jìn)行線程插入等,會給用戶彈出告警提示,由用戶確定是否允許操作繼續(xù),而采用特征碼檢測技術(shù)時,殺毒軟件一般在檢測到匹配的惡意代碼時會默認(rèn)將其查殺或隔離。與動態(tài)檢測技術(shù)相關(guān)的一種技術(shù)是惡意代碼動態(tài)分析技術(shù),即在受控環(huán)境中運(yùn)行代碼,觀察代碼的各種行為。由于現(xiàn)代惡意代碼很多采用了加殼、多態(tài)、功能代碼動態(tài)生成、隱蔽通信等各種逃避檢測的技術(shù),所以需要給代碼一個可控的運(yùn)行環(huán)境(包括主機(jī)環(huán)境和網(wǎng)絡(luò)環(huán)境),讓其真正運(yùn)行起來,在足夠長的時間內(nèi)暴露代碼的真實行為。最常見的一種動態(tài)分析技術(shù)是沙箱(Sandbox)。沙箱是一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論