緩沖區(qū)溢出漏洞課件_第1頁
緩沖區(qū)溢出漏洞課件_第2頁
緩沖區(qū)溢出漏洞課件_第3頁
緩沖區(qū)溢出漏洞課件_第4頁
緩沖區(qū)溢出漏洞課件_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、網(wǎng)絡(luò)監(jiān)測技術(shù)緩沖區(qū)溢出漏洞攻擊軟件安全概述美國國家標(biāo)準(zhǔn)技術(shù)研究院提到:軟件安全漏洞是導(dǎo)致系統(tǒng)安全策略違背的本質(zhì)原因安全漏洞在軟件中大規(guī)模存在大多數(shù)成功攻擊利用已公布未修補(bǔ)的軟件安全漏洞或不安全配置軟件漏洞:緩沖區(qū)溢出格式化字符串漏洞競爭條件漏洞整數(shù)溢出XSS跨站腳本SQL注入最簡單的棧溢出,更難控制的堆溢出、內(nèi)核溢出,對抗DEP(數(shù)據(jù)執(zhí)行保護(hù))和對抗ASLR(地址空間布局隨機(jī)化)的攻擊軟件代碼與內(nèi)存空間上演著精彩的對弈軟件安全概述軟件自誕生,就和BUG形影不離能被攻擊者利用并導(dǎo)致危害的BUG就是軟件安全漏洞(安全漏洞范圍更廣)安全漏洞的三個(gè)基本元素:系統(tǒng)的脆弱性或缺陷攻擊者對缺陷的可訪問性攻擊

2、者對缺陷的可利用性軟件安全漏洞:在軟件需求、開發(fā)和配置過程中引入的缺陷,執(zhí)行會(huì)違反安全策略,具有三個(gè)基本元素CERT公布2006-08年,每年公開漏洞7K-8K個(gè)實(shí)際每年新公開漏洞上萬個(gè),大量漏洞把持在國家情報(bào)部門、軟件廠商、安全公司和黑客團(tuán)體手中軟件安全概述軟件功能強(qiáng)大,擴(kuò)展到生活方方面面,軟件安全對經(jīng)濟(jì)和社會(huì)生活影響巨大軟件安全漏洞造成的經(jīng)濟(jì)損失1988年莫里斯蠕蟲造成損失9600萬美元2001年紅色代碼蠕蟲,造成損失26億美元2003年沖擊波、Mydoom等 蠕蟲,帶來數(shù)十億,甚至數(shù) 百億美元的損失這些蠕蟲利用服務(wù)器軟件 中的漏洞傳播軟件安全概述軟件安全漏洞對生命威脅1988兩伊戰(zhàn)爭期間

3、,美國防空導(dǎo)彈 擊落伊朗客機(jī),290人遇難,美國的 解釋是雷達(dá)跟蹤軟件的含糊和令人 誤解的輸出顯示魚鷹V-22傾斜旋翼直升機(jī)試飛時(shí), 一條水壓線爆裂,軟件錯(cuò)誤認(rèn)為備 份系統(tǒng)沒有工作,導(dǎo)致飛機(jī)墜毀, 4人遇難2010年英國科學(xué)家以身試法,全球 首個(gè)被計(jì)算機(jī)病毒感染的人類,證 明體內(nèi)的醫(yī)療器材(心臟起搏器) 有感染病毒的風(fēng)險(xiǎn)軟件安全概述安全領(lǐng)域多年研究,軟件安全問題反而越來越嚴(yán)重,為什么軟件普遍存在漏洞?軟件安全“困境三要素”復(fù)雜性 源代碼行數(shù):Windows NT 3.1(3百萬)Windows XP(4千萬)Windows Server 2003(5千萬) 軟件規(guī)模越來越大,越來越復(fù)雜,BUG

