計(jì)算機(jī)病毒技術(shù)及其防御 課件 第6章-計(jì)算機(jī)病毒潛伏_第1頁(yè)
計(jì)算機(jī)病毒技術(shù)及其防御 課件 第6章-計(jì)算機(jī)病毒潛伏_第2頁(yè)
計(jì)算機(jī)病毒技術(shù)及其防御 課件 第6章-計(jì)算機(jī)病毒潛伏_第3頁(yè)
計(jì)算機(jī)病毒技術(shù)及其防御 課件 第6章-計(jì)算機(jī)病毒潛伏_第4頁(yè)
計(jì)算機(jī)病毒技術(shù)及其防御 課件 第6章-計(jì)算機(jī)病毒潛伏_第5頁(yè)
已閱讀5頁(yè),還剩106頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

MalwarePrinciples&Prevention主講人:張瑜廣東技術(shù)師范大學(xué)

網(wǎng)絡(luò)空間安全學(xué)院計(jì)算機(jī)病毒技術(shù)及其防御

ComputerVirusTechnology&ItsDefense主講人:張瑜廣東技術(shù)師范大學(xué)

網(wǎng)絡(luò)空間安全學(xué)院主講人:張瑜第六章ChapterSix廣東技術(shù)師范大學(xué)網(wǎng)絡(luò)空間安全學(xué)院IncubationofComputerViruses計(jì)算機(jī)病毒潛伏前言PREFACE計(jì)算機(jī)病毒在傳播至目標(biāo)系統(tǒng)后,為避免被安全軟件查殺及實(shí)現(xiàn)其后續(xù)目的,通常會(huì)采取各類隱匿方法潛伏在目標(biāo)系統(tǒng)中,伺機(jī)發(fā)作完成致命一擊。為完成潛伏功能,計(jì)算機(jī)病毒會(huì)通過隱匿、加密、變形、加殼等方法改變自身特征,或者劫持API函數(shù)調(diào)用信息,或者合法利用系統(tǒng)工具,使安全軟件難以識(shí)別和查殺。計(jì)算機(jī)病毒潛伏方法很多,本章將從病毒隱匿、病毒混淆、病毒多態(tài)及病毒加殼等方面探討計(jì)算機(jī)病毒潛伏技術(shù)。清溪深不測(cè),隱處唯孤云。——唐·常建1病毒隱匿目錄2病毒混淆3病毒多態(tài)4病毒加殼1CHAPTER病毒隱匿Rootkit技術(shù)無文件病毒Rootkit簡(jiǎn)介Rootkit屬性Rootkit作用Rootkit是一種通過修改操作系統(tǒng)內(nèi)核或更改指令執(zhí)行路徑,來隱藏系統(tǒng)對(duì)象(包括文件、進(jìn)程、驅(qū)動(dòng)、注冊(cè)表項(xiàng)、開放端口、網(wǎng)絡(luò)連接等)以逃避或者規(guī)避標(biāo)準(zhǔn)系統(tǒng)機(jī)制的程序。攻擊者借助于Rootkit隱遁技術(shù)對(duì)已被滲透的目標(biāo)網(wǎng)絡(luò)系統(tǒng)發(fā)動(dòng)的網(wǎng)絡(luò)攻擊,如入無人之境,令人束手無策,安全威脅極大。網(wǎng)絡(luò)攻擊者已開始使用ChatGPT創(chuàng)建惡意軟件、暗網(wǎng)站點(diǎn)和其他實(shí)施網(wǎng)絡(luò)攻擊的工具。此外,使用ChatGPT編寫用于網(wǎng)絡(luò)攻擊的惡意軟件代碼,將會(huì)大大降低攻擊者的編程或技術(shù)能力門檻?;A(chǔ)知識(shí)Rootkit定義WindowsRootkit是能夠持久或可靠地、無法檢測(cè)地存在于計(jì)算機(jī)上的一組程序和代碼。一種將自身或其他對(duì)象隱藏起來,以躲過標(biāo)準(zhǔn)診斷、管理和安全軟件查看的軟件Rootkit是能夠長(zhǎng)時(shí)間存在于計(jì)算機(jī)上或自動(dòng)化信息系統(tǒng)上的未被發(fā)現(xiàn)的程序和代碼集合Rootkit在機(jī)器上建立一個(gè)遠(yuǎn)程接口,該接口允許攻擊者以一種難以察覺的方式(隱藏)對(duì)系統(tǒng)進(jìn)行操縱(指揮與控制)和收集數(shù)據(jù)(偵察)。它是一種通過使用隱形技術(shù)來隱藏系統(tǒng)對(duì)象(包括文件、進(jìn)程、驅(qū)動(dòng)、服務(wù)、注冊(cè)表項(xiàng)、開放端口、網(wǎng)絡(luò)連接等)以逃避或者規(guī)避標(biāo)準(zhǔn)系統(tǒng)機(jī)制的程序。

定義

WindowsRootkit是一種越權(quán)執(zhí)行的程序或代碼,常以驅(qū)動(dòng)模塊加載至系統(tǒng)內(nèi)核層或硬件層,擁有與系統(tǒng)內(nèi)核相同或優(yōu)先的權(quán)限,進(jìn)而修改系統(tǒng)內(nèi)核數(shù)據(jù)結(jié)構(gòu)或改變指令執(zhí)行流程,以隱匿相關(guān)對(duì)象、規(guī)避系統(tǒng)檢測(cè)取證,并維持對(duì)被入侵系統(tǒng)的超級(jí)用戶訪問權(quán)限。Rootkit原理如何化繁為簡(jiǎn),將復(fù)雜系統(tǒng)簡(jiǎn)潔化?Rootkit設(shè)計(jì)理念是什么?

