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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

17、ray30;gets(array);printf(“%sn”,array);int main (void)return_input();return 0;程序運行后,輸入超過30個字符,造成緩沖區(qū)溢出,一旦覆蓋上方的EBP和RET緩沖區(qū)溢出背景知識緩沖區(qū)溢出的利用緩沖區(qū)溢出兩個要素:程序中存在缺乏邊界安全保護的緩沖區(qū)操作;緩沖區(qū)操作必須是用戶輸入可控制的上述例子造成結果?黑客不會滿足于此,期望獲得系統(tǒng)訪問權黑客的三個挑戰(zhàn)如何找出緩沖區(qū)溢出要覆蓋和修改的敏感位置?將敏感位置的值修改成什么?執(zhí)行什么指令代碼達到攻擊的目標?(Shellcode)緩沖區(qū)溢出背景知識棧溢出攻擊的簡單例子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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論