4、也會(huì)越來越多,預(yù)計(jì)每千行代碼約存在5-50個(gè)BUG 大多數(shù)BUG不會(huì)造成安全問題,但一個(gè)足以致命軟件安全概述軟件安全“困境三要素”可擴(kuò)展性 為了支持更好的用戶感受,軟件提供擴(kuò)展渠道,軟件的可擴(kuò)展性機(jī)制促進(jìn)現(xiàn)代軟件的蓬勃發(fā)展; 操作系統(tǒng)通過動(dòng)態(tài)裝載設(shè)備驅(qū)動(dòng)和模塊,瀏覽器通過腳本語言、控件和動(dòng)態(tài)裝載庫支持更好的擴(kuò)展性; 很難組織攻擊者和惡意代碼以不可預(yù)測的擴(kuò)展方式入侵軟件和系統(tǒng),廠商不重視 分析可擴(kuò)展軟件的安全性要比分析不能更改軟件的安全性困難得多軟件安全概述軟件安全“困境三要素”連通性 接入互聯(lián)網(wǎng)的計(jì)算機(jī)數(shù)量快速增加,高連通性使小小軟件缺陷造成巨大的影響(蠕蟲) 高度連通性也使得網(wǎng)絡(luò)攻擊能夠引發(fā)

5、現(xiàn)實(shí)世界的故障,電話網(wǎng)、電力網(wǎng)事故(電影:鷹眼) 連通性使得不需人為干預(yù)的自動(dòng)化攻擊成為可能,大大改變了威脅環(huán)境,威脅傳播范圍更大更迅速 在一個(gè)普遍依賴軟件的高連通性網(wǎng)絡(luò)中,一旦軟件中的安全漏洞被惡意利用,后果將不僅是計(jì)算機(jī)短期無法工作,對正常生活也會(huì)造成重要影響軟件安全概述軟件安全漏洞類型CVE標(biāo)準(zhǔn)目錄中,將安全漏洞分37類2001-04年,緩沖區(qū)溢出漏洞保持第一位2005開始,Web安全問題快速升溫,XSS、SQL注入、PHP遠(yuǎn)程文件包含等占據(jù)前三其他普遍流行的安全漏洞:目錄遍歷、信息泄露、畸形輸入導(dǎo)致的拒絕服務(wù)、符合鏈接問題、格式化字符串、密碼學(xué)缺陷軟件安全概述軟件安全漏洞從技術(shù)上主要分

6、類:內(nèi)存安全違規(guī)類 內(nèi)存訪問時(shí)引入的安全缺陷,如緩沖區(qū)溢出、Use-after-Free、Double free等不安全指針問題; 主要出現(xiàn)在C/C+編寫的軟件中,支持任意的內(nèi)存分配與回收,任意指針計(jì)算、轉(zhuǎn)換,未保護(hù)內(nèi)存;Java等則通過禁用指針計(jì)算與轉(zhuǎn)換,實(shí)施內(nèi)存垃圾跟蹤與收集等機(jī)制,保證內(nèi)存安全; 緩沖區(qū)溢出是最基礎(chǔ)的內(nèi)存安全問題軟件安全概述軟件安全漏洞從技術(shù)上主要分類:輸入驗(yàn)證類 程序在對用戶輸入進(jìn)行數(shù)據(jù)驗(yàn)證存在錯(cuò)誤,沒有保證輸入數(shù)據(jù)的正確性、合法性和安全性,導(dǎo)致可能被惡意攻擊與利用; 可細(xì)分為:格式化字符串、SQL注入、代碼注入、遠(yuǎn)程文件包含、目錄遍歷、XSS、HTTP Header注

7、入、HTTP響應(yīng)分割錯(cuò)誤等 針對目前流行的Web應(yīng)用程序的輸入驗(yàn)證類漏洞,近年來已經(jīng)成為攻擊者最普遍利用的目標(biāo) 例:字符串格式化漏洞:C語言特定字符串處理函數(shù)printf()涉及將未過濾的用戶輸入作為該函數(shù)的格式字符串參數(shù),惡意用戶利用%s、%x等格式化選項(xiàng),打印內(nèi)存某些地址的數(shù)據(jù)內(nèi)容;利用%n格式化選項(xiàng),將任意構(gòu)造的數(shù)據(jù)寫入任意棧內(nèi)存位置,從而控制程序邏輯,控制系統(tǒng)。 軟件安全概述軟件安全漏洞從技術(shù)上主要分類:競爭條件類 涉及多進(jìn)程或多線程處理的程序中,輸出或結(jié)果無法預(yù)測,依賴于其他進(jìn)程事件發(fā)生的次序或時(shí)間 TOCTTOU,檢查時(shí)刻與使用時(shí)刻條件狀態(tài)不一致,導(dǎo)致攻擊者可利用的漏洞軟件安全概述