兩個(gè)問題1、計(jì)算機(jī)系統(tǒng)的抽象在計(jì)算機(jī)科學(xué)中,抽象是簡(jiǎn)化復(fù)雜的現(xiàn)實(shí)問題的途徑,它可以為具體問題找到最恰當(dāng)?shù)念惗x,并且可以在最恰當(dāng)?shù)睦^承級(jí)別解釋問題。它可以忽略一個(gè)主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時(shí)不考慮其他部分細(xì)節(jié),即抽象側(cè)重于相關(guān)的細(xì)節(jié)和忽略不相關(guān)的細(xì)節(jié)。在進(jìn)行軟件設(shè)計(jì)時(shí),抽象與逐步求精、模塊化密切相關(guān),幫助定義軟件結(jié)構(gòu)中模塊的實(shí)體,由抽象到具體地分析和構(gòu)造出軟件的層次結(jié)構(gòu),提高軟件的可理解性。Rootkit原理1、計(jì)算機(jī)系統(tǒng)的抽象復(fù)雜問題局部化,增加系統(tǒng)可讀性層次之間的組織結(jié)構(gòu)與依賴關(guān)系清晰化,增加系統(tǒng)可靠性層次的增減簡(jiǎn)單化,增加系統(tǒng)靈活性與可適應(yīng)性。層次結(jié)構(gòu)1112采用此類結(jié)構(gòu)的軟件系統(tǒng)由2大部分組成:①運(yùn)行于核心態(tài)的內(nèi)核,②運(yùn)行于用戶態(tài)并以客戶/服務(wù)器方式運(yùn)行的進(jìn)程層內(nèi)核提供所有操作系統(tǒng)的基本操作,如線程調(diào)度、虛擬存儲(chǔ)、消息傳遞、設(shè)備驅(qū)動(dòng)以及內(nèi)核的原語操作集和中斷處理等??蛻?服務(wù)器結(jié)構(gòu)Rootkit原理1、計(jì)算機(jī)系統(tǒng)的抽象在軟件系統(tǒng)中,所有高級(jí)語言都以迭代或遞歸算法來處理數(shù)據(jù),且所有語言均須翻譯成更低級(jí)的機(jī)器語言方能執(zhí)行或解釋。在硬件系統(tǒng)中,所有物理機(jī)器均由邏輯門構(gòu)成的組合或時(shí)序電路組成。操作系統(tǒng)通過3個(gè)抽象概念來實(shí)現(xiàn)這兩個(gè)功能:①文件、②虛擬存儲(chǔ)器,③進(jìn)程。文件是對(duì)IO設(shè)備的抽象表示,虛擬存儲(chǔ)器是對(duì)主存和IO設(shè)備的抽象表示,進(jìn)程是對(duì)CPU、主存和IO設(shè)備的抽象表示。Rootkit原理2、Rootkit設(shè)計(jì)理念(1)確保獲得控制權(quán)在計(jì)算機(jī)系統(tǒng)中,這種層與層之間的耦合機(jī)制就是接口(Interface)。接口從本質(zhì)上說是信息中轉(zhuǎn)站,完成各層之間的信息交互,起著承前啟后、承上啟下的信息傳遞與轉(zhuǎn)換作用。如能突破系統(tǒng)安全機(jī)制,通過替換該接口、修改接口信息或者修改接口所使用的數(shù)據(jù)結(jié)構(gòu),就能使該接口為我所控、為我所用,以至縱橫馳騁、為所欲為。(2)確保隱藏自身作為隱遁攻擊技術(shù),Rootkit如能在CPU的環(huán)О級(jí)別運(yùn)行,將能獲得如下優(yōu)勢(shì):①執(zhí)行特權(quán)指令②訪問所有內(nèi)存地址空間③控制CPU表和系統(tǒng)表④監(jiān)控其他軟件執(zhí)行。Rootkit原理運(yùn)行于計(jì)算機(jī)系統(tǒng)的應(yīng)用層,處于Windows系統(tǒng)的用戶模式,其權(quán)限受控。-01--02--03-用戶層運(yùn)行于Windows系統(tǒng)的內(nèi)核模式,擁有特權(quán)可執(zhí)行CPU的特權(quán)指令主要包括固件Rootkit和硬件Rootkit。其中固件Rootkit運(yùn)行于計(jì)算機(jī)系統(tǒng)的固件中,先于操作系統(tǒng)啟動(dòng),其執(zhí)行不受操作系統(tǒng)約束內(nèi)核層底層Rootkit原理1、應(yīng)用層Rootkit技術(shù)減少外部導(dǎo)入例程所占用的內(nèi)存容量。DLL允許程序?qū)⑼ㄓ美讨糜诠蚕砟K中來共享內(nèi)存,即DLL代碼在物理內(nèi)存中只有一個(gè)運(yùn)行實(shí)例。盡管每個(gè)導(dǎo)入DLL例程的應(yīng)用程序都可獲得DLL副本,但卻將其所導(dǎo)入的DLL代碼分配的線性地址范圍映射至相同的物理內(nèi)存區(qū)。DLL的設(shè)計(jì)初衷IAT鉤子InlineFunction鉤子DLL注入DLL劫持Rootkit常用的4種技術(shù)Rootkit原理IAT(ImportAddressTable,導(dǎo)入地址表),是嵌于Windows應(yīng)用程序中的調(diào)用表,用于存儲(chǔ)該程序從外部DLL(DynamicLinkLibrary,動(dòng)態(tài)鏈接庫(kù))導(dǎo)入的例程地址。當(dāng)應(yīng)用程序執(zhí)行時(shí),IAT將被自動(dòng)填充以便其調(diào)用DLL中的相關(guān)庫(kù)例程。IAT表是PE(PortableExecutable,可移植的執(zhí)行體)文件格式的重要組成部分。所謂IAT鉤子,就是用Rootkit設(shè)計(jì)的例程地址替換目標(biāo)進(jìn)程IAT表中的地址,從而實(shí)現(xiàn)Rootkit想完成的隱匿功能。為實(shí)現(xiàn)IAT鉤子,大致需按如下步驟來完成:在內(nèi)存中定位IAT表→保存表中操作項(xiàng)→以新地址替換該操作項(xiàng)→完成后再恢復(fù)該操作項(xiàng)。①IAT鉤子Rootkit原理就是將Rootkit實(shí)現(xiàn)的DLL加載至目標(biāo)程序的內(nèi)存空間,使其能訪問目標(biāo)程序的IAT表,并用Rootkit實(shí)現(xiàn)的DLL對(duì)目標(biāo)程序的IAT進(jìn)行替換,以使目標(biāo)程序訪問Rootkit'實(shí)現(xiàn)的例程,從而達(dá)到隱匿等相關(guān)目的。因此,DLL注入實(shí)質(zhì)上是玩“借刀殺人”計(jì)謀來實(shí)施Rootkit相關(guān)隱匿功能。概括起來,DLL注入方法大致有4種:⑴修改注冊(cè)表鍵值,⑵利用SetWindowsHookEx進(jìn)行注入,⑶利用BHO(BrowserHelperObject,瀏覽器輔助對(duì)象),(4使用CreateRemoteThread進(jìn)行注入。②

DLL注入Rootkit原理在Windows系統(tǒng)中,當(dāng)應(yīng)用程序執(zhí)行時(shí),Windows加載器將其可執(zhí)行模塊映射至該進(jìn)程地址空間,同時(shí)分析可執(zhí)行模塊的IAT表,查找所需的DLL并將其映射至該進(jìn)程的地址空間。由于應(yīng)用程序的IAT表只包含DLL名稱而無其具體路徑名,因此,Windows加載器將在磁盤上搜索IAT表所包含的DLL文件。搜索DLL文件的順序?yàn)?首先,從當(dāng)前應(yīng)用程序所在目錄加載DLL;其次,如沒找到,則在Windows系統(tǒng)目錄查找;最后,在環(huán)境變量中所列出的各個(gè)目錄中查找。③

