TCP Chargen DoS攻击及其对策
本文
============================================================
RFC0864中定义了chargen之服务,其UDP/TCP皆使用Port 19. UDP chargen server若收到
一个封包,就会回一个封包回去;而TCP chargen server若发现与client的连线存在,就会
不断的发送封包给client
UDP chargen范例:
[ccbsd7]/u/gcp/88/8817537 > echo "hello"│nc -u CHARGEN_SERVER 19
$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghi
?
TCP chargen范例:
[ccbsd7]/u/gcp/88/8817537 > telnet CHARGEN_SERVER 19
Trying 140.0.0.0...
Connected to haydn.ntu.edu.tw.
Escape character is '^]'.
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefg
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefgh
"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghi
#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghij
$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijk
%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijkl
&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklm
'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmn
()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmno
^C^]
telnet> c
Connection closed.
传统上,UDP chargen常被用来做为DDoS中放大网路流量之用.但是,其实TCP的chargen
也可拿来使用DoS之用,而且对於网路造成的影响更大.
攻击法:
使得Client端(如Outlook/Browser)连接一个URL,其中为有提供chargen/TCP的主机
http://CHARGEN_HOST:19/
攻击范例:
在html里置放自动会Load(使用Java/Script)之http://CHARGEN_HOST:19/之URL,则
此主机就会疯狂的透过http proxy server(如果此web browser有设定http proxy)
向CHARGEN_HOST主机抓取大量的资料.而CHARGEN_HOST可以由恶意程式中自动指定
或者使用Scanning技术来设定
原理:
当client连往port 19的TCP/chargen服务,主机就会回传大量的资料
再配合包装成http的型式,就可以让browser收到大量的封包而消耗大量的记忆体
攻击强度:
1)win2000的client端IE,每秒钟会被消耗超过1MB的Virtual Memory,也就是过了数百秒之後
此client就呈现反应迟钝,VM都被用光,然後Win2000会增大VM的大小,就会将C槽整个占满
在实际的测试中,会造成win2000无法进行图形的列印(因为无暂存磁碟空间)
2)client所使用的proxy也会被拖垮
3)可以搭配其它种的client端攻击使用
测试方法
若主机的Port 19有开启,则此主机可用来配合此种攻击
解决方法:
请关闭chargen服务或使用封包过滤器防火墙将Port 19封包过虑