8、軟件安全漏洞從技術(shù)上主要分類:權(quán)限混淆與提升類 程序由于自身編程疏忽或被第三方欺騙,濫用其特權(quán),或賦予第三方不該給予的權(quán)限 權(quán)限提升漏洞通常發(fā)生在一些擁有特權(quán)的應(yīng)用程序中,由于安全缺陷,使得獲取特權(quán)的安全檢查被繞過,或被攻破 FTP反彈攻擊利用FTP協(xié)議的缺陷,繞過FTP服務(wù)器的權(quán)限限制,讓FTP作為中間代理,使用PORT命令向其他主機(jī)的端口請求訪問,用于隱蔽的端口掃描 “越獄”由于iPhone和iPad流行被大眾了解與接受,原指破解類Unix系統(tǒng)中jail機(jī)制,移動(dòng)設(shè)備為自身利益,只允許訪問特定來源的軟件資源,黑客與廠商之間開始了一輪輪越獄與反越獄斗爭 軟件安全概述軟件安全漏洞遠(yuǎn)不止上述幾種

9、類型新的安全漏洞形式也在進(jìn)一步挖掘大家認(rèn)為應(yīng)該披露安全漏洞這些危險(xiǎn)信息嗎?保密和包庇陰暗最終只會(huì)害了我們自己透明無論對我們個(gè)人、社會(huì),都是有幫助的(政治不也是一樣嗎?)緩沖區(qū)溢出概述緩沖區(qū)溢出是最早被發(fā)現(xiàn),也是最基礎(chǔ)的安全軟件漏洞類型(特別是棧溢出)緩沖區(qū)溢出基本概念本質(zhì):內(nèi)存安全違規(guī)類漏洞,計(jì)算機(jī)程序向特定緩沖區(qū)內(nèi)填充數(shù)據(jù)時(shí),超出了緩沖區(qū)本身的容量,導(dǎo)致外溢數(shù)據(jù)覆蓋了相鄰內(nèi)存空間的合法數(shù)據(jù),從而改變程序執(zhí)行流程破壞系統(tǒng)運(yùn)行完整性原因:程序本身沒有檢查數(shù)據(jù)長度與所分配的存儲(chǔ)空間是否匹配多見于C/C+中的memcpy()、strcpy()等內(nèi)存與字符串復(fù)制函數(shù)的引用位置,這些函數(shù)不檢查內(nèi)存越界問

10、題根本原因:現(xiàn)代計(jì)算機(jī)基礎(chǔ)構(gòu)架馮諾依曼體系的安全缺陷,即程序的數(shù)據(jù)和指令都在同一內(nèi)存中進(jìn)行存儲(chǔ)緩沖區(qū)溢出概述緩沖區(qū)溢出攻擊技術(shù)的發(fā)展80年代初,國外黑客就意識(shí)到程序中存在緩沖區(qū)溢出問題,1988年莫里斯蠕蟲利用的是fingerd服務(wù)中存在的緩沖區(qū)溢出漏洞進(jìn)行傳播的1996年,黑客One在經(jīng)典文章Smashing the Stack for fun and Profit中,詳細(xì)描述Linux系統(tǒng)的棧結(jié)構(gòu),及如何利用緩沖區(qū)溢出獲得遠(yuǎn)程Shell;90年代末20世紀(jì)初,緩沖區(qū)溢出深入人心,是最為流行的攻擊技術(shù)Windows內(nèi)存分布和系統(tǒng)調(diào)用機(jī)制不同于類Unix系統(tǒng),但這難不倒睿智的黑客,1998年死

