青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

旅途

如果想飛得高,就該把地平線忘掉

緩沖區溢出原理淺析以及防護

摘要】 本文從程序語言本身的缺陷,不夠健壯的角度出發,詳細分析了緩沖溢出攻擊的基本原理,描述了黑客利用緩沖區漏洞進行系統攻擊的一般過程,最后又簡單討論了幾種防范溢出攻擊的策略.
 
【關鍵字】 緩沖溢出; 程序跳轉; 長跳轉緩沖區;
 
近些年來,黑客攻擊事件頻繁發生,尤其是緩沖區溢出漏洞攻擊占據了網絡遠程攻擊的絕大多數. 因為這類攻擊可以使任何人獲得系統主機的完全控制權,所以它代表了一類十分嚴重的攻擊.
緩沖區溢出攻擊之所以常見,是因為它太常見了,且易于實現, 這完全是軟件發展史上不可避免的問題. 緩沖區漏洞是程序員在編寫程序時未檢查內存空間,導致內存泄漏而引起,以下我們先來簡單了解一下它:
 
一、 認識緩沖區溢出
緩沖溢出是一種系統攻擊的手段,借著在程序緩沖區編寫超出其長度的代碼,造成溢出,從而破壞其堆棧,使程序執行攻擊者在程序地址空間中早已安排好的代碼,以達到其目的. 一般黑客攻擊root程序,然后執行類似exec(sh)的代碼獲得root的shell. 它造成了兩種嚴重的后果:
1.     覆蓋堆棧的相鄰單元. 使程序執行失敗, 嚴重可導致系統崩潰.
2.     可執行認識指令代碼,最后獲得系統root特級權限.
現在很多人使用C或C++編寫程序,但同時太多的人忽略了對其的數組邊界檢查和類型安全檢查,所以現今的大多數溢出都和C語言有關, C語言中中有可能產生溢出的函數有:char s[n],strlen(s),strcpy(dst, src),p=malloc(n),strcat(s,suffix)等等,所以我們要盡可能地避免使用這些危險函數,即使使用,也一定要做嚴格的檢查.為容易理解,我們來看一個簡單的程序:
 
/*
 * example.c
 * written by Devil_Angel <Devil___Angel@126.com>
 * gcc –o example example.c
                */
void func(char * str)
{
char buf[8];
strcpy(buf, str);
printf(“%sn”,buf);
}
int main(int argc, char * argv[])
{
If(argc >1)
                            Func(argv[1]);
}//end of main
 
該程序在輸入時,并沒有對str的大小進行檢查便直接送入數組buf,一旦輸入超出buf長度,就產生了最簡單的溢出,當然象這樣的溢出一般只會出現Segmentation fault錯誤,而不能達到攻擊的目的. 這里并沒有進一步深入分析,只是讓大家對溢出有一個大概的概念,在以后將會對其做進一步的分析.
 
二、 緩沖區溢出漏洞攻擊方式
最常見的攻擊手段是通過制造緩沖區溢出使程序運行一個用戶shell,在通過shell執行其他命令. 若該程序輸入root且有suid權限的話,攻擊者就獲得了一個有root權限的shell,此時就可以對系統進行隨意操作了.下面我來介紹一下如何控制程序跳轉到攻擊代碼:
l         打開記錄(Activation Records)
在程序中,每一個函數調用發生,在堆棧中會留下一個Activation Records,它包括函數結束時返回的地址,攻擊者通過溢出這些自動變量,使地址指向攻擊程序代碼. 通過改變程序的返回地址,當調用結束時,程序就跳到攻擊者設定的地址,而不是原地址.這類溢出被稱為 stacks mashing attack.
 
l         函數指針(Function Pointers)
void(*foo)(1)定義一個返回函數指針的變量foo, Function Pointers可用來定位任何地址空間. 所以只需在任何空間內的Function Pointers附近找到一個能溢出的緩沖區,然后溢出它來改變Function Pointers. 在某時刻,當程序通過Function Pointers調用函數時,程序的流程就按黑客的意圖實現了(典型的溢出程序有:Linux下的Superprobe程序).
 
l         長跳轉緩沖區(Longjmpbuffers)
在C語言中,包含了一個簡單的檢驗/恢復系統,稱為setjmp/longjmp.即在檢驗點設定setjmp(buffer),用longjmp(buffer)恢復. 但若攻擊者能夠進入緩沖區空間,則longjmp(buffer)實際上跳轉到攻擊者的程序代碼. 像Function Pointers, longjmp緩沖區能指向任何地方,所以攻擊者要做的就是找到一個可供溢出的buffer即可.
 
