惡意代碼原理、技術(shù)與防范全套教學(xué)課件_第1頁(yè)
惡意代碼原理、技術(shù)與防范全套教學(xué)課件_第2頁(yè)
惡意代碼原理、技術(shù)與防范全套教學(xué)課件_第3頁(yè)
惡意代碼原理、技術(shù)與防范全套教學(xué)課件_第4頁(yè)
惡意代碼原理、技術(shù)與防范全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩429頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章惡意代碼概述1-惡意代碼概述.pptx2-引導(dǎo)型惡意代碼.pptx3-計(jì)算機(jī)病毒.pptx4-特洛伊木馬.pptx5-蠕蟲.pptx6-RootKit.pptx7-智能手機(jī)惡意代碼.pptx8-特征碼定位與免殺.pptx9-加密技術(shù)與加殼技術(shù).pptx10-代碼混淆技術(shù).pptx11-反動(dòng)態(tài)分析技術(shù).pptx12-惡意代碼防范技術(shù).pptx全套可編輯PPT課件引言惡意代碼是攻擊者故意編制或設(shè)置的、對(duì)網(wǎng)絡(luò)或系統(tǒng)會(huì)產(chǎn)生威脅或潛在威脅的計(jì)算機(jī)代碼。本章主要介紹惡意代碼的發(fā)展過程、定義、基本模型、分類、命名規(guī)則以及發(fā)展趨勢(shì)等相關(guān)內(nèi)容。惡意代碼的概念惡意代碼的發(fā)展歷程惡意代碼的命名惡意代碼的傳播途徑惡意代碼的發(fā)展趨勢(shì)1.1基本概念4本質(zhì):傳播性、破壞性、未授權(quán)。惡意代碼惡意代碼是指在未經(jīng)授權(quán)情況下,以破壞軟硬件設(shè)備、竊取用戶信息、擾亂用戶正常使用為目的而編制的軟件或代碼片段。

--維基百科定義1.1基本概念5代碼類型定義特點(diǎn)計(jì)算機(jī)病毒編制或者在計(jì)算機(jī)程序中插入的破壞計(jì)算機(jī)功能或毀壞數(shù)據(jù),影響計(jì)算機(jī)使用,能自我復(fù)制的一組計(jì)算機(jī)指令或程序代碼。潛伏、傳染和破壞蠕蟲指通過計(jì)算機(jī)網(wǎng)絡(luò)自我復(fù)制,消耗系統(tǒng)資源和網(wǎng)絡(luò)資源的程序。掃描、攻擊和擴(kuò)散特洛伊木馬指一種與遠(yuǎn)程計(jì)算機(jī)建立連接,使遠(yuǎn)程計(jì)算機(jī)能夠通過網(wǎng)絡(luò)控制本地計(jì)算機(jī)的程序。欺騙、隱蔽和信息竊取邏輯炸彈指一段嵌入計(jì)算機(jī)系統(tǒng)程序的,通過特殊的數(shù)據(jù)或時(shí)間作為條件觸發(fā),試圖完成一定破壞功能的程序。潛伏和破壞分類1.1基本概念代碼類型定義特點(diǎn)RootKit攻擊者用來(lái)隱藏自已蹤跡和保留root訪問權(quán)限的工具。潛伏、提權(quán)和破壞流氓軟件未經(jīng)授權(quán)駐留在系統(tǒng)內(nèi)部,用正常途徑難于卸載,以發(fā)送廣告等方式影響用戶使用的程序。駐留、隱蔽和破壞網(wǎng)絡(luò)釣魚通過發(fā)送大量聲稱主業(yè)自于權(quán)威機(jī)構(gòu)的欺騙性信息來(lái)引誘用戶給出敏感信息的方法。欺騙、信息竊取勒索軟件通過騷擾、恐嚇甚至采用綁架用戶文件等方式,使用戶數(shù)據(jù)資產(chǎn)或計(jì)算資源無(wú)法正常使用,并以此為條件向用戶勒索錢財(cái)。加密、信息竊取、恐嚇6分類1.1基本概念技術(shù)融合是惡意代碼的發(fā)展趨勢(shì)。為了實(shí)現(xiàn)攻擊目標(biāo),惡意代碼會(huì)融合不同種類惡意代碼的技術(shù),使得各種類之間的界限越來(lái)越模糊。惡意代碼有無(wú)劃分類別的必要?1.1基本概念8惡意代碼的攻擊模型攻擊模型惡意代碼的概念惡意代碼的發(fā)展歷程惡意代碼的命名惡意代碼的傳播途徑惡意代碼的發(fā)展趨勢(shì)1.2發(fā)展歷程10產(chǎn)生階段(1983年~1989年):磁芯大戰(zhàn)1983.11,F(xiàn)red

Cohen編寫首個(gè)復(fù)制自身的破壞性程序,命名為計(jì)算機(jī)病毒;1986,Virus/Boot.Brain,首個(gè)PC病毒,1988.11,Morris蠕蟲11產(chǎn)生階段的主要特征:1.攻擊的目標(biāo)單一,傳染磁盤引導(dǎo)扇區(qū)或可執(zhí)行文件;2.通過截獲系統(tǒng)中斷向量的方式監(jiān)視系統(tǒng)的運(yùn)行狀態(tài),并在一定的條件下對(duì)特定目標(biāo)進(jìn)行傳染;3.傳染目標(biāo)以后有明顯特征;4.不具有自我保護(hù)的措施,容易被分析和解剖。1.2發(fā)展歷程12初級(jí)發(fā)展階段(1989年~1995年):1989年

,“Ghostball”病毒,同時(shí)感染com文件和引導(dǎo)區(qū);1990,“1260”病毒,首個(gè)多態(tài)病毒,1992,“Onehalf”病毒,多態(tài)、加密、位置隨機(jī);1993,病毒構(gòu)造集“VirusConstructionSet”