11、牛崇拜黑客團(tuán)隊(duì)以Microsoft Netmeeting服務(wù)中緩沖區(qū)溢出漏洞為例,詳細(xì)介紹如何利用Windows平臺(tái)的棧溢出漏洞1999年,Spyrit提出使用系統(tǒng)核心DLL中的JMP ESP等指令完成指令跳轉(zhuǎn)和控制的想法,推動(dòng)該平臺(tái)棧溢出漏洞的利用;同年Conover對基于堆的緩沖區(qū)溢出攻擊技術(shù)進(jìn)行深入總結(jié)和整理這些研究也促進(jìn)了21世紀(jì)初Windows平臺(tái)蠕蟲大規(guī)模爆發(fā)緩沖區(qū)溢出概述黑客對技術(shù)鍥而不舍的鉆研精神不應(yīng)該因此被貶低,正因?yàn)樗麄兊牟粩嗾也绾推毓?,促使軟件廠商更注重軟件的安全性近年來緩沖區(qū)溢出在軟件漏洞中比重有所下降,但絕對數(shù)量仍在增長直到現(xiàn)在,緩沖區(qū)溢出漏洞與攻擊并未被根除,仍在一

12、些實(shí)際網(wǎng)絡(luò)攻擊事件和惡意代碼中見到其蹤跡緩沖區(qū)溢出背景知識(shí)掌握計(jì)算機(jī)程序的底層運(yùn)行機(jī)理熟悉編程語言、匯編語言、操作系統(tǒng)等基礎(chǔ)知識(shí)編譯器與調(diào)試器C/C+編寫的源碼,需要通過編譯器(生成目標(biāo)文件,二進(jìn)制代碼)和連接器生成最終的可執(zhí)行程序調(diào)試器提供程序斷點(diǎn)管理、執(zhí)行控制、信息查看Windows平臺(tái)下VC+集成開發(fā)環(huán)境,自帶調(diào)試與反匯編功能類Unix平臺(tái)下,GDB是常用的調(diào)試器緩沖區(qū)溢出背景知識(shí)匯編語言基礎(chǔ)知識(shí)匯編語言(特別是IA32構(gòu)架下)是理解軟件安全漏洞機(jī)理的底層基礎(chǔ)因?yàn)闊o法得到所分析軟件的源代碼,只能閱讀理解反匯編得到的匯編代碼滲透攻擊代碼中包含機(jī)器指令形式存在的Shellcode,理解和編寫

13、也需要匯編語言知識(shí)調(diào)試滲透代碼對軟件安全漏洞的利用過程,在調(diào)試器中一般只能在匯編代碼層次上分析緩沖區(qū)溢出背景知識(shí)匯編語言基礎(chǔ)知識(shí)首先熟悉常用的寄存器及其功能通用、段、控制、其他四類寄存器通用寄存器,主要用于算術(shù)運(yùn)算,保存數(shù)據(jù)、地址、偏移量等;特別注意的是esp:棧指針寄存器,棧溢出攻擊時(shí)關(guān)鍵的操控對象段寄存器一般用作段基址寄存器,16位控制寄存器控制處理器的執(zhí)行流程;其中最關(guān)鍵是eip:指令指針,保存了下一條即將執(zhí)行的機(jī)器指令的地址,成為各種攻擊控制程序執(zhí)行流程的關(guān)鍵攻擊目標(biāo)對象其他寄存器中值得關(guān)注的是“擴(kuò)展標(biāo)志”eflags寄存器,不同標(biāo)志位組成,保存指令執(zhí)行后的狀態(tài)和控制指令執(zhí)行流程的標(biāo)志

14、信息緩沖區(qū)溢出背景知識(shí)進(jìn)程內(nèi)存管理了解進(jìn)程內(nèi)存管理機(jī)制是深入理解軟件安全漏洞及攻擊機(jī)理所必須掌握的內(nèi)容Linux: 程序執(zhí)行時(shí),系統(tǒng)在內(nèi)存中創(chuàng)建一個(gè)虛 擬的內(nèi)存地址空間,32位機(jī)4GB; 3GB以下用戶態(tài)空間,3-4GB為內(nèi)核態(tài) 空間; .text為程序指令,只讀; .data段主要包含靜態(tài)初始化數(shù)據(jù); .bss則包含未初始化的數(shù)據(jù); 加載完成后,系統(tǒng)為程序初始化棧和堆 緩沖區(qū)溢出背景知識(shí)Linux進(jìn)程內(nèi)存管理?xiàng)#⊿tack)LIFO,環(huán)境變量env、運(yùn)行參數(shù)argv、運(yùn)行參數(shù)數(shù)量argc放置在棧底,然后是主函數(shù)及調(diào)用棧中各個(gè)函數(shù)的臨時(shí)保存信息;堆(Heap)FIFO,保存程序動(dòng)態(tài)分配的數(shù)據(jù)和