DLL劫持Rootkit原理DLL劫持就是利用了Windows加載器搜索DLL順序,通過偽造一個(gè)與系統(tǒng)同名的DLL,提供同樣的輸出表,每個(gè)輸出函數(shù)轉(zhuǎn)向真正的系統(tǒng)DLL。應(yīng)用程序調(diào)用系統(tǒng)DLL時(shí),將首先調(diào)用當(dāng)前目錄中偽造的系統(tǒng)DLL,完成相關(guān)隱匿功能后,再跳轉(zhuǎn)至真正的系統(tǒng)DLL的函數(shù)執(zhí)行。因此,DLL劫持實(shí)質(zhì)上就是利用Windows系統(tǒng)正常搜索路徑的“貍貓換太子”替換操作來完成Rootkit相關(guān)功能。Rootkit原理2、內(nèi)核層Rootkit技術(shù)內(nèi)核層Rootkit是一種運(yùn)行于操作系統(tǒng)內(nèi)核,能以CPU的最高權(quán)限執(zhí)行的,以隱遁、操縱、收集數(shù)據(jù)為主要目的的惡意代碼。與用戶層Rootkit一樣,內(nèi)核層Rootkit要能順利執(zhí)行,同樣需要解決兩個(gè)問題:⑴如何進(jìn)入系統(tǒng)內(nèi)核,⑵如何修改內(nèi)核以隱匿自身。在Windows環(huán)境中,內(nèi)核層Rootkit定義系統(tǒng)表格鉤子映像修改過濾驅(qū)動(dòng)程序直接內(nèi)核對(duì)象操縱內(nèi)核層Rootkit技術(shù)內(nèi)容Rootkit原理①系統(tǒng)表格鉤子在內(nèi)核空間中,系統(tǒng)表格可分為2類:(1)Windows系統(tǒng)的調(diào)用表(軟件表),譬如:實(shí)現(xiàn)系統(tǒng)服務(wù)調(diào)用的SSDT(SystemServiceDescriptorTable)表,實(shí)現(xiàn)IO操作的IRP(IORequestPackets)調(diào)度表;(2)IA-32處理器的調(diào)用表(硬件表),譬如:進(jìn)行內(nèi)存訪問所用的GDT(GlobalDescriptorTable)表。此類系統(tǒng)表格中記載著內(nèi)核函數(shù)具體地址的重要信息,能影響系統(tǒng)的指令指令流程和執(zhí)行結(jié)果,因此,一直是內(nèi)核層Rootkit必爭(zhēng)之地。Rootkit原理SSDT:由于SSDT包含著龐大的地址索引表和其它重要信息,諸如地址索引的基地址、服務(wù)函數(shù)個(gè)數(shù)等,因此,通過修改此表的函數(shù)地址就可對(duì)常用WindowsAPI函數(shù)進(jìn)行鉤掛,從而實(shí)現(xiàn)對(duì)相關(guān)系統(tǒng)動(dòng)作的過濾、監(jiān)控。目前商用的HIPS、防毒軟件、系統(tǒng)監(jiān)控、注冊(cè)表監(jiān)控軟件無一例外不是通過SSDT鉤子方式來實(shí)現(xiàn)其監(jiān)控功能。SSDTHook:由于SSDT中保存著系統(tǒng)函數(shù)地址,如Rootkit能鉤掛該表中相應(yīng)表項(xiàng),就可重定向程序執(zhí)行邏輯,使相關(guān)的系統(tǒng)調(diào)用請(qǐng)求被重定向至Rootkit代碼,從而實(shí)現(xiàn)Rootkit想要完成的操作。這也是SSDTHook的基本原理。Rootkit原理②映像修改映像修改,是指對(duì)目標(biāo)程序文件本身的二進(jìn)制代碼的修改。通過修改目標(biāo)程序文件的二進(jìn)制代碼,Rootkit可改變程序執(zhí)行邏輯,從而達(dá)到操控執(zhí)行流程的目的。映像修改常采用2種策略實(shí)現(xiàn):⑴靜態(tài)磁盤代碼修改,⑵運(yùn)行時(shí)代碼修改。對(duì)于前者,涉及修改磁盤上的靜態(tài)二進(jìn)制代碼,會(huì)留下明顯取證蹤跡,對(duì)于后者,涉及修改目標(biāo)代碼的內(nèi)存映像,事后取證困難。常見的映像修改方法有2類:(1)Detours,(2)內(nèi)聯(lián)函數(shù)鉤子(InlineFunctionHook)(請(qǐng)參考應(yīng)用層Rootkit技術(shù))。Rootkit原理針對(duì)一個(gè)函數(shù),Detours通常使用JMP或CALL指令來覆蓋函數(shù)序言,跳轉(zhuǎn)至Detours自己的函數(shù)。被替換的API函數(shù)的前幾條指令被保存到Trampoline函數(shù)中。Trampoline保存了被替換的目標(biāo)API的前幾條指令和一個(gè)無條件轉(zhuǎn)移,轉(zhuǎn)移到目標(biāo)API余下的指令。當(dāng)執(zhí)行到目標(biāo)API時(shí),直接跳到用戶提供的攔截函數(shù)中執(zhí)行,這時(shí)攔截函數(shù)就可以執(zhí)行自己的代碼了。Rootkit原理③過濾驅(qū)動(dòng)程序借助Windows系統(tǒng)過濾驅(qū)動(dòng)范式,Rootkit同樣可攔截IRP請(qǐng)求,進(jìn)而根據(jù)需要修改、過濾相關(guān)數(shù)值,達(dá)到隱匿自身目的。Windows系統(tǒng)支持堆疊式的設(shè)備添加機(jī)制,通過將自身驅(qū)動(dòng)棧疊加至系統(tǒng)驅(qū)動(dòng)設(shè)備棧上,就可實(shí)現(xiàn)設(shè)備過濾驅(qū)動(dòng)。首先,調(diào)用IoGetDeviceObjectPointer獲得指向設(shè)備棧中第一個(gè)設(shè)備的指針;其次,使用來自設(shè)備棧中下一個(gè)低層的驅(qū)動(dòng)程序的設(shè)備對(duì)象信息,用自定義數(shù)據(jù)初始化自己的設(shè)備對(duì)象;之后,調(diào)用IoAttachDeviceToDeviceStack,傳遞一個(gè)指向需加入的初始化對(duì)象的指針和一個(gè)指向希望連接的設(shè)備棧的指針。Rootkit原理④直接內(nèi)核對(duì)象操縱DKOM直接修改內(nèi)存中本次執(zhí)行流內(nèi)核和內(nèi)核對(duì)象(內(nèi)核數(shù)據(jù)結(jié)構(gòu)),從而完成進(jìn)程隱藏、驅(qū)動(dòng)隱藏、特權(quán)提升等功能。在Windows系統(tǒng)中,每個(gè)運(yùn)行進(jìn)程都在內(nèi)存中存儲(chǔ)信息,對(duì)應(yīng)一個(gè)EPROCESS結(jié)構(gòu),其中保存著進(jìn)程的各種信息和相關(guān)結(jié)構(gòu)的指針。該結(jié)構(gòu)中的雙向鏈表成員FLINK和BLINK分別指向當(dāng)前進(jìn)程描述符的前方和后方進(jìn)程。Rootkit原理3、底層Rootkit技術(shù)從功能實(shí)現(xiàn)的角度,計(jì)算機(jī)系統(tǒng)的上層,其實(shí)現(xiàn)抽象、功能復(fù)雜、權(quán)限受限;反之,計(jì)算機(jī)系統(tǒng)的低層,其實(shí)現(xiàn)具體、功能簡(jiǎn)單、權(quán)限充分。因此,對(duì)于側(cè)重于獲取執(zhí)行特權(quán)的Rootkit而言,其駐留之地越往低層,則其所展示的權(quán)限控制與隱匿技巧就越出神入化、其自身就越難以被察覺。內(nèi)核層Rootkit概述擴(kuò)展的處理器模式固件硬件內(nèi)核層Rootkit技術(shù)內(nèi)容Rootkit原理①擴(kuò)展的處理器模式對(duì)于處理器而言,其所處的具體模式將決定其內(nèi)存組織、機(jī)器指令集以及其可用的系統(tǒng)架構(gòu)。底層Rootkit如能充分利用處理器模式,將能在內(nèi)存與指令集利用方面展現(xiàn)其特殊技能,達(dá)到擴(kuò)權(quán)與隱匿效果。目前,就IA-32體系結(jié)構(gòu)的處理器而言,主要有3種模式:⑴實(shí)模式,⑵保護(hù)模式,⑶系統(tǒng)管理模式。對(duì)于前兩種處理器模式,Rootkit技術(shù)已進(jìn)行了充分利用,上述應(yīng)用層和內(nèi)核層所討論的Rootkit技術(shù)就是基于這兩種模式。本部分著重討論基于系統(tǒng)管理模式的Rootkit技術(shù)。Rootkit原理②固件對(duì)于計(jì)算機(jī)系統(tǒng)而言,層次越低,其啟動(dòng)順序就越靠前,反之亦然。如想盡可能靠前啟動(dòng),則程序就必須盡可能駐留于系統(tǒng)低層。對(duì)于Rootkit而言,想擺脫操作系統(tǒng)中安裝的各類相關(guān)安全軟件的檢測(cè),就應(yīng)該駐留低層,使自身先期啟動(dòng),再通過捕獲并修改相關(guān)操作,達(dá)到隱匿自身、逍遙法外的目的。固件,就是將相關(guān)代碼固化于可編程存儲(chǔ)設(shè)備中,再通過相關(guān)機(jī)制啟動(dòng)其中代碼執(zhí)行,以此來簡(jiǎn)化系統(tǒng)設(shè)計(jì)、快速執(zhí)行的硬件。由于固件通常都有存儲(chǔ)代碼與數(shù)據(jù)的存儲(chǔ)器,Rootkit只要能修改固件存儲(chǔ)器中的數(shù)據(jù),就能實(shí)現(xiàn)隱匿自身、隱遁攻擊的目的。Rootkit原理③硬件計(jì)算機(jī)主板是計(jì)算機(jī)系統(tǒng)資源聚集地,除了能提供常規(guī)功能之外,還能為新技術(shù)提供支撐。Intel公司推出的AMT(ActiveManagementTechnoloy,主動(dòng)管理技術(shù)),通過在主板上提供獨(dú)立的CPU和內(nèi)存,借助AMT芯片組與RAM隔離,并通過專用通道與網(wǎng)絡(luò)硬件相連。因此,如能基于該項(xiàng)技術(shù),繞過AMT芯片組的內(nèi)存隔離并修改相關(guān)代碼,則完全不需要與操作系統(tǒng)交互就能達(dá)到隱遁攻擊目的。譬如,InvisibleThingLab在2009年BlackHat大會(huì)上所展示的RootkitoRootkit原理無文件病毒是一種利用已安裝在計(jì)算機(jī)上合法的系統(tǒng)工具或應(yīng)用程序的惡意攻擊,其主要目的是為規(guī)避安全軟件查殺并維持持久駐留目標(biāo)系統(tǒng)。它通常利用合法或正當(dāng)活動(dòng)的應(yīng)用程序在內(nèi)存中執(zhí)行計(jì)算機(jī)病毒。與多數(shù)計(jì)算機(jī)病毒不同,無文件病毒不會(huì)在目標(biāo)計(jì)算機(jī)的硬盤中留下蛛絲馬跡,而是通過使用漏洞、宏、腳本或合法的系統(tǒng)工具,直接將病毒代碼隱匿于內(nèi)存或注冊(cè)表中。由于沒有病毒文件落地,傳統(tǒng)基于文件掃描的安全軟件難以檢測(cè)到它們的存在。

