Максимальная Безопасность:

Руководство Хакера по Защите Вашего Internet Сайта и Сети

Предыдущая главаСледующая главаСодержание


29

Основанные На Telnet Нападения

Эта глава исследует нападения разработанные за годы использования службы Telnet. Это изучение начинается с небольшой истории. Протокол Telnet был сначала всесторонне определен Postel'ем в 1980. В RFC 764, Postel писал:

Цель протокола Telnet состоит в том, чтобы обеспечить довольно общее, двунаправленное, восьмиразрядное байт ориентированное средство связи. Его основная цель состоит в том, чтобы позволить стандартный метод связи с помощью интерфейса терминальных устройств и ориентируемых на терминал процессов друг с другом. Это предполагает, что протокол может также использоваться для терминал-терминал связи ("соединения") и связи процесс-процесс (распределенное вычисление).

Ссылка: RFC 764 может быть найден в Web на
http://sunsite.auc.dk/RFC/rfc/rfc764.html.

Telnet

Как я упоменал в Главе 6, "Краткое Введение в TCP/IP", Telnet уникальна в её проекте с известным исключением rlogin. Telnet разработана, чтобы позволить пользователю войти на внешнюю машину и выполнять на ней команды. Telnet (подобно rlogin) работает, как если бы Вы работали с консоли удалённой машины, как будто Вы физически приблизились к удалённой машине, включил её и начали работать.


ПРИМЕЧАНИЕ: Пользователи ПК могут получить впечатление об этом с точки зрения PCAnywhere или CloseUp. Эти программы позволяют Вам дистанционно войти в другой ПК и выполнять команды в C: приглашении удалённой машины (или даже выполнять команды в Windows, если Вы имеете очень высокоскоростное подключение, чтобы передать графику по проводу).

Виртуальный Терминал

Волшебство в Telnet состоит в имитации подключения ASCII терминалов между двумя машинами, расположенными на больших расстояниях друг от друга. Это выполняется с помощью виртуального терминала, как описано Postel'ем в этой выборке из RFC 854:

Когда подключение Telnet установлено, каждый конец принято, чтобы порождать и прерываться в "Сетевой Виртуальный Терминал" или NVT. NVT это мнимое устройство, которое обеспечивает стандартное, межсетевое, промежуточное представление канонического терминала ... Сетевой Виртуальный Терминал (NVT) это двунаправленное символьное устройство. NVT имеет принтер и клавиатуру. Принтер отвечает на входящие данные, и клавиатура производит исходящие данные, который посылаются по Telnet подключению и, если "отображение на экране" желательно, также на принтер NVT. "Отображение на экране" не будет ожидаться, чтобы пересечь сеть (хотя опции существуют, чтобы допустить "удалённому" режиму работы отображения на экране, никакой узел не требует реализации этой опции). Кодовый набор семиразрядный USASCII в восьмиразрядном поле, кроме как изменяется здесь. Любое преобразование кода и соображения синхронизации локальные проблемы и не затрагивают NVT.

Ссылка: Читайте RFC 854 полностью на
http://sunsite.auc.dk/RFC/rfc/rfc854.html.

