CHARGEN

CHARGEN (Character Generator Protocol) — это служба стека протоколов TCP/IP, определённая в RFC 864 в 1983 году Джоном Постелом. Она предназначена для тестирования, измерения и отладки.

Узел сети может установить соединение с сервером, поддерживающим Character Generator Protocol с использованием TCP или UDP через порт 19. После открытия TCP-соединения, сервер начинает отправлять клиенту случайные символы и делает это непрерывно до закрытия соединения. В UDP-реализации протокола, сервер отправляет UDP-датаграмму, содержащую случайное (от 0 до 512) количество символов каждый раз, когда получает датаграмму от узла. Все полученные сервером данные игнорируются.


Реализации Inetd

На большинстве UNIX-подобных операционных систем сервер CHARGEN встроен в демон-программу Inetd (или XInetd). Служба CHARGEN, как правило, по умолчанию недоступна. Она может быть подключена путём добавления следующих строк в файл /etc/inetd.conf и перезагрузкой конфигурации Inetd:

chargen   stream  tcp     nowait  root    internal
chargen   dgram   udp     wait    root    internal

Приложения

Служба CHARGEN может быть использована как источник потока байтов для отладки кода, использующего TCP-сеть. Также, она может быть использована как источник трафика для измерения пропускной способности сети и тонкой настройки QoS, хотя эффективность такого использования сомнительна если включено аппаратное сжатие данных, так как вывод службы CHARGEN сжимается легко и эффективно. Из-за сжатия тесты пропускной способности могут сообщать размер данных после декомпрессии вместо реального размера переданных данных.

Пример сессии

Типичная сессия службы CHARGEN выглядит примерно следующим образом: 1. Пользователь подключается к узлу, используя клиент Telnet. 2. Пользователь принимает поток байтов. Хотя в RFC 864 не описан определенный формат вывода, рекомендуемый формат вывода (по стандарту де-факто) — сдвигающиеся строки из 72 повторяющихся символов ASCII.

$ telnet localhost chargen
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh
"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi
#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij
$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk
%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl
&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm
'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn
()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno
)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop
*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq
+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr
,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs
-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst
./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv
^]
telnet> quit
Connection closed.

Это продолжается до закрытия соединения TCP, как показано выше завершением сессии Telnet.

Злоупотребление

Служба была злонамеренно использована, чтобы обрушить сервера MS DNS под управлением Microsoft Windows NT 4.0 путём передачи произвольных символов прямо в прослушивающий порт (telnet ntbox 19 | telnet ntbox 53) DNS-сервера.[1] Впрочем, атака была предположительно следствием неправильного управления буфером DNS-сервером Microsoft и не имеет прямого отношения к службе CHARGEN.

См. также

Примечания

  1. Access Violation in Dns.exe Caused by Malicious Telnet Attack. Support.microsoft.com (1 ноября 2006). Дата обращения 31 мая 2009. Архивировано 3 июля 2012 года.