Эта статья в значительной степени или полностью основана на одном источнике . ( октябрь 2015 г. ) |
Набор интернет-протоколов |
---|
Уровень приложения |
Транспортный уровень |
Интернет-уровень |
|
Связующий слой |
|
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
- Дневной протокол
- Протокол времени
Ссылки [ править ]
- ^ "NVD - CVE-1999-0103" . nvd.nist.gov . Проверено 5 февраля 2018 .
- ^ «Нарушение прав доступа в Dns.exe, вызванное вредоносной атакой Telnet» . Support.microsoft.com. 2006-11-01 . Проверено 31 мая 2009 . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Сервер MS DNS подвергается атаке отказа в обслуживании» . IT Pro . 1997-05-27 . Проверено 5 февраля 2018 .