CHARGEN (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.
См. также
[править | править код]Примечания
[править | править код]- ↑ Access Violation in Dns.exe Caused by Malicious Telnet Attack . Support.microsoft.com (1 ноября 2006). Дата обращения: 31 мая 2009. Архивировано из оригинала 3 июля 2012 года.