1.2發(fā)展歷程1.2發(fā)展歷程13初級(jí)發(fā)展階段的主要特征:1.目標(biāo)趨于混合型,可同時(shí)傳染磁盤引導(dǎo)扇區(qū)和可執(zhí)行文件;2.以更為隱蔽的方法駐留內(nèi)存和傳染目標(biāo);3.開始采取加密和變形等自我保護(hù)措施,增加分析和查殺的難度;4.感染目標(biāo)后沒有明顯的特征。1.2發(fā)展歷程MS-DOS病毒發(fā)作表象1.2發(fā)展歷程15互聯(lián)網(wǎng)爆發(fā)階段(1996年~2010年):1995年,首個(gè)宏病毒;1998年,BO木馬;1998年,CIH病毒2000年,愛蟲病毒2003-2006,沖擊波、震蕩波等蠕蟲….1.2發(fā)展歷程16互聯(lián)網(wǎng)爆發(fā)階段的主要特征:1.類型多樣化,不再局限于可執(zhí)行文件;2.技術(shù)更深入,從應(yīng)用到內(nèi)核甚至是硬件層;3.木馬成為惡意代碼主要類型;1.2發(fā)展歷程APT成為網(wǎng)絡(luò)安全事件的主導(dǎo)2010年,Stuxnet2012年,F(xiàn)lame2015年,BlackEnergy2016年,Miria2017年,Wannacry等17專業(yè)綜合階段(2010年至今):1.2發(fā)展歷程1.政府等大玩家開始介入,出現(xiàn)攻守不對(duì)等性;2.目標(biāo)更加明確,傳播不再以擴(kuò)散為主,而是定向傳播;3.利用的0day漏洞進(jìn)行傳播和植入的種類更多;4.樣本更難于捕獲,保護(hù)能力更強(qiáng),代碼更難于分析;18專業(yè)綜合階段的主要特征:惡意代碼的概念惡意代碼的發(fā)展歷程惡意代碼的命名惡意代碼的傳播途徑惡意代碼的發(fā)展趨勢(shì)1.2基本概念20命名方式示例發(fā)作的時(shí)間“黑色星期五”發(fā)作癥狀“小球”、“火炬”傳染方式“瘋狂拷貝”包含的標(biāo)志“CIH病毒”發(fā)現(xiàn)地“巴基斯坦”、“耶路撒冷”字節(jié)長(zhǎng)度“1813”命名規(guī)則(1)通用命名法:早期的惡意代碼以計(jì)算機(jī)病毒為主體,同時(shí)新增的頻度和數(shù)量有限,因此安全公司主要根據(jù)計(jì)算機(jī)病毒的屬性例如發(fā)作時(shí)間、癥狀、宿主文件變化的大小等進(jìn)行命名,這種方式被稱為通用命名方法。1.2基本概念21(2)三元組命名規(guī)則含義示例前綴惡意代碼的類型“backdoor、virus名稱指惡意代碼的家族特征“CIH”、“Sasser”后綴惡意代碼的變種特征用a、b等字母表示命名規(guī)則1.2基本概念22前綴表示的類型:蠕蟲:“Worm”為前綴;木馬:“Trojan”為前綴;黑客程序:“Hack”、“Hacktool”為前綴;腳本病毒:“Script”、“Vbs”、“Js”為前綴;宏病毒:“Macro”為前綴;后門:”Backdoor”為前綴;玩笑病毒:“Joke”為前綴;捆綁機(jī):”Binder”為前綴;漏洞利用:“Exploit”為前綴;……命名規(guī)則Worm.Win32.Sasser.bf、Macro.Word97.Melissa惡意代碼的概念惡意代碼的發(fā)展歷程惡意代碼的命名惡意代碼的傳播途徑惡意代碼的發(fā)展趨勢(shì)1.4惡意代碼的傳播途徑目前惡意代碼的主要傳播途徑主要包括:通過不可移動(dòng)的計(jì)算機(jī)硬件進(jìn)行傳播通過移動(dòng)存儲(chǔ)設(shè)備實(shí)現(xiàn)傳播通過網(wǎng)絡(luò)進(jìn)行傳播惡意代碼的概念惡意代碼的發(fā)展歷程惡意代碼的命名惡意代碼的傳播途徑惡意代碼的發(fā)展趨勢(shì)1.5惡意代碼的發(fā)展趨勢(shì)惡意代碼將具有以下發(fā)展趨勢(shì):種類多元化目標(biāo)多樣化技術(shù)復(fù)雜化操作專業(yè)化思考題271.“挖礦”腳本程序會(huì)在用戶打開某些網(wǎng)頁(yè)時(shí)自動(dòng)運(yùn)行,它將當(dāng)前主機(jī)的CPU計(jì)算資源加入到礦池算力中。這種挖礦腳本算是惡意代碼嗎?為什么?2.惡意代碼技具有技術(shù)混合化的趨勢(shì),有些惡意代碼會(huì)綜合使用病毒的感染技術(shù)、蠕蟲的漏洞利用傳播技術(shù)、木馬的隱蔽手段和數(shù)據(jù)的破壞功能等,那么對(duì)此類惡意代碼如何劃分類別?有沒有更好的惡意代碼分類方法?3.惡意代碼傳播途徑有哪些?舉例說明你所知道的惡意代碼侵入方式。4.針對(duì)現(xiàn)在已知的惡意代碼類型,你認(rèn)為需要用幾元組對(duì)它們命名能夠?qū)⑵錅?zhǔn)確分類標(biāo)識(shí)?各元組代表的含義是什么?5.在技術(shù)快速發(fā)展的時(shí)代,能夠流傳下來(lái)的技術(shù)都是經(jīng)典的。通過拓展閱讀惡意代碼的發(fā)展史,總結(jié)惡意代碼中哪些技術(shù)是經(jīng)典的技術(shù)。第二章引導(dǎo)型惡意代碼引言引導(dǎo)型惡意代碼運(yùn)行在系統(tǒng)的底層,加載時(shí)機(jī)早、抗查殺能力強(qiáng)的特點(diǎn)引得攻擊者們對(duì)其趨之若鶩。當(dāng)前計(jì)算機(jī)的引導(dǎo)方式主要有BIOS固件和UEFI固件兩類,本章重點(diǎn)介紹基于這兩類的引導(dǎo)型惡意代碼。Windows引導(dǎo)過程引導(dǎo)型病毒1Windows引導(dǎo)過程Windows引導(dǎo)過程1.1固件BIOS引導(dǎo)過程BIOS(BasicInputOutputSystem)全稱“基本輸入輸出系統(tǒng)”,它是計(jì)算機(jī)主板ROM芯片上的一組程序,它保存著計(jì)算機(jī)最重要的基本輸入輸出程序、開機(jī)后自檢程序和系統(tǒng)自啟動(dòng)程序,它可以從CMOS中讀寫系統(tǒng)設(shè)置的具體信息,其主要功能是為計(jì)算機(jī)提供最底層的、最直接的硬件設(shè)置和控制。計(jì)算機(jī)加電后,系統(tǒng)首先由上電自檢程序(PowerOnSelfTest,POST)對(duì)各個(gè)硬件設(shè)備檢查,通常包括對(duì)CPU、640K基本內(nèi)存、1M以上擴(kuò)展內(nèi)存、ROM、主板等測(cè)試,若發(fā)現(xiàn)問題,則給出提示信息或鳴笛警告。POST自檢完成后,讀入并執(zhí)行引導(dǎo)扇區(qū)的主引導(dǎo)記錄(MasterBootRecord,MBR),引導(dǎo)記錄找到安裝在操作系統(tǒng)的活動(dòng)分區(qū),將控制權(quán)轉(zhuǎn)交給活動(dòng)分區(qū)的引導(dǎo)記錄PBR,由該引導(dǎo)記錄找到分區(qū)上的操作系統(tǒng)啟動(dòng)文件,從而完成操作系統(tǒng)的啟動(dòng)。1.2固件UEFI引導(dǎo)過程UEFI(UnifiedExtensibleFirmwareInterface)全稱“統(tǒng)一的可擴(kuò)展固件接口”,是一種詳細(xì)描述全新類型接口的標(biāo)準(zhǔn),其主要目的為了提供在操作系統(tǒng)加載之前,面向所有平臺(tái)的一組標(biāo)準(zhǔn)的啟動(dòng)服務(wù)。UEFI與傳統(tǒng)BIOS引導(dǎo)方法有很大區(qū)別,傳統(tǒng)的BIOS是與第一批PC兼容的計(jì)算機(jī)固件一起開發(fā)的,隨著PC硬件復(fù)雜性的增長(zhǎng),需要更復(fù)雜的BIOS代碼來(lái)配置它。而UEFI標(biāo)準(zhǔn)被提出后可以用統(tǒng)一的結(jié)構(gòu)控制固件的復(fù)雜性。UEFI固件類似一個(gè)小型操作系統(tǒng),它甚至有自己的網(wǎng)絡(luò)棧。它包含幾百萬(wàn)行代碼,實(shí)現(xiàn)復(fù)雜,能夠提供比傳統(tǒng)BIOS更多的功能。UEFI具有更好的可編程性、更高的安全性、更強(qiáng)的可擴(kuò)展性,并且更好的適應(yīng)64位平臺(tái)。1.3Windows操作系統(tǒng)引導(dǎo)過程卷引導(dǎo)記錄和初始加載程序bootmgr模塊和引導(dǎo)配置數(shù)據(jù)Windows引導(dǎo)過程視圖Windows引導(dǎo)過程引導(dǎo)型病毒2引導(dǎo)型病毒36DOSWin9x/meWin2000/XP/Win7…OS的變遷什么技術(shù)阻礙了引導(dǎo)型病毒的繼續(xù)擴(kuò)張?引導(dǎo)型病毒采用什么技術(shù)突破了限制?引導(dǎo)型惡意代碼StoneBrainMonkey…PolyBoot

…鬼影系列

TDL系列…回顧--硬盤分區(qū)結(jié)構(gòu)

--系統(tǒng)啟動(dòng)過程37BIOS啟動(dòng)主機(jī)加電OS啟動(dòng)系統(tǒng)啟動(dòng)過程如果用惡意代碼替換引導(dǎo)記錄,那么…38什么是引導(dǎo)型病毒?2引導(dǎo)型病毒引導(dǎo)型病毒是指專門寄生在磁盤引導(dǎo)扇區(qū)或者主分區(qū)的引導(dǎo)扇區(qū)的計(jì)算機(jī)病毒。DOS時(shí)代叫病毒,Windows

