




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
://tup張仁斌李鋼侯整風(fēng)
編著計算機(jī)病毒與反病毒技術(shù)清華大學(xué)出版社主要內(nèi)容Linux系統(tǒng)的啟動過程ELF文件格式Linux病毒的感染機(jī)制病毒的根本原理及其防范第10章Unix/Linux病毒與病毒簡介10.1.1文件結(jié)構(gòu)文件結(jié)構(gòu)是文件存放在磁盤等存貯設(shè)備上的組織方法。主要表達(dá)在對文件和目錄的組織上目錄提供了管理文件的一個方便而有效的途徑Linux使用標(biāo)準(zhǔn)的目錄結(jié)構(gòu),在安裝的時候,安裝程序就已經(jīng)為用戶創(chuàng)立了文件系統(tǒng)和完整而固定的目錄組成形式,并指定了每個目錄的作用和其中的文件類型10.1Linux文件系統(tǒng)根底Linux樹型目錄結(jié)構(gòu)示意圖10.1.2文件系統(tǒng)文件系統(tǒng)指文件存在的物理空間,Linux系統(tǒng)中每個分區(qū)都是一個文件系統(tǒng),都有自己的目錄層次結(jié)構(gòu)Linux將這些分屬不同分區(qū)的、單獨的文件系統(tǒng)按一定的方式形成一個系統(tǒng)的總的目錄層次結(jié)構(gòu)Linux文件系統(tǒng)使用索引節(jié)點來記錄文件信息,其作用類似Windows的文件分配表索引節(jié)點是一個結(jié)構(gòu),它包含了一個文件的長度、創(chuàng)立及修改時間、權(quán)限、所屬關(guān)系、磁盤中的位置等信息一個文件系統(tǒng)維護(hù)了一個索引節(jié)點的數(shù)組,每個文件或目錄都與索引節(jié)點數(shù)組中的唯一一個元素對應(yīng)系統(tǒng)給每個索引節(jié)點分配了一個號碼,也就是該節(jié)點在數(shù)組中的索引號,稱為索引節(jié)點號Linux文件系統(tǒng)將文件索引節(jié)點號和文件名同時保存在目錄中10.1Linux文件系統(tǒng)根底Linux系統(tǒng)啟動過程10.2Linux系統(tǒng)啟動過程簡介ELF(ExecutableandLinkingFormat,可執(zhí)行鏈接格式)是Unix系統(tǒng)實驗室(USL)作為應(yīng)用程序二進(jìn)制接口(ApplicationBinaryInterface,ABI)而開發(fā)和發(fā)布的工具接口標(biāo)準(zhǔn)委員會(TIS)選擇了正在開展中的ELF標(biāo)準(zhǔn)作為工作在32位Intel體系上不同操作系統(tǒng)之間可移植的二進(jìn)制文件格式ELF標(biāo)準(zhǔn)定義了一個二進(jìn)制接口集合,用以支持流線型的軟件開發(fā),從而減少不同執(zhí)行接口的數(shù)量,因此可以減少重新編程、重新編譯的代碼有關(guān)ELF的主要內(nèi)容:目標(biāo)文件(ObjectFiles),描述ELF目標(biāo)文件格式三種主要的類型程序轉(zhuǎn)載和動態(tài)連接,描述目標(biāo)文件的信息和系統(tǒng)在創(chuàng)立運(yùn)行時程序的行為10.3ELF文件格式10.3.1目標(biāo)文件iABI的目標(biāo)文件的格式,被稱作ELF在目標(biāo)文件中有三種主要的類型:可重定位文件(RelocatableFile),保存著代碼和適當(dāng)?shù)臄?shù)據(jù),用來和其他的目標(biāo)文件一起創(chuàng)立一個可執(zhí)行文件或者是一個共享文件可執(zhí)行文件(ExecutableFile),保存著一個用來執(zhí)行的程序;該文件指出了exec(BA_OS)如何來創(chuàng)立程序進(jìn)程映像共享目標(biāo)文件(SharedObjectFile),保存著代碼和適宜的數(shù)據(jù),用來被下面的兩個鏈接器鏈接鏈接編輯器可以和其他的可重定位與共享目標(biāo)文件來創(chuàng)立其他的目標(biāo)動態(tài)鏈接器聯(lián)合可執(zhí)行文件和其他的共享目標(biāo)文件來創(chuàng)立一個進(jìn)程映像10.3ELF文件格式10.3.1目標(biāo)文件目標(biāo)文件參與程序的鏈接(創(chuàng)立一個程序)和程序的執(zhí)行(運(yùn)行一個程序)從便利性和有效性來看,目標(biāo)文件格式提供了文件內(nèi)容的并行視圖,以反映出不同的需要Linking視圖Execution視圖10.3ELF文件格式10.3.2ELF頭#defineEI_NIDENT16typedefstruct{unsignedchare_ident[EI_NIDENT];/*目標(biāo)文件標(biāo)識*/Elf32_Halfe_type;/*目標(biāo)文件類型*/Elf32_Halfe_machine;/*給出文件的目標(biāo)體系結(jié)構(gòu)類型*/Elf32_Worde_version;/*目標(biāo)文件版本*/Elf32_Addre_entry;/*程序入口的虛擬地址,如果目標(biāo)文件沒有程序入口,可以為0*/Elf32_Offe_phoff;/*程序頭表的偏移量(按字節(jié)計算)*/Elf32_Offe_shoff;/*節(jié)頭表的偏移量(按字節(jié)計算)*/Elf32_Worde_flags;/*保存與文件相關(guān)的,特定于處理器的標(biāo)志*/Elf32_Halfe_ehsize;/*ELF頭部的長度(以字節(jié)計算)*/Elf32_Halfe_phentsize;/*程序頭表的表項大小(按字節(jié)計算)*/Elf32_Halfe_phnum;/*程序頭表的表項數(shù)目,可以為0*/Elf32_Halfe_shentsize;/*節(jié)頭表的表項大小(按字節(jié)計算)*/Elf32_Halfe_shnum;/*節(jié)頭表的表項數(shù)目,可以為0*/Elf32_Halfe_shstrndx;/*節(jié)頭表中與節(jié)名稱字符串表相關(guān)的表項的索引*/}Elf32_Ehdr;10.3ELF文件格式10.3.3節(jié)一個目標(biāo)文件的節(jié)頭表可以定位所有的節(jié)節(jié)頭表是一個Elf32_Shdr結(jié)構(gòu)的數(shù)組一個節(jié)頭表的索引是這個數(shù)組的下標(biāo)節(jié)頭表的e_shoff成員給出了節(jié)頭表的偏移量(從文件開始計數(shù))。e_shnum說明節(jié)頭表中包含了多少個表項;e_shentsize給出了每個表項的長度節(jié)頭表索中某些引是保存的,這些專用索引在目標(biāo)文件中將沒有與之對的應(yīng)節(jié)節(jié)頭的結(jié)構(gòu)所示:10.3ELF文件格式typedefstruct{Elf32_Wordsh_name;/*節(jié)名稱。是節(jié)頭字符串表節(jié)的索引。名字是NULL結(jié)尾的字符串*/Elf32_Wordsh_type;/*為節(jié)的內(nèi)容和語義進(jìn)行分類*/Elf32_Wordsh_flags;/*節(jié)支持1位形式的標(biāo)志志,這些標(biāo)志描述了多種屬性*/Elf32_Addrsh_addr;/*如果節(jié)出現(xiàn)在進(jìn)程的內(nèi)存映像中,此成員給出節(jié)的第一個字節(jié)的地址,否則,此字段為0*/Elf32_Offsh_offset;/*此成員的取值給出節(jié)的第一個字節(jié)與文件頭之間的偏移。不過,SHT_NOBITS類型的節(jié)不占用文件的空間,因此其sh_offset成員給出的是其概念性的偏移*/Elf32_Wordsh_size;/*此成員給出節(jié)的長度(字節(jié)數(shù))。除非節(jié)的類型是SHT_NOBITS,否則節(jié)占用文件中的sh_size字節(jié)。類型為SHT_NOBITS的節(jié)長度可能非零,但不占用文件中的空間。*/Elf32_Wordsh_link;/*此成員給出節(jié)頭部表索引鏈接。其具體的解釋依賴于節(jié)類型*/Elf32_Wordsh_info;/*此成員給出附加信息,其解釋依賴于節(jié)類型*/Elf32_Wordsh_addralign;/*某些節(jié)帶有地址對齊約束。例如,若一個節(jié)保存一個doubleword,那么系統(tǒng)必須保證整個節(jié)能夠按雙字對齊。sh_addr對sh_addralign取模,結(jié)果必須為0。目前僅允許取值為0和2的冪次數(shù)。數(shù)值0和1表示節(jié)沒有對齊約束*/Elf32_Wordsh_entsize;/*某些節(jié)中包含固定大小的項目,如符號表。對于這類節(jié),此成員給出每個表項的長度字節(jié)數(shù)。如果節(jié)中并不包含固定長度表項的表,此成員取值為0*/}Elf32_Shdr;10.3.4字符串表字符串表節(jié)(StringTableSection)保存著以NULL終止的一系列字符(一般稱為字符串)目標(biāo)文件使用這些字符串來表示符號和節(jié)名一個字符串的引用是一個符串表節(jié)的索引。第一個字節(jié),即索引0,被定義保存著一個NULL字符。同樣的,一個符串表的最后一個字節(jié)保存著一個NULL字符,所有的字符串都以NULL終止索引0的字符串是沒有名字或者說是NULL,它的解釋依靠上下文。一個空的符串表節(jié)是允許的;它的節(jié)頭成員sh_size將為0。對空的符串表來說,非0的索引是沒有用的一個節(jié)頭的sh_name成員保存了一個對應(yīng)于該節(jié)頭字符串表的索引一個字符串表可能涉及該節(jié)中的任意字節(jié)。一個字符串可能引用不止一次,可能存在引用子串的情況。一個字符串也可能被引用假設(shè)干次,也允許存在不被引用的字符串10.3ELF文件格式10.3.5符號表一個目標(biāo)文件的符號表(SymbolTable)保存了一個程序在定位和重定位時需要的定義和引用的信息一個符號表索引是相應(yīng)的數(shù)組下標(biāo)10.3ELF文件格式typedefstruct{Elf32_Wordst_name;/*該成員保存了進(jìn)入該目標(biāo)文件的符號字符串表的索引。如果該值不為0,則它代表了給出符號名的字符串表索引。否則,該符號無名*/Elf32_Addrst_value;/*給出相應(yīng)的符號值,它可能是絕對值或地址等(依賴于上下文)*/Elf32_Wordst_size;/*許多符號和長度相關(guān)。比如,一個數(shù)據(jù)對象的大小是該對象所包含的字節(jié)數(shù)目。如果該符號的大小未知或沒有大小則這個成員為0*/unsignedcharst_info;/*指出符號的類型和相應(yīng)的屬性*/unsignedcharst_other;/*目前為0,沒有含義*/Elf32_Halfst_shndx;/*每一個符號表的表項都定義為和某些節(jié)相關(guān),該成員保存了相關(guān)的節(jié)頭索引。某些節(jié)索引指出了特殊的含義*/}Elf32_Sym;10.3.6重定位重定位(Relocation)是鏈接符號引用和符號定義的過程。例如,當(dāng)一個程序調(diào)用一個函數(shù)的時候,相關(guān)的調(diào)用必須在執(zhí)行時把控制傳送到正確的目標(biāo)地址。也就是說,重定位文件應(yīng)當(dāng)包含有如何修改它們的節(jié)內(nèi)容的信息,從而允許可執(zhí)行文件或共享目標(biāo)文件為一個進(jìn)程的程序映像保存正確的信息10.3ELF文件格式typedefstruct{Elf32_Addrr_offset;Elf32_Wordr_info;}Elf32_Rel;
typedefstruct{Elf32_Addrr_offset;Elf32_Wordr_info;Elf32_Swordr_addend;}Elf32_Rela;10.3.7程序載入和動態(tài)鏈接概述程序頭(ProgramHeader),描述和程序運(yùn)行相關(guān)的目標(biāo)文件結(jié)構(gòu)10.3ELF文件格式typedefstruct{Elf32_Wordp_type;/*此數(shù)組元素描述的段的類型,或者如何解釋此數(shù)組元素的信息*/Elf32_Offp_offset;/*此成員給出從文件頭到該段第一個字節(jié)的偏移*/Elf32_Addrp_vaddr;/*此成員給出段的第一個字節(jié)將被放到內(nèi)存中的虛擬地址*/Elf32_Addrp_paddr;/*此成員僅用于與物理地址相關(guān)的系統(tǒng)中,因為SystemV忽略所有應(yīng)用程序的物理地址信息,此字段對與可執(zhí)行文件和共享目標(biāo)文件而言具體內(nèi)容是未指定的*/Elf32_Wordp_filesz;/*此成員給出段在文件映像中所占的字節(jié)數(shù),可以為0*/Elf32_Wordp_memsz;/*此成員給出段在內(nèi)存映像中占用的字節(jié)數(shù),可以為0*/Elf32_Wordp_flags;/*此成員給出與段相關(guān)的標(biāo)志*/Elf32_Wordp_align;/*可加載的進(jìn)程段的p_vaddr和p_offset取值必須合適,相對于對頁面大小的取模而言。此成員給出段在文件中和內(nèi)存中如何對齊。數(shù)值0和1表示不需要對齊,否則p_align應(yīng)該是個正整數(shù),并且是2的冪次數(shù),p_vaddr和p_offset對p_align取模后應(yīng)該相等*/}Elf32_Phdr;10.3.7程序載入和動態(tài)鏈接概述載入程序(ProgramLoading),在給定一個目標(biāo)文件時,系統(tǒng)為了讓它運(yùn)行必須將它載入內(nèi)存10.3ELF文件格式MemberTextDatap_typePT_LOADPT_LOADp_offset0x1000x2bf00p_vaddr0x80481000x8074f00p_paddrunspecifiedunspecifiedp_filesz0x2be000x4e00p_memsz0x2be000x5e24p_flagsPF_R+PF_XPF_R+PF_W+PF_Xp_align0x10000x1000可執(zhí)行文件程序頭段10.3.7程序載入和動態(tài)鏈接概述進(jìn)程映像段10.3ELF文件格式10.3.7程序載入和動態(tài)鏈接概述程序解釋器系統(tǒng)為解釋器構(gòu)造了一個內(nèi)存映像,而不是使用原始的可執(zhí)行文件的段映像。此時該解釋器就負(fù)責(zé)接收系統(tǒng)來的控制并且為應(yīng)用程序提供一個環(huán)境變量解釋器使用兩種方法中的一種來接收系統(tǒng)來的控制接收一個文件描述符來讀取該可執(zhí)行文件,定位于開頭。它可以使用這個文件描述符來讀取并且(或者)映射該可執(zhí)行文件的段到內(nèi)存中依賴于該可執(zhí)行文件的格式,系統(tǒng)會載入這個可執(zhí)行文件到內(nèi)存中而不是給該解釋器一個文件描述符。伴隨著可能的文件描述符異常的情況,解釋器的初始進(jìn)程聲明應(yīng)匹配該可執(zhí)行文件應(yīng)當(dāng)收到的內(nèi)容10.3ELF文件格式10.3.7程序載入和動態(tài)鏈接概述解釋器本身并不需要第二個解釋器。一個解釋器可能是一個共享對象也可能是一個可執(zhí)行文件一個共享對象在被載入的時候是與位置無關(guān)的,各個進(jìn)程可能不同;系統(tǒng)在mmap(KE_OS)使用的動態(tài)段域為它創(chuàng)立段和相關(guān)的效勞。因而,一個共享對象的解釋器將不會和原始的可執(zhí)行文件的原始段地址相沖突一個可執(zhí)行文件被載入到固定地址,系統(tǒng)使用程序頭表中的虛擬地址為其創(chuàng)立段。因而,一個可執(zhí)行文件解釋器的虛擬地址可能和第一個可執(zhí)行文件相沖突;這種沖突由解釋器來解決10.3ELF文件格式10.3.7程序載入和動態(tài)鏈接概述動態(tài)鏈接器(DynamicLinker)當(dāng)使用動態(tài)鏈接方式建立一個可執(zhí)行文件時,鏈接器把一個PT_INTERP類型的元素加到可執(zhí)行文件中,告訴系統(tǒng)把動態(tài)鏈接器作為該程序的解釋器Exec(BA_OS)和動態(tài)鏈接器合作為程序創(chuàng)立進(jìn)程,必須有如下的動作:將可執(zhí)行文件的內(nèi)存段參加進(jìn)程映像中將共享對象的內(nèi)存段參加進(jìn)程映像中為可執(zhí)行文件和它的共享對象進(jìn)行重定位如果有一個用于讀取可執(zhí)行文件的文件描述符傳遞給了動態(tài)鏈接器,那么關(guān)閉它向程序傳遞控制,就象該程序已經(jīng)直接從exec(BA_OS)接收控制一樣鏈接器同時也為動態(tài)鏈接器構(gòu)建各種可執(zhí)行文件和共享對象文件的相關(guān)數(shù)據(jù)。這些數(shù)據(jù)駐留在可載入段中,使得它們在執(zhí)行過程中有效10.3ELF文件格式10.4.1有關(guān)Unix病毒的幾個誤區(qū)最大的一個誤區(qū)就是認(rèn)為很多高性能的平安系統(tǒng)能預(yù)防病毒蔓延另一個誤區(qū)就是認(rèn)為Linux系統(tǒng)尤其可以防止病毒的感染,因為Linux的程序都來自于源代碼,不是二進(jìn)制格式第三個誤區(qū)就是認(rèn)為Unix系統(tǒng)是絕對平安的,因為它具有很多不同的平臺,而且每個版本的Unix系統(tǒng)有很大的差異10.4Unix病毒概述10.4.2Shell腳本與病毒書寫Shell腳本病毒是一個很簡單的制造Unix、Linux病毒的方法Shell在不同的Unix/Linux系統(tǒng)上的差異很小這種病毒可以算是一種跨系統(tǒng)的病毒Shell腳本病毒的危害性不會很大并且它本身極易被破壞,因為它是以明文方式編寫并執(zhí)行的,任何用戶和管理員都可以覺察它10.4Unix病毒概述#infectionhead-n24$0>.testforfilein*doiftest-f$filetheniftest-x$filetheniftest-w$filethenifgrep-secho$file>.mmmthenhead-n1$file>.mmifgrep-sinfection.mm>.mmmthenrm-f.mmelsecat$file>.SAVEEcat.test>$filecat.SAVEE>>$filefi;fi;fi;fi;fidonerm.test.SAVEE.mmm.mm-f
取自身保存到.test遍歷文件系統(tǒng)
判斷是否為文件
判斷文件是否可執(zhí)行
判斷文件是否可寫
判斷是否為腳本程序
提取要感染的腳本程序的第一行判斷該文件是否已經(jīng)被感染
已經(jīng)被感染,則跳過還未被感染借用傳統(tǒng)的二進(jìn)制文件的感染機(jī)制
10.4.3蠕蟲早期的蠕蟲,根本上只運(yùn)行于Unix系統(tǒng),因為最初網(wǎng)絡(luò)還處于以Unix平臺為主的時期莫里斯蠕蟲是最典型的代表。該蠕蟲利用SendMail程序存在的一個漏洞來獲取其它計算機(jī)的控制權(quán)。病毒一般會利用rexec、fingerd或者口令猜解來嘗試連接。在成功入侵之后,它會在目標(biāo)機(jī)器上編譯源代碼并且執(zhí)行它,而且會有一個程序來專門負(fù)責(zé)隱藏自己的蹤跡網(wǎng)絡(luò)蠕蟲一般都是利用的攻擊程序去獲得目標(biāo)機(jī)的管理員權(quán)限。但是蠕蟲的生命也很短暫,當(dāng)該蠕蟲所利用的漏洞被修補(bǔ)的話,那么該蠕蟲也就失去了它的作用10.4Unix病毒概述10.4.4欺騙庫函數(shù)可以LD_PRELOAD環(huán)境變量把標(biāo)準(zhǔn)的庫函數(shù)替換成自己的程序,從而讓宿主程序執(zhí)行替換后的程序10.4Unix病毒概述10.4.5Unix/Linux的平安現(xiàn)狀由于Linux繼承了Unix良好的權(quán)限管理機(jī)制,可執(zhí)行文件和系統(tǒng)文件不容易被感染,設(shè)計Unix或Linux上的病毒,面臨更大的技術(shù)困難,利用ELF格式的二進(jìn)制文件來制作病毒并不容易如果一個病毒感染的宿主文件擁有的權(quán)限是普通用戶權(quán)限,那么該病毒所得到的權(quán)限當(dāng)然也就只有普通用戶權(quán)限(并且病毒不會利用exploit來提升權(quán)限),只能對該用戶權(quán)限級別的文件和數(shù)據(jù)造成危害。但是當(dāng)一個病毒感染了一個root權(quán)限的文件的話,那么它就可以控制系統(tǒng)的一切目前Linux系統(tǒng)有可能還比較平安,但不代表永遠(yuǎn)平安Linux系統(tǒng)越來越流行,這將吸引大批病毒制造者,Unix/Linux病毒逐年升溫的趨勢已經(jīng)證明了這一點正如CIH病毒敲響了Windows系統(tǒng)的平安警鐘一樣,任何系統(tǒng)都難逃病毒的惡意攻擊目前已經(jīng)出現(xiàn)了跨Windows、Linux平臺的病毒10.4Unix病毒概述10.5.1病毒機(jī)理進(jìn)程映像包含“文本段〞(TextSegment,有時也稱代碼段)和“數(shù)據(jù)段〞(DataSegment)文本段的內(nèi)存保護(hù)屬性是r-x,因此一般自修改代碼不能用于文本段;數(shù)據(jù)段的內(nèi)存保護(hù)屬性是rw-并不要求段長度是頁長度的整數(shù)倍,常用到填充(Padding)典型的,數(shù)據(jù)段不需要從頁邊界開始,而文本段要求起始頁邊界對齊10.5基于ELF的計算機(jī)病毒10.5.1病毒機(jī)理一個進(jìn)程映像的內(nèi)存布局可能如下其中“T〞代表文本信息;“D〞代表數(shù)據(jù)信息;“P〞代表填充信息頁1、2、3組成文本段頁4、5、6組成數(shù)據(jù)段頁號#1[TTTTTTTTTTTTTTTT]←文本段內(nèi)容#2[TTTTTTTTTTTTTTTT]←文本段內(nèi)容#3[TTTTTTTTTTTTPPPP]←文本段內(nèi)容(局部)#4[PPPPDDDDDDDDDDDD]←數(shù)據(jù)段內(nèi)容(局部)#5[DDDDDDDDDDDDDDDD]←數(shù)據(jù)段內(nèi)容#6[DDDDDDDDDDDDPPPP]←數(shù)據(jù)段內(nèi)容(局部)10.5基于ELF的計算機(jī)病毒10.5.1病毒機(jī)理段邊界上的頁填充提供了插入寄生代碼的地方,只要空間允許,在這里插入寄生代碼不破壞原有段內(nèi)容,不要求重定位文本段結(jié)尾處的頁填充是插入寄生代碼的好的地方,插入寄生代碼之后,ELF文件布局如下所示ELFHeaderProgramheadertableSegment1-文本段(主體代碼)-寄生代碼Segment2SectionheadertableSection1..Sectionn10.5基于ELF的計算機(jī)病毒10.5.1病毒機(jī)理為了在文本段末尾插入寄生代碼,必須按如下步驟進(jìn)行:(1)修改ELF頭的成員e_shoff(e_phoff位于插入點之前)(2)定位文本段的程序頭:修改p_filesz、p_memsz的值(3)循環(huán)處理位于插入點之后各段相應(yīng)的程序頭:修改p_offset的值以反映新的位置(4)循環(huán)處理位于插入點之后各節(jié)相應(yīng)的節(jié)頭:修改sh_offset的值(5)在靜態(tài)文件中物理地插入寄生代碼,插入點位于文本段p_offset+p_filesz(修改之前的原始值)修改ELF頭成員e_shoff的原因在于節(jié)頭表位于插入點之后。一般而言,可執(zhí)行文件中的節(jié)頭表位于各段之后10.5基于ELF的計算機(jī)病毒10.5.1病毒機(jī)理為了適應(yīng)ELF標(biāo)準(zhǔn)中的這個要求,為了在宿主代碼之前運(yùn)行病毒體,還需要修改程序入口點的虛擬地址,同時需要在寄生代碼尾部能夠跳轉(zhuǎn)回宿主代碼原入口點繼續(xù)正常流程,插入寄生代碼的步驟修改如下:修改ELF頭成員e_shoff,以PAGE_SIZE為單位增加修正插入的寄生代碼的尾部,使之能夠跳轉(zhuǎn)回宿主代碼原入口點定位文本段的程序頭:修正ELF頭的e_entry,指向病毒體(p_vaddr+p_filesz);修正p_filesz,增加病毒體大小(注意:這里不是增加頁大小);修正p_memsz,增加病毒體大小(注意:這里不是增加頁大小)循環(huán)處理位于插入點之后各段相應(yīng)的程序頭:以PAGE_SIZE為單位增加p_offset的值循環(huán)處理位于插入點之后各節(jié)相應(yīng)的節(jié)頭:以PAGE_SIZE為單位增加sh_offset的值10.5基于ELF的計算機(jī)病毒10.5.1病毒機(jī)理在靜態(tài)文件中物理地插入寄生代碼及填充(確保構(gòu)成一個完整頁),插入點位于文本段p_offset+p_filesz(修改之前的原始值)經(jīng)過上述修改,病毒可以隨機(jī)遍歷一個目錄樹,尋找可執(zhí)行文件和動態(tài)鏈接庫文件(對應(yīng)的e_type分別等于ET_EXEC、ET_DYN),加以感染10.5基于ELF的計算機(jī)病毒10.5.2一個Linux病毒原型分析例如病毒分為兩大局部ELF文件感染器(ELFInfector)文件感染器將二進(jìn)制代碼(病毒體)插入到ELF文件的文本段,并讓病毒體在目標(biāo)文件執(zhí)行時首先被執(zhí)行。其原理就是上一節(jié)介紹的病毒機(jī)理概念性病毒首先通過文件感染器將病毒代碼感染到一個ELF文件,這樣就創(chuàng)造了第一個帶毒文件,后續(xù)的傳播就由病毒自己來完成當(dāng)帶毒文件被執(zhí)行時,會首先跳到病毒代碼開始執(zhí)行病毒代碼開始發(fā)作,在這個原型里,病毒會直接開始傳播病毒遍歷當(dāng)前目錄下的每一個文件,如果是符合條件的ELF文件就開始感染病毒的感染過程和ELFInfector的過程類似,但由于工作環(huán)境的不同,代碼的實現(xiàn)也是有較大區(qū)別的10.5基于ELF的計算機(jī)病毒10.5.2一個Linux病毒原型分析目前傳染對ELF文件的根本要求是文本段要有剩余空間能夠容納病毒代碼,如果無法滿足,病毒會忽略此ELF。對于被感染過一次的ELF文件,文本段將不會有剩余的空間,因此二次感染是不會發(fā)生的病毒代碼執(zhí)行過后,會恢復(fù)堆棧和所有存放器〔這很重要〕,然后跳回到真正的可執(zhí)行文件入口,開始正常的運(yùn)行過程10.5基于ELF的計算機(jī)病毒10.6.1病毒原理病毒其實也和計算機(jī)病毒一樣,它可以通過計算機(jī)執(zhí)行從而向亂發(fā)短信息嚴(yán)格地講,病毒應(yīng)該是一種計算機(jī)病毒,這種病毒只能在計算機(jī)網(wǎng)絡(luò)上進(jìn)行傳播而不能通過進(jìn)行傳播,因此所謂的病毒其實是計算機(jī)病毒程序啟動了電信公司的一項效勞,例如電子郵件到短信息的功能,而且它發(fā)給的是文檔,根本就無破壞力可言。當(dāng)然也有的病毒破壞力還是比較大的,一旦發(fā)作可能比個人計算機(jī)病毒更厲害,傳播速度更快侵襲上網(wǎng)的病毒,會自動啟動錄音功能,并將錄音四處傳送,病毒也會自動打出、刪除上的檔案內(nèi)容,以及制造出金額龐大的賬單10.6病毒簡介10.6.1病毒原理由于局部病毒是從自動打出時散播,因為網(wǎng)絡(luò)聯(lián)系得太完善,因而它比計算機(jī)病毒影響更廣,而將來隨著設(shè)計更復(fù)雜及功能更多元化,病毒帶來的災(zāi)害亦會更廣另外由于還有其他的數(shù)據(jù)通訊方式,例如短信息、WAP效勞,以及GRPS高速因特網(wǎng)連接效勞,一方面它們確實能給我們帶來方便,只需按幾個鍵就可以換個LOGO、下載喜愛的鈴聲,甚至可以實現(xiàn)高速的因特網(wǎng)連接。但也正是這些功能,可以寫入系統(tǒng)或內(nèi)存指令,攻擊者只要找到缺口,傳出一個帶毒的短信息,以操作系統(tǒng)的匯編語言編寫病毒指令,改變系統(tǒng)的機(jī)內(nèi)碼(machinecode),將指令藏在記憶體中,然后再開啟其他的本,大肆傳播病毒,在一定時間內(nèi)發(fā)作,破壞的開機(jī)系統(tǒng)10.6病毒簡介10.6.2病毒的攻擊方式及危害針對的攻擊,主要可以分為以下幾類:攻擊WAP效勞器等相關(guān)設(shè)備,使WAP無法接收正常信息攻擊、控制接入效勞器,或者利用網(wǎng)關(guān)漏洞,向發(fā)送大量垃圾信息。典型的就是利用各大門戶網(wǎng)站的效勞漏洞,編寫程序,不停地用某個號碼訂閱某項效勞或者退定某個效勞,例如SMS.Flood病毒直接攻擊本身,使無法提供效勞。這種破壞方式難度相對較大,目前主要是利用程序的漏洞,發(fā)送精心構(gòu)造的短信(SMS)或者彩信(MMS),造成內(nèi)部程序出錯,從而導(dǎo)致不能正常工作,就像我們經(jīng)常在計算機(jī)上看到的“程序出錯〞情況一樣。典型的例子就是針對西門子的Mobile.SMSDOS病毒10.6病毒簡介10.6.3漏洞分析攻擊的一個重要途徑,就是利用漏洞。主要有以下一些漏洞:Nokia某些產(chǎn)品
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧環(huán)衛(wèi)解決方案
- 《雨巷》說課講稿
- 培訓(xùn)基地實訓(xùn)合作協(xié)議
- 乒乓球館裝修工程管理費
- 飼料運(yùn)輸安全責(zé)任書
- 零售業(yè)態(tài)會員管理與營銷實踐作業(yè)指導(dǎo)書
- 綠色環(huán)保技術(shù)應(yīng)用方案
- 汽車制造工藝指南
- 業(yè)務(wù)開展進(jìn)展報告表
- 美術(shù)培訓(xùn)中心裝修延期協(xié)議
- 中職高考數(shù)學(xué)一輪復(fù)習(xí)講練測專題一 集合與充要條件(測)原卷版
- 《抽水蓄能電站系統(tǒng)建模與特性分析》6300字(論文)
- 化學(xué)-江蘇省鎮(zhèn)江市2024-2025學(xué)年高三下學(xué)期期初質(zhì)量監(jiān)測試題和答案
- 2025年中考語文一輪復(fù)習(xí):民俗類散文閱讀 講義(含練習(xí)題及答案)
- 2025年春季安全教育主題班會教育記錄
- 機(jī)電一體化??飘厴I(yè)論文范文
- 醫(yī)療入圍(藥品、耗材集中配送)服務(wù)部分方案
- 食品倉儲的庫房的安全巡檢考核試卷
- 人教版六年級數(shù)學(xué)下冊《全冊完整》教案
- 橋式起重機(jī)作業(yè)安全培訓(xùn)
- 2021醫(yī)師定期考核題庫(人文2000題)
評論
0/150
提交評論