python3ddos攻击_DDOS攻击
DDOS是DOS攻擊中的一種方法。
DoS:是Denial of Service的簡稱,即拒絕服務,不是DOS操作系統,造成DoS的攻擊行為被稱為DoS攻擊,其目的是使計算機或網絡無法提供正常的服務。最常見的DoS攻擊有計算機網絡帶寬攻擊和連通性攻擊
利用程序漏洞或一對一資源耗盡的Denial of Service拒絕服務
DDOS:分布式拒絕服務(DDoS:Distributed Denial of Service)攻擊指借助于客戶/服務器技術,將多個計算機聯合起來作為攻擊平臺,對一個或多個目標發動DDoS攻擊,從而成倍地提高拒絕服務攻擊的威力。
一對一的攻擊完全拼各自的資源,效果差
多對一的攻擊匯聚資源能力,重點在于量大,屬于資源耗盡型
Dos分類
D網絡
基于巨量的Flood耗盡目標網絡帶寬資源
如:ICMP Flood, UDP Flood
D協議
攻擊協議漏洞發起的拒絕服務攻擊
如:Syn Flood、Ping of Death、ARP、DNS、802.11、SSL
D應用
針對應用軟件和操作系統漏洞發起的拒絕服務攻擊
大量頻繁訪問消耗系統資源嚴重的應用(CC)
通常表現為操作系統運行正常,網絡流量不大,但服務停止響應
可以是一擊斃命的,也可以是耗盡目標資源的
以上分類并不嚴謹,不必太過執著于此
總結
從攻擊者到被害者流程
網絡->FW->服務器OS->服務應用
資源耗盡型攻擊方面
網絡:帶寬
FW:吞吐量、并發連接
服務器:CPU、內存、I/O
應用:處理請求能力,對
OS資源的使用權
程序漏洞攻擊
緩沖區溢出
協議、程序邏輯漏洞
攻擊原理與攻擊危害
按照攻擊對象的不同,將攻擊原理和攻擊危害的分析分成3類,分別是攻擊網絡帶寬資源、應用以及系統。
攻擊網絡帶寬資源:
攻擊網絡帶寬資源
攻擊系統資源:
攻擊系統資源
攻擊應用資源:
攻擊應用資源
SYN FLOOD攻擊
利用服務器的連接緩沖區(Backlog Queue),利用特殊的程序,設置TCP的Header,向服務器端不斷地成倍發送只有SYN標志的TCP連接請求。當服務器接收的時候,都認為是沒有建立起來的連接請求,于是為這些請求建立會話,排到緩沖區隊列中。
如果你的SYN請求超過了服務器能容納的限度,緩沖區隊列滿,那么服務器就不再接收新的請求了。其他合法用戶的連接都被拒絕掉。可以持續你的SYN請求發送,直到緩沖區中都是你的只有SYN標記的請求。
最通俗的例子,下面的圖片是TCP的通信的三次握手,如果說攻擊端,發送完第一次握手的數據后,然后就“消失”了,那么服務器就會不斷的發送第二次握手的數據,可是攻擊端的人找不到了。于是,服務器的資源大量被消耗,直到死機為止。當然要完全弄懂機制,需要對TCP有相當深入的了解。
TCP建立連接:三次握手
1.client: syn
2.server: syn+ack
3.client: ack
image.png
實驗
基于python2.7版本
image.png
#apt-get install python-gnuplot 安裝scapy相關組件
然后使用攻擊腳本攻擊腳本:
./syn_flood.py -iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 1.1.1.1 -j DROP -netstat -n I awk ‘/^ tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘
Windows系統默認半開連接數10個
使用方法:
– i=IP() 定義i變量(注意IP大小寫,一定要大寫)
– i.display() 顯示ip包頭用法
– i.dst="1.1.1.1" 目的地址
– t=TCP() 采用tcp協議發包
– t.display () 查看用法
– t.dport=3389 攻擊遠程3389端口
– sr1(i/t,verbose=1,timeout=3) 發送數據包()
– sr1(IP(dst=1.1.1.1)/TCP())
當出現這種情況時
我們發一個包釋放一個連接,這種達不到攻擊郊果。要構成攻擊效果可以通過iptables限止發送RST包。這樣就可以達到攻擊郊果。iptables寫法如下:
#iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 192.168.21.117 -j DROP
image.png
重新發包會發現
SYN Flood防御
前文描述過,SYN Flood攻擊大量消耗服務器的CPU、內存資源,并占滿SYN等待隊列。相應的,我們修改內核參數即可有效緩解。主要參數如下:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
分別為啟用SYN Cookie、設置SYN最大隊列長度以及設置SYN+ACK最大重試次數。
SYN Cookie的作用是緩解服務器資源壓力。啟用之前,服務器在接到SYN數據包后,立即分配存儲空間,并隨機化一個數字作為SYN號發送SYN+ACK數據包。然后保存連接的狀態信息等待客戶端確認。啟用SYN Cookie之后,服務器不再分配存儲空間,而且通過基于時間種子的隨機數算法設置一個SYN號,替代完全隨機的SYN號。發送完SYN+ACK確認報文之后,清空資源不保存任何狀態信息。直到服務器接到客戶端的最終ACK包,通過Cookie檢驗算法鑒定是否與發出去的SYN+ACK報文序列號匹配,匹配則通過完成握手,失敗則丟棄。當然,前文的高級攻擊中有SYN混合ACK的攻擊方法,則是對此種防御方法的反擊,其中優劣由雙方的硬件配置決定
tcp_max_syn_backlog則是使用服務器的內存資源,換取更大的等待隊列長度,讓攻擊數據包不至于占滿所有連接而導致正常用戶無法完成握手。net.ipv4.tcp_synack_retries是降低服務器SYN+ACK報文重試次數,盡快釋放等待資源。這三種措施與攻擊的三種危害一一對應,完完全全地對癥下藥。但這些措施也是雙刃劍,可能消耗服務器更多的內存資源,甚至影響正常用戶建立TCP連接,需要評估服務器硬件資源和攻擊大小謹慎設置。
除了定制TCP/IP協議棧之外,還有一種常見做法是TCP首包丟棄方案,利用TCP協議的重傳機制識別正常用戶和攻擊報文。當防御設備接到一個IP地址的SYN報文后,簡單比對該IP是否存在于白名單中,存在則轉發到后端。如不存在于白名單中,檢查是否是該IP在一定時間段內的首次SYN報文,不是則檢查是否重傳報文,是重傳則轉發并加入白名單,不是則丟棄并加入黑名單。是首次SYN報文則丟棄并等待一段時間以試圖接受該IP的SYN重傳報文,等待超時則判定為攻擊報文加入黑名單。
首包丟棄方案對用戶體驗會略有影響,因為丟棄首包重傳會增大業務的響應時間,有鑒于此發展出了一種更優的TCP Proxy方案。所有的SYN數據報文由清洗設備接受,按照SYN Cookie方案處理。和設備成功建立了TCP三次握手的IP地址被判定為合法用戶加入白名單,由設備偽裝真實客戶端IP地址再與真實服務器完成三次握手,隨后轉發數據。而指定時間內沒有和設備完成三次握手的IP地址,被判定為惡意IP地址屏蔽一定時間。除了SYN Cookie結合TCP Proxy外,清洗設備還具備多種畸形TCP標志位數據包探測的能力,通過對SYN報文返回非預期應答測試客戶端反應的方式來鑒別正常訪問和惡意行為。
清洗設備的硬件具有特殊的網絡處理器芯片和特別優化的操作系統、TCP/IP協議棧,可以處理非常巨大的流量和SYN隊列。
Sockstress相應原理:
放大攻擊原理:攻擊者向目標發送一個很小的流量,但是會造成產生的攻擊流量是一個巨大的、成百上千倍上萬倍流量被放大的一個效果,才適合作為一個拒絕服務攻擊效果。(實現攻擊者很小的流量打垮一個看似很大的被攻擊者)
對于主題Sockstress主要作用即:建立了連接,但是不傳數據,而且這個連接不會斷開,占用資源,最后導致拒絕服務攻擊
————————————————
Sockstress是2008年由Jack C. Louis發現的,其主要針對TCP服務的拒絕服務攻擊
目的在于:消耗被攻擊目標系統資源,但不消耗網絡帶寬資源,會產生大量TCP連接但不會產生大量流量;在與攻擊目標建立大量socket鏈接;當完成三次握手、最后的ACK包window大小為0(客戶端不接收數據)(再回數據的時候,客戶端與服務器端都會各自相對方確認自己的空間大小,防止雙方各自傳送內容過大,主要是流控的作用)
對于攻擊者的優勢:
1、攻擊者資源消耗小(CPU、內存、寬帶)
2、異步攻擊,單機可拒絕服務高配資源服務器
主要機理在于:window窗口實現的TCP流控(在第三次傳送ACK包的時候出現)
:利用流控的攻擊特性,造成攻擊:攻擊者將ACK包中的流控大小修改為0,然后促使ACK不停發向服務器,那么就會造成拒絕服務。在服務器看來就是客戶端暫時沒有空間來接受數據流量,所以服務器一直處于等待狀態;但是攻擊者只需要發完ACK包就行,不需要維持這么一個連接,所以對于攻擊者就不會消耗巨量的CPU內存、帶寬資源(以小搏大,放大)。
Sockstress防范
防御措施
-直到今天sockstress攻擊仍然是一種很有效的DoS攻擊方式 -甶于建立完整的TCP三步握手,因此使用syn cookie防御無效 -根本的防御方法是采用白名單(不實際)
-折中對策:限制單位時間內每IP建的TCP連接數
■封殺每30秒與80端口建立連接超過10個的IP地址
■iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
■ iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update -?seconds 30 --hitcount 10 -j DROP
■以上規則對DDoS攻擊無效
DNS放大攻擊
■產生大流量的攻擊方法
-單機的帶寬優勢
-巨大單機數量形成的流量匯聚
-利用協議特性實現放大效果的流量
■ DNS協議放大效果
-查詢請求流量小,但響應流量可能非常巨大
-digANYhp.com @202.106.0.20 (流量放大約8倍)
■攻擊原理
-偽造源地址為被攻擊目標地址,向遞歸域名查詢服務器發起查詢
-DNS服務器成為流量放大和實施攻擊者,大量DNS服務器實現DDoS
Scapy構造攻擊數據包
IP/UDP/DNS/DNS查詢內容
image.png
結合IP地址欺騙,利用大量DNS服務器做傀儡攻擊目標
總結
以上是生活随笔為你收集整理的python3ddos攻击_DDOS攻击的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php mysql ip_使用php和m
- 下一篇: D-CAP模式和DCS-control模