無文件病毒定義根據(jù)無文件病毒所采用的隱匿技術(shù)不同灰色工具型潛伏型腳本型內(nèi)存型無文件病毒分類1灰色工具型代換密碼灰色工具型無文件病毒,又稱為離地攻擊(Living-0ff-the-Land),是利用系統(tǒng)或應(yīng)用程序提供的合法組件或工具,如:注冊(cè)表、NTFS數(shù)據(jù)流、Powershell、CMD、VBScript、JavaScript、RundI132、Explorer、Perl等去隱匿或執(zhí)行計(jì)算機(jī)病毒由于這些合法的系統(tǒng)組件或工具是為管理員維護(hù)計(jì)算機(jī)環(huán)境以及對(duì)系統(tǒng)的管理,安全軟件一般不會(huì)限制其使用,但這易為計(jì)算機(jī)病毒所使用我們將以NTFS的ADS數(shù)據(jù)流和系統(tǒng)合法組件注冊(cè)表為例來解釋說明此類灰色工具型無文件病毒。無文件病毒分類眾所周知,NTFS(NewTechnologyFileSystem)是WindowsNT系列操作系統(tǒng)支持的、為網(wǎng)絡(luò)和磁盤配額、文件加密等管理安全特性設(shè)計(jì)的磁盤文件格式,它提供長(zhǎng)文件名、數(shù)據(jù)保護(hù)和恢復(fù),能通過目錄和文件許可實(shí)現(xiàn)安全性,并支持跨越分區(qū)。NTFS備用數(shù)據(jù)流(AlternateDataStreams,ADS)是NTFS磁盤文件格式的一個(gè)特性。NTFSADS推出的初衷是為兼容蘋果公司的分層文件系統(tǒng)(HierarchicalFileSystem,HFS)。HFS文件系統(tǒng)將不同的數(shù)據(jù)存儲(chǔ)于不同的分支文件,文件數(shù)據(jù)存放在數(shù)據(jù)分支而文件參數(shù)存放在資源分支。在NTFS文件系統(tǒng)下,文件或目錄可由兩個(gè)部分組成:主數(shù)據(jù)流(PrimaryDataStream,PDS),備用數(shù)據(jù)流(AlternateDataStreams,ADS)。主數(shù)據(jù)流(PDS)是指文件或目錄的標(biāo)準(zhǔn)內(nèi)容,通常對(duì)用戶可見。備用數(shù)據(jù)流(ADS)則允許將一些元數(shù)據(jù)嵌入文件或是目錄,而不需要修改其原始功能或內(nèi)容,其內(nèi)容通常是隱藏的。無文件病毒分類1.NTFSADS數(shù)據(jù)流文件創(chuàng)建在NTFS分區(qū)創(chuàng)建ADS數(shù)據(jù)流文件有兩種形式:一是指定宿主文件;二是創(chuàng)建單獨(dú)的ADS文件。常用的創(chuàng)建命令有兩個(gè):echo和type。echo用于輸入常規(guī)字符,type則用于將文件附加到目標(biāo)文件。①使用echo命令創(chuàng)建指定宿主文件的ADS數(shù)據(jù)流文件Echo命令會(huì)將輸入的字符串送往標(biāo)準(zhǔn)輸出,可使用echo命令創(chuàng)建文本類型的ADS數(shù)據(jù)流文件。例如,使用echo命令為primary.txt宿主文件創(chuàng)建ADS數(shù)據(jù)流文件gpnu.txt,在cmd控制臺(tái)輸入內(nèi)容為:無文件病毒分類在正常情況下,ADS數(shù)據(jù)流文件是不可見的,但可使用如下命令查看無文件病毒分類可使用Notepad(記事本)查看和編輯文本類型的ADS數(shù)據(jù)流文件內(nèi)容,例如,使用命令notepadprimary.txt:gpnu.txt進(jìn)行查看和編輯也可使用Powershell的Get-Content命令進(jìn)行查看無文件病毒分類1.NTFSADS數(shù)據(jù)流文件創(chuàng)建

②使用type命令創(chuàng)建指定宿主文件的ADS數(shù)據(jù)流文件

type命令用于顯示文本文件的內(nèi)容和拼接文件,可使用type命令為宿主文件附加其他類型的數(shù)據(jù)流文件。例如,使用type命令為primary.txt宿主文件附加ADS數(shù)據(jù)流文件cmd.exe,在cmd控制臺(tái)輸入內(nèi)容為:接著使用命令:dir/r即可查看到上述附加在宿主文件primary.txt上的ADS數(shù)據(jù)流文件cmd.exe無文件病毒分類利用Vbsrcipt語言的命令msgbox創(chuàng)建一個(gè)簡(jiǎn)單對(duì)話框?qū)⒃搗bs腳本文件附加至宿主文件primary.txt上,使用type命令使用wscript.exe即可執(zhí)行上述附加的vbs腳本文件,執(zhí)行該ADS數(shù)據(jù)流文件primary.txt:gpnu.vbs的命令無文件病毒分類1.NTFSADS數(shù)據(jù)流文件創(chuàng)建