NT后稱為引導(dǎo)型惡意代碼,或BootKit。危害:?jiǎn)?dòng)早難清除破壞性大2引導(dǎo)型病毒39MBR的工作流程2引導(dǎo)型病毒病毒傳播:利用軟盤和硬盤的引導(dǎo)區(qū)進(jìn)行自我復(fù)制。PC1(毒)PC2毒毒毒2引導(dǎo)型病毒病毒需解決的問題:病毒代碼必須能正常引導(dǎo)啟動(dòng)計(jì)算機(jī);病毒代碼運(yùn)行后要常駐在內(nèi)存中;病毒代碼要能夠識(shí)別軟盤插入并能夠感染其引導(dǎo)區(qū);2引導(dǎo)型病毒42實(shí)現(xiàn)內(nèi)存駐留常規(guī)內(nèi)存(640KB)高端內(nèi)存(384KB)DOS內(nèi)存管理:實(shí)模式2引導(dǎo)型病毒W(wǎng)indows系統(tǒng)常用“事件觸發(fā)”的消息通知方式;病毒利用DOS系統(tǒng)插入軟盤時(shí)自動(dòng)讀取軟盤引導(dǎo)區(qū)的方式進(jìn)行判斷。實(shí)現(xiàn)軟盤的識(shí)別2引導(dǎo)型病毒44病毒代碼為常駐內(nèi)存開設(shè)空間設(shè)置傳播機(jī)制組合完整代碼,實(shí)現(xiàn)常駐內(nèi)存?引導(dǎo)型病毒的工作流程病毒的激活病毒的存儲(chǔ)病毒的感染2引導(dǎo)型病毒45BIOS(int13h)讀

AH=02h,寫AH=03hAL=扇區(qū)數(shù)CH=柱號(hào)的低8位CL=低6位為起始扇區(qū)號(hào),高2位為柱號(hào)高2位DH:DL=磁頭號(hào):驅(qū)動(dòng)器實(shí)現(xiàn)磁盤讀寫例:讀主引導(dǎo)區(qū)所在1號(hào)扇區(qū)movax,0201hmoval,01hmovcx,0001hmovdx,0h46NT內(nèi)核的操作系統(tǒng)安全改進(jìn)如何對(duì)扇區(qū)進(jìn)行讀寫?1禁止通過BIOS中斷對(duì)硬件直接訪問2由DOS引導(dǎo)啟動(dòng)后交由Windows運(yùn)行,內(nèi)存采用保護(hù)模式管理2引導(dǎo)型病毒Bootkit2引導(dǎo)型病毒47Win2000、XP操作系統(tǒng)(1)應(yīng)用層

hDev=CreateFile("\.\PHYSICALDRIVE0",…);ReadFile(hDev,Buffer,512,&dwRet,0);

(2)驅(qū)動(dòng)層

DeviceIoControl(…,IOCTL_OLS_SET_SECTION,…);

IoGetDeviceObjectPointer(L"http://??//PhysicalDrive0",…);

pIrpS=IoGetCurrentIrpStackLocation(pIrp);

pIrpS->Parameters.Write.ByteOffset=Sections_To_Byte(…);

Windows下如何讀寫扇區(qū)?pIrpSp->Flags

|=

SL_FORCE_DIRECT_WRITE

Bootkit2引導(dǎo)型病毒W(wǎng)in系統(tǒng)下讀寫磁盤引導(dǎo)扇區(qū)問題的解決,標(biāo)志著可以對(duì)引導(dǎo)扇區(qū)進(jìn)行改寫。48如何解決程序從DOS系統(tǒng)到Windows系統(tǒng)的跨越?Bootkit2引導(dǎo)型病毒49Windows引導(dǎo)過程BIOS加電自檢讀主引導(dǎo)扇區(qū)MBR讀激活分區(qū)DBRNTLDR將實(shí)模式轉(zhuǎn)換為保護(hù)模式OS啟動(dòng)讀BOOT.INI文件,顯操作系統(tǒng)菜單加載NTDETECT.COM,檢測(cè)并注冊(cè)硬件信息選擇硬件配置文件進(jìn)行硬件配置裝載內(nèi)核NtOsKrnl.EXE初始化內(nèi)核加載驅(qū)動(dòng)程序啟動(dòng)用戶登錄程序WinLogon.EXEBootkit2引導(dǎo)型病毒回歸初衷:實(shí)現(xiàn)一個(gè)代碼從主機(jī)啟動(dòng)開始就駐留獲得控制權(quán)直到Windows操作系統(tǒng)啟動(dòng)運(yùn)行仍然在活躍在內(nèi)核?50trojan.sys(Win)mbrstart(DOS)從MBR中啟動(dòng),實(shí)現(xiàn)Windows系統(tǒng)加載時(shí)運(yùn)行l(wèi)oadmc具體的木馬功能loadmc(Win)磁盤sec0sec1

sec2

sec3…mbrstartloadmctrojan.sys內(nèi)存trojan.sys組裝、加載及保護(hù)。windows系統(tǒng)是如何加載的?Bootkit2引導(dǎo)型病毒51Windows操作系統(tǒng)啟動(dòng)的三階段MBR-DOS系統(tǒng)DOS-Windows系統(tǒng)Windows系統(tǒng)1.BIOS加電自檢2.讀取并執(zhí)行MBR3.讀激活分區(qū)DBR4.加載NTLDR1.SU初始化物理內(nèi)存,調(diào)用osloader2.初始化保護(hù)模式下的內(nèi)存子系統(tǒng)3.確定啟動(dòng)分區(qū),讀boot.ini并加載NTDETECT.COM4.初始化系統(tǒng)目錄,將ntokrnl.exe加載內(nèi)存Ntoskrnl加載文件系統(tǒng)、注冊(cè)表,設(shè)備驅(qū)動(dòng)程序等mbrstart如何在啟動(dòng)的過程中實(shí)現(xiàn)三階段代碼控制權(quán)的交替?實(shí)質(zhì)是解決代碼進(jìn)入內(nèi)存與激活兩個(gè)問題loadmctrojan.sysBootkit2引導(dǎo)型病毒以“鬼影”Bootkit為例52a.將loadmc代碼直接以新節(jié)patch到NTLDR上,并計(jì)算其在內(nèi)存中應(yīng)被加載的位置xxxx;b.定位Ntldr.callBlLoadBootDrivers,將其下一句改為callxxxx;Bootkit第一步:mbrstartpatchntldr通過hookint13中斷對(duì)讀取的扇區(qū)進(jìn)行過濾,發(fā)現(xiàn)ntldr時(shí)對(duì)其實(shí)現(xiàn)hook,確保ntldr執(zhí)行時(shí)loadmc能夠獲得控制權(quán)。2引導(dǎo)型病毒53a.尋址BlLoaderBlock,通過其LoadOrderListHead結(jié)構(gòu)找到ntoskrnl.exe基址;b.在ntoskrnl.exe的空間中插入loadmc代碼中加載驅(qū)動(dòng)的部分;c.通過ntoskrnl文件結(jié)構(gòu)找到導(dǎo)入函數(shù)OnInitSystem的地址,替換為loadmc的地址。Bootkit第二步:loadmc-hookntoskrnl通過對(duì)ntldr內(nèi)存空間的搜索,找到ntoskrnl.exe的基地址,通過inlinehook將其導(dǎo)入函數(shù)OnInitSystem替換為代碼中的loadmc函數(shù),確保ntoskrnl.exe執(zhí)行時(shí)獲得控制權(quán)。54Bootkit2引導(dǎo)型病毒第三步:trojan.sys木馬的加載loadmc驅(qū)動(dòng)代碼加載時(shí),系統(tǒng)初始化已完成,磁盤驅(qū)動(dòng)、注冊(cè)表以及設(shè)備驅(qū)動(dòng)等都已經(jīng)加載,因此直接可加載trojan.sys到內(nèi)核。思考題551.通過對(duì)磁盤結(jié)構(gòu)和文件系統(tǒng)的學(xué)習(xí)和分析,惡意代碼會(huì)隱蔽駐留在磁盤中的哪些位置避免被發(fā)現(xiàn)?哪些位置除了駐留以外還可以輔助其實(shí)現(xiàn)代碼的加載?2.描述DOS引導(dǎo)區(qū)病毒為了實(shí)現(xiàn)長(zhǎng)期駐留內(nèi)存而采用的方法及原理。3.針對(duì)BIOS引導(dǎo)的Windows系統(tǒng),已經(jīng)獲得MBR引導(dǎo)控制權(quán)的惡意代碼如何將控制權(quán)持續(xù)維持到Windows系統(tǒng)完全啟動(dòng)?4.為了實(shí)現(xiàn)安全引導(dǎo),基于UEFI啟動(dòng)的Windows都采用了哪些安全措施?5.Bootkit從哪些方面實(shí)現(xiàn)了對(duì)UEFI引導(dǎo)的突破?第三章計(jì)算機(jī)病毒引言計(jì)算機(jī)病毒是出現(xiàn)最早、流行最廣的惡意代碼類型之一。隨著計(jì)算機(jī)、互聯(lián)網(wǎng)的普及和操作系統(tǒng)的多樣化,計(jì)算機(jī)病毒在傳染機(jī)制、表現(xiàn)形式上都有了很大的發(fā)展。本章在介紹PE文件結(jié)構(gòu)的基礎(chǔ)上,深入剖析了Win32病毒、宏病毒和腳本型病毒等文件型病毒的原理和關(guān)鍵技術(shù)。計(jì)算機(jī)病毒概述Win32病毒宏病毒腳本病毒1.計(jì)算機(jī)病毒的基本概念59定義:計(jì)算機(jī)病毒是指編制或者在計(jì)算機(jī)程序中插入的破壞計(jì)算機(jī)功能或者毀壞數(shù)據(jù),影響計(jì)算機(jī)使用,并能自我復(fù)制的一組計(jì)算機(jī)指令或者程序代碼。特點(diǎn):感染宿主式的自我復(fù)制花樣繁多的破壞方式有宿主會(huì)破壞能感染定義1.計(jì)算機(jī)病毒的基本概念計(jì)算機(jī)病毒狀態(tài)靜態(tài):是指存在于輔助存儲(chǔ)介質(zhì)中的狀態(tài),不具備破壞和表現(xiàn)功能;動(dòng)態(tài):處于運(yùn)行狀態(tài),獲得系統(tǒng)控制權(quán);可激活態(tài):病毒已被加載至內(nèi)存,能夠被系統(tǒng)的正常運(yùn)行機(jī)制所執(zhí)行卻未執(zhí)行病毒代碼時(shí)的狀態(tài);激活態(tài):系統(tǒng)正在執(zhí)行病毒代碼時(shí),病毒處于激活態(tài)。60定義1.計(jì)算機(jī)病毒的基本概念61病毒的生命周期狀態(tài)變遷圖