最常見的是在一個字符串中綜合了代碼植入和打開記錄. 攻擊者定位或提供溢出的自動變量,然后向程序傳一個超大字符串,在引發buffer溢出改變打開記錄時植入程序代碼,由此達到入侵系統的目的.
 
三、 應對遠程緩沖區溢出攻擊
對付緩沖區溢出攻擊的方法不少,但常見的也是最重要有一下四種方式:
1.     編寫嚴格的代碼
編寫正確嚴格的代碼是一件有意義但非常耗時的工作, 有C程序設計或匯編語言經驗的人會深有體會,盡管軟件的發展經歷了不短的時間了,但漏洞程序依舊存在,因此人們開發了一些工具和技術來幫助經驗不足的程序員編寫安全的程序.例如高級查錯工具,如faultinjection等. 這些工具的目的在于通過人為隨機地產生一些緩沖區溢出來尋找代碼的安全漏洞.但由于C語言的特點,這些工具不可能找出所有的緩沖區溢出漏洞. 所以,偵錯技術只能用來減少緩沖區溢出漏洞,并不能完全地消除其存在. 錯誤的消除還是要靠程序員來編寫.
 
2.     不可執行堆棧數據段
通過操作系統時數據斷地址空間不可執行,從而使得攻擊者不能執行被植入的攻擊代碼,但攻擊者不一定是非要植入攻擊代碼來實現緩沖區溢出的攻擊,所以這種方法還是存在很多弱點的.
 
3.     利用程序編譯器的邊界檢查
植入代碼是引起緩沖區溢出的一個方面,改變程序執行流程是另一方面. 而利用編譯器邊界檢查則使得緩沖區溢出不可能實現,從而完全消除了緩沖區溢出的威脅,但相對而言代價較大.
 
4.     指針完整性檢查
程序指針完整性檢查和邊界檢查略微不同. 程序指針完整性檢查在程序指針被改變之前檢測.因此,即便攻擊者成功改變了程序的指針,也會因先前檢測到指針的改變而失效,這樣雖然不能解決所有問題,但它的確阻止了大多數的緩沖區攻擊,而且這種方法在性能上有很大的優勢,兼容性也很好.
 
從長遠來看,要想從根本上消除緩沖區溢出攻擊,需要對編程模式或CPU體系的基礎性修改才能解決問題. 不過,隨著信息技術的飛速發展和人們對網絡安全的重視程度不斷加深, 緩沖區溢出攻擊總會有解決的一天.
【參考文獻】
[1] 黑客大曝光. [美]Joel Scambray,Stuart McClure,George Kurtz著.
[2] The Art and Science of C. [美]Eric S.Roberts,斯坦福大學著.
       [3]緩沖區溢出原理及防護. 中科院研究生院 蔣濤著.