③使用echo命令創(chuàng)建單獨(dú)的ADS數(shù)據(jù)流文件

盡管在在NTFS文件系統(tǒng)下,可創(chuàng)建與宿主文件相關(guān)聯(lián)的ADS數(shù)據(jù)流文件,但ADS數(shù)據(jù)流文件也可單獨(dú)存在。創(chuàng)建單獨(dú)的ADS數(shù)據(jù)流文件,即該ADS數(shù)據(jù)流文件不與宿主文件關(guān)聯(lián),是單獨(dú)存在的。使用echo命令創(chuàng)建單獨(dú)的文本類型ADS數(shù)據(jù)流文件。例如,使用echo命令創(chuàng)建單獨(dú)的ADS數(shù)據(jù)流文件test.txt,在cmd控制臺(tái)輸入內(nèi)容為無文件病毒分類可使用Notepad(記事本)查看和編輯文本類型的ADS數(shù)據(jù)流文件內(nèi)容。如只在同一目錄下使用命令notepad:test.txt進(jìn)行查看和編輯,由于單獨(dú)創(chuàng)建在當(dāng)前目錄下,且無依賴的宿主文件,此類ADS數(shù)據(jù)流文件依賴于當(dāng)前目錄,在當(dāng)前目錄命令行下是無法查看的,要查看和編輯需要退至上一級(jí)目錄無文件病毒分類退至上一級(jí)目錄,使用如下命令:cd再使用命令notepadtests:test.txt進(jìn)行查看和編輯如需刪除該單獨(dú)創(chuàng)建的ADS數(shù)據(jù)流文件,使用命令deltests:test.txt可發(fā)現(xiàn)無法刪除無文件病毒分類可使用WinHex工具進(jìn)行刪除,即“工具→打開磁盤→選擇磁盤”,找到相應(yīng)的ADS數(shù)據(jù)流文件,即可刪除無文件病毒分類1.NTFSADS數(shù)據(jù)流文件創(chuàng)建④計(jì)算機(jī)病毒利用ADS數(shù)據(jù)流文件計(jì)算機(jī)病毒在利用ADS數(shù)據(jù)流文件特性方面,有很多方法。例如,可在目標(biāo)系統(tǒng)上創(chuàng)建文件夾,使用如下命令即可創(chuàng)建該命令會(huì)在當(dāng)前目錄中創(chuàng)建一個(gè)新的文件夾GPNU,可用于突破UDF提權(quán)時(shí)遇到無法創(chuàng)建文件夾的問題。無文件病毒分類還可創(chuàng)建一個(gè)與計(jì)算機(jī)病毒DLL文件相關(guān)聯(lián)的的ADS數(shù)據(jù)流文件,并利用命令regsvr32來執(zhí)行之。如將該計(jì)算機(jī)病毒DLL復(fù)制到Windows系統(tǒng)中時(shí),Windows安全中心會(huì)提示并阻止復(fù)制操作無文件病毒分類接著使用命令typetest.dll>primary.txt:ms將該計(jì)算機(jī)病毒DLL附加至宿主文件primary.txt中,此時(shí),Windows安全中心只能識(shí)別單獨(dú)存在的test.dll文件,而對(duì)于附加至宿主文件primary.txt中的名為ms的ADS數(shù)據(jù)流文件已無法識(shí)別。如要執(zhí)行該計(jì)算機(jī)病毒DLL文件,使用如下命令無文件病毒分類注冊(cè)表(Registry)是Windows系統(tǒng)中的一個(gè)重要的核心數(shù)據(jù)庫(kù),用于存儲(chǔ)系統(tǒng)和應(yīng)用程序的設(shè)置信息,直接控制著Windows的啟動(dòng)、硬件驅(qū)動(dòng)程序的裝載以及一些Windows應(yīng)用程序的運(yùn)行。在Windows系統(tǒng)中,可使用Regedit.exe或Regedt32.exe打開注冊(cè)表。但導(dǎo)入注冊(cè)條目(.reg)文件是Regedit.exe的功能,Regedt32.exe不支持。Regedt32.exe可打開位于遠(yuǎn)程計(jì)算機(jī)上的注冊(cè)表,這樣就可在本地機(jī)上對(duì)遠(yuǎn)程計(jì)算機(jī)上的注冊(cè)表進(jìn)行編輯。如將Regedt32.exe設(shè)為只讀屬性,可防止計(jì)算機(jī)病毒對(duì)注冊(cè)表的有意操作無文件病毒分類2腳本型計(jì)算機(jī)病毒通常會(huì)編譯成傳統(tǒng)的可執(zhí)行PE文件格式,這很容易被安全軟件實(shí)時(shí)跟蹤與查殺。為規(guī)避安全軟件查殺和永久駐留目標(biāo)系統(tǒng),計(jì)算機(jī)病毒開始利用惡意腳本的無文件屬性進(jìn)行隱匿與攻擊。Windows系統(tǒng)內(nèi)置支持的腳本解釋器主要包括Powershell,VBScript,JavaScript和批處理文件等。計(jì)算機(jī)病毒可調(diào)用并運(yùn)行,上述腳本的工具分別為:Powershell.exe,Cscript.exe(或Wscript.exe),Mshta.exe和CMD.exe。無文件病毒分類1.WindowsCommandShellWindowsShell是一個(gè)命令解釋器,處于內(nèi)核和用戶之間,負(fù)責(zé)把用戶的指令傳遞給內(nèi)核并把執(zhí)行結(jié)果回顯給用戶。此外,Shell也時(shí)一種強(qiáng)大的編程語言。WindowsCommandShell是一個(gè)獨(dú)立的應(yīng)用程序,它為用戶提供對(duì)操作系統(tǒng)直接通信的功能,它為基于字符的應(yīng)用程序和工具提供了非圖形界面的運(yùn)行環(huán)境,它執(zhí)行命令并在屏幕上回顯MS-DOS風(fēng)格的字符。WindowsCommandShell所在位置的路徑為:C:)Windows\System32\cmd.exe(64位系統(tǒng))或C:\Windows\SysWOW64\cmd.exe(32位系統(tǒng))。無文件病毒分類通過按下快捷鍵Win+R”打開運(yùn)行窗口,輸入cmd回車即可打開CMD,在CMD中可輸入相關(guān)的命令在CMD中既可單獨(dú)執(zhí)行命令,也可將多條命令輸入記事本中,并保存為后綴為.bat的批處理文件。雙擊該bat文件,Windows系統(tǒng)會(huì)自動(dòng)執(zhí)行文件中的多條命令。例如,用記事本將“%0/%0)”保存為L(zhǎng)eastVirus.bat文件(最小的計(jì)算機(jī)病毒)無文件病毒分類雙擊該批處理文件運(yùn)行后可發(fā)現(xiàn)CPU占用率很快飆升至100%,之后系統(tǒng)處于崩潰狀態(tài)無文件病毒分類CMD.Exe目前,一些無文件病毒借助CMD.exe來在目標(biāo)系統(tǒng)上添加或修改內(nèi)嵌計(jì)算機(jī)病毒代碼的ADS數(shù)據(jù)流文件,達(dá)到隱匿病毒代碼目的。同時(shí),還可利用CMD.exe執(zhí)行隱匿于ADS數(shù)據(jù)流中的病毒代碼以及相關(guān)命令。例如,可利用CMD.exe將計(jì)算機(jī)病毒代碼添加至宿主文件fakefile.doc的ADS數(shù)據(jù)流文件Payload.bat中,達(dá)到隱匿計(jì)算機(jī)病毒目的,命令如下:無文件病毒分類Rund1132.exe顧名思義,Rundll32.exe是“執(zhí)行32位或者64位DLL文件”的命令,用于執(zhí)行DLL(DynamicLinkLibrary,動(dòng)態(tài)鏈接庫(kù))文件中的內(nèi)部函數(shù)。Rundl132.exe已安裝在WindowsXP及更高版本的Windows中的%systemroot%System32文件夾中。在64位Windows系統(tǒng)上有兩個(gè)版本的Rundll32.exe文件:無文件病毒分類Regsvr32.exeRegsvr32.exe是Windows系統(tǒng)用于注冊(cè)或卸載DLL動(dòng)態(tài)鏈接庫(kù)和ActiveX控件的重要命令行實(shí)用工具。Regsvr32.exe已安裝在WindowsXP及更高版本的Windows中的%systemroot%System32文件夾中。在64位Windows系統(tǒng)上有兩個(gè)版本的Regsv32.exe文件:無文件病毒分類2.PowershellPowershell是Windows系統(tǒng)實(shí)現(xiàn)對(duì)系統(tǒng)以及應(yīng)用程序進(jìn)行管理自動(dòng)化的命令行腳本環(huán)境,已是Windows系統(tǒng)的一個(gè)核心組件(且不可移除),它存在于System.Management.Automation.dll動(dòng)態(tài)鏈接庫(kù)文件(DLL)中且可附加到不同的運(yùn)行空間中進(jìn)行有效的Powershell實(shí)例化(PowerShell.exe和Powershell_ISE.exe)。PowerShell需要.NET環(huán)境的支持,借助.NETFramework平臺(tái)強(qiáng)大的類庫(kù),Powershell如其名所言,是一種強(qiáng)大的Shell環(huán)境,能讓一切成為可能。Powershell是一種跨平臺(tái)的任務(wù)自動(dòng)化解決方案,由命令行shell、腳本語言和配置管理框架組成。Powershell在Windows、Linux和MacOS上運(yùn)行。無文件病毒分類2.Powershell

