Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Character Generator Protocol ( CHARGEN ) является служба протоколов Интернет определено в RFC  864 в 1983 году Джоном Постелем . Он предназначен для тестирования, отладки и измерения. Протокол используется редко, поскольку недостатки его конструкции допускают несанкционированное использование. [1]

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

Реализация Inetd [ править ]

На большинстве Unix-подобных операционных систем, сервер CHARGEN встроен в INETD или XINETD демона . Служба CHARGEN обычно не включена по умолчанию. Его можно включить, добавив следующие строки в файл /etc/inetd.conf и указав inetd перезагрузить его конфигурацию:

chargen stream tcp nowait root внутреннийchargen dgram udp ждать корень внутренний

Приложения [ править ]

Сервис CHARGEN может использоваться как источник байтового потока для отладки сетевого кода TCP для правильной проверки границ и управления буфером. Он также может быть источником общей полезной нагрузки для измерения полосы пропускания и / или точной настройки QoS. [ необходима цитата ] Хотя необходимо учитывать, активно ли аппаратное сжатие, так как выходные данные службы CHARGEN сжимаются легко и эффективно. Это сжатие может привести к тому, что тесты полосы пропускания будут сообщать о размере данных после распаковки, а не о фактическом объеме данных, переданных по сети.

Пример сеанса [ править ]

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

$ telnet localhost chargenПробуем 127.0.0.1 ...Подключен к localhost.Экранирующий символ - '^]'. ! "# $% & '() * +, -. / 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) * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnop* +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopq+, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqr, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrs-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ ]^_`abcdefghijklmnopqrst./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ ]^_`abcdefghijklmnopqrstu/ 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuv0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvw123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwx23456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxy3456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {56789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|6789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|} 89:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!9:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!":; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" #; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $<=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $%=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% &>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '? @ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '(@ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '()ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() *BCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +CDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +,DEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -EFGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -.FGHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. /GHIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0HIJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 01IJKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 012JKLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123KLMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 01234LMNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 012345MNOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456NOPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 01234567OPQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 012345678PQRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789QRSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:RSTUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789 :;STUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:; <TUVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:; <=UVWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:; <=>VWXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:; <=>?WXYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:; <=>? @XYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:; <=>? @ AYZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:; <=>? @ ABZ [\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:; <=>? @ ABC[\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:; <=>? @ ABCD\] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:; <=>? @ ABCDE] ^ _ `abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:; <=>? @ ABCDEF^ _`abcdefghijklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFG_`abcdefghijklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGH`abcdefghijklmnopqrstuvwxyz {|}!" # $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIabcdefghijklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJbcdefghijklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKcdefghijklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLdefghijklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMefghijklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNfghijklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOghijklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPhijklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQijklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRjklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSklmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTlmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUmnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVnopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWopqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXpqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYqrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZrstuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [stuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\tuvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\]uvwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^vwxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _wxyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _`xyz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _` ayz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _` abz {|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _` abc{|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _` abcd|}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _` abcde}! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _` abcdef ! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _` abcdefg! "# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _` abcdefgh"# $% & '() * +, -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _` abcdefghi^]telnet> выйтиСоединение закрыто.

Это продолжается до тех пор, пока TCP-соединение не будет закрыто, как показано на трассировке, путем завершения сеанса telnet.

Нарушение [ править ]

Служба была использована злоумышленниками при аварии Microsoft серверов доменных имен (DNS) под управлением Windows NT 4.0 по конвейеру произвольные символы прямо в порт прослушивания сервера DNS (телнет ntbox 19 | телнет ntbox 53). [2] [3] Однако атака могла быть признаком неправильного управления буфером со стороны службы DNS Microsoft и не имела прямого отношения к службе CHARGEN. [ необходима цитата ]

UDP CHARGEN обычно используется в атаках типа «отказ в обслуживании». Используя поддельный адрес источника, злоумышленник может отправить жертве трафик возврата от приложения UDP CHARGEN. UDP CHARGEN отправляет от 200 до 1000 раз больше данных, чем получает, в зависимости от реализации. Это «умножение трафика» также привлекательно для злоумышленника, поскольку оно скрывает IP-адрес злоумышленника от жертвы.

CHARGEN широко использовался в принтерах, подключенных к сети. Поскольку микропрограммное обеспечение принтеров редко обновлялось на старых моделях до того, как стало известно о ЗАРЯДКЕ и других проблемах безопасности, все еще может существовать множество подключенных к сети принтеров, которые реализуют протокол. Там, где они видны в Интернете, они неизменно используются как векторы отказа в обслуживании. Потенциальные злоумышленники часто сканируют сети в поисках источников ЗАРЯДА UDP-порта 19.

Доступность CHARGEN в принтерах настолько печально известна, что некоторые распределенные трояны отказа в обслуживании теперь используют UDP-порт 19 для своего атакующего трафика. Предполагаемая цель - сбить следователей с пути; чтобы они искали старые принтеры, а не испорченные компьютеры.

См. Также [ править ]

  • Парикмахерская
  • Эхо Протокол
  • Отменить протокол
  • QOTD
  • Дневной протокол
  • Протокол времени

Ссылки [ править ]

  1. ^ "NVD - CVE-1999-0103" . nvd.nist.gov . Проверено 5 февраля 2018 .
  2. ^ «Нарушение прав доступа в Dns.exe, вызванное вредоносной атакой Telnet» . Support.microsoft.com. 2006-11-01 . Проверено 31 мая 2009 . CS1 maint: обескураженный параметр ( ссылка )
  3. ^ «Сервер MS DNS подвергается атаке отказа в обслуживании» . IT Pro . 1997-05-27 . Проверено 5 февраля 2018 .