概述
本文主要概述什么是chargen服務(wù)放大DOS攻擊。
詳細信息
什么是CHARGEN協(xié)議
CHARGEN字符發(fā)生器協(xié)議(Character Generator protocol)是一種簡(jiǎn)單網(wǎng)絡(luò )協(xié)議,設計的目的是用來(lái)調試TCP或UDP協(xié)議程序、測量連接的帶寬或進(jìn)行QoS的微調等。它的默認端口為19,分為基于TCP和UDP兩種方式。
TCP方式下建立連接后,服務(wù)器會(huì )不斷傳送任意字符到客戶(hù)端,直到客戶(hù)端關(guān)閉連接。
UDP方式下每當服務(wù)器收到客戶(hù)端的一個(gè)UDP數據包后,向客戶(hù)端返回一個(gè)數據包,長(cháng)度為0~512字節之間隨機值,數據包的負載可以是任意字符。
CHARGEN協(xié)議的設計初衷是為了網(wǎng)絡(luò )測試,并沒(méi)有嚴格的訪(fǎng)問(wèn)控制和流量控制機制,在UDP 模式下任何人都可以向開(kāi)放該服務(wù)的主機請求服務(wù),這種簡(jiǎn)單的請求\- 回復模式便為DDoS 攻擊者提供了便利。
DDoS Chargen攻擊原理
CHARGEN協(xié)議的設計初衷是為了網(wǎng)絡(luò )測試,并沒(méi)有嚴格的訪(fǎng)問(wèn)控制和流量控制機制,在UDP模式下任何人都可以向開(kāi)放chargen服務(wù)的主機請求服務(wù),這種簡(jiǎn)單的請求\回復模式使得攻擊者可以偽造源地址信息向chargen服務(wù)發(fā)送請求,而chargen服務(wù)并不會(huì )驗證源地址的真偽,會(huì )向源地址發(fā)送應答包,這導致該服務(wù)可被用來(lái)進(jìn)行DOS攻擊。
RFC 864中給出chargen應答包的建議大小不超過(guò)512字節,但是在實(shí)際實(shí)現過(guò)程中,這個(gè)大小并未被嚴格限制,根據實(shí)際測試,在Linux系統下,對于64 字節的無(wú)負載UDP chargen請求,系統回復一個(gè)1066字節的UDP應答報文,流量被放大了15倍,而在Windows系統下使用同樣的請求,回復的UDP應答報文長(cháng)度達3259 字節,并產(chǎn)生了分片,流量被放大了50 倍。這使得該服務(wù)可以被用來(lái)進(jìn)行放大DOS攻擊。
如何防護
受害者:由于 CHARGEN不是常用協(xié)議,因此對于這類(lèi)DDoS可以使用基于端口匹配的方法進(jìn)行檢測。發(fā)現對應的流量使用專(zhuān)業(yè)設備或者程序丟棄即可。
被利用者:確認系統是否必須開(kāi)放chargen服務(wù),如果不是必要服務(wù),請在系統中關(guān)閉該服務(wù),具體關(guān)閉的辦法如下所示。
Linux的關(guān)閉方法:在 /etc/xinetd.conf文件中注釋掉chargen服務(wù)或者在 /etc/xinetd.d/目錄下將chargen服務(wù)對應的文件中的disable屬性改為yes。
Windows的關(guān)閉方法:chargen服務(wù)屬于Windows系統中的 Simple TCP服務(wù),一般情況下Windows系統缺省不會(huì )安裝該服務(wù),如果已經(jīng)安裝該服務(wù),可以通過(guò)如下幾種方式關(guān)閉服務(wù)。
通過(guò)控制面板里的Service控制程序關(guān)閉,將 Simple TCP/IP service設置為禁用。
修改系統注冊表,將以下兩項表項的值設為0。
HKLM\System\CurrentControlSet\Services\SimpTCP\Parameters\EnableTcpchargen
HKLM\System\CurrentControlSet\Services\SimpTCP\Parameters\EnableUdpChargen
通過(guò)系統命令關(guān)閉chargen服務(wù),命令如下所示。
net stop simptcp
對于必須開(kāi)放chargen服務(wù)的主機,為避免被攻擊,建議使用防火墻限制訪(fǎng)問(wèn)該服務(wù)的來(lái)源。