反射放大型DDOS即利用反射手段將分布式拒絕服務攻擊進一步放大,同時隱藏掉自己的身份,
我們需要先弄清其原理,從而更好的防護它,
接下來從三步走的方式弄懂反射放大型DDOS的原理、模擬和防止,
第一步: 原理
這種攻擊的原理有兩個,第一點是ddos是如何形成的?當然是利用某些協議的漏洞,對使用這種使用這些協議的設備進行控制,利用流量對目標進行高帶寬的打擊,迫使其服務終端,系統癱瘓,
第二點是反射,反射是指攻擊者并不直接攻擊目標服務IP,而是利用互聯網的某些特殊服務開放的服務器,通過偽造受害者的IP地址、向有開放服務的服務器發送構造的請求報文,該服務器會將數倍于請求報文的回復資料發送到受害者IP,從而將DDoS攻擊反射放大,
來看一下,一些特殊的協議漏洞在哪里?就網上已經開放的一些協議來說吧,比如Memcached,DNS,NTP,SNMP,SSDP這些,
- DNS:DNS協議分為請求包和回應包,根據服務端的配置會回傳回應的請求內容,通常只是實作IP和域名的對應,但同時DNS還支持檔案請求等,再加上支持迭代和遞回兩種請求,會使得資料包放大,最多可到512位元組,但是也由于這個限制,官方將DNS協議進行擴展,擴展后成為EDNS,這樣回應包可以帶更多資料,同時最大也能達到4096位元組,
- Memcached:類似于Redis,一種鍵值快取系統,對于11211埠開放、未設定訪問控制規則、使用root權限運行的mem服務器,可以通過set命令存鍵值對,而后用get獲取,只有鍵值差距較大,如鍵為一個字符,而值為1M,那么倍數最高達到一萬倍,
- NTP:這是一個時鐘校準協議,支持各種系統向服務器同步時間,而每個同步之后都會留有同步者的資訊,而固定指令會監控回應 NTP 服務器并且將其回傳進行時間同步的最近多個客戶端的IP地址,這樣的資料包也很大,
- SNMP:作為簡單網路管理協議,用戶可以通過申請獲得其管理的設備結構資訊,即OID相關,同樣資料包很大,
- SSDP:即插即用設備的協議,支持請求根節點下所有設備的資訊,同樣回應資料包可能很大,取決于設備數量,
第二步
在了解原理之后,其他手段可獲取相關服務器資源,本人抱著測驗的手段在鐘馗之眼簡單取了幾個IP測驗,結果均存在或大或小的回應資料包,具體的小段代碼如下:
ssdp_a = IP(src=target, dst=destination)
ssdp_b = UDP(sport=33326, dport=1900)
ssdp_16 = "\x4d\x2d\x53\x45\x41\x52\x43\x48\x20\x2a\x20\x48\x54,,,,具體省略"
packet_data = ssdp_a / ssdp_b / ssdp_16
packet_data.show()
threading.Thread(target=receive, args=(destination,)).start()
threading.Thread(target=senddata, args=(packet_data,)).start()
通過python3的一個第三方庫scapy,可以簡單的構造資料包,這樣便可以根據協議漏洞構造資料包并發送,通過測驗的一個效果圖如下:


第三步:防范
每個協議都存在這樣的情況,多余的圖就不放了,同時構造資料包時通過修改源IP,導致服務器的回應IP為目標IP,造成了反射效果,放大效果在50-500倍之間不等,而這樣的一個防范策略呢,自然是服務器端針對協議漏洞進行配置,具體建議如下:
(1)Memcached服務可在配置服務器時禁止UDP傳輸;
(2)DNS服務可在配置時關閉遞回查詢功能;
(3)NTP服務器可升級到4.2.7p26或者更高的版本,或關閉當前NTP服務器的monlist功能[15];
(4)SNMP服務器可以禁用snmpbulkget請求命令;
(5)對于不需要使用UPnP服務的設備關閉SSDP服務;
(6)在非必要的情況下,關閉AD域服務器的rootDSE功能,此未防范LDAP協議的ddos;
(7)在服務器上通過變更服務埠或限制請求IP來進行防范,
轉載請注明,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/265851.html
標籤:其他
上一篇:21/3/3 面試-招銀
