Как проверить сетевое соединение. Что такое Telnet

03.11.2023 Принтеры и сканеры

  • Системное администрирование
  • Недавняя крупнейшая DDoS атака на DNS-серверы компании Dyn на Хабре . Особенностью этого блэкаута стала широкое применение http запросов c IoT устройств и открытый 23-й tcp порт, используемый службой telnet .


    Оказывается, телнет жив и хорошо устроился на встроенных системах и приманках. По злому-ли умыслу или человеческому недомыслию что это, глупость или измена? telnet порт был открыт и вовсю гадил у огромного количества IoT устройств, за несколько месяцев до блэкаута, но контр-мер не принимали, пока гром не грянул.

    Теоретический минимум

    Уязвимость CVE-2016-1000245 - это просто караул. На всех девайсах один и тот же рутовый пароль xc3511, который нельзя изменить так как на системе нет команды passwd . Служба telnet включена и из настроек никак не отключается, разве что удалить инит скрипт из /etc/init.d/rcS .


    /etc $ cat passwd root:absxcfbgXtb3o:0:0:root:/:/bin/sh /etc $ cat passwd- root:ab8nBoH3mb8.g:0:0::/root:/bin/sh
    All internet-capable XiongMai Technology boards running the DVR/NVR CMS (Also known as
    NetSurveillance) enable the telnet service to run on the primary ethernet interface. This service
    is run via /etc/rcS and cannot be disabled. The user "root" has a hardcoded and immutable
    password of xc3511. These systems do not have the "passwd" tool installed and the root
    password cannot be changed from command line nor from the web interface.

    Уязвимость CVE-2016-1000246 не уступает первой. Можно обойти ввод учетной записи и пароля, если зайти через http:///DVR.htm .


    Many known XiongMai DVRs, NVRs and IP Cameras run "CMS" (also called NetSurveillance) built by XM Technologies. This software is also used by all downstream vendors of XiongMai Technologies. The login page for these devices can be bypassed by simply changing the from http://_IP_/Login.htm to http://_IP_/DVR.htm . This allows you access to view all the camera systems without authentication. Furthermore, there is no logging on the system so user management is not possible. The web-server version on all affected products is the same; “uc-httpd”. All products currently affected by CVE-2016-1000245 are also vulnerable to the authentication bypass.

    Надеюсь, что в наших аэропортах не установлены эти самые XiongMai и Dahua .

    Итоги

    Телнет оказался очень живуч и даже спустя десятилетия после появления ssh не спешит покидать сцену. Он вполне пригоден, даже полезен, если его использовать по назначению - в пределах прямой видимости между клиентом и сервером. Дело, однако в том, что телнет вырвался на волю из серверной, как джин из бутылки и уже начал пошаливать. По чьей вине это случилось?


    С моего забора вижу так. Во-первых , основная вина на горе-производителях дырявых IoT устройств и встроенных систем. Все эти XiongMai и Dahua . С опозданием, но производитель отзывает из продажи IP-камеры . Однако, беглый обзор новостей показывает, что PR-отделы китайских компаний и сотрудники министерства коммерции не даром едят свой хлеб.


    Мне это отделение известно! Там кому попало выдают паспорта!

    Во-вторых , конечно виноваты регулирующие органы - те, кто их сертифицирует и дает положительное заключение. Из отчета Rapid7.


    These results all speak to a fundamental failure in modern internet engineering. Despite calls from the Internet Architecture Board, the Internet Engineering Task Force, and virtually every security company and security advocacy organization on Earth, compulsory encryption is not a default, standard feature in internet protocol design. Cleartext protocols “just work,” and security concerns are doggedly secondary.

    В-третьих , подрядчики и интеграторы, которые засадили весь мир этими CCTV камерами.
    Если не принять законодательные меры, регулирующие ИТ безопасность интернет-утюгов и видеокамер, то блэкауты станут все чаще и круче, как кайдзю.





    P. S. Пока набирал текст, возникло сильное желание - проверить домашний роутер nmap-ом и прочими инструментами. Проверил и успокоился, но видимо ненадолго.

    Использованные материалы

    1. W. Richard Stevens TCP/IP Illustrated, Volume 1, The Protocols, 1994.

    Теги:

    • linux
    • telnet
    • botnet
    • honeypot
    Добавить метки

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

    Эта утилита очень часто использовалась для удаленного управления компьютером с Linux, но потом ей на замену пришел защищенный протокол SSH. Но telnet все еще используется, например, для тестирования сети, проверки портов, а также для взаимодействия с различными IoT устройствами и роутерами. В этой статье мы рассмотрим что такое telnet, а также как пользоваться telnet для решения своих задач.

    Что такое Telnet?

    Как я уже сказал, эта утилита предназначена для создания интерактивного соединения между удаленными компьютерами. Она работает по протоколу TELNET, но этот протокол поддерживается многими сервисами, поэтому ее можно использовать для управления ими. Протокол работает на основе TCP, и позволяет передавать обычные строковые команды на другое устройство. Он может использоваться не только для ручного управления но и для взаимодействия между процессами.

    Для работы с этим протоколом мы будем использовать утилиту telnet, ею очень просто пользоваться. Давайте рассмотрим синтаксис telnet:

    $ telnet опции хост порт

    Хост – это домен удаленного компьютера, к которому следует подключиться, а порт – порт на этом компьютере. А теперь давайте рассмотрим основные опции:

    • -4 – принудительно использовать адреса ipv4;
    • -6 – принудительно использовать адреса ipv6;
    • -8 – использовать 8-битную кодировку, например, Unicode;
    • -E – отключить поддержку Escape последовательностей;
    • -a – автоматический вход, берет имя пользователя из переменной окружения USER;
    • -b – использовать локальный сокет;
    • -d – включить режим отладки;
    • – режим эмуляции rlogin;
    • -e – задать символ начала Escape последовательности;
    • -l – пользователь для авторизации на удаленной машине.

    Это все, что касается команды telnet для установки соединения. Но соединение с удаленным хостом, это только полдела. После установки подключения telnet может работать в двух режимах:

    • Построчный – это предпочтительный режим, здесь строка текста редактируется на локальном компьютере и отправляется только тогда, когда она будет полностью готова. На такая возможность есть не всегда и не у всех сервисов;
    • Посимвольный – все набираемые вами символы отправляются на удаленный сервер. Тут будет сложно что-либо исправить, если вы допустили ошибку, потому что Backspace тоже будет отправляться в виде символа и стрелки движения тоже.

    Использование telnet заключается в передаче специальных команд. У каждого сервиса свои команды, но у протокола есть свои команды telnet, которые можно применять в консоли telnet.

    • CLOSE – закрыть соединение с сервером;
    • ENCRYPT – шифровать все передаваемые данные;
    • LOGOUT – выйти и закрыть соединение;
    • MODE – переключить режим, со строчного на символьный или с символьного на строчный;
    • STATUS – посмотреть статус соединения;
    • SEND – отправить один из специальных символов telnet;
    • SET – установить значение параметра;
    • OPEN – установить подключение через telnet с удаленным узлом;
    • DISPLAY – отобразить используемые спецсимволы;
    • SLC – изменить используемые спецсимволы.

    Мы не будем рассматривать все команды, поскольку они вам вряд ли понадобятся, а если и понадобятся, то вы легко сможете их найти в официальной документации.

    Как пользоваться telnet?

    Дальше мы рассмотрим как использовать telnet для решения ваших задач. Обычно, утилита уже установлена в большинстве систем, но если это не так, то вы можете установить telnet из официальных репозиториев, например, в Ubuntu:

    $ sudo apt install telnet


    Для этого не обязательно применять telnet, есть ping.

    2. Проверка порта

    C помощью telnet мы можем проверить доступность порта на узле, а это уже может быть очень полезным. Чтобы проверить порт telnet выполните:

    $ telnet localhost 123 $ telnet localhost 22

    $ telnet localhost 123

    $ telnet localhost 22


    В первом случае мы видим, что соединение никто не принимает, во втором же выводится сообщение об успешном подключении и приветствие SSH сервера.

    3. Отладка

    Чтобы включить режим отладки и выводить более подробную информацию во время работы используйте опцию -d во время подключения:

    $ sudo telnet -d localhost 22

    $ sudo telnet - d localhost 22

    4. Консоль telnet

    Использование консоли telnet тоже важный момент в разборе как пользоваться telnet. В основном режиме вы можете выполнять команды, на удаленном сервере, если же вы хотите адресовать команду именно telnet, например, для настройки ее работы, необходимо использовать спецсимвол для открытия консоли, обычно утилита сразу говорит вам что это за символ, например, по умолчанию используется “^[“:


    Для его активации вам нужно нажать сочетание клавиш Ctrl+[, затем вы уведите приглашение ввода telnet.

    Чтобы посмотреть все доступные команды, вы можете набрать?. Например, вы можете посмотреть статус подключения:

    telnet> status

    telnet > status


    Здесь есть и другие интересные возможности. Такие вещи можно проделывать при любом подключении с помощью утилиты telnet.

    5. Посмотреть сайт telnet

    Один из распространенных способов использования telnet – это тестирование сайта из консоли. Да, красивую веб-страницу вы не получите, но можете вручную собрать запросы и видеть все переданные сервером данные.

    $ telnet opennet.ru 80

    $ telnet opennet . ru 80


    Затем наберите команду веб-серверу.

    Обсуждение подопций

    Некоторые опции требуют большего количества информации, нежели просто "включить" (enable) или "выключить" (disable). Например, установка типа терминала: для того чтобы клиент мог идентифицировать тип терминала, он должен отправить ASCII строку. Чтобы обработать эти опции, применяется обсуждение подопций.

    RFC 1091 определяет подопции, которые необходимо обсудить для установки типа терминала. Во-первых, одна сторона (обычно клиент) просит включить опцию, отправляя 3-байтовую последовательность

    где 24 (десятичное) это идентификатор опции типа терминала. Если получатель (сервер) говорит ДА, его ответ будет выглядеть как

    Затем сервер посылает

    спрашивая о типе терминала клиента. SB это команда, которая сообщает о начале подопций (suboption-begin). Следующий байт равный 24 указывает на то, что это подопция типа терминала. (SB всегда следует за номером опции, к которой относятся подопции.) Следующий байт равный 1 означает "отправьте ваш тип терминала". Перед командой конец подопций (suboption-end) должен опять стоять IAC, так же как и перед командой SB. Клиент отвечает командой

    в случае, если его тип терминала ibmpc. Четвертый байт равный 0 означает "у меня следующий тип терминала". ("Официальный" список приемлемых типов терминалов находится в Assigned Numbers RFC, однако для Unix систем приемлем любой тип терминала, поддерживаемый сервером. Обычно это терминалы, поддерживаемые базами termcap или terminfo.) Типы терминалов, указываемые в подопциях Telnet, пишутся большими буквами и обычно преобразуются в маленькие буквы уже сервером.

    Команды Telnet позволяют связаться с удаленным компьютером, использующим протокол Telnet. Можно выполнить команду telnet без параметров для входа в контекст Telnet, обозначенный в командной строке Telnet (Microsoft Telnet>). В командной строке Telnet используйте команды Telnet для управления компьютером, на котором выполняется клиент Telnet.

    Командная строка клиента Telnet принимает следующие команды.

    Команда Описание
    open Синтаксис: openимя_узла . Используется для установки соединения с узлом по протоколу Telnet
    close Команда close используется для закрытия существующего соединения по протоколу Telnet
    display Команда display используется для просмотра текущих параметров клиента Telnet
    send Команда send используется для отправления команд на сервер Telnet. Поддерживаются следующие команды: ao Отменяет команду ввода ayt Команда «Вы на месте?» esc Отправляет текущий управляющий знак ip Прерывает выполнение команды обработки synch Выполняет операцию синхронизации Telnet brk Отправляет сигнал разрыва Любые другие команды, отличные от указанных выше, отправляются на сервер Telnet как строка. Например, команда sendabcd отправит строку abcd на этот сервер, который отобразит строку в окне сеанса Telnet
    quit Команда quit используется для выхода из клиента Telnet
    set Команда set с одним из следующих аргументов используется для настройки клиента Telnet в текущем сеансе. bsasdel Назначает удаление последнего символа в качестве удаления параметр codeset Параметр доступен, если установлен японский язык. Используется для задания кодовой страницы в ключе параметр, который может принимать одно из следующих значений:
    • Shift JIS
    • Japanese EUC
    • JIS Kanji
    • JIS Kanji (78)
    • DEC Kanji
    • NEC Kanji
    Необходимо назначить такую же кодовую страницу на удаленном компьютере. По умолчанию для клиента Telnet используются точечные шрифты. Перед получением доступа к удаленному компьютеру, на котором применяется одна из этих кодовых страниц, следует настроить клиент Telnet на работу со шрифтами TrueType для гарантии правильного отображения символов crlf Новый линейный режим, который определяет клавишу ВВОД как 0x0D, 0x0A delasbs Назначает удаление в качестве удаления последнего символа escapeсимвол Переключение из режима сеанса Telnet в режим команд Telnet. Для возврата в режим сеанса в режиме команд следует нажать клавишу ВВОД localecho Включает режим локального отображения команд logfileимя Указывает имя файла, в который записывается журнал Telnet для данного сеанса. Если путь к файлу не указан, он создается в текущей папке. Задание файла журнала включает его ведение logging Включает ведения журнала для данного сеанса mode {console | stream} Режим работы ntlm Включает проверку подлинности NTLM term {ansi | vt100 | vt52 | vtnt} Тип терминала, который необходимо эмулировать клиенту Telnet ? Отображает справочные сведения для команды set
    unset Команда unset используется для отключения параметров, предварительно заданных с помощью команды set
    status Команда status позволяет определить, подключен ли компьютер, на котором выполняется клиент Telnet
    ? или help Отображает справочные сведения


    ВОПРОСЫ ДЛЯ ЗАЩИТЫ:

    1. Принципы, положенные в основу взаимодействия про протоколу Telnet(NVT,договорные опции, симметричность)

    2. Как происходит согласование формы представления данных в Unix-системах

    3. NVT(основные функции, как определен в Telnet, буферезирован или небуферезирован

    4. Команды управления терминалом. Краткая характеристика.

    5. Синхронизация в Telnet.

    6. Формат команды.Пример

    7. Программа-сервер(telnetd).Принцип работы.

    8. Программа-клиент(telnet).Режимы работы. Основные команды режима командной строки.

    9. Объяснить на своем примере принцип договорных опций/подопций.

    Протокол прикладного уровня TELNET (от англ. TE rminaL NET work) - сетевой протокол для реализации текстового интерфейса по сети. Название telnet получили также клиентские программы реализации данного протокола, практически для всех существующих операционных систем. Протокол Telnet – один из старейших сетевых протоколов, разрабатывавшихся как средство связи между удаленными терминалами в тестовом режиме. Поэтому в нем не предусмотрено шифрование данных и использование современных средств проверки подлинности. Протокол уязвим для множества сетевых атак, и не может использоваться в качестве средства управления сетевыми операционными системами. В настоящее время, для удалённого доступа к системе применяется сетевой протокол SSH (Secure SHell), при создании которого упор делался именно на вопросы безопасности. Относительная безопасность сессий Telnet осуществляется только в полностью контролируемой сетевой среде или с применением защиты на сетевом уровне (различные реализации VPN - виртуальных частных сетей). Тем не менее, TELNET по-прежнему применяется для управления специализированными сетевыми устройствами (Коммутаторами, роутерами и т.п.), а также для сетевой диагностики, выполнения отладки и изучения других текст-ориентированных (telnet-like) протоколов на основе транспорта TCP. Современный стандарт протокола Telnet описан в RFC 854.

    В современных ОС семейства Windows, утилита telnet.exe по умолчанию, не устанавливается. Для ее установки нужно перейти в Панель управления - Программы и Компоненты – Включение или отключение компонентов Windows и установить галочку для Клиент Telnet . Или в командной строке, запущенной от имени администратора, выполнить команду:

    pkgmgr /iu:"TelnetClient"

    Формат командной строки:

    telnet [-a][-e Символ][-f Файл][-l Имя][-t Тип][Узел [Порт]]

    Параметры командной строки:

    -l Имя пользователя для входа в удаленную систему при условии, что поддерживается параметр TELNET ENVIRON.

    -a Попытка автоматического входа в систему. Как и ключ -l, но использует текущее имя пользователя, под которым выполнен вход в систему.

    -e Служебный символ переключения режима ввода в окне telnet-клиента.

    -f Имя файла журнала на стороне клиента. В русскоязычной справке этот параметр неверно трактуется как Файл_входа - “Имя файла со стороны клиента для выполнения входа в систему”.

    -t Тип telnet-терминала. Поддерживаются 4 типа терминалов: vt100, vt52, ansi и vtnt.

    Узел Имя узла или IP-адрес удаленного компьютера, к которому выполняется подключение. Порт Номер порта или имя службы. Если номер не задан, то используется стандартный порт Telnet 23\TCP

    При запуске без параметров, утилита переходит в режим ожидания ввода команд:

    Добро пожаловать в программу-клиент Microsoft Telnet

    Microsoft Telnet>

    При вводе символа ? или help отображается справочная инвормация:

    Команды могут быть сокращены. Поддерживаемыми командами являются:

    c - close - закрыть текущее подключение

    d - display - отобразить параметры операции

    o - open имя_узла [Порт] - подключиться к сайту (по умолчанию, Порт = 23)

    q - quit - выйти из telnet

    set - set - установить параметры ("set ?" для вывода их списка)

    sen - send - отправить строки на сервер

    st - status - вывести сведения о текущем состоянии

    u - unset - сбросить параметры ("unset ?" для вывода их списка)

    ? /h - help - вывести справку

    Некоторые из команд позволяют получить подсказку по использовании, при вводе с символом вопроса:

    Telnet> set ? - получить подсказку по использованию команды установки режимов. Пример отображаемой информации:

    bsasdel - символ BackSpace Delete

    crlf - режим возврата каретки; приводит к отправке символов CR & LF

    delasbs - символ Delete будет отправляться как символ BackSpace

    escape x - где x - символ переключения в режим telnet-терминала и обратно

    localecho - включение локального эха.

    logfile x - где x - файл журнала. В русском переводе неверно трактуется как "Файл входа текущего клиента в систему"

    logging - запись текущей сессии в журнал. В русском переводе неверно трактуется как "выполнение входа в систему"

    mode x - где x=console - консольный режим, используемый для работы с оконными приложениями (редактор vi) и x=stream - потоковый режим, используемый для работы в командной строке.

    ntlm - включение проверки подлинности NTLM.

    term x - тип эмулируемого терминала. Где x - ansi, vt100, vt52, или vtnt.

    Для получения подсказки по отмене установленных параметров используется команда

    Microsoft Telnet> unset ?

    bsasdel - символ BackSpace будет отправляться как символ Delete

    crlf - режим перевода строки; приводит к отправке символа CR

    delasbs - символ Delete будет отправляться как символ Backspace

    escape - символ переключения в режим telnet-терминала и обратно не задан

    localecho - отключение локального эха

    logging - отключение записи журнала. В русскоязычной весии неверно трактуется как "отключение выполнения входа в систему"

    ntlm - отключение проверки подлинности NTLM.

    Примеры команд в интерактивном режиме:

    open 192.168.0.1 - подключиться к серверу Telnet с IP-адресом 192.168.0.1

    o zte-f660 - подключиться к Telnet-серверу с именем zte-f660 . Используется сокращение команды o pen

    set logfile C:\telnet.log - использовать в качестве файла журнала C:\telnet.log

    set logging - выполнять запись текущей сессии в файл журнала.

    display - отобразить параметры текущей сессии. Пример отображаемой информации:

    Символ переключения режима: "CTRL+]"

    Проверка подлинности NTLM - включена

    Вывод локального эха - отключен

    Режим новой строки - Символ ВВОД будет отправляться как CR & LF

    Текущий режим: Потоковый

    РЕЖИМ ТЕРМИНАЛА

    Предпочитаемый тип терминала ANSI

        На практике, утилита telnet.exe используется как средство диагностики и отладки для подключения не только к серверу Telnet на TCP порт 23, но и на любой другой TCP-порт, тем самым, позволяя взаимодействовать с любым приложением, управляемым командной строкой. Так, например, с использованием утилиты telnet можно подключиться к серверам, поддерживающим текстовый (telnet-like) ввод команд и данных - SMTP, POP3, IMAP и т.п. Кроме этого, утилиту можно использовать в качестве средства грубой проверки возможности подключения на любой TCP-порт (проверки слушается ли определенный порт TCP).

    telnet 192.168.1.1 8080 - подключиться к узлу 192.168.1.1 на порт 8080. В тех случаях, когда порт закрыт, утилита сообщит о невозможности подключения. Причем, для проверки доступности определенного порта даже необязательно, чтобы он слушался службой с поддержкой текстового ввода, как например, сервер VNC. Для отключения от удаленного сервера необходимо ввести символ переключения режима (по умолчанию - CTRL+] ).

    Утилиту telnet.exe можно использовать, например, для обмена с почтовым сервером по протоколу POP3 (Post Office Protocol ver. 3). Данный протокол используется почтовыми клиентскими программами (Outlook, Outlook Express, The Bat и т.д.) для получения электронной почты, хранящейся в почтовом ящике пользователя. Это простейший протокол, в основе которого лежит обмен текстовыми сообщениями. С целью изучения взаимодействия почтового клиента с почтовым сервером, можно реализовать сеанс подключения с помощью TELNET.

    Стандартно сервер POP3 ожидает входящие соединения по протоколу TCP на порт 110 ("слушает" порт tcp/110). Команда telnet для подключения к серверу, например pop.mail.ru

    telnet pop.mail.ru 110

    Если сервер работоспособен, в окне telnet появится его приглашение

    +OK mPOP POP3 v1.1

    user [email protected]

    После чего, сервер предложит ввести пароль:

    OK Password required for user [email protected]

    Нужно ввести пароль

    pass VasinPass

    Сервер сообщит результат проверки пароля:

    Можно запросить список писем директивой list:

    list

    В ответ на это, сервер выдаст список и размеры писем в почтовом ящике:

    OK 10 messages (152527 octets)
    1 48628       1-это порядковый номер, 48628 - размер
    2 1829
    3 2070
    :

    При необходимости можно посмотреть заголовки писем. Для этого используется команда top порядковый номер, пробел, число строк из тела сообщения

    top 2 0

    В ответ на это, вы увидите заголовок письма, содержащий служебную информацию об отправителе, дате отправки, обратном адресе и некоторые другие данные:

    Received: from (HELO mx1.ks.pochta.ru) by node7-1.ks.pochta.ru with QIP.RU LMTP
    for [email protected];
    Fri, 08 Apr 2011 15:18:33 +0400
    Received: from mx3.softkey.ru ()
    : :

    Для приема писем используется директива retr порядковый номер

    retr 2 - принять письмо с порядковым номером 2

    Для удаления письма, используется директива dele порядковый номер Например, для удаления 2-го письма из списка, полученного директивой list :

    Если удаление прошло успешно, сервер выдаст сообщение:

    OK message 2 deleted

    Иногда, команду TELNET можно использовать и для идентификации службы, слушающей указанный порт, поскольку многие из них при подключении отображают либо свой баннер, либо специфическую служебную информацию. Например, приветствие FTP-сервера: 220-FileZilla Server version 0.9.43 beta

    220-written by Tim Kosse ([email protected])

    220 Please visit http://sourceforge.net/projects/filezilla/

    А так выглядит экран при подключении к серверу RealVNC:

    RFB 003.008