15、變量;程序執(zhí)行,安裝邏輯執(zhí)行.text中的指令,并在棧和堆中保存和讀取數(shù)據(jù)程序無法正確區(qū)分程序和數(shù)據(jù),可通過修改內(nèi)存空間,影響程序執(zhí)行邏輯,將惡意數(shù)據(jù)作為指令提交給處理器緩沖區(qū)溢出背景知識(shí)Windows進(jìn)程內(nèi)存管理空間布局與Linux系統(tǒng)有差異2-4GB為內(nèi)核態(tài)地址空間,映射內(nèi)核 代碼和一些核心DLL0-2GB為用戶態(tài)地址空間,高地址段 映射大量應(yīng)用程序共用的DLL,1GB 位置裝載一些應(yīng)用程序本身使用的DLL可執(zhí)行代碼區(qū),靜態(tài)內(nèi)存空間保存全局變量、靜態(tài)變量,堆存儲(chǔ)動(dòng)態(tài)數(shù)據(jù),多線程有多個(gè)棧和堆緩沖區(qū)溢出背景知識(shí)了解函數(shù)調(diào)用過程棧結(jié)構(gòu)和函數(shù)調(diào)用過程的底層細(xì)節(jié),是理解棧溢出攻擊的重要基礎(chǔ)棧溢出攻擊

16、針對函數(shù)調(diào)用過程中返回地址對棧中的存儲(chǔ)返回地址的位置進(jìn)行緩沖區(qū)溢出改寫返回地址使程序跳轉(zhuǎn)到攻擊者指定的位置執(zhí)行惡意代碼緩沖區(qū)溢出背景知識(shí)函數(shù)調(diào)用過程棧,LIFO,用于實(shí)現(xiàn)程序中的函數(shù)或過程調(diào)用,保存函數(shù)的調(diào)用參數(shù)、返回地址、調(diào)用者棧基址、函數(shù)局部變量等最關(guān)鍵是返回地址,即函數(shù)調(diào)用結(jié)束后執(zhí)行的下一條指令地址返回地址在可讀寫的棧中保存,與攻擊者可操縱的局部變量緩沖區(qū)相鄰,有可乘之機(jī)(如果沒有嚴(yán)格邊界檢查的話)ebp、esp(寄存器棧底和棧頂?shù)刂罚﹑ush、pop(指令,將數(shù)據(jù)壓入棧,彈出棧)緩沖區(qū)溢出背景知識(shí)緩沖區(qū)溢出例子最簡單的溢出例子void return_input(void)char ar

17、ray30;gets(array);printf(“%sn”,array);int main (void)return_input();return 0;程序運(yùn)行后,輸入超過30個(gè)字符,造成緩沖區(qū)溢出,一旦覆蓋上方的EBP和RET緩沖區(qū)溢出背景知識(shí)緩沖區(qū)溢出的利用緩沖區(qū)溢出兩個(gè)要素:程序中存在缺乏邊界安全保護(hù)的緩沖區(qū)操作;緩沖區(qū)操作必須是用戶輸入可控制的上述例子造成結(jié)果?黑客不會(huì)滿足于此,期望獲得系統(tǒng)訪問權(quán)黑客的三個(gè)挑戰(zhàn)如何找出緩沖區(qū)溢出要覆蓋和修改的敏感位置?將敏感位置的值修改成什么?執(zhí)行什么指令代碼達(dá)到攻擊的目標(biāo)?(Shellcode)緩沖區(qū)溢出背景知識(shí)棧溢出攻擊的簡單例子char she

18、llcode=“x31xd2x52x68x6ex2fx73x68 x68x2fx2fx62” “x69x89xe3x52x53x89xe1 x8d0 x42x0bxcdx80”char large_string128;int main(int argc, char *argv)char buffer96;int i;long *long_ptr=(long *) large_string;for(i=0;i32;i+)*(long_ptr+i)=(int) buffer;for(i=0;i(int)strlen(shellcode);i+)large_stringi=shellcodei;str

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論