1.計(jì)算機(jī)病毒的基本概念62計(jì)算機(jī)病毒的基本結(jié)構(gòu)組成1.計(jì)算機(jī)病毒的基本概念注意:不是所有的計(jì)算機(jī)病毒均具有三個(gè)模塊的功能。上述三個(gè)模塊須由主控制模塊調(diào)用,協(xié)同完成工作。63main(){調(diào)用引導(dǎo)功能模塊;A:do{尋找傳染對(duì)象;if(傳染條件不滿足)gotoA;}while(滿足傳染條件);調(diào)用傳染功能模塊;while(滿足破壞條件){激活病毒程序;調(diào)用破壞功能模塊;}運(yùn)行宿主源程序;}1.計(jì)算機(jī)病毒的基本概念64計(jì)算機(jī)病毒的分類:按照計(jì)算機(jī)病毒攻擊的設(shè)備類型分類:PC機(jī)病毒、小型機(jī)病毒、移動(dòng)設(shè)備、工控設(shè)備病毒等;按照計(jì)算機(jī)病毒的鏈接方式:源碼型病毒、二進(jìn)制型病毒、解釋型病毒等;計(jì)算機(jī)病毒按感染對(duì)象分類:引導(dǎo)型病毒;文件型病毒;引導(dǎo)型兼文件型病毒分類1.計(jì)算機(jī)病毒的基本概念工作機(jī)制:包括傳播機(jī)制、觸發(fā)機(jī)制和破壞機(jī)制傳播機(jī)制又稱感染機(jī)制,指計(jì)算機(jī)病毒自我復(fù)制的方法。65磁盤的引導(dǎo)扇區(qū)可執(zhí)行文件OFFICE文檔模板(宏)網(wǎng)頁(yè)(js等腳本)其它…病毒的感染對(duì)象有哪些類型?傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念傳播機(jī)制核心要解決病毒代碼存儲(chǔ)在宿主什么地方,并能獲得控制權(quán)的問題。(a)引導(dǎo)型病毒的感染位置:替換MBR或DBR66MBRDBR......sec-0sec-1sec-n............Virus<446bytevirvirMBRDBR......sec-0sec-1sec-n............Virus>446bytevirheadvirpartvirhead傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念(b)文件型病毒腳本型病毒的感染

特點(diǎn):文本編輯解釋引擎翻譯執(zhí)行順序執(zhí)行病毒代碼也是文本67virus可以寫在宿主腳本的頭、中、尾的任何位置(最好包含在函數(shù)中)傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念二進(jìn)制文件的感染控制權(quán):入口點(diǎn)、退出點(diǎn)、必經(jīng)路徑。形式:二進(jìn)制shellcode考慮重定位,插入的代碼不應(yīng)導(dǎo)致各節(jié)的偏移68傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念加殼式病毒將宿主文件整體打包并作為數(shù)據(jù)的一部分(類似加殼軟件),執(zhí)行時(shí)病毒先執(zhí)行,再將宿主脫殼后執(zhí)行。69HOST程序代碼頭HOST程序代碼病毒頭病毒代碼原Host(壓縮)傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念壓縮式壓縮型將原Host代碼段進(jìn)行壓縮,將自身放入減少的代碼段空間,并通過修改EPO獲得控制權(quán);70HOST程序代碼頭HOST程序代碼HOST程序頭(改EPO)病毒代碼壓縮后的Host代碼代碼段可容納病毒HOST程序頭(改EPO)病毒代碼+JMPxx壓縮后的Host代碼病毒代碼2代碼段太小傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念空洞填充型71傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念72無(wú)入口點(diǎn)式入口點(diǎn)模糊技術(shù),即病毒在不修改宿主原入口點(diǎn)的前提下,通過在宿主代碼體內(nèi)某處插入跳轉(zhuǎn)指令來(lái)使病毒獲得控制權(quán)傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念73鏈?zhǔn)讲《靖腥緯r(shí),完全不改動(dòng)宿主程序本體,而是改動(dòng)或利用與宿主程序的相關(guān)信息,將病毒程序與宿主程序鏈成一體,這種感染方式叫做鏈?zhǔn)礁腥尽鞑C(jī)制1.計(jì)算機(jī)病毒的基本概念74破壞型感染病毒感染時(shí),對(duì)宿主程序的一部分代碼,不作保留第進(jìn)行覆蓋寫入,病毒寫入處的原宿主程序代碼全部丟失。傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念編譯器和源碼的感染用被病毒感染的編譯器編譯新的代碼,生成帶病毒代碼的程序?qū)ο蟆?52016,Xcode風(fēng)波傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念觸發(fā)機(jī)制利用特定條件激活病毒代碼,使其由可激活態(tài)轉(zhuǎn)換為激活態(tài)。觸發(fā)的條件包括:指令觸發(fā)日期和時(shí)間觸發(fā)鍵盤觸發(fā)開機(jī)觸發(fā)磁盤訪問觸發(fā)和中斷訪問觸發(fā)其它觸發(fā):OS型號(hào)、IP地址、語(yǔ)言、地區(qū)、特定漏洞76觸發(fā)機(jī)制破壞機(jī)制攻擊文件和硬盤;攻擊內(nèi)存;干擾系統(tǒng)的運(yùn)行;擾亂輸出設(shè)備;擾亂鍵盤;干擾瀏覽器和下載新的惡意軟件;實(shí)施網(wǎng)絡(luò)攻擊和敲詐;……771.計(jì)算機(jī)病毒的基本概念破壞機(jī)制計(jì)算機(jī)病毒概述Win32病毒宏病毒腳本病毒2Win32病毒PE可執(zhí)行文件是Windows系統(tǒng)下計(jì)算機(jī)病毒感染的主要文件類型,通常將感染PE文件的病毒稱為win32病毒。2.1

PE文件格式PE文件布局基址磁盤中的文件內(nèi)存中的文件2.1

PE文件格式81物理地址(Raw

Address,RA):數(shù)據(jù)在磁盤文件中的偏移;