Виртуальный терминал эквивалентен (по крайней мере по виду) аппаратного последовательного подключения между двумя машины. Например, Вы можете моделировать кое-что очень похожее на сессию Telnet, не комментируя respawn команды в файле inittab на машине Linux (и большинстве других машин UNIX) или, разъединяя монитор и клавиатура на SPARC и подключая VT200 терминал в последовательный порт А или B. В первом случае, появляется приглашение входа в систему login:. В втором, все сообщения процесса загрузки отображаются на экране на связанном терминале и в конечном счёте появляется приглашение login: (или возможно, если диск SCSI определен как устройство загрузки в ППЗУ, машина загрузит и выдаст приглашение ко входу в систему login:.

Поэтому, Telnet-основанные подключения состоят в том, что называется пустые подключения. Вы обратите внимание, что, если Вы используете VT220 терминал как головку для вашей SPARC, что, когда загрузка происходит, крутая эмблема Солнца не напечатана в цвете, и крутая графика, связанная с этим, не появится. Telnet и терминальные сессии полностью основаны на тексте. Кроме того, подключения Telnet не имеют средств, чтобы интерпретировать ориентированные на визуальный вывод данных языки типа HTML без помощи основанного на тексте броузера типа Lynx. Поэтому, получая Web страницу через Telnet не покажет никакие изображения или приятно форматировал текст; это покажет только источник документа (если, конечно, Вы не вошли через Telnet и теперь не используете Lynx).


ПРИМЕЧАНИЕ: Lynx это полностью основанный на терминале HTML броузер для использования с учётной записью оболочки или даже DOS версией TCP/IP подключения. Это упрощенный способ обращения к Всемирной Сети.

История Безопасности Telnet

Telnet неожиданно возникала в консультациях по безопасности много раз. Проблемы безопасности Telnet изменяются значительно, с большим количеством уязвимостей, всплывающих из-за ошибок программирования. Однако, ошибки программирования не единственная причина почему Telnet появилась в консультациях. В августе 1989, например, проблема была в троянской программе, как объясняет консультация CERT "Telnet Break-in Warning" ("Предупреждение о Останове Telnet"):

Многие компьютеры, связанные с Internet, недавно испытали неавторизованные действия операционной системы. Исследования показали, что деятельность происходила в течение нескольких месяцев и распространяется. Несколько компьютеров UNIX имели свои программы "Telnet" незаконно замененные версиями "Telnet", которые регистрируют исходящие сессии входа в систему (включая имена и пароли пользователей к удалённым системам). Кажется, что доступ был получен ко многим машинам, которые появились в некоторых из этих log-файлов сессии.

Ссылка: Чтобы просмотреть эту консультацию CERT полностью, посетите
ftp://ftp.uwsg.indiana.edu/pub/security/cert/cert_advisories/CA-89:03.telnet.breakin.warning.

Такое нападение происходило только до учреждения Координационного Центра Безопасности DDN (сентябрь 1989), так имеется небольшая документация о том, воздействовало ли оно на правительственные компьютеры. Также, хотя усилия CERT оценены для Безопасности Internet, консультации DDN иногда содержат более технический анализ проблемы.

В марте 1991 было обнаружено, что telnetd демон в некоторых дистрибутивах Sun испорчен. Как отмечает консультация CERT "SunOS in.telnetd Vulnerability" ("SunOS in.telnetd Уязвимость"):

Компьютерная Чрезвычайная Группа Реагирования/Координационный Центр (CERT/CC - Computer Emergency Response Team/Coordination Center) получила информацию от Sun Microsystems относительно уязвимости, воздействующей на SunOS 4.1 и 4.1.1 версии in.telnetd на всех архитектурах Sun 3 и Sun 4. Эта уязвимость также воздействует на SunOS 4.0.3 версии in.telnetd и in.rlogind на всех архитектурах Sun 3 и Sun 4. Как мы знаем, уязвимость не существует в SunOS 4.1 и 4.1.1 версии in.rlogind. Уязвимость была исправлена Sun Microsystems.

Ссылка: Чтобы увидеть эту консультацию CERT полностью, посетите
ftp://info.cert.org/pub/cert_advisories/CA-91%3A02a.SunOS.telnetd.vulnerability.


СОВЕТ: Если Вы купили старую Sun 3/60 по Сети, Вы захотите получить заплаты, которые включены в предыдущую консультацию.

Месяцами позже было определено, что специализированное приложение LAT/Telnet, разработанное Digital Corporation испорчено. Как объясняет консультация CERT "ULTRIX LAT/Telnet Gateway Vulnerability" ("ULTRIX LAT/Telnet Шлюзовая Уязвимость"):

Уязвимость такова, что системы ULTRIX 4.1 и 4.2, выполняющие LAT/Telnet шлюзовое программное обеспечение могут позволить неавторизованный привилегированный доступ ... Любой, кто может получить доступ к терминалу или модемному соединению с сервером LAT, выполняющим службу LAT/Telnet, может получить неавторизованные корневые привилегии.

Ссылка: Чтобы просмотреть эту консультацию CERT полностью, посетите
ftp://info.cert.org/pub/cert_advisories/CA-91%3A11.Ultrix.LAT-Telnet.gateway.vulnerability.

Первая проблема Telnet, которая встала перед средним человеком, была связана с дистрибутивом клиента Telnet NCSA для машин Macintosh и ПК. Здесь нет никакого недоразумения, клиентское приложение Telnet включало в себя FTP сервер. Дыра создавалась прежде всего от слабого понимания пользователями работы приложения. Как ясно сформулировано людьми из DDN:

Конфигурация по умолчанию Telnet NCSA для Macintosh и ПК имеет серьёзную уязвимость в реализации FTP сервера ..., любой пользователь Internet может соединяться через FTP с ПК или Macintosh, выполняющим конфигурацию по умолчанию Telnet NCSA и получать неавторизованный доступ на чтение и запись любого из его файлов, включая системные файлы.

Проблема была связана с опцией файла конфигурации, в которой можно было включить или отключить FTP сервер. Большинство пользователей предполагало, что, если инструкция, включающая сервер, не присутствует, то сервер не работает. Это было ошибкой. Опуская строку (или добавляя опцию ftp=yes), пользователь позволял доступ на чтение и запись неавторизованным личностям к файлам на вашем жёстком диске.

Я надеюсь, что это решит аргумент относительно того, мог ли пользователь ПК быть атакован из вне. Так много станет обсуждений в Usenet по этой проблеме. Неудача Telnet NCSA была только одна из многих ситуаций, в которых пользователь ПК или Mac мог быть атакован из пустоты. Так в зависимости от обстоятельств, средний пользователь дома на своём ПК может быть жертвой нападения из вне. Люди могут читать ваши файлы, удалять их, и т.д.

Более интересно, что даже сегодня, использование приложения Telnet NCSA несёт некоторый риск, даже если только позволить доступ к FTP серверу так называемым уполномоченным личностям. Если взломщик может получить от адресата допустимое имя пользователя и пароль (и взломщик, следовательно, уполномоченный пользователь), он может затем получить файл FTPPASS. Это аутентифицирующий файл, где сохранены имена и пароли пользователей. Зашифрованные пароли в этом файле легко взломать.

Имя пользователя в этом файле не сохраняется в зашифрованной форме (в действительности, некоторые программы шифруют имена пользователей). Пароль зашифрован, но схема шифрования очень плохо реализована. Например, если пароль меньше шести символов, для взлома потребуется всего несколько секунд. Фактически, взлом этих паролей настолько тривиален, что можно это сделать 14-ти строчной программой на Бейсике.


Ссылка: Программа на Бейсике, которая взламывает пароли, может быть найдена на
http://www.musa.it/gorgo/txt/NCSATelnetHack.txt.

Если Вы пользователь Mac или ПК, в настоящее время использующий Telnet NCSA (с FTP сервером), отвергните весь FTP доступ любому, кому Вы не доверяете. Если Вы не учтёте это предупреждение, то можете быть взломанным. Вообразите сценарий, когда единственный индивидуум в сети использует Telnet NCSA. Даже если остальная часть сети достаточно безопасна, в целом сеть не безопасна. Кроме того, приложение не выполняет регистрацию (в обычном смысле) и поэтому не остаётся никакого следа. Любая сеть, выполняющая это приложение, может быть атакована, заблокирована, или разрушена, и никто не сможет идентифицировать злоумышленника.

Наиболее интересная дыра Telnet, из когда-либо обнаруженных, тем не менее, связана с опцией передачи переменной окружения. Бюллетень DDN по этой дыре был зарегистрирован 20 ноября, 1995:

Уязвимость существует в некоторых версиях демона Telnet, которые поддерживают RFC 1408 или 1572, и озаглавлены "Telnet Environment Option" ("Опция Среды Telnet"), при выполнении в системах, которые поддерживают общедоступные объектные библиотеки ... Локальные и удалённые пользователи с и без локальных учётных записей могут получать корневой доступ к целевой системе.

Много сайтов страдают от этой уязвимости. Чтобы понять проблему, Вы должны понять термин среда. В народной UNIX это, обычно, относится к среде оболочки (то есть какую оболочку Вы используете по умолчанию, какую эмуляцию терминала Вы используете, и т.д.).


ПРИМЕЧАНИЕ: Пользователи DOS/Windows могут наиболее легко понямать это, думая о некоторых из выражений в их файлах AUTOEXEC.BAT и CONFIG.SYS. Например, переменные установленные командой SET, как SET PATH=C:\;C:\WINDOWS; (переменная окружения PATH одна из нескольких, которая может быть определена в среде DOS). Эти инструкции определяют то, какой будет ваша среда программирования, когда Вы входите в командный режим. Некоторые общие переменные окружения, которые могут быть установлены таким способом, это оболочка, которую Вы используете, путь, часовой пояс, и т.д.

Изменение Среды

В UNIX Вы можете просматривать или изменять среду, используя команды setenv и printenv. Вот пример того, что можно увидеть при такой команде:

> setenv

ignoreeof=10
HOSTNAME=samshacker.samshack.net
LOGNAME=tr
MINICOM=-c on
MAIL=/spool/mail/samshack
TERM=ansi
HOSTTYPE=i386-linux
PATH=/usr/local/bin:/bin:/usr/bin:.:/sbin:/usr/sbin:.
HOME=/usr/local/etc/web-clients/samshacker/./
SHELL=/bin/bash
LS_OPTIONS=--8bit --color=tty -F -T 0
PS1=\h:\w\$
PS2=>
TAPE=/dev/nftape
MANPATH=/usr/local/man:/usr/man/preformat:/usr/man:/usr/X11/man:/usr/openwin/man
LESS=-MM
OSTYPE=Linux
OPENWINHOME=/usr/openwin
SHLVL=2
BASH=/bin/bash
LS_COLORS=
_=/bin/csh
PWD=/usr/local/etc/web-clients/samshacker/./
USER=tr
HOST=samshack

Эта распечатка очень обширный вывод команды на машине, на которой был установлен виртуальный домен. Более управляемая (и более легко объясняемая) версия может быть получена на пустой оболочке машины. Вот вывод:

samshacker% /usr/ucb/printenv
HOME=/home/hacker
HZ=100
LOGNAME=hacker
MAIL=/var/mail/hacker
PATH=/usr/bin:
SHELL=/sbin/sh
TERM=ansi
TZ=US/Pacific
PWD=/home/hacker
USER=hacker

Этот вывод со SPARCstation 10 на котором я установил ложную учётную запись оболочки (первый вывод был с машины Linux). Это очень упрощенная среда. Выражение PATH (строка 6) указывает только на /usr/bin. Практически, это непрактично, потому что в UNIX системе есть намного больше двоичных образов чем те, которые расположены в /usr/bin. Например, имеются двоичные образы, расположенные в /usr/sbin, /usr/bin/X11 и т.д. Вы можете видеть, например, даже данная команда (setenv) была выдана с абсолютным путём (/usr/ucb/setenv). Практически, я (за день или около того) устанавливаю намного более длинный путь, указывая на man страницы, двоичные образы, и возможно даже включаемые каталоги.


ПРИМЕЧАНИЕ: Выражение PATH работает почти так же, как и в DOS. Каталоги, которые Вы намереваетесь поместить в пути, должны быть ясно сформулированы в строке выражения PATH и отделены двоеточиями (вместо точек с запятой). Ясно сформулировав это в строке PATH, Вы даёте пользователю обращаться к командам в этих каталогах (независимо от того, в каком каталоге пользователь расположен в настоящее время).

Эмуляция Терминала

Другие переменные в предшествующих выражениях включают HOME, MAIL, SHELL и TERM. TERM, одна из наиболее важных переменных, которая выражает тип эмуляции терминала, который Вы будете использовать. Поскольку не все читатели знают, что такое эмуляция терминала, я хочу быстро объяснить это.

Годы назад, большинство серверов были мэинфреймами. В те дни пользователи не имели мощные ПК соединённые с мэинфреймом; они имели терминалы, которые были (обычно) машинами без жёстких дисков. Это были экраны, объединённые с клавиатурами. Позади терминалов был ряд разъёмов, которые предлагали различные методы подключения. Один популярный метод был поверхностное последовательное подключение (более просто: прямой интерфейсу последовательный к последовательному). Другие терминалы могли быть жёстко подключены к Ethernet.

В любом случае, эти терминалы имели очень небольшие функциональные возможности (по крайней мере по сравнению со средним ПК). На основной плате такого терминала была маленькая часть памяти и программируемого оборудования (программное обеспечение, аппаратно включённое непосредственно в плату). Это программируемое оборудование предоставляла пользователю несколько опций. Например, можно было устанавливать скорость и тип подключения, потребность в локальном эхе, и т.д. Иногда, были опции, чтобы установить тип принтера, который мог бы использоваться, или даже с какого порта должны послаться данные.


СОВЕТ: Такие терминалы всё ещё продаются некоторым группам новостей Usenet. Если Вы студент с ограниченными фондами, и Вам предоставили некоторую форму Ethernet или даже последовательное подключение с сервером вашего колледжа, и если эта учётная запись сервера - учётная запись оболочки, получите терминал. За $25-40 Вы можете получить высокоскоростной доступ к Internet. Правда, Вы не можете обычно сохранять материалы на диск, но можете печатать тот, который в настоящее время на экране. Вы не поверите, как быстро экран модифицируется. Это абсолютно идеальная ситуация для Релейного Разговора по Internet (IRC). Эти машины маленькие, дешёвые и быстрые.

Два лучше всего известных терминала были Tektronix 4010 и VT100 (также IBM 3270, который немного отличен от них). Каждый имел набор символов и строк на экране, которые могли отображаться. Фактически, большинство терминалов обычно имели две установки. Поскольку терминалы стали довольно модными, можно было даже устанавливать количество столбцов и, в конечном счёте, графику (Tektronix был ориентирован на графику).

Поскольку эти терминалы стали стандартным методом связи с мэинфреймами, они также просочились в мир UNIX. Также, все операционные системы UNIX имеют отображения клавиатуры и экрана для терминалов. Отображения это описания установок экрана и клавиатуры (например, сколько строк и столбцов на экране или, что более важно, какие последовательности Ctrl клавиш представляют специальные символы). Они требуются, потому что некоторые терминалы используют больше клавиш, чем предлагает стандартная клавиатура ПК или Mac. В дополнение к постоянной клавиатуре пишущей машинки и функциональным клавишам F, могут иметься клавиши P, которые выполняют специальные действия, включая активацию меню и передвижения экранного курсора в базах данных. Чтобы восполнить это на ПК, Mac, или даже на некоторых клавиатурах UNIX, определены Esc или Ctrl последовательности. Это комбинации нажатий клавиш, которые равнозначны клавише P. Эти назначения клавиш называются привязки клавиш, которые являются инструкциями, сделанными в программе, кодирующими что случается, если выполнена та или иная ключевая комбинация. Привязки клавиш это основная часть программирования, особенно в C, когда Вы предлагаете полу графический интерфейс (например, когда Вы используете известные TurboVision библиотеки Borland, чтобы создать раскрывающиеся меню в DOS приложении).

В программе можно обычно определять привязки клавиш (по крайней мере, в хорошо написанной). Это даёт пользователю контроль прикладного уровня над тем, какие клавиши что делают. Например, возможно пользователь может установить привязку клавиши Ctrl плюс символ F, чтобы выполнять разнообразные функции. Некоторые специализированные приложения фактически просят, чтобы пользователь сделал так перед первым запуском программы. Есть одна такая программа, freeware редактор для UNIX, написанный в Германии, который позволяет Вам полностью переназначить клавиатуру.

В UNIX, терминальные отображения обычно сохраняются в файле termcap. Termcap библиотека, по сообщениям поставляемая с Berkeley UNIX, является очень важным добавлением к системе. Без неё многие машины не смогли бы хорошо связываться друг с другом. Например, если Вы выполните новую установку операционной системы Linux и не измените переменную TERM, она будет установлено в Linux. Если Вы затем посылаете telnet запрос к SPARCstation (или другой машине, которая так же имеет значение по умолчанию конфигурации TERM), то не сможете очистить экран известной командой clear. Это так, потому что две установки эмуляции терминала несовместимы. Кроме того, если Вы попробуете выполнить программу типа PINE, которая полагается на совместимые типы терминалов, программа выйдет с ошибкой, сообщая, что терминал не поддерживается. (SysV системы традиционно используют terminfo в противоположность termcap.)


ПРЕДОСТЕРЕЖЕНИЕ: Многие дистрибутивы UNIX имеют законченные termcap списки, которые иногда содержат сотни эмуляций терминала. Если Вы плохо знакомы с UNIX и имеете идею изменить termcap, будьте чрезвычайно осторожны. Вы можете получить причудливые результаты. В некоторых случаях текст, который когда-то был приятно отформатирован, может казаться странным, бессвязным, разрозненным блоком слов, которые значительной степени неразборчивы. Изучите man страницу перед игрой с файлом termcap.

Может быть установлено много различных переменных окружения. Эти переменные могут строго влиять на то, как удалённая машина получает, обрабатывает и поддерживает ваше удалённое Telnet подключение. Таким образом, протокол Telnet был разработан, чтобы позволить принятие некоторых переменных окружения во время связи. Как объяснено в RFC 1408:

Многие операционные системы имеют информацию запуска и переменные окружения, содержащие информацию, которая должна быть размножена удалённым машинам, когда установлены Telnet подключения. Вместо того чтобы создавать новую опцию Telnet, каждый раз когда кто-то придумывает некоторую новую информацию, которую необходимо размножить через сессию Telnet, но сессии Telnet неважно знать о ней, эта универсальная информационная опция может использоваться.

Ссылка: Чтобы просмотреть RFC 1408 полностью, посетите
http://sunsite.auc.dk/RFC/rfc/rfc1408.html.

Недавняя дыра в безопасности Telnet была основана на возможности сервера Telnet получать, отвечать и разрешать принятие этих переменных окружения. Поскольку эта опция была настолько очевидна в UNIX системе, невероятное число платформ были уязвимы этому нападению.

Эта уязвимость более общая, чем можно было бы ожидать. В довольно увлекательном отчёте одна фирма, Novatech, послала результаты фактической ревизии безопасности сети с 13 узлами. В нём фигурирует уязвимость Telnet, также как и 138 других дыр. Наиболее удивительно то, что сайт уже был оценен как имеющий чистое здоровье, завершённое брандмауэром. Как отмечает выборка отчёта о ревизии Novatech:

Это копия фактического отчёта о нападении с определениями и возможными исправлениями фактически найденных проблем. Сеть имела установленный качественный брандмауэр и была проверена CERT. Как Вы можете видеть было много маленьких проблем, а также множество больших. Это не было ошибкой администрации систем, а недостаток постоянного внимания и знания того, как злоумышленники получают доступ (область специалиста). Мы способны проверить вашу систему почти на 390 различных форм уязвимостей доступа, из которых Internet только типичный доступ.

Ссылка: Для тех, кто имеют "давайте ждать и смотреть" отношение к безопасности, я предлагаю посетить немедленно этот сайт и просмотреть результаты. Они удивительны. Смотрите результаты ревизии на
http://www.novatech.net.au/sample.htm.

Строка, которая показывает уязвимость опции среды Telnet, выглядит следующим образом:

Dynamic Linker Telnet Vulnerability [High Risk]2

Эта строка сообщает, что уязвимость Telnet имеет высокую категорию риска (в ревизии, цитируемой предварительно, эта уязвимость была найдена на двух узлах в одной подсети). [High Risk]2 относится к уровню риска, который дыра представляет. Эта уязвимость чрезвычайно высокого риска. Помните, она была найдена на узле с современным брандмауэром!

Чтобы понять метод, Вы должны понять точно, какие опции могут быть переданы от клиента серверу. Одна из них включает принятие заказной libc.


ПРИМЕЧАНИЕ: libc это стандартная библиотека для C. Полный дистрибутив libc обычно содержит включаемые и заголовочные файлы для использования в программировании на C. Все разновидности UNIX имеют (или должны иметь) установленной эту библиотеку. Она необходима для компилирования программ, написанных на языке программирования C.

Как отмечает Sam Hartman из MIT в своей статье "Telnet Vulnerability: Shared Libraries" ("Уязвимость Telnet: Общедоступные Библиотеки"):

Проблема состоит в том, что telnetd позволяет клиенту передавать LD_LIBRARY_PATH, LD_PRELOAD и другие опции компоновщика времени выполнения в среду процесса, который выполняет вход в систему.

Ссылка: Найдите статью Hartman'а в Web на
http://geek-girl.com/bugtraq/1995_4/0032.html.

Передавая опция среды LD_LIBRARY_PATH на сервер, взломщик может добавлять к его пути поиска файлов заказной каталог (и следовательно заказную библиотеку). Это может изменить процесс динамической связи, существенно увеличивая возможности компромитизации корня.


ПРИМЕЧАНИЕ: Hartman отметил, что, если адресат использовал Kerberos-знающий telnetd, только пользователи с допустимой учётной записью на удалённой машине могут фактически осуществлять нападение. Я предполагаю, однако, что большинство машин не используют такие средства безопасности Telnet.

Одно интересное примечание об этой дыре: Было определено, что можно идентифицировать сессии Telnet, в которых переменные окружения были переданы выполнением команды ps. Однако, один индивидуум (Larry Doolittle) определил, что на некоторых разновидностях UNIX (особенно Linux) one has to be root to ID those processes. В ответ на отчет Hartman'а Doolittle рекомендует:

Недавние ядра Linux не позволяют доступ к строкам среды через ps, за исключением самого пользователя. То есть /proc/*/environ защищен 400. Это может смутить людей, прочитающих ваши команды, так как они будут видеть среды для их собственного процесса, но не корня. Чтобы проверить строки среды входа в систему, Вы должны выполнить ps как корень.

Ссылка: Найдите статью Larry Doolittle'а в Web на
http://geek-girl.com/bugtraq/1995_4/0042.html.

Вот заплаты для различных дистрибутивов telnetd:

ftp://ftp.service.digital.com/public/osf/v3.2c/ssrt0367_c032
ftp://ftp.ox.ac.uk/pub/comp/security/software/patches/telnetd/
ftp://ftp.ox.ac.uk/pub/comp/security/software/patches/telnetd/linux/telnetd
http://www.io.com/~ftp/mirror/linux/redhat/redhat/updates/i386/NetKit-B-0.09-1.1.i386.rpm
ftp://sgigate.sgi.com/security/

ПРИМЕЧАНИЕ: Хотя для этой проблемы были выпущены заплаты, некоторые другие связанные с Telnet модули и программы могут всё ещё вызывать проблемы. Уже в феврале 1997, in.telnetsnoopd сообщала об уязвимости в передаче LD_PRELOAD на некоторых платформах, включая Linux. Для этой проблемы по сообщениям есть заплата, и она была передана на ftp://sunsite.unc.edu.

Разнообразные Telnet имеют не особенно безопасный протокол. Можно легко подслушивать сессии Telnet. Фактически, имеется утилита, названная tty шпион, предназначенный для этой цели. Как описывает её автор, Carl Declerck:

[ttynsoop] позволяет Вам подглядывать за входом в tty через другое устройство tty или псевдо-tty. tty-шпион становится "аналогом" первоначального телетайпа, переадресовывая ввод и вывод от/на него.

Ссылка: README Declerck'а для ttysnoop 0.12 (альфа) может быть найден в Web на
http://ion.apana.org.au/pub/linux/sources/admin/ttysnoop-0.12.README


ПРИМЕЧАНИЕ: ttysnoop не просто специфичный для Telnet шпион; он подглядывает за телетайпом, не за протокол Telnet. Сетевой перехватчик подобный sniffit может также использоваться (и вероятно более подходящ) для перехвата протокола Telnet.

Сессии Telnet также особенно чувствительны. Одна причина состоит в том, что эти сессии часто проводятся по образцу прыжков по островам. То есть пользователь может посылать Telnet запрос к одной сети, чтобы привести в порядок свою Web страницу. Оттуда пользователь может посылать Telnet запрос другой машине, дальше следующей машине и так далее. Если взломщик может подглядывать за такой сессией, он может получить идентификаторы и пароли входа в другие системы.

Разве Эти Нападения Больше не Эффективны?

Нет; это прежде всего благодаря недостатку образования. Нападение на опции среды, описанное предварительно, весьма эффективно на многих системах в пустоте. Это так даже притом, что консультации о нападении с готовностью доступны в Internet.

Telnet Как Оружие

Telnet интересный протокол. Как объяснено ранее, можно изучить много всего, используя Telnet. Например, Вы можете получить версию работающей операционной системы. Большинство дистрибутивов UNIX сообщает эту информацию при подключении. Сообщено, по крайней мере, одним авторитетным источником, что различные сканеры используют информацию при соединении, чтобы идентифицировать тип системы (SATAN один из таких сканеров). Операционная система может обычно быть определена нападением на любой из этих портов:


ПРИМЕЧАНИЕ: Хотя я перечислил только пять портов, можно соединяться с большинством TCP/IP портов, инициализируя сессию Telnet. Некоторые из этих портов останутся в полностью пассивном состоянии, в то время как подключение активно, и пользователь ничего не будет видеть. Например, это так с портом 80 (HTTP). Однако Вы можете выдавать совершенно допустимые запросы к порту 80, используя Telnet, и если эти запросы допустимы, порт 80 ответит. (Запрос не обязательно должен быть допустимым. Выдача ошибочной интрукции GET выявит живой ответ от Web сервера, если запрос достаточно уродлив.)

В известном теперь документе "Improving the Security of Your Site by Breaking Into It" ("Улучшении Безопасность Вашего Сайта Вторжением В Него"), Dan Farmer и Wietse Venema указывают порты, которые могут быть атакованы. Специально, они адресуют проблему порта 6000:

X Window находится обычно на порту 6000 ..., если он не защищённый должным образом (через механизмы волшебного cookie или xhost), отображённые окна могут быть захвачены или наблюдаться, нажатия клавиш пользователя могут быть захвачены, программы выполнятся дистанционно, и т.д. Также, если адресат выполняет X и принимает Telnet запросы на порту 6000, это может использоваться для нападения отказ в обслуживании, поскольку система управления окнами адресата будет часто "зависать" в течение короткого периода времени.

Ссылка: "Improving the Security of Your Site by Breaking Into It" может быть найден в Web на
http://stos-www.cit.cornell.edu/Mark_html/Satan_html/docs/admin_guide_to_cracking.html

В документе Farmer и Venema много нападений осуществлялись только с Telnet или вместе с другими программами. Одно такое нападение включает X терминал:

X Терминалы это обычно бездисковые клиенты. Это машины, которые имеют незначительный минимум аппаратного и программного обеспечения, чтобы соединяться с X сервером. Они чаще всего используются в университетах и состоят из 17 или 19 дюймового экрана, ядра, клавиатуры и мыши. Терминал обычно поддерживает минимум 4 мегабайта ОЗУ, но некоторые содержат целых 128 мегабайт. X терминалы также имеют клиентское программное обеспечение, которое позволяет им соединяться с сервером. Как правило, подключение осуществляется через быструю Ethernet, аппаратно связанной с терминалом. X Терминалы обеспечивают высокоскоростную связность с X серверами, вместе с высокопроизводительной графикой. Эти машины продаются в Internet, а также делаются большие "дополнительные" терминалы для использования дома. (Они особенно хороши для обучения.)

Методика X терминала Farmer-Venema использует комбинацию rsh и Telnet, чтобы произвести скоординированное нападение. Методика включает накопление нескольких команд. Взломщик использует rsh, чтобы соединиться с X терминалом и вызвать клиентскую программу Telnet X терминала. Наконец, вывод переадресовывается на локальный терминал взломщика по средствам определения опции или переменной DISPLAY.

Другая интересная вещь, для которой может использоваться Telnet, это возможность немедленного определения, является ли адресат реальным или виртуальным доменом (это может быть сделано по средствам других методов, но ни один не выполняет эту функцию так быстро). Это может помочь взломщику в точном определении, какую машину он должен взломать, чтобы достигнуть ваших ресурсов или, более точно, какую машину он использует во взломе.

При нормальных обстоятельствах, реальный домен это домен, который был зарегистрирован в InterNIC, а также имеет свой собственный выделенный сервер. Где-нибудь в пустоте есть машина с постоянным IP адресом, и она постоянно соединена с Internet через 28.8Kbps модем, ISDN, 56Kbps модем, передачу кадра, T1, T3, ATM, или возможно, если владелец не экономит расходы, SONET. Также, когда Вы посылаете Telnet запрос к такому реальному сайту, то достигаете этой машины и никакой другой.

Виртуальные домены, однако, являются просто каталогами на реальном сервере, связанном псевдонимом с конкретным доменным именем. То есть Вы платите некоторому ISP, чтобы зарегистрировать ваше доменное имя и создать каталог на его диске, где будет ваш виртуальный домен. Эта методика позволяет ваша_компания.com подменять реальный сервер. Таким образом, когда пользователи указывают своим броузерам на www.ваша_компания.com, они достигают сервера ISP. Сервер ISP переадресовывает запрос на подключение к вашему каталогу на сервере. Эта схема виртуального домена популярна по нескольким причинам, включая стоимость. Она охраняет вашу компанию от неприятности установки реального сервера и поэтому устраняет некоторые из этих расходов:

В основном, Вы платите один раз (и затем ежемесячно) и ISP обрабатывают всё. Взломщикам это может быть важно. Например, если взломщики собираются взломать ваш домен, не определяя, является ли ваша машина истинно сервером, они могут получить неприятности. Они думают, что взламывают некоторую небольшую машину в вашем офисе, когда фактически, они собираются напасть на большого, известного сетевого провайдера.

Telnet немедленно показывает состояние вашего сервера. Когда взломщик инициализирует Telnet подключение к ваша_компания.com (и при соединении видит имя машины, как узла в некоторой другой, большой сети), он немедленно знает, что ваш адрес виртуальный домен.

Кроме того, Telnet может использоваться для других низких целей. Одна из популярных атак это атака решение "в лоб". Я не уверен, почему нападения в лоб настолько популярны среди молодых взломщиков; почти все серверы в наши дни осуществляют некоторую форму регистрации. Однако методика выжила в 1990-ых. Эти нападения чаще всего инициализируются, используя клиенты Telnet, которые имеют собственный встроенный язык создания сценариев. Tera Term одно такое приложение.

Tera Term имеет язык, который позволяет Вам автоматизировать Telnet сессии. Этот язык может использоваться, чтобы создать сценарии, которые могут определять допустимые имена пользователей в системе, которая отказывается выдавать информацию через запросы sendmail-expn или finger. Версии Telnet показывают эту информацию разнообразными путями. Например, если выдать поддельное имя пользователя, подключение будет оборвано. Однако, если дать допустимое имя пользователя, будет выдана новая приглашение login:.


Ссылка: Tera Term может быть найдно в Web на
http://tucows.phx.cox.com/files/ttermv13.zip.

Кроме того, Telnet это прекрасный инструмент для быстрого определения, является ли конкретный порт открытым или выполняет ли сервер конкретную службу. Telnet может также использоваться как оружие в нападениях отказ в обслуживании. Например, посылая мусор к некоторым портам на NT Web сервере под IIS может привести к 100 процентой загрузке процессора. Инициализизация сессии Telnet к другим портам на NT Web сервере может привести машину к зависанию или останову. Это особенно так при выдаче запроса на Telnet подключение к порту 135.


Ссылка: Исправление этой проблемы, выпущенное Microsoft, может быть найдено на
ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/usa/nt40/hotfixes-postS

Можно также привести к отказу Информационный Сервер Internet Microsoft посылая Telnet запрос к порту 80 и выдавая запрос GET.../.... По сообщениям, однако, эта проблема была исправлена в Сервисном Пакете Microsoft Windows NT 2 для Windows NT 4.0. Если Вы не имеете этого заплаты/сервисного пакета, получаете его. Хорошее исправление этой и других проблем может быть найдено в сообщении Denial of Service Info, посланного Chris Klaus из Систем Безопасности Internet. В нём Klaus пишет:

Служба совместного использования файлов включённая и доступная любому может привести к отказу машины NT и к её перезагрузке. Эта методика, использующая точка... точка ошибку машины Windows 95 потенциально позволяет любому получать доступ к целому жёсткому диску ... Решение: Эта уязвимость зарегистрирована в Базы Знаний Microsoft в статье под номером Q140818 последней ревизии 15 марта, 1996. Необходимо установить самый последний сервисный пакет для версии 3.51 Windows NT. Самая последняя заплата находится в сервисном пакете 4.

Ссылка: Посетите собщение Denial of Service Info на
http://geek-girl.com/bugtraq/1996_2/0052.html.


ПРИМЕЧАНИЕ: Эта уязвимость была только в Информационном Сервере Internet 2.0 сервера Всемирной Сети (HTTP). Более поздние версии IIS по сообщениям чисты.

Наконец, Telnet часто используется, чтобы генерировать fakemail и fakenews. Спаммеры часто используют эту опцию вместо использования регулярных средств посылки сообщений в Usenet. Имеются некоторые опции, которые могут быть установлены, и разрешающие спаммерам избегать, по крайней мере, некоторых экранов, созданных уничтожающих спам роботами в сети Usenet.

Итог

Telnet очень универсальный протокол и, с некоторым усилием, он может быть сделан безопасным. (Я лично одобряю SSH как замену ему, поскольку он предотвращает от подглядывающих сессий Telnet.) Однако, Telnet не всегда безопасен вне машины. Если Вы используете старое программное обеспечение (перед 1997), проверьте были ли установлены соответствующие заплаты.

Telnet может также использоваться в разнообразных нападениях или другом сборе информацию от удалённого узла (некоторые из них обсуждаются в этой главе). Ко времени, когда эта книга будет выпущена, всплывут намного больше методов Telnet нападения. Если Вы выполняете сеть и намереваетесь предоставить вашим пользователям доступ к Telnet, остерегайтесь. Это особенно так на новых Telnet серверах. Эти новые серверы могут иметь ошибки, которые ещё не были обнаружены. И, так как Telnet настолько интерактивен и предлагает пользователю так много мощи в выполнении команд на удалённых машинах, что любая дыра в дистрибутиве Telnet критическая. Он в этом отношении стоит в той же самой категории, что и FTP или HTTP (или возможно даже выше).

Ресурсы

Sendmail Bug Exploits List (Список Используемых Ошибок Sendmail). Объяснение методов нападения на sendmail. Некоторые из этих методов используют Telnet, как основное приложение.

Improving the Security of Your Site by Breaking Into It (Улучшение Безопасности Вашего Сайта Вторжением в Него). Dan Farmer и Wietse Venema.

The Telnet Protocol Specification (RFC 854) (Спецификация Протокола Telnet (RFC 854)). J. Postel и J. Reynolds. Май 1983.

The Telnet Environment Option (RFC 1408) (Опция Среды Telnet (RFC 1408)). D. Borman, Редактор. Cray Research, Inc. Январь 1993.

Telnet Environment Option (RFC 1572). (Опция Среды Telnet (RFC 1572)). S. Alexander.

Telnet Authentication: SPX (RFC 1412) (Аутентификация Telnet: SPX (RFC 1412)). K. Alagappan.

Telnet Remote Flow Control Option. (RFC 1372) (Удалённая Опция Управления Потоком Telnet. (RFC 1372)). C. Hedrick и D. Borman.

Telnet Linemode Option (RFC 1184) (Опция Линейного Режима Telnet (RFC 1184).). D.A. Borman.

The Q Method of Implementing Telnet Option Negotiation (RFC 1143) (Q Метод Реализации Переговорной Опции Telnet (RFC 1143)). D.J. Bernstein.

Telnet X Display Location Option (RFC 1096) (Опция Местоположения X Дисплея Telnet (RFC 1096)). G.A. Marcy.

Telnet Binary Transmission (RFC 856) (Двоичная Передача Telnet (RFC 856)). J. Postel и J.K. Reynolds.

Remote User Telnet Service (RFC 818) (Служба Удалённого Пользователя Telnet (RFC 818).). J. Postel.

Discussion of Telnet Protocol (RFC 139) (Обсуждение Протокола Telnet (RFC 139)). T.C. O'Sullivan. К сожалению, этот RFC больше не доступен в онлайне.

First Cut at a Proposed Telnet Protocol (RFC 97) (Первый Разоез Предложенного Протокола Telnet (RFC 97)). J.T. Melvin и R.W. Watson. К сожалению, этот RFC больше не доступен в онлайне.

The Telnet Authentication Option (Опция Аутентификации Telnet). Internet Проект Инженерной Оперативной Группы Internet. Группа Telnet Работ. D. Borman, Редактор. Cray Research, Inc. Февраль 1991.

Telnet Authentication: Kerberos Version 4 (RFC 1411) (Аутентификация Telnet: Kerberos Версия 4 (RFC 1411)). D. Borman, Редактор. Cray Research, Inc. Январь 1993.

STEL: Secure Telnet (STEL: Безопасный Telnet). Доступный для шифрования Telnet. David Vincenzetti, Stefano Taino и Fabio Bolognesi.

Session-Layer Encryption (Шифрование Сеансового Уровня). Matt Blaze и Steve Bellovin. Слушания Симпозиума Безопасности Usenix, июнь 1995.

Attaching Non-TCP-IP Devices with Telnet (Присоединение не TCP-IP Устройств с Telnet). Stefan C. Johnson. Системная Администрация: Журнал для Администраторов UNIX Систем. Июнь 1996.

Secure RPC Authentication (SRA) for Telnet and FTP (Безопасная Аутентификация RPC (SRA) для Telnet и FTP). David K. Hess, David R. Safford и Douglas Lee Schales. Слушания Четвёртого Симпозиума Безопасности Usenix, Суперкомпьютерный Центр, Техасский Университет A&M, 1993.

Internetworking with TCP/IP Vol. 1: Principles, Protocols and Architecture (Межсетевая Организация с TCP/IP Том 1: Принципы, Протоколы и Архитектура). Douglas Comer. Prentice Hall. 1991.

Terminal Hopping (Прыгающий Терминал). Karen Bannan. Пользователь Internet Журнала ПК – CRT, Версия 1.1.4 (01/30/97).

Telnet & Terminal Emulation (Telnet и Эмуляция Терминала). Пользователь Internet Журнала ПК. Январь 30, 1997.

EFF's (Extended) Guide to the Internet--Telnet ((Расширенное) Руководство EFF по Internet – Telnet). Adam Gaffin. Mining the Net, Часть I.


Предыдущая главаСледующая главаСодержание


Macmillan Computer Publishing USA

Macmillan Computer Publishing.



Все мессаги сюда:yanich@inbox.ru
Hosted by uCoz