①繞過本地執(zhí)行權(quán)限為防止惡意腳本執(zhí)行,PowerShell可設(shè)置執(zhí)行策略,默認(rèn)情況下,執(zhí)行策略被設(shè)為受限(Restricted)。此外,還有三類執(zhí)行策略:Unrestricted(可執(zhí)行所有PS1腳本文件),RemoteSigned(本地創(chuàng)建的腳本可運(yùn)行,但從網(wǎng)上下載的腳本不能運(yùn)行,擁有數(shù)字證書簽名的除外),AllSigned(僅當(dāng)腳本由受信任的發(fā)布者簽名時(shí)才能運(yùn)行)??墒褂妹頖et-ExecutionPolicy獲取當(dāng)前系統(tǒng)中PowerShell的執(zhí)行策略無文件病毒分類為繞過本地執(zhí)行策略的限制,可使用如下命令及參數(shù):powershell.exe-ExecutionPolicyBypass-file.\gpnu.ps1通常在默認(rèn)情況下,Powershell的安全策略不允許運(yùn)行命令和文件。通過設(shè)置參數(shù)-ExecutionPolicyBypass可繞過本地執(zhí)行安全策略。上述的gpnu.ps1腳本文件內(nèi)容如圖所示無文件病毒分類2.Powershell

②本地隱匿執(zhí)行攻擊者在執(zhí)行攻擊腳本文件時(shí),為避免被用戶發(fā)覺,通常會(huì)隱匿執(zhí)行攻擊腳本,可使用如下命令其中,參數(shù)-WindowStyleHidden用于隱藏窗口,-NoLogo用于啟動(dòng)時(shí)不顯示powershell版權(quán)標(biāo)志,-NonInteractive用于非交互模式(PowerShell不為用戶提供交互提示),-NoProfile用于不加載當(dāng)前用戶的配置文件。無文件病毒分類2.Powershell

③遠(yuǎn)程下載ps1腳本并隱匿執(zhí)行攻擊者有時(shí)需要從遠(yuǎn)程服務(wù)器上下載相關(guān)腳本文件并執(zhí)行之,可使用IEX進(jìn)行遠(yuǎn)程下載ps1腳本并繞過安全執(zhí)行策略執(zhí)行之無文件病毒分類2.Powershell

④利用注冊(cè)表加載并隱匿執(zhí)行PS1腳本可將上述從遠(yuǎn)程服務(wù)器下載PS1腳本并隱匿執(zhí)行的命令寫入一個(gè)bat批處理文件gpnu.bat,并保存在目標(biāo)系統(tǒng)的桌面上(C:lusersladminDesktop),其文件內(nèi)容如下:無文件病毒分類2.Powershell

⑤混淆PS1腳本以隱匿執(zhí)行可利用一些成熟的PS1腳本混淆工具,對(duì)Powershell腳本(計(jì)算機(jī)病毒)進(jìn)行混淆,以規(guī)避安全軟件查殺,從而達(dá)到隱匿執(zhí)行目的。下載混淆工具Invoke-Obfuscation

導(dǎo)入Invoke-0bfuscation模塊設(shè)置目標(biāo)腳本文件設(shè)置并選擇混淆方式輸出混淆后的PS1腳本無文件病毒分類

下載混淆工具Invoke-Obfuscation從網(wǎng)上下載混淆工具Invoke-Obfuscation,其下載網(wǎng)址如下導(dǎo)入Invoke-Obfuscation模塊利用PowerShell的import-module命令導(dǎo)入Invoke-Obfuscation模塊無文件病毒分類設(shè)置目標(biāo)腳本文件利用setscriptpath命令設(shè)置目標(biāo)腳本文件路徑設(shè)置并選擇混淆方式選擇“ENCODING”進(jìn)行加密混淆無文件病毒分類輸出混淆后的PS1腳本將通過Invoke-Obfuscation混淆后的PS1腳本輸出至另一個(gè)文件gpnu1.ps1打開混淆后的gpnu1.ps1腳本文件,可發(fā)現(xiàn)與原來的gpnu.ps1腳本文件相比已加密混淆了無文件病毒分類3.WindowsScriptingHost為實(shí)現(xiàn)多類腳本文件在Windows命令提示符下直接運(yùn)行,Windows系統(tǒng)內(nèi)置入了一個(gè)獨(dú)立于語言的腳本運(yùn)行環(huán)境:WindowsScriptingHost,WSH架構(gòu)于ActiveX之上,通過充當(dāng)ActiveX的腳本引擎控制器,為用戶提供了可調(diào)用系統(tǒng)組件的腳本指令執(zhí)行環(huán)境。在Windows系統(tǒng)中,WindowsScriptingHost提供了兩種程序執(zhí)行環(huán)境:圖形化界面的Wscript.exe,命令行的Cscript.exe。WSH引擎能執(zhí)行VBScript、JavaScript等腳本語言,在Windows下雙擊并執(zhí)行VBS、JS、WSF等腳本文件,系統(tǒng)就會(huì)自動(dòng)調(diào)用WSH的適當(dāng)程序來解釋并執(zhí)行。無文件病毒分類3.WindowsScriptingHost