虛擬地址(Virtual

Address,VA):數(shù)據(jù)加載到虛擬空間后的內(nèi)存地址;相對(duì)虛擬地址(RelativeVirtualAddresses,RVA),數(shù)據(jù)相對(duì)于在虛擬地址的基地址的偏移量。VA=ImageBase+RVA82typedefstruct_IMAGE_DOS_HEADER{

USHORTe_magic;//魔術(shù)數(shù)字MZUSHORTe_cblp;USHORTe_cp;……LONGe_lfanew;//新EXE頭部的文件地址}作用:判斷文件是否為PE文件;DOSStub是為了與DOS操作系統(tǒng)兼容而保留的頭部;2.1

PE文件格式2.1

PE文件格式83PEHeader(PE文件頭):是IMAGE_NT_HEADER的簡(jiǎn)稱,存放PE整個(gè)文件信息分布的重要字段,包含了許多PE裝載器用到的重要字段。2.1

PE文件格式IMAGE_NT_HEADERSSTRUCTSignaturedd?//’PE\0\0’FileHeaderIMAGE_FILE_HEADER<>//文件基本信息OptionalHeaderIMAGE_OPTIONAL_HEADER32<>//文件附屬信息IMAGE_NT_HEADERSENDStypedefstruct_IMAGE_FILE_HEADER{WORDMachine;//0x04,該程序要執(zhí)行的環(huán)境及平臺(tái)

WORDNumberOfSections;//0x06,文件中節(jié)的個(gè)數(shù)

DWORDTimeDateStamp;//0x08,文件建立的時(shí)間

DWORDPointerToSymbolTable;//0x0c,COFF符號(hào)表的偏移

DWORDNumberOfSymbols;//0x10,符號(hào)數(shù)目

WORDSizeOfOptionalHeader;//0x14,可選頭的長(zhǎng)度

WORDCharacteristics;//0x16,標(biāo)志集合}IMAGE_FILE_HEADER,*PIMAGE_FILE_HEADER;2.1

PE文件格式85緊跟映像文件頭后面的就是可選映像頭typedefstruct_IMAGE_OPTIONAL_HEADER{//標(biāo)準(zhǔn)域:WORDMagic;//0x18,一般是0x010BBYTEMajorLinkerVersion;//0x1a,鏈接器的主/次版本號(hào),

BYTEMinorLinkerVersion;//0x1b,這兩個(gè)值都不可靠

DWORDSizeOfCode;//0x1c,可執(zhí)行代碼的長(zhǎng)度

DWORDSizeOfInitializedData;//0x20,初始化數(shù)據(jù)的長(zhǎng)度(數(shù)據(jù)節(jié))DWORDSizeOfUninitializedData;//0x24,未初始化數(shù)據(jù)的長(zhǎng)度(bss節(jié))

DWORDAddressOfEntryPoint;//0x28,代碼的入口RVA地址,程序從這開始執(zhí)行

DWORDBaseOfCode;//0x2c,可執(zhí)行代碼起始位置,意義不大

DWORDBaseOfData;//0x30,初始化數(shù)據(jù)起始位置,意義不大

DWORDImageBase;//0x34,載入程序首選的RVA地址

DWORDSectionAlignment;//0x38,加載后節(jié)在內(nèi)存中的對(duì)齊方式,0x1000

(待續(xù))86DWORDFileAlignment;//0x3c,節(jié)在文件中的對(duì)齊方式,0x200

WORDMajorOperatingSystemVersion;//0x3e,操作系統(tǒng)主/次版本,WORDMinorOperatingSystemVersion;//0x40,Loader并沒有用這兩個(gè)值WORDMajorImageVersion;//0x42,可執(zhí)行文件主/次版本W(wǎng)ORDMinorImageVersion;//0x44WORDMajorSubsystemVersion;//0x46,子系統(tǒng)版本號(hào)WORDMinorSubsystemVersion;//0x48DWORDWin32VersionValue;//0x4c,Win32版本,一般是0DWORDSizeOfImage;//0x50,程序調(diào)入后占用內(nèi)存大小(字節(jié))DWORDSizeOfHeaders;//0x54,文件頭的長(zhǎng)度之和DWORDCheckSum;//0x58,校驗(yàn)和,DLL用WORDSubsystem;//0x5c,可執(zhí)行文件的子系統(tǒng)WORDDllCharacteristics;//0x5e,何時(shí)DllMain被調(diào)用,一般為0DWORDSizeOfStackReserve;//0x60,初始化線程時(shí)保留的堆棧大小DWORDSizeOfStackCommit;//0x64,初始化線程時(shí)提交的堆棧大小DWORDSizeOfHeapReserve;//0x68,進(jìn)程初始化時(shí)保留的堆大小DWORDSizeOfHeapCommit;//0x6c,進(jìn)程初始化時(shí)提交的堆大小DWORDLoaderFlags;//0x70,裝載標(biāo)志,與調(diào)試相關(guān)DWORDNumberOfRvaAndSizes;//0x74,數(shù)據(jù)目錄的項(xiàng)數(shù),一般是16IMAGE_DATA_DIRECTORYDataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];}IMAGE_OPTIONAL_HEADER,*PIMAGE_OPTIONAL_HEADER;2.1

PE文件格式87節(jié)表是緊挨著NT映像頭的一結(jié)構(gòu)數(shù)組,其成員的數(shù)目由映像文件頭中NumberOfSections決定#defineIMAGE_SIZEOF_SHORT_NAME8typedefstruct_IMAGE_SECTION_HEADER{UCHARName[IMAGE_SIZEOF_SHORT_NAME];//節(jié)名

union{ULONGPhysicalAddress;//OBJ文件中表示本節(jié)物理地址

ULONGVirtualSize;//對(duì)齊前節(jié)的實(shí)際字節(jié)數(shù)

}Misc;

ULONGVirtualAddress;//本節(jié)的RVA

ULONGSizeOfRawData;//本節(jié)經(jīng)過文件對(duì)齊后的尺寸

ULONGPointerToRawData;//本節(jié)原始數(shù)據(jù)在文件中的位置,自裝載時(shí)有用

ULONGPointerToRelocations;//OBJ文件中表示本節(jié)重定位信息的偏移

ULONGPointerToLinenumbers;//OBJ行號(hào)偏移

USHORTNumberOfRelocations;//OBJ本節(jié)需重定位的數(shù)目

USHORTNumberOfLinenumbers;//OBJ本節(jié)在行號(hào)表中的行號(hào)數(shù)目

ULONGCharacteristics;//節(jié)屬性}IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;2.1

PE文件格式88代碼節(jié)的屬性一般是60000020H,即“可執(zhí)行”、“可讀”和“節(jié)中包含代碼”數(shù)據(jù)節(jié)的屬性一般是C0000040H,即“可讀”、“可寫”和“包含已初始化數(shù)據(jù)”

病毒在添加新節(jié)時(shí),都會(huì)將新添加的節(jié)的屬性設(shè)置為可讀、可寫、可執(zhí)行2.1

PE文件格式IMAGE_IMPORT_DESCRIPTORSTRUCT{union{DWORDCharacteristics DWORDOriginalFirstThun//該RVA指向一個(gè)IMAGE_THUNK_DATA

}DWORDTimeDateStamp //時(shí)間日期記錄,無(wú)意義

DWORDForwarderChain //正向連接索引

DWORD

Name //被調(diào)用dll的名字指針數(shù)組的指針

DWORDFirstThunk //該RVA指向一個(gè)IMAGE_THUNK_DATA}IMAGE_IMPORT_DESCRIPTOR89導(dǎo)入表格式導(dǎo)入表的重要性2.1

PE文件格式

_IMAGE_THUNK_DATA{

union{

DWORDForwarderString

DWORDFunction

DWORDOrdinal//序號(hào)

DWORDAddressOfData//指向IMAGE_IMPORT_BY_NAME

}}IMAGE_THUNK_DATAIMAGE_IMPORT_BY_NAME{

WORDHint//函數(shù)序號(hào),但有的編譯器不用此域

BYTEName[1]

//函數(shù)名稱,以0結(jié)尾}IMAGE_IMPORT_BY_NAMEends902.1

PE文件格式91PE加載前2.1

PE文件格式92PE加載后2.2

Win32病毒W(wǎng)in32病毒是一段二進(jìn)制代碼,但與正常程序有區(qū)別:1.只有代碼節(jié),沒有數(shù)據(jù)節(jié)等其它節(jié);2.病毒附著在宿主文件,附著的位置不確定;3.病毒功能需要的API宿主程序的導(dǎo)入表并不提供;93病毒代碼入口重定位查找Kernel32基地址獲取API函數(shù)地址搜索文件讀寫操作文件操作是否成功讀取文件PE頭信息是否已經(jīng)被感染修改PE節(jié)感染Host,設(shè)置新入口點(diǎn),并在病毒結(jié)束處指向原入口點(diǎn)判斷發(fā)作條件是否符合發(fā)作條件轉(zhuǎn)到Host程序執(zhí)行正常程序操作成功否是否是不成功進(jìn)行破壞或竊聽潛伏并監(jiān)聽怎么辦?原理2.2

Win32病毒重定位問題病毒的寄生性決定了病毒只能作為一段代碼寄生在PE文件中,而不是一個(gè)完整的可執(zhí)行文件。病毒中所有的數(shù)據(jù)和代碼都必須融合在代碼段完成;94重定位bvsegment;定義段

assumecs:bv,ds:bv,es:bv;聲明段與寄存器的結(jié)合start:

oint13_ipdw?;定義雙字

oint13_csdw?

;定義雙字……2.2

Win32病毒95callvstartvstart:popebx…var1:db10dup(0)leaeax,[ebx+(offsetvar1-offsetvstart)]//eax中存放著var1在內(nèi)存中的真實(shí)地址感染不同的宿主對(duì)象后病毒代碼所在內(nèi)存位置不同,執(zhí)行時(shí)對(duì)地址的調(diào)用如何解決?重定位找一個(gè)相對(duì)穩(wěn)定的位置2.2

Win32病毒API函數(shù)的問題宿主程序并不保證提供病毒代碼實(shí)現(xiàn)功能的API函數(shù)。96解決方案:(1)在宿主程序的內(nèi)存空間中搜索需要的API(2)動(dòng)態(tài)獲得API函數(shù)的地址調(diào)用API2.2

Win32病毒(1)在宿主程序的內(nèi)存空間中搜索需要的API條件:適合宿主程序的內(nèi)存空間已經(jīng)加載了所需API的動(dòng)態(tài)鏈接庫(kù),不具有普適性;方法:找到所在DLL的基址,再根據(jù)其導(dǎo)出表找到所需API的地址;調(diào)用API2.2

Win32病毒typedefstruct_IMAGE_EXPORT_DIRECTORY{

//導(dǎo)出表結(jié)構(gòu) DWORDCharacteristics;//保留 DWORDTimeDateStamp;//時(shí)間戳

WORDMajorVersion;//

WORDMinorVersion;//

DWORDName;//指向模塊名稱的RVA DWORDBase;//導(dǎo)出表用于導(dǎo)出函數(shù)序號(hào)基數(shù)

DWORDNumberOfFunctions;//導(dǎo)出函數(shù)成員個(gè)數(shù)

DWORDNumberOfNames;//導(dǎo)出函數(shù)名稱表成員個(gè)數(shù)

DWORDAddressOfFunctions;//導(dǎo)出函數(shù)址表RAV DWORDAddressOfNames;//函數(shù)名稱表RAV DWORDAddressOfNameOrdinals;//導(dǎo)出函數(shù)序號(hào)表}IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;調(diào)用API2.2

Win32病毒(2)動(dòng)態(tài)獲取API函數(shù)地址(普適性)獲取Kernel32.dll的基地址;獲得LoadLibrary和GetProcAddress函數(shù)地址調(diào)用API2.2

Win32病毒101mov

edx,

[esp].Next:dec

edxXordx,

dx

;減去跨度,或andedx,0xFFFF0000

cmp

word

[edx],

’ZM’

jz

.IsPe

jmp

.Next

.IsPe:

mov

eax,

[edx+3ch]

cmp

word

[eax+edx],

‘EP'

jnz

.Next

xchg

eax,

edx

eax

=

kernel32

基地址獲得KERNEL32的基地址方法利用HOST程序入口點(diǎn)的返回地址,在其附近搜索KERNEL32模塊基地址(適合入口點(diǎn)病毒)。調(diào)用API2.2

Win32病毒102通過PEB(ProcessEnviromentBlock)獲取PEB基本結(jié)構(gòu)基本原理:NT內(nèi)核系統(tǒng)中FS寄存器指向TEB,TEB+0X30處指向PEB結(jié)構(gòu),PEB+0X0C處指向PEB_LDR_DATA結(jié)構(gòu),PEB_LDR_DATA+0X14處存放一些DLL地址,其中第一個(gè)為NTDLL.DLL,第二個(gè)為KERNEL32.DLL調(diào)用API2.2

Win32病毒103

__asm{ pusheax mov eax,fs:[30h]//獲得PEB指針 mov eax,[eax+0ch]//獲得PEB_LDR_DATA結(jié)構(gòu)

mov eax,[eax+14h]//PEB->Ldr.InInitializationOrderModuleList.Flink mov eax,[eax]//eax,現(xiàn)在是ntdll.dll

moveax,[eax]//現(xiàn)在是kernel32.dll

mov eax,[eax+10h] //得到Kernel32.dll的BaseAddress

movret,eax popeax }基于PEB結(jié)構(gòu)獲得基地址的代碼實(shí)例調(diào)用API2.2

Win32病毒通過SEH獲取異常處理鏈表的頂端節(jié)點(diǎn)默認(rèn)情況下會(huì)放置Kernel32.UnhaldledExceptionFilter函數(shù)。因此,可以通過遍歷異常處理鏈表來(lái)找到它的未處理異?;卣{(diào)函數(shù)的地址,通過該地址向低地址尋找PE文件的DOS頭標(biāo)志.104EXCEPTION_REGISTRATIONTEB(fs:[0])回調(diào)函數(shù)1的地址下一個(gè)回調(diào)函數(shù)2的地址下一個(gè)Toplevel函數(shù)的地址0xFFFFFFFF…調(diào)用API2.2

Win32病毒常見感染方法:新加代碼節(jié),修改入口點(diǎn)主要的工作:增加一個(gè)節(jié)表項(xiàng);向節(jié)表增加一個(gè)新段(病毒代碼);//注意對(duì)齊調(diào)整文件映像尺寸,節(jié)表數(shù)(即SizeofImage/NumberofSections)以及節(jié)的屬性。105文件修改病毒寫到哪個(gè)位置不會(huì)影響原功能?2.2

Win32病毒病毒對(duì)文件頭的修改修改映像文件頭中節(jié)表數(shù)目NumberOfSections;新增節(jié)表SectionTable;修改入口點(diǎn)AddressOfEntryPoint;修改內(nèi)存映像大小SizeOfImage(內(nèi)存中整個(gè)PE映像尺寸=原SizeOfImage+病毒節(jié)經(jīng)過內(nèi)存節(jié)對(duì)齊后的大小);寫入感染標(biāo)記。106注意:為了將控制權(quán)轉(zhuǎn)回宿主程序,病毒代碼中需要一個(gè)變量用于存放原來(lái)的入口點(diǎn)!文件修改計(jì)算機(jī)病毒概述Win32病毒宏病毒腳本病毒3宏病毒什么是宏?宏(macro)是一種批量處理的稱謂,是指把常用的動(dòng)作寫成類似批處理命令的多行代碼的集合。適合所有文檔操作,通常是將重復(fù)操作設(shè)置為宏;創(chuàng)建或錄制;宏的類型自建宏:只對(duì)本文檔有效的宏,如FileSave、FilePrint等;自動(dòng)宏:對(duì)于所有文檔都有效的,如AutoExit、AutoOpen、AutoClose、AutoNew等;自定義宏:用戶自己建立或錄制。108概念3宏病毒109SubHelloVBA()DimNormProjMsgBox"HelloWold!這是我的第一個(gè)VBA宏!",vbOKOnly,"宏測(cè)試"SetNormProj=NormalTemplate.VBProjectMsgBoxNormProj.Name,vbOKOnly,"模板文件名"'顯示模板文件名

WithAssistant.NewBalloon'調(diào)出助手

.Icon=msoIconAlert.Animation=msoAnimationGetArtsy.Heading="請(qǐng)注意!".Text="助手在此!".ShowEndWithEndSubOffice軟件的宏主要采用VBA語(yǔ)言編寫。概念3宏病毒定義使用宏語(yǔ)言編寫的程序,附著在文字處理的文檔、表格、數(shù)據(jù)庫(kù)、演示文檔等數(shù)據(jù)文件中,由數(shù)據(jù)處理軟件運(yùn)行,利用宏語(yǔ)言的功能將自己復(fù)制、繁殖到其他數(shù)據(jù)文檔中。寄生性:宏程序可以附著在一個(gè)文檔文件上;傳染性:宏程序可以隨著文檔文件的復(fù)制傳播;破壞性:宏程序不需要用戶的干預(yù)而自動(dòng)執(zhí)行相應(yīng)功能。110概念3宏病毒宏病毒同樣需要解決如下問題:如何獲得控制權(quán)?充分利用自動(dòng)宏和內(nèi)建宏的事件觸發(fā)機(jī)制如何傳播?如何保護(hù)?111工作原理3宏病毒利用文檔模板共享的特性,先感染模板,再由染毒模板向干凈文檔的復(fù)制;112宏病毒如何傳播?工作原理有毒文檔打開,激自動(dòng)宏活寫入干凈模板Normal.dot有毒模板打開新文檔,激活自動(dòng)宏寫入干凈文檔

有毒文檔3宏病毒宏病毒的自我保護(hù)113OnErrorResumeNext'如果發(fā)生錯(cuò)誤,不彈出出錯(cuò)窗口,繼續(xù)執(zhí)行下面語(yǔ)句Application.DisplayAlert=wdAlertsNoe'不彈出警告窗口Application.EnableCancelKey=wdCancelDisabled'不允許通過ESC鍵結(jié)束正在運(yùn)行的宏Application.DisplayStatusBar=False'不顯示狀態(tài)欄,避免顯示宏的運(yùn)行狀態(tài)Application.ScreenUpdating=False'不讓刷新屏幕,避免病毒運(yùn)行引起刷新速度變慢Option.VirusProtection=False'關(guān)閉病毒保護(hù)功能,運(yùn)行前如果包含宏,不提示Option.SaveNormalPrompt=False'如果公用模板被修改,不給用戶提示窗口而直接保存工作原理計(jì)算機(jī)病毒概述Win32病毒宏病毒腳本病毒4腳本病毒腳本語(yǔ)言腳本語(yǔ)言前身是批處理文件,后通過優(yōu)化、擴(kuò)充形成腳本編程語(yǔ)言。VBScript既是客戶端腳本語(yǔ)言,也是服務(wù)器端腳本語(yǔ)言??捎糜诟鞣N應(yīng)用程序。JavaScript只是一種客戶端腳本語(yǔ)言,用于各種網(wǎng)站瀏覽器上的各種操作。PowerShell是一個(gè)強(qiáng)類型的動(dòng)態(tài)腳本語(yǔ)言,支持面向?qū)ο螅С终{(diào)用系統(tǒng)API和.NET庫(kù)。1154腳本病毒W(wǎng)in32

APIWindows

Desktop

Windows

StartMenuWindows

Applications

Windows

File

SystemQuick

Lanch

Bar

Network

PrintersNetwork

Drivers

Windows

RegistryWeb

Application

WebAPICloud

Native

ApplicationMobile

Application

IoTMachine

learningWSH(Windows

Script

Host)CSript

Execution

HostWSript

Execution

HostVBScriptJScriptPowershell.NETWindows腳本架構(gòu)4腳本病毒W(wǎng)SH(WindowsScriptingHost)WSH是一個(gè)基于32位Windows平臺(tái)、并獨(dú)立于語(yǔ)言的腳本運(yùn)行環(huán)境,是腳本語(yǔ)言/命令的工具。在WSH腳本環(huán)境里,預(yù)定義了一些對(duì)象,通過這些內(nèi)置對(duì)象,可以實(shí)現(xiàn)獲取環(huán)境變量、創(chuàng)建快捷方式、加載程序、讀寫注冊(cè)表等功能。1174腳本病毒118訪問文件WScript.Echo("WSH應(yīng)用舉例")'在D盤根目錄下建立5個(gè)新文件夾dimobjdirsetobjdir=WScript.CreateObject("Scripting.filesystemobject")fork=1to5sNewFolder="d:\WSHsample"&k'給新的文件夾命名

objdir.Createfolder(sNewFolder)next'在C盤根目錄創(chuàng)建一個(gè)文本文件testfile.txtSetRegWsh=Wscript.CreateObject("Wscript.Shell")RegWsh.Run("notepad"&WScript.ScriptFullName)Setfs=WScript.CreateObject("Scripting.FileSystemObject")Seta=fs.CreateTextFile("c:\testfile.txt",True)a.WriteLine("HelloWorld!")a.Close4腳本病毒119訪問注冊(cè)表DimRegWsh,sReadKey,sPrompt,sFixpromptSetRegWsh=WScript.CreateObject("WScript.Shell")RegWsh.RegWrite"HKCU\MyRegKey","一級(jí)鍵值"'創(chuàng)建一級(jí)鍵值sReadKey=RegWsh.RegRead("HKCU\MyRegKey")'讀取(默認(rèn))鍵值sPrompt="(默認(rèn))鍵值為:"&sReadKeyMsgBox"讀取的HKCU\MyRegKey下"&sPromptRegWsh.RegWrite"HKCU\MyRegKey\Entry","二級(jí)子鍵"'創(chuàng)建二級(jí)子鍵sReadKey=RegWsh.RegRead("HKCU\MyRegKey\Entry")sPrompt="(默認(rèn))鍵值為:"&sReadKeyMsgBox"讀取的HKCU\MyRegKey\Entry下"&sPromptRegWsh.RegWrite"HKCU\MyRegKey\Entry","修改后的二級(jí)子鍵"'修改sReadKey=RegWsh.RegRead("HKCU\MyRegKey\Entry")4腳本病毒120通過Email附件傳播FunctionmailBroadcast()onerrorresumenext

setoutlookApp=CreateObject("Outlook.Application")'創(chuàng)建一個(gè)OUTLOOK應(yīng)用的對(duì)象

IfoutlookApp="Outlook"ThenSetmapiObj=outlookApp.GetNameSpace("MAPI")'獲取MAPI的名字空間

SetaddrList=mapiObj.AddressLists'獲取地址表的個(gè)數(shù)

ForEachaddrInaddrListIfaddr.AddressEntries.Count<>0ThenaddrEntCount=addr.AddressEntries.Count'獲取每個(gè)地址表的Email記錄數(shù)

ForaddrEntIndex=1ToaddrEntCount'遍歷地址表的Email地址

Setitem=outlookApp.CreateItem(0)'獲取一個(gè)郵件對(duì)象實(shí)例

SetaddrEnt=addr.AddressEntries(addrEntIndex)'獲取具體Email地址思考題1211.二進(jìn)制病毒在感染宿主對(duì)象時(shí)會(huì)盡量避免因插入病毒代碼影響原宿主程序的功能執(zhí)行。結(jié)合PE文件結(jié)構(gòu),你認(rèn)為病毒寄生在宿主的哪些位置即能保證原功能不受影響,又能保證病毒代碼的執(zhí)行?2.PE文件結(jié)構(gòu)中,PE頭中很多與地址相關(guān)的字段都使用相對(duì)虛擬地址RVA表示位置,為什么不使用更加直觀的文件偏移?這樣做的好處是什么?3.如下圖展示的一個(gè)PE文件的節(jié)表結(jié)構(gòu),假設(shè)一個(gè)變量的虛擬地址為0x11008,那么它在有磁盤文件中的偏移是多少?思考題1224.病毒代碼是一段二進(jìn)制的shellcode,它會(huì)感染不同的宿主文件。在被感染的宿主程序中病毒代碼如何獲得其變量在內(nèi)存中的地址?請(qǐng)用匯編代碼舉例說明。5.一個(gè)感染了宏病毒的文檔如何感染一臺(tái)新主機(jī)中同類型的其他文檔?6.宏病毒可以采用何種措施對(duì)抗用戶對(duì)宏代碼的分析?搜索并實(shí)踐能夠從文檔中提取宏的工具。7.采用腳本形態(tài)和二進(jìn)制形態(tài)的病毒各自在實(shí)現(xiàn)、對(duì)抗等方面都有哪些優(yōu)勢(shì)?8.除了書中提出的腳本防范措施以外,你能否想到更加實(shí)用的防御腳本病毒的方法?第四章特洛伊木馬引言自從互聯(lián)網(wǎng)普及以來(lái),特洛伊木馬已逐步成為數(shù)量種類最多、造成損失最嚴(yán)重的惡意代碼。它總能在用戶無(wú)法感知的情況下悄悄潛伏在終端設(shè)備中,利用攝像頭、麥克風(fēng)等監(jiān)視著用戶的一舉一動(dòng),肆無(wú)忌憚的竊取著用戶在終端中的個(gè)人數(shù)據(jù)。本章介紹木馬的基本概念,木馬采用的不同體系結(jié)構(gòu),重點(diǎn)闡述木馬的隱藏、自啟動(dòng)等關(guān)鍵技術(shù)。木馬概述木馬的啟動(dòng)技術(shù)木馬的隱藏技術(shù)木馬的檢測(cè)技術(shù)1.1木馬的基本概念特洛伊木馬(TrojanHorse)源于古希臘神話故事“木馬記”起源1.1木馬的基本概念入侵者——黑客防火墻和各種安全設(shè)置希臘軍隊(duì)特洛伊城特洛伊木馬(TrojanHorse)起源特洛伊木馬是一種基于遠(yuǎn)程控制的黑客工具,它隱藏在目標(biāo)系統(tǒng)中,能控制整個(gè)系統(tǒng),并能和控制者進(jìn)行信息交互的程序??刂贫四抉R端網(wǎng)絡(luò)通信木馬的實(shí)質(zhì)是C/S結(jié)構(gòu)的網(wǎng)絡(luò)程序木馬定義1.1木馬的基本概念定義木馬的特點(diǎn)隱蔽性非授權(quán)性可控性高效性1.1木馬的基本概念功能特點(diǎn)收集系統(tǒng)關(guān)鍵信息收集密碼等保留訪問權(quán)限遠(yuǎn)程控制其它的特殊功能信息收集遠(yuǎn)程文件操作遠(yuǎn)程命令執(zhí)行木馬功能1.2木馬的組成與通信架構(gòu)木馬的組成:一個(gè)完整的木馬程序由控制端、木馬端和通信協(xié)議組成。有些木馬可能還包括木馬配置程序用來(lái)定制生成木馬端。木馬的控制結(jié)構(gòu)1.2木馬的組成與通信架構(gòu)木馬的通信架構(gòu):?jiǎn)误w架構(gòu)C/S架構(gòu)傳統(tǒng)的C/S架構(gòu)反彈式C/S架構(gòu)中間跳板的C/S架構(gòu)1.3木馬的工作流程木馬程序從最初的配置到最終運(yùn)行于終端實(shí)施其惡意行為,要經(jīng)歷多個(gè)階段,大體可以分為:木馬配置階段木馬植入階段木馬啟動(dòng)階段木馬通聯(lián)階段木馬使用階段木馬的工作流程1.4木馬的植入方法植入是指木馬程序由一臺(tái)計(jì)算機(jī)遷移到目標(biāo)計(jì)算機(jī)上的過程,是木馬發(fā)揮作用的必要條件。植入的主要方式有:郵件植入移動(dòng)介質(zhì)植入下載植入偽裝捆綁網(wǎng)頁(yè)植入網(wǎng)頁(yè)掛馬控件植入多媒體文件電子書漏洞植入/共享植入利用即時(shí)通信軟件進(jìn)行植入木馬概述木馬的啟動(dòng)技術(shù)木馬的隱藏技術(shù)木馬的檢測(cè)技術(shù)2木馬的啟動(dòng)技術(shù)木馬程序的首次運(yùn)行通過誘騙用戶或利用漏洞實(shí)現(xiàn),之后的運(yùn)行一般會(huì)在計(jì)算機(jī)啟動(dòng)的同時(shí)自動(dòng)加載。實(shí)現(xiàn)自啟動(dòng)的方式主要包括利用特定系統(tǒng)文件、注冊(cè)表、注冊(cè)為服務(wù)、計(jì)劃任務(wù)、劫持等。需要指出的是,由于Windows操作系統(tǒng)的版本在不斷的升級(jí),因此有些啟動(dòng)方式可能僅適用于特定的操作系統(tǒng)版本。2.1利用系統(tǒng)配置啟動(dòng)某些系統(tǒng)配置文件中可以設(shè)置系統(tǒng)啟動(dòng)后自動(dòng)加載的程序。啟動(dòng)目錄配置文件win.ini文件配置文件system.ini文件配置文件winstart.bat配置文件wininit.ini2.2利用注冊(cè)表啟動(dòng)Windows注冊(cè)表中有許多可以設(shè)置程序自啟動(dòng)的項(xiàng),這些項(xiàng)可以分為三類:注冊(cè)表自啟動(dòng)項(xiàng)注冊(cè)的系統(tǒng)服務(wù)動(dòng)態(tài)鏈接庫(kù)啟動(dòng)項(xiàng)注冊(cè)表啟動(dòng)項(xiàng)[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion]RunRunServicesRunOnceRunOnceExRunServicesOnce[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion]RunRunOnceRunServicesOnce2.2利用注冊(cè)表啟動(dòng)啟動(dòng)隱藏啟動(dòng)隱藏策略組[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]★L(fēng)OAD[HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows\load]★Explorer[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell][HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\policies\explorer\run]

2.2利用注冊(cè)表啟動(dòng)注冊(cè)系統(tǒng)服務(wù)服務(wù)——執(zhí)行指定系統(tǒng)功能的程序、例程或進(jìn)程,以便支持其他程序,尤其是低層(接近硬件)程序如果木馬把自己注冊(cè)成系統(tǒng)服務(wù),并設(shè)置成自動(dòng)啟用模式,那么它將隨系統(tǒng)開機(jī)而啟動(dòng)。服務(wù)編程:SCMAPI[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\][HKEY_LOCAL_MACHINE\SYSTEM\ControlSet01\Services\][HKEY_LOCAL_MACHINE\SYSTEM\ControlSet02\Services\]啟動(dòng)隱藏2.2利用注冊(cè)表啟動(dòng)DLL木馬注冊(cè)表直接加載AppInit_DLL位置HKEY_LOCAL_MACHINE\SOFTWARE\

Microsoft\

WindowsNT\CurrentVersion\Windows\User32.dll加載其下所指的DLL,即所有的GUI程序均會(huì)調(diào)用該程序。最早在系統(tǒng)啟動(dòng)時(shí)加載內(nèi)核時(shí)調(diào)用。條件:Win7之前,自Windows

Vista后該鍵值功能取消;木馬DLL加載時(shí)易導(dǎo)致系統(tǒng)不穩(wěn)定。DLL木馬加載2.2利用注冊(cè)表啟動(dòng)2.3利用劫持技術(shù)實(shí)現(xiàn)啟動(dòng)木馬可以通過修改注冊(cè)表、快捷方式或PE文件等代替指定目標(biāo)文件的啟動(dòng),稱之為利用劫持技術(shù)實(shí)現(xiàn)的啟動(dòng)。常見的用于木馬啟動(dòng)的劫持技術(shù)包括:文件類型劫持映像劫持路徑劫持快捷方式劫持動(dòng)態(tài)鏈接庫(kù)劫持Windows的計(jì)劃任務(wù)功能是指某個(gè)程序在某個(gè)特指時(shí)間啟動(dòng)。計(jì)劃任務(wù)是一個(gè)保存在C:\Windows\Tasks目錄下的.job文件,該文件包括了啟動(dòng)方式、文件路徑等一系列的信息。(11)設(shè)備接入后啟動(dòng)AutoRun.inf的啟動(dòng)方式[AUTORUN]

OPEN=Windows\xxx.exe

ICON=xxx.exe

啟動(dòng)隱藏2.4利用計(jì)劃任務(wù)啟動(dòng)2.5其它方式捆綁文件借助自動(dòng)播放功能木馬概述木馬的啟動(dòng)技術(shù)木馬的隱藏技術(shù)木馬的檢測(cè)技術(shù)3木馬的隱藏技術(shù)隱藏是木馬的核心技術(shù),它直接關(guān)系到木馬的生存。3.1進(jìn)程隱藏木馬程序在目標(biāo)系統(tǒng)中運(yùn)行時(shí),必須以進(jìn)程、線程、驅(qū)動(dòng)等形式運(yùn)行。安全檢測(cè)軟件除了對(duì)存儲(chǔ)在磁盤的靜態(tài)文件掃描以外,還會(huì)對(duì)運(yùn)行中的程序進(jìn)行檢測(cè)。因此木馬為了躲避檢測(cè)工具的掃描分析,必須對(duì)其運(yùn)行態(tài)也就是進(jìn)程采取隱藏措施。進(jìn)程隱藏的主要方法包括:進(jìn)程名偽裝進(jìn)程信息篡改利用DLL型木馬實(shí)現(xiàn)隱藏DLL木馬的運(yùn)行態(tài)隱藏—DLL注入技術(shù)傳統(tǒng)加載DLL導(dǎo)入表或LoadLibrary,只能操作自己的空間;DLL注入技術(shù)將DLL注入到系統(tǒng)進(jìn)程或第三方軟件的進(jìn)程空間運(yùn)行??傮w思想:操作目標(biāo)進(jìn)程空間,將DLL路徑/代碼復(fù)制到目標(biāo)進(jìn)程空間并實(shí)現(xiàn)加載和啟動(dòng)。如何能夠操作其它進(jìn)程空間?復(fù)制什么(路徑/代碼模塊)到什么位置?用什么方式激活?DLL進(jìn)程隱藏3.1進(jìn)程隱藏DLL注入的方式CreateRemoteThread:無(wú)程線程插入SetWindowsHook:Windows掛鉤APC

Queue:線程的異步過程調(diào)用SHIMSReflective

Injection:反射型注入。。。。。4.3隱藏技術(shù)DLL進(jìn)程隱藏3.2文件隱藏木馬程序需要長(zhǎng)期駐留在目標(biāo)主機(jī)的系統(tǒng)中,每當(dāng)系統(tǒng)啟動(dòng)時(shí),由靜態(tài)的程序文件轉(zhuǎn)變?yōu)榭?/p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論