September 22, 2017, Friday, 264

UDP Flood

出自TYRC

跳轉到: 導覽, 搜尋

UDP flooding偵測系統

桃園區網中心 楊素秋


目錄

壹. 動機

隨著網路頻寬的快速提升、網路應用的多元化、個人裝置(BYOD)的普及,用戶對網路傳輸品質的要求更高、更殷切. 感染botnet網路主機數量也快速成長, 發動real-time 的UDP flooding 攻擊,虛耗大量網路頻寬、或製造大量socket 連結或封包, 對連網品質的維持有更大的威脅.


過去,區網維運團隊發展的Cloud-based FDNS [1]藉由 Hadoop library , 已能在極短的時間分析區網骨幹 router 的龐大Netflow封包轉送紀錄,找出發送超量PortScan、Spam Mail、破解密碼異常的源端主機.


而排除網路壅塞的實際經驗也告訴我們: 超量UDP flooding 攻擊對網路運作的影響遠遠大於 PortScan、Spam Mail、破解密碼等異常行為. 因此, 維運團隊乃利用 Cloud-based FDNS的雲端運算基礎,擴增UDP flooding偵測功能,輔助管理人員快速找到real-time UDP flooding攻擊源頭,攔阻或排除攻擊流量,避免網路壅塞.

貳. UDP Flooding攻擊特徵

(一) 因架設AppServ 遭botnet 感染的UDP 攻擊

2013年5月份, 中央校園異常訊務偵側與通告系統[1,2] 陸續偵測到 UDP flooding 攻擊, 特徵是: UDP封包數目超大量,且封包都是Ethernet 最大封包: 足足的 1500 bytes/ packet. 只要一個 IP 主機出現此類行為,整個系所樓管的對外網路,都出現雍塞. 學校同學抱怨連連. 其後歸納出來的結論是AppServ 網站 phpMyAdmin/scripts/setup.php 的漏洞[3] 造成主機受駭成為 Botnet成員,受控發動的 UDP Flooding 攻擊.

因此, UDP flooding偵測系統的第一條 篩選規則 : 假如 src_IP 送出的封包大小 (pkz_out) 大於 1495, 且 對外連接數目 (cnt_out) 大於 10000 ,便將加總該 src_IP 的 sum_in, sum_out, cnt_in, cnt_out, pkt_in, pkt_out, pkz_in, pkz_out 寫到資料庫紀錄.


List<Udprate_min> the_udprates = searchUdprates_min(udprate_rip); //

…     
 if (the_udprates !=null) {
        for (Udprate_min  udprate_temp :  the_udprates) {
            int udprate_id= udprate_temp.getId();
                 // dur = udprate_temp.getDur();
                 sum_in = udprate_temp.getSum_in();
                 sum_out = udprate_temp.getSum_out();
                 rate_in = udprate_temp.getRate_in();
                 rate_out = udprate_temp.getRate_out();
                 cnt_in = udprate_temp.getCnt_in();
                 cnt_out = udprate_temp.getCnt_out();
                 pkz_in = udprate_temp.getPkt_in();
                 pkz_out = udprate_temp.getPkt_out();
                 pkt_in = 0;
                 pkt_out = 0;
                 // long dur_tmp = udprate_temp.getDuration();
                 // long weight_tmp = udprate_temp.getWeight();
                 created = udprate_temp.getCreated();

                 // AppServ
                  if (pkz_out >= 1495 && cnt_out > 10000 ) {
                    rule_2 ++; // php_vul
                    type += "AppServ:";
                    weight  ++;
                 }
   }
}
…


(二) 未關Chargen服務, 遭botnet 感染的UDP 攻擊


1. 關掉 chargen service .(19/udp 19/tcp port) 2. 就不會回應 attack requests.


原始 NetFlow 紀錄

140.115.xx.y21   76.14.231.149    17    19       33674    1500        1
140.115.xx.y21   76.14.231.149    17    19       42411    723         1
140.115. xx.y21   76.14.231.149    17    19       64011    1500        1
140.115. xx.y21   172.248.185.159  17    19       42419    735         1
140.115. xx.y21   76.14.231.149    17    19       29733    735         1
140.115. xx.y21   177.102.152.226  17    19       52046    745         1
140.115. xx.y21   172.248.185.159  17    19       7381     1500        1
140.115. xx.y21   172.248.185.159  17    19       31965    801         1
140.115. xx.y21   172.248.185.159  17    19       48735    1500        1
140.115.xx.y21   177.102.152.226  17    19       51257    811         1
140.115.xx.y21   172.248.185.159  17    19       24869    1500        1

參. 篩選規則

rule_1 : bw_flooding if (volume > 3 GB)

rule_2 : portscan / DDoS attack if ((pkz_out < 60 && pkz_in < 60) && (cnt_out > 80000 || cnt_in > 80000) )

rule_3 : udp_flooding if (pkz_out >= 1000 && cnt_out > 1000000 )

rule_4 : php_vulnerable if (pkz_out >= 1495 && cnt_out > 10000 )

rule_5 : packet_flooding if (pkt_out >= 20000000 ) // 20M packets per 10-min

rule_6 : flow_flooding if (flow_out >= 5000000 ) // 5M connections per 10-min




肆. flooding 攻擊流量

伍. 結語

  桃園區網中心以IPS設備提供之 Botnet 感染主機資訊.實作一簡單的中介系統, 自動 擷取 IPS 的Botnet感染紀錄、萃取 主機IP address, query Rwhoisd server,取得負責網管人員訊紀錄、並 email 通告負責網管人員協助用戶清理主機.

為追蹤 Botnet感染主機之處理狀況,系統整合 Zk framework與 Google Morphia 及儲存於資料庫的紀錄,實作 Botnet 查詢介面與 Botnet感染主機數量統計圖, 提供使用者觀察單月的Botnet主機通告量變化、 查詢Botnet主機通告紀錄,觀看Botnet 排除狀況.結合連線學校網管人力利用此工具,對抗 Botnet 大軍快速蔓延的威脅.