①Cscript由上可知,WSH有兩種形式:窗口化版本的WScript,命令行版本CScript。這兩種版本都可運(yùn)行任何腳本,只是窗口化版本(WScript)使用彈出對(duì)話框來顯示文本輸出消息,而命令行版本(CSCript)通過命令行方法來顯示文本無文件病毒分類3.WindowsScriptingHost

②WscriptCScript是命令行版本W(wǎng)SH,通過輸出至控制臺(tái),以便程序進(jìn)行重定向調(diào)用。WScript是窗口化版本的WSH(如圖6-63所示),通過直接輸出至窗口,適合調(diào)試程序和編寫小工具。在Windows系統(tǒng)下,如不使用cmd命令行,調(diào)用Cscript的輸出將會(huì)一閃而過。無文件病毒分類3潛伏型為了讓計(jì)算機(jī)病毒母體被刪除后以及每次開機(jī)后還能繼續(xù)執(zhí)行惡意代碼,持久化潛伏成為一種常見的無文件攻擊方式。通過將計(jì)算機(jī)病毒存儲(chǔ)在Windows系統(tǒng)內(nèi)置的注冊(cè)表、WMI、Windows庫(kù)文件、MBR、定時(shí)任務(wù)等處,可讓計(jì)算機(jī)病毒隱匿并自動(dòng)執(zhí)行。本部分主要介紹利用Windows系統(tǒng)內(nèi)置的WMI(WindowsManagementInstrumentation)和Windows庫(kù)文件來隱匿計(jì)算機(jī)病毒以實(shí)現(xiàn)無文件病毒。無文件病毒分類WindowsManagementInstrumentation(WMI)簡(jiǎn)介是Windows中用于提供共同的界面和對(duì)象模式以便訪問有關(guān)操作系統(tǒng)、設(shè)備、應(yīng)用程序和服務(wù)的管理信息。微軟設(shè)計(jì)WMI的初衷是提供一個(gè)通過操作系統(tǒng)、網(wǎng)絡(luò)和企業(yè)環(huán)境去管理本地或遠(yuǎn)程計(jì)算機(jī)的統(tǒng)一接口集。應(yīng)用程序和腳本語言使用這套接口集而不用通過WindowsAPI去完成任務(wù)。由于多數(shù)基于Windows的軟件依賴于此服務(wù),如果此服務(wù)被終止,則基于Windows的軟件將無法正常運(yùn)行,如果此服務(wù)被禁用,任何依賴它的服務(wù)將無法啟動(dòng)。每個(gè)WMI對(duì)象都是代表著獲取各種操作系統(tǒng)信息與進(jìn)行相關(guān)操作的類實(shí)例,以ROOTCIMV2作為默認(rèn)的命名空間,CIM為數(shù)據(jù)庫(kù),并以WQL查詢語句用于查詢WMI對(duì)象實(shí)例、類和命名空間。無文件病毒分類WMI是Windows在PowerShell尚未發(fā)布前用來管理Windows系統(tǒng)的重要數(shù)據(jù)庫(kù)工具,WMI是一個(gè)C/S數(shù)據(jù)庫(kù)架構(gòu),WMI服務(wù)使用DCOM(TCP端口135)或WinRM協(xié)議(SOAP-端口5985)。無文件病毒分類1、客戶端/使用者(Clients/Consumers)客戶端/使用者(Clients/Consumers)??蛻舳吮举|(zhì)上是與WMI類交互以查詢數(shù)據(jù)、運(yùn)行方法等的終端使用者,可進(jìn)行的操作包括:查詢、枚舉數(shù)據(jù),運(yùn)行Provider的方法,接受WMI事件通知。這些數(shù)據(jù)操作都需有相應(yīng)的Provider來提供。客戶端可使用各類編程語言與WMI服務(wù)端進(jìn)行交互。2、查詢語言(QueryLanguages)類似于SQL提供的查詢數(shù)據(jù)庫(kù)方法,WMI也有WQL(WMI查詢語言)/CQL來查詢WMI服務(wù)。當(dāng)涉及管理遠(yuǎn)程計(jì)算機(jī)時(shí),WBEM標(biāo)準(zhǔn)開始發(fā)揮作用。WQL可視為用于WMI的SQL語法,不區(qū)分大小寫。例如,使用WQL語句select*fromwin32_bios,即可查詢到BIOS信息。無文件病毒分類3、存儲(chǔ)庫(kù)(Repositories)用于保存存儲(chǔ)類的所有靜態(tài)數(shù)據(jù)(定義)的數(shù)據(jù)庫(kù)。存儲(chǔ)庫(kù)是由MOF(ManagedObjectFormat,托管對(duì)象格式)文件定義的,該文件定義了結(jié)構(gòu)、類、名稱空間等。數(shù)據(jù)庫(kù)文件可以在%WINDIR%System32\Wbem\Repository目錄下找到無文件病毒分類4、MOF文件(MOFFiles)用于定義WMI命名空間、類、提供程序等。可在%WINDIR%\System32\Wbem目錄下找到相關(guān)的.mof文件。5、提供者(Providers)通過WMI提供者可訪問存儲(chǔ)庫(kù)中定義的任何內(nèi)容。對(duì)于WMI生態(tài)系統(tǒng),提供者用于監(jiān)視來自特定定義對(duì)象的事件和數(shù)據(jù),可將提供者程序視為在托管對(duì)象和WMI之間提供橋梁的驅(qū)動(dòng)程序。它們通常是DLL文件(Cimwin32.dll,Stdprove.dll等),并與MOF文件相關(guān)聯(lián)。6、托管對(duì)象(Managed0bjects)它們是上下文中資源的別名,即托管對(duì)象可為WMI管理的服務(wù)、進(jìn)程或操作系統(tǒng)等。無文件病毒分類7、命名空間(Namespaces)命名空間是類的邏輯劃分,可分為三類:系統(tǒng)(System),核(Core),擴(kuò)展(Extension)。每類可分為三種:抽象(Abstract),靜態(tài)(Static),動(dòng)態(tài)(Dynamic)。

無論WMI客戶端使用哪種語言(PowerShell、VBScript、JavaScript或C/C++等),本質(zhì)上仍使用.NET去訪問WMI的類庫(kù)。

使用WMI技術(shù)主要分為兩個(gè)方面:①獲取信息,②提供數(shù)據(jù)。其中“獲取信息”需要WMIClasses(WMI類),“提供數(shù)據(jù)”需要WMIProvider(WMI提供者)。無文件病毒分類WindowsManagementInstrumentation(WMI)功能由于WMI提供了豐富的WMI對(duì)象、方法和事件,利用它可執(zhí)行攻擊殺傷鏈中的多個(gè)階段(系統(tǒng)偵察、反病毒、虛擬機(jī)檢測(cè)、代碼執(zhí)行、橫向運(yùn)動(dòng)、隱蔽存儲(chǔ)數(shù)據(jù)、持久性)。

由于在使用Wmiexec進(jìn)行隱匿攻擊時(shí),Windows系統(tǒng)不會(huì)將WMI操作記錄在日志中,具有較好的隱匿性。因此,計(jì)算機(jī)病毒利用此功能進(jìn)行隱匿,減少被查殺概率。無文件病毒分類系統(tǒng)偵察計(jì)算機(jī)病毒在進(jìn)行攻擊時(shí)通常會(huì)進(jìn)行系統(tǒng)偵察,用于了解目標(biāo)系統(tǒng)相關(guān)的環(huán)境信息,以便后續(xù)更好地采取相應(yīng)措施。在進(jìn)行系統(tǒng)偵察時(shí),可利用如下的WMI類來收集目標(biāo)系統(tǒng)信息無文件病毒分類1)獲取操作系統(tǒng)信息無文件病毒分類2)獲取文件/文件夾列表3)獲取磁盤卷列表4)操作注冊(cè)表無文件病毒分類5)獲取當(dāng)前運(yùn)行進(jìn)程6)列舉當(dāng)前服務(wù)7)查看系統(tǒng)日志無文件病毒分類8)查看登陸賬號(hào)9)查看共享文件夾10)查看系統(tǒng)補(bǔ)丁無文件病毒分類安全軟件檢測(cè)Windows系統(tǒng)如安裝有相關(guān)的安全軟件(反病毒引擎之類的軟件),

