• <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>
            posts - 297,  comments - 15,  trackbacks - 0
            已經有很多介紹DOS(Denial of Service,即拒絕服務)攻擊的文章,但是,多數人還是不知道DOS到底是什么,它到底是怎么實現的。本文主要介紹DOS的機理和常見的實施方法。因前段時間仔細了解了TCP/IP協議以及RFC文檔,有點心得。同時,文中有部分內容參考了Shaft的文章翻譯而得
            。要想了解DOS攻擊得實現機理,必須對TCP有一定的了解。所以,本文分為兩部分,第一部分介紹一
            些實現DOS攻擊相關的協議,第二部分則介紹DOS的常見方式。

            1、 什么是DOS攻擊
            DOS:即Denial Of Service,拒絕服務的縮寫,可不能認為是微軟的dos操作系統了。好象在5·1的時候鬧過這樣的笑話。拒絕服務,就相當于必勝客在客滿的時候不再讓人進去一樣,呵呵,你想吃餡餅,就必須在門口等吧。DOS攻擊即攻擊者想辦法讓目標機器停止提供服務或資源訪問,這些資源包括磁盤空間、內存、進程甚至網絡帶寬,從而阻止正常用戶的訪問。比如:
            * 試圖FLOOD服務器,阻止合法的網絡通?br>* 破壞兩個機器間的連接,阻止訪問服務
            * 阻止特殊用戶訪問服務
            * 破壞服務器的服務或者導致服務器死機
            不過,只有那些比較陰險的攻擊者才單獨使用DOS攻擊,破壞服務器。通常,DOS攻擊會被作為一次入侵的一部分,比如,繞過入侵檢測系統的時候,通常從用大量的攻擊出發,導致入侵檢測系統日志過多或者反應遲鈍,這樣,入侵者就可以在潮水般的攻擊中混騙過入侵檢測系統。

            2、有關TCP協議的東西
            TCP(transmission control protocol,傳輸控制協議),是用來在不可靠的因特網上提供可靠的、端到端的字節流通訊協議,在RFC793中有正式定義,還有一些解決錯誤的東西在RFC 1122中有記錄,RFC 1323則有TCP的功能擴展。

            我們常見到的TCP/IP協議中,IP層不保證將數據報正確傳送到目的地,TCP則從本地機器接受用戶的數據流,將其分成不超過64K字節的數據片段,將每個數據片段作為單獨的IP數據包發送出去,最后在目的地機器中再組合成完整的字節流,TCP協議必須保證可靠性。

            發送和接收方的TCP傳輸以數據段的形式交換數據,一個數據段包括一個固定的20字節頭,加上可選部分,后面再跟上數據,TCP協議從發送方傳送一個數據段的時候,還要啟動計時器,當數據段到達目的地后,接收方還要發送回一個數據段,其中有一個確認序號,它等于希望收到的下一個數據段的順序號,如果計時器在確認信息到達前超時了,發送方會重新發送這個數據段。

            上面,我們總體上了解一點TCP協議,重要的是要熟悉TCP的數據頭(header)。因為數據流的傳輸最重要的就是header里面的東西,至于發送的數據,只是header附帶上的。客戶端和服務端的服務響應就是同header里面的數據相關,兩端的信息交流和交換是根據header中的內容實施的,因此,要實現DOS,就必須對header中的內容非常熟悉。

            下面是TCP數據段頭格式。
            Source Port和 Destination Port :是本地端口和目標端口
            Sequence Number 和 Acknowledgment Number :是順序號和確認號,確認號是希望接收的字節號。這都是32位的,在TCP流中,每個數據字節都被編號。Data offset :表明TCP頭包含多少個32位字,用來確定頭的長度,因為頭中可選字段長度是不定的。Reserved : 保留的6位,現在沒用,都是0
            接下來是6個1位的標志,這是兩個計算機數據交流的信息標志。接收和發送斷根據這些標志來確定信息流的種類。下面是一些介紹: URG:(Urgent Pointer field significant)緊急指針。用到的時候值為1,用來處理避免TCP數據流中斷ACK:(Acknowledgment field significant)置1時表示確認號(Acknowledgment Number)為合法,為0的時候表示數據段不包含確認信息,確認號被忽略。
            PSH:(Push Function),PUSH標志的數據,置1時請求的數據段在接收方得到后就可直接送到應用程序,而不必等到緩沖區滿時才傳送。
            RST:(Reset the connection)用于復位因某種原因引起出現的錯誤連接,也用來拒絕非法數據和請求。如果
            接收到RST位時候,通常發生了某些錯誤。
            SYN:(Synchronize sequence numbers)用來建立連接,在連接請求中,SYN=1,CK=0,連接響應時,SYN=1,
            ACK=1。即,SYN和ACK來區分Connection Request和Connection Accepted。
            FIN:(No more data from sender)用來釋放連接,表明發送方已經沒有數據發送。

            知道這重要的6個指示標志后,我們繼續來。
            16位的WINDOW字段:表示確認了字節后還可以發送多少字節。可以為0,表示已經收到包括確認號減1(即已發送所有數據)
            在內的所有數據段。
            接下來是16位的Checksum字段,用來確保可靠性的。
            16位的Urgent Pointer,和下面的字段我們這里不解釋了。不然太多了。呵呵,偷懶啊。

            我們進入比較重要的一部分:TCP連接握手過程。這個過程簡單地分為三步。在沒有連接中,接受方(我們針對服務器),服務器處于LISTEN狀態,等待其他機器發送連接請求。
            第一步:客戶端發送一個帶SYN位的請求,向服務器表示需要連接,比如發送包假設請求序號為10,那么則為:SYN=10,ACK=0,然后等待服務器的響應。
            第二步:服務器接收到這樣的請求后,查看是否在LISTEN的是指定的端口,不然,就發送RST=1應答,拒絕建立連接。如果接收連接,那么服務器發送確認,SYN為服務器的一個內碼,假設為100,ACK位則是客戶端的請求序號加1,本例中發送的數據是:SYN=100,ACK=11,用這樣的數據發送給客戶端。向客戶端表示,服務器連接已經準備好了,等待客戶端的確認這時客戶端接收到消息后,分析得到的信息,準備發送確認連接信號到服務器
            第三步:客戶端發送確認建立連接的消息給服務器。確認信息的SYN位是服務器發送的ACK位,ACK位是服務器發送的SYN位加1。即:SYN=11,ACK=101。
            這時,連接已經建立起來了。然后發送數據,<SYN=11,ACK=101><DATA>。這是一個基本的請求和連接過程。需要注意的是這些標志位的關系,比如SYN、ACK。

            3、服務器的緩沖區隊列(Backlog Queue)
            服務器不會在每次接收到SYN請求就立刻同客戶端建立連接,而是為連接請求分配內存空間,建立會話,并放到一個等待隊列中。如果,這個等待的隊列已經滿了,那么,服務器就不在為新的連接分配任何東西,直接丟棄新的請求。如果到了這樣的地步,服務器就是拒絕服務了。
            如果服務器接收到一個RST位信息,那么就認為這是一個有錯誤的數據段,會根據客戶端IP,把這樣的連接在緩沖區隊列中清除掉。這對IP欺騙有影響,也能被利用來做DOS攻擊。

            ####################################################################

            上面的介紹,我們了解TCP協議,以及連接過程。要對SERVER實施拒絕服務攻擊,實質上的方式就是有兩個:
            一, 迫使服務器的緩沖區滿,不接收新的請求。
            二, 使用IP欺騙,迫使服務器把合法用戶的連接復位,影響合法用戶的連接
            這就是DOS攻擊實施的基本思想。具體實現有這樣的方法:

            1、SYN FLOOD
            利用服務器的連接緩沖區(Backlog Queue),利用特殊的程序,設置TCP的Header,向服務器端不斷地成倍發送只有SYN標志的TCP連接請求。當服務器接收的時候,都認為是沒有建立起來的連接請求,于是為這些請求建立會話,排到緩沖區隊列中。
            如果你的SYN請求超過了服務器能容納的限度,緩沖區隊列滿,那么服務器就不再接收新的請求了。其他合法用戶的連接都被拒絕掉。可以持續你的SYN請求發送,直到緩沖區中都是你的只有SYN標記的請求。現在有很多實施SYN FLOOD的工具,呵呵,自己找去吧。

            2、IP欺騙DOS攻擊
            這種攻擊利用RST位來實現。假設現在有一個合法用戶(1.1.1.1)已經同服務器建立了正常的連接,攻擊者構造攻擊的TCP數據,偽裝自己的IP為1.1.1.1,并向服務器發送一個帶有RST位的TCP數據段。服務器接收到這樣的數據后,認為從1.1.1.1發送的連接有錯誤,就會清空緩沖區中建立好的連接。這時,如果合法用戶1.1.1.1再發送合法數據,服務器就已經沒有這樣的連接了,該用戶就必
            須從新開始建立連接。攻擊時,偽造大量的IP地址,向目標發送RST數據,使服務器不對合法用戶服務。

            3、 帶寬DOS攻擊
            如果你的連接帶寬足夠大而服務器又不是很大,你可以發送請求,來消耗服務器的緩沖區消耗服務器的帶寬。這種攻擊就是人多力量大了,配合上SYN一起實施DOS,威力巨大。不過是初級DOS攻擊。呵呵。Ping白宮??你發瘋了啊!


            4、自身消耗的DOS攻擊
            這是一種老式的攻擊手法。說老式,是因為老式的系統有這樣的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他過時的系統。
            這種DOS攻擊就是把請求客戶端IP和端口弄成主機的IP端口相同,發送給主機。使得主機給自己發送TCP請求和連接。這種主機的漏洞會很快把資源消耗光。直接導致當機。這中偽裝對一些身份認證系統還是威脅巨大的。
            上面這些實施DOS攻擊的手段最主要的就是構造需要的TCP數據,充分利用TCP協議。這些攻擊方法都是建立在TCP基礎上的。還
            有其他的DOS攻擊手段。

            5、塞滿服務器的硬盤
            通常,如果服務器可以沒有限制地執行寫操作,那么都能成為塞滿硬盤造成DOS攻擊的途徑,比如:
            發送垃圾郵件。一般公司的服務器可能把郵件服務器和WEB服務器都放在一起。破壞者可以發送大量的垃圾郵件,這些郵件可能都塞在一個郵件隊列中或者就是壞郵件隊列中,直到郵箱被撐破或者把硬盤塞滿。
            讓日志記錄滿。入侵者可以構造大量的錯誤信息發送出來,服務器記錄這些錯誤,可能就造成日志文件非常龐大,甚至會塞滿硬盤。同時會讓管理員痛苦地面對大量的日志,甚至就不能發現入侵者真正的入侵途徑。
            向匿名FTP塞垃圾文件。這樣也可以塞滿硬盤空間。

            6、合理利用策略
            一般服務器都有關于帳戶鎖定的安全策略,比如,某個帳戶連續3次登陸失敗,那么這個帳號將被鎖定。這點也可以被破壞者利用,他們偽裝一個帳號去錯誤登陸,這樣使得這個帳號被鎖定,而正常的合法用戶就不能使用這個帳號去登陸系統了 .

            from:
            http://lib.360doc.com/06/1103/22/4546_249496.shtml


            posted on 2009-12-20 22:57 chatler 閱讀(305) 評論(0)  編輯 收藏 引用 所屬分類: security
            <2009年5月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(10)

            隨筆分類(307)

            隨筆檔案(297)

            algorithm

            Books_Free_Online

            C++

            database

            Linux

            Linux shell

            linux socket

            misce

            • cloudward
            • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

            network

            OSS

            • Google Android
            • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
            • os161 file list

            overall

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲精品高清国产一线久久| 精品久久人人做人人爽综合| 久久AV高潮AV无码AV| 久久亚洲精品无码aⅴ大香| 久久ZYZ资源站无码中文动漫| 久久久精品午夜免费不卡| 久久久久久毛片免费看| 久久人人爽人人爽人人片av高请| 成人国内精品久久久久一区| 久久性生大片免费观看性| 亚洲第一极品精品无码久久| 久久se精品一区精品二区| 久久中文字幕精品| 99久久精品国产一区二区蜜芽| 久久中文字幕精品| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久久久久精品免费看SSS| 97久久超碰成人精品网站| 少妇被又大又粗又爽毛片久久黑人| 热re99久久6国产精品免费| 亚洲国产精品无码久久九九| 日本精品久久久久中文字幕| 亚洲色婷婷综合久久| 欧美久久久久久精选9999| 欧美综合天天夜夜久久| 一本色道久久88精品综合| 色综合合久久天天给综看| 久久免费美女视频| 久久精品国产免费一区| 久久男人Av资源网站无码软件| 久久婷婷国产剧情内射白浆 | 亚洲人成网站999久久久综合| 国产精品久久久久久影院 | 一本大道加勒比久久综合| 色欲久久久天天天综合网| 久久国产AVJUST麻豆| 亚洲欧美久久久久9999| 怡红院日本一道日本久久 | 午夜久久久久久禁播电影| 伊人 久久 精品| 一级做a爰片久久毛片毛片|