posted on 2007-07-22 03:18 旅途 閱讀(263) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            樱桃成人精品视频在线播放| 精品成人久久| 一区二区免费在线观看| 猛男gaygay欧美视频| 欧美综合国产精品久久丁香| 亚洲欧美中文日韩在线| 亚洲伊人网站| 亚洲网站在线观看| 亚洲一区二区伦理| 亚洲网友自拍| 午夜一区不卡| 麻豆国产精品777777在线| 欧美成人第一页| 亚洲精品乱码| 亚洲一区二区免费在线| 香蕉乱码成人久久天堂爱免费| 欧美在线免费观看| 欧美a级片网站| 欧美视频中文在线看 | 久久国产精品亚洲77777| 久久精品国产清高在天天线| 欧美激情一区二区| 亚洲综合三区| 欧美福利精品| 国产亚洲二区| 99riav国产精品| 亚洲欧美日韩区| 欧美成人中文字幕| 一本色道久久加勒比88综合| 欧美在线视频网站| 欧美片在线播放| 国产曰批免费观看久久久| 一片黄亚洲嫩模| 欧美sm极限捆绑bd| 亚洲欧美一区二区精品久久久| 免费人成精品欧美精品| 国内伊人久久久久久网站视频| 99成人在线| 欧美激情国产日韩精品一区18| 欧美一区二视频在线免费观看| 欧美天堂亚洲电影院在线观看| 亚洲精品国产精品乱码不99| 久久亚洲一区二区三区四区| 亚洲天堂视频在线观看| 久久一区二区视频| 国产三级精品三级| 欧美一区观看| 一本一本久久a久久精品牛牛影视| 麻豆精品精品国产自在97香蕉| 国产麻豆91精品| 亚洲欧美日韩在线高清直播| 亚洲精品一区在线观看香蕉| 欧美黄色一区| 亚洲免费观看视频| 有坂深雪在线一区| 亚洲欧美一区二区三区在线| 亚洲人永久免费| 欧美影院视频| 欧美激情视频给我| 小黄鸭视频精品导航| 欧美日韩精品不卡| 亚洲国产精品一区二区www| 欧美在线视频一区| 亚洲一级一区| 亚洲网站在线看| 欧美欧美午夜aⅴ在线观看| 亚洲黄色免费网站| 欧美国产综合视频| 免费短视频成人日韩| 亚洲国产精品一区在线观看不卡 | 在线视频欧美日韩| 亚洲国产视频一区| 欧美精品高清视频| av成人免费| 亚洲国产欧美一区二区三区久久| 欧美ed2k| 亚洲天堂成人在线观看| 亚洲精品一区二区三区不| 欧美精品大片| 国产日韩欧美二区| 久久久久久久一区| 久久天堂精品| 亚洲精品欧美| 午夜精品久久久久影视| 亚洲欧美综合精品久久成人| 欧美理论电影网| 亚洲一区二区精品| 午夜国产一区| 亚洲国产成人精品久久| 翔田千里一区二区| 夜夜爽夜夜爽精品视频| 国产欧美日韩不卡免费| 久久久久久久网站| 久久久久免费观看| 亚洲国产日韩欧美在线图片| 亚洲一区二区三区四区五区黄| 欧美在线3区| 蜜桃av噜噜一区| 亚洲一区二区黄| 老司机凹凸av亚洲导航| 亚洲午夜一区| 老司机一区二区| 亚洲视频在线免费观看| 久久久国产精品一区二区三区| 一区二区三区国产在线| 久久精品国产久精国产一老狼| 日韩视频中文| 久久久久久亚洲精品杨幂换脸 | 日韩视频一区二区在线观看| 影视先锋久久| 欧美电影免费观看大全| 欧美日韩视频在线观看一区二区三区| 久久成人精品电影| 欧美高清视频在线| 久久精品电影| 欧美先锋影音| 亚洲激情在线观看| 欧美怡红院视频一区二区三区| 日韩网站在线观看| 欧美伊人久久久久久久久影院 | 国产一区二区三区四区| 亚洲精品一区二区三区在线观看| 国产综合欧美在线看| 日韩亚洲综合在线| 美国十次成人| 久久精品一二三区| 国产精品乱子久久久久| 亚洲精品一二| 亚洲国产天堂久久综合网| 久久成人亚洲| 久久久久久久久一区二区| 国产精品视频不卡| 亚洲国产精品国自产拍av秋霞| 国产一区二区三区在线观看精品 | 亚洲午夜未删减在线观看| 亚洲精品在线一区二区| 另类人畜视频在线| 久久视频在线免费观看| 国产日韩三区| 性欧美大战久久久久久久久| 欧美一区二区三区久久精品茉莉花| 欧美日韩国产一区精品一区 | 国产精品久久久久影院亚瑟 | 暖暖成人免费视频| 狠狠干成人综合网| 中文在线一区| 亚洲自拍偷拍一区| 欧美性片在线观看| 亚洲三级网站| 亚洲一级二级| 国产精品免费观看在线| 亚洲在线免费观看| 久久精品综合一区| 亚洲国产99| 亚洲影视综合| 午夜精品福利在线观看| 国产区在线观看成人精品| 欧美一区日韩一区| 欧美成人免费小视频| 一本色道久久88精品综合| 欧美香蕉大胸在线视频观看| 亚洲午夜激情在线| 久久综合五月| 亚洲系列中文字幕| 激情av一区二区| 欧美激情亚洲精品| 亚洲小说区图片区| 久久精品一区二区三区四区 | 亚洲欧美日本另类| 久久视频在线看| 国产精品国产三级国产a| 亚洲欧美日韩精品在线| 欧美 日韩 国产精品免费观看| 亚洲精品一二区| 国产精品一区二区三区四区| 鲁大师成人一区二区三区| 一区二区三区久久网| 久久久久久久91| 亚洲一区二区免费| 国产一区二区高清| 欧美福利视频在线观看| 亚洲综合色在线| 亚洲高清毛片| 久久精品亚洲国产奇米99| 亚洲国产精品免费| 国产精品久久久久久福利一牛影视| 久久久不卡网国产精品一区| 麻豆91精品| 欧美一区在线直播| 夜夜嗨av一区二区三区网站四季av| 国产性天天综合网| 国产精品国产三级国产普通话99 | 久久天天综合| 性做久久久久久| 一本在线高清不卡dvd| 免费观看在线综合| 久久国产精品毛片| 影音先锋日韩资源| 国产精品高潮粉嫩av| 欧美片第1页综合|