通常會(huì)將自身注冊(cè)在WMI的AntiVirusProductclass類中的root\SecurityCenter或root\SecurityCenter2命名空間中。因此,計(jì)算機(jī)病毒在實(shí)施攻擊前,如能檢測(cè)目標(biāo)系統(tǒng)中安裝的安全軟件,則可有的放矢予以卸載繼而開展后續(xù)攻擊行動(dòng)。無文件病毒分類虛擬機(jī)檢測(cè)計(jì)算機(jī)病毒如身處虛擬機(jī)中,則容易被調(diào)試及逆向分析。為避免被逆向分析及查殺,計(jì)算機(jī)病毒在實(shí)施攻擊前應(yīng)進(jìn)行虛擬機(jī)檢測(cè)。如處于虛擬機(jī)中,則應(yīng)避免進(jìn)行后續(xù)操作。計(jì)算機(jī)病毒可使用WMI對(duì)通用的虛擬機(jī)和沙盒環(huán)境進(jìn)行檢測(cè)。例如,如物理內(nèi)存小于2GB或是單核CPU,則目標(biāo)系統(tǒng)極可能在虛擬機(jī)中運(yùn)行無文件病毒分類檢測(cè)是否為VMWare虛擬機(jī)進(jìn)程的Powershell代碼如圖所示無文件病毒分類利用WindowsManagementInstrumentation(WMI)隱匿病毒載荷利用WMI類可新建并在其中添加相關(guān)屬性的特性,計(jì)算機(jī)病毒可將自身載荷隱匿于WMI相關(guān)類中,以便后續(xù)隱匿執(zhí)行。例如,在WMI中新建一個(gè)類Win32_EvilClass,并添加屬性EvilProperty,其內(nèi)容為一字符串“Thisisthepayloadofcomputervirus.”無文件病毒分類Windows庫(kù)文件Windows庫(kù)文件通常位于%APPDATA%MicrosoftWindows\Libraries目錄中,文件擴(kuò)展名為library-ms。庫(kù)文件包含存儲(chǔ)在本地計(jì)算機(jī)或遠(yuǎn)程存儲(chǔ)位置上的文件和文件夾,允許用戶在一個(gè)視圖中同時(shí)查看多個(gè)目錄的內(nèi)容。庫(kù)文件本質(zhì)是一個(gè)xml配置文件,可支持指向Junction文件夾,在xml文件中指定foldertype和knownfolder字段就可構(gòu)造惡意的”庫(kù)”快捷方式。

%appdata%表示W(wǎng)indows的應(yīng)用程序數(shù)據(jù)存儲(chǔ)路徑:C:Users\用戶名lAppDatalRoaming無文件病毒分類4內(nèi)存型內(nèi)存型無文件病毒通常利用系統(tǒng)工具、系統(tǒng)及應(yīng)用程序漏洞去獲取隱匿在遠(yuǎn)程系統(tǒng)上的病毒代碼,并將下載的病毒載荷直接加載至內(nèi)存中執(zhí)行,全程無磁盤文件落地,能極好地規(guī)避安全軟件查殺內(nèi)存型無文件病毒主要包括兩類:漏洞利用型,系統(tǒng)工具利用型,本部分主要探討系統(tǒng)工具利用型無文件病毒,側(cè)重于利用Windows系統(tǒng)內(nèi)置的工具與命令,將隱匿于遠(yuǎn)程系統(tǒng)上的病毒代碼直接下載至內(nèi)存執(zhí)行。無文件病毒分類mstha.exe

MSHTA(MicrosoftHTMLApplicationHost)是MicrosoftWindows操作系統(tǒng)的一部分,必須使用它才能執(zhí)行HTA文件。而WindowsShell中存在遠(yuǎn)程代碼執(zhí)行漏洞,起因就是系統(tǒng)不能正確識(shí)別文件的關(guān)聯(lián)程序。

由于MSHTA是Windows系統(tǒng)內(nèi)置工具,用于執(zhí)行HTA(HTMLApplication)程序:不僅能直接指向遠(yuǎn)端的HTA程序,還能執(zhí)行包含VBScript、JScript等代碼的HTA程序,且在瀏覽器外部運(yùn)行,因此可繞過白名單限制與瀏覽器安全設(shè)置。無文件病毒分類Bitsadmin

BITS(BackgroundIntelligentTransferService,后臺(tái)智能傳輸服務(wù)),是自Windows7后已默認(rèn)內(nèi)置于系統(tǒng)中,用于系統(tǒng)軟件的自動(dòng)更新。Bitsadmin是一個(gè)命令行工具,用于創(chuàng)建、下載或者上傳作業(yè)并監(jiān)視作業(yè)進(jìn)度,且支持代理,斷點(diǎn)續(xù)傳等功能。

其中,name參數(shù)用于指定作業(yè)的名稱;type參數(shù)是可選的,用于指定作業(yè)類型,為下載作業(yè)指定/download或?yàn)樯陷d作業(yè)指定/upload;priority參數(shù)是可選的,用于指定作業(yè)的優(yōu)先級(jí),可將job_priority操作數(shù)設(shè)置為foreground、high、normal或low等四個(gè)選項(xiàng)。無文件病毒分類其他命令除了上述命令之外,還有其他一些常見命令也可用于內(nèi)存型無文件病毒隱匿下載與執(zhí)行。例如,可使用CMD命令進(jìn)行遠(yuǎn)程下載病毒載荷無文件病毒分類上述命令將從遠(yuǎn)程服務(wù)器webserver\folder目錄中下載payload.exe文件至本地內(nèi)存隱匿并執(zhí)行。還可使用Cscript命令從遠(yuǎn)程下載病毒載荷無文件病毒分類病毒混淆混淆原理混淆實(shí)現(xiàn)2CHAPTER1指令,是計(jì)算機(jī)系統(tǒng)中用來指定進(jìn)行某種運(yùn)算或要求實(shí)現(xiàn)某種控制的代碼。2所謂花指令,是一些在程序中的無用代碼或垃圾代碼,有之程序能照常運(yùn)行,無之也不影響程序運(yùn)行3代碼混淆(Obfuscatedcode)亦稱花指令,是將計(jì)算機(jī)程序的代碼,轉(zhuǎn)換成一種功能上等價(jià)而又難于閱讀和理解的形式的行為4即代碼混淆是故意模糊源代碼的行為,使人類難以理解。就其本質(zhì)而言,混淆完全改變了源代碼,但其仍在功能上等價(jià)于原始代碼?;煜碇孛煜ㄟ^修改代碼中相關(guān)變量和方法名稱,使人難以閱讀與理解代碼。然而,混淆后的代碼仍保持程序執(zhí)行能力,即不用去混淆就能執(zhí)行該代碼。字符串加密字符串加密。與重命名混淆不同,字符串加密是

溫馨提示

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

評(píng)論

0/150

提交評(píng)論