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