Что такое Netcat?

Netcat — это инструмент командной строки, отвечающий за чтение и запись данных в сети. Для обмена данными Netcat использует сетевые протоколы TCP/IP и UDP. Этот инструмент изначально пришел из мира Unix, но теперь доступен для всех платформ.

Благодаря своей универсальности Netcat часто называют «швейцарским армейским ножом для TCP/IP». Например, он позволяет диагностировать неисправности и проблемы, которые ставят под угрозу функциональность и безопасность сети. Сканирование портов, потоковая передача данных или простая передача данных также могут быть выполнены Netcat. Кроме того, можно настроить чат и веб-серверы, а также запустить почтовые запросы. Упрощенное программное обеспечение, разработанное еще в середине 1990-х годов, может работать в режиме сервера и клиента.

Как использовать Netcat?

Netcat можно использовать на всех платформах через командную строку. Инструмент командной строки обычно предустановлен на Linux и macOS. Пользователям Windows необходимо загрузить программу из интернета. Специальные шаги по установке не требуются; для использования в Windows достаточно загрузить файл программы (nc.exe). Затем вы можете использовать Netcat с помощью командной строки (cmd.exe) для выполнения различных сетевых задач. Запустите командную строку следующим образом:

  1. Нажмите комбинацию клавиш [Windows] + [R].
  2. Введите «cmd» в поле ввода (1)
  3. Нажмите кнопку «OK» (2)

После этого откроется cmd.exe со следующим экраном:

Чтобы запустить программный файл (nc.exe), необходимо также переключиться на место сохранения. Если nc.exe сохранен в папке «netcat» на рабочем столе Windows, синтаксис будет выглядеть следующим образом:

cd C:UsersUSERNAMEDesktopnetcat

Команда «cd» (change directory) активирует переключение; основной путь программы обращается к папке хранения файла nc.exe. В командной строке переключение выглядит следующим образом:

Netcat требует расширенных прав доступа для выполнения ряда операций. В Windows 10 командную строку можно запустить всего за несколько шагов с правами администратора:

  1. Щелкните правой кнопкой мыши по символу Windows в левой части панели задач или нажмите комбинацию клавиш [Windows] + [X].
  2. В появившемся контекстном меню выберите «Командная строка (администратор)»:
Примечание

Использование Netcat связано с определенными рисками безопасности. По этой причине инструмент должен использоваться только опытными пользователями и системными администраторами — особенно в режиме с расширенными правами доступа.

Синтаксис Netcat: какие команды и опции существуют?

Синтаксис Netcat состоит из двух основных компонентов: постоянной базовой команды «nc», за которой следуют различные «опции». Базовая команда обращается к программному файлу nc.exe., а опции определяют конкретные функциональные рамки версии Netcat. В зависимости от операционной системы и используемой версии Netcat, возможности варьируются.

В следующей таблице приведены только основные опции, доступные в большинстве версий для Linux, macOS и Windows. Кроме того, перечислены дополнительные полезные опции — в частности, расширения, основанные на широко распространенной версии GNU Netcat для Linux, Unix и macOS:

Опции

Описание

-4

Принудительное использование IPv4 (GNU Netcat)

-6

Заставляет использовать IPv6 (GNU Netcat)

-d

Выпускает Netcat из консоли (работает в фоновом режиме; доступно в Windows и текущих версиях GNU Netcat)

-D

Активирует опцию отладки сокетов (GNU Netcat)

-h (отобразить справку)

Отображает справку (команды/опции с кратким описанием)

-i (secs)

Задержка в секундах для отправленных строк или сканированных портов

-k

По окончании соединения Netcat ожидает нового соединения (возможно только в GNU Netcat и только в сочетании с «-l»)

-l (режим прослушивания)

Режим прослушивания и сервера для входящих запросов на соединение (через указанный порт)

-L Слушать сильнее

Netcat также продолжает работать в режиме прослушивания после разрыва соединения на стороне клиента (последовательно с теми же параметрами; поддерживается только версией для Windows)

-n (только числовые)

Только IP-номера, без имен DNS

-o (файл)

Выполняется шестнадцатеричный дамп трафика данных (содержимое файлов представлено в шестнадцатеричном виде); используется для поиска неисправностей (отладка сетевых приложений); возможна запись/прослушивание связи (для исходящих и входящих пакетов)

-p (порт)

Вводит локальный порт источника, который Netcat должен использовать для исходящих соединений

-r

Использование случайных значений портов при сканировании (для локальных и удаленных портов)

-s (адрес)

Определяет локальный адрес источника (IP-адрес или имя)

-t

Режим Telnet (позволяет связаться с сервером через Telnet); требует специальной компиляции Netcat, иначе опция недоступна.

-u

Использование режима UDP (вместо TCP)

-U (шлюз).

Netcat использует доменные сокеты Unix (GNU Netcat)

-v

Обширный вывод (например, отвечает за отображение и объем выводимых сообщений о неисправностях)

-w (секунды)

Определяет тайм-ауты; для установления и завершения соединений (единица измерения: секунды)

-z

Режим сканирования портов (режим нулевого ввода/вывода); сканируются только прослушивающие сервисы (данные не отправляются).

Простым примером использования синтаксиса Netcat является доступ к справке с помощью параметра «-h»:

C:UsersUSERNAMEDesktopnetcat>nc -h

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

Режим клиента (подключаться к чему-либо):

nc [options] [IP address/host name] [port]

Режим сервера (прослушивание входящих):

nc -l -p port [options] [host name] [port]

Фундаментальная структура для запуска сканирования портов выглядит следующим образом:

nc [options] [host] [port]

Копирование файлов с помощью Netcat

Часто используемой функцией Netcat является копирование файлов. Можно отправлять даже большие объемы данных и клонировать отдельные разделы или целые жесткие диски. В нашем примере файл testfile.txt копируется с компьютера A (клиент) на компьютер B (сервер) через порт 6790: Необходимо выполнить следующие действия:

  1. Определить IP-адрес компьютера B (компьютер назначения).
  2. Создать тестовый файлtestfile.txt в папке Netcat компьютера A; в данном примере файл fest находится в папке Netcat клиента. Затем скопированный файл оказывается в папке Netcat на компьютере B (другие пути к файлам необходимо скорректировать соответствующим образом).
  3. Введите синтаксис Netcat в командную строку

Компьютер B (действует как принимающий сервер):

nc -l -p 6790 > testfile.txt
ENTER

Компьютер A (действует как отправляющий клиент):

nc [IP address of computer B] 6790 < testfile.txt
ENTER

Успех передачи не подтверждается в командной строке. Вы можете убедиться, что передача прошла успешно, проверив папку назначения.

Запуск сканирования портов

Чтобы обнаружить любые ошибки и проблемы безопасности, можно запустить сканирование и определить открытые порты. В следующем примере компьютер имеет IP-адрес 192.168.11.1. После IP-адреса для сканирования можно ввести отдельные порты (например, 1), несколько портов (1, 2, 3 и т.д.) или целый диапазон (1-1024):

nc -w 2 -z 192.168.10.1 1-1024

Опция «-w» устанавливает тайм-аут (здесь: «пытаться установить соединение с портами в течение двух секунд»). Опция «-z» указывает Netcat искать только прослушивающие службы и не отправлять никаких данных.

Если добавить опцию «-v», вы получите подробную информацию о сканировании:

nc -v -w 2 -z 192.168.11.1 1-1024

Netcat подтверждает обнаружение открытого порта сообщением «succeeded!»:

Connection to 192.168.11.1 25 port [tcp/smtp] succeeded!

Большинство известных служб, таких как электронная почта, FTP или SSH, работают на сканируемых портах 1-1024. В данном примере Netcat обнаружил открытый SMTP-порт почтового клиента.

Netcat как простая программа для чата

Netcat также может установить простое TCP или UDP соединение между двумя компьютерами и открыть канал связи. В приведенном ниже примере получатель сначала устанавливается на удаленную систему и переводится в режим прослушивания. Затем получатель выступает в роли «слушателя» и использует порт 1605 для получения сообщений. С ним можно связаться по IP-адресу 192.168.11.1.

nc -l -p 1605
ENTER

Затем локальный компьютер (отправляющий ПК) устанавливает соединение с получателем сообщения с помощью следующей команды:

nc 192.168.11.1 1605
ENTER

Если соединение успешно установлено, сообщения могут быть отправлены в обоих направлениях.

Настройка простого веб-сервера

Netcat также можно использовать для настройки простого веб-сервера. Если установленный сервер не может быть достигнут, например, из-за технических проблем, вы можете, по крайней мере, отвечать на запросы подготовленным сообщением об отказе (в виде html-файла):

nc -l -v -p 85 -w10 -L < failuremessage.html

Netcat ожидает запросов, отправленных на порт 85, и отвечает файлом failuremessage.html. Параметр «-L» позволяет поддерживать процесс Netcat после одного запроса. Параметр «-w» прерывает соединение через 10 секунд (таймаут). Параметр «-v» предоставляет оператору сервера информацию о запросах и документирует операционную систему и тип браузера запрашивающего клиентского компьютера, например, с помощью сообщений о состоянии.

Является ли Netcat угрозой безопасности?

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

Но есть и обратная сторона: Netcat — это хакерский инструмент, используемый для шпионажа за сетями, поиска уязвимостей, обхода противопожарных стен и использования бэкдоров для захвата компьютеров. Антивирусные программы бьют тревогу, например, когда на компьютере обнаруживается версия Netcat, позволяющая выполнить опцию «-e» благодаря специальной компиляции.

Используя этот «-e» в коде, на удаленном компьютере можно запустить интерактивный интерфейс (backdoor shell). Тот, кто получит неограниченный доступ к cmd.exe в Windows, может нанести значительный ущерб. Дополнительные вредоносные программы также могут быть загружены через backdoor shell. Хакеры часто используют в коде Netcat параметр «-d», который позволяет инструменту командной строки причинять неприятности на компьютерах под управлением Windows — при этом незаметно работая в фоновом режиме.

Чтобы избежать взломанных версий, Netcat следует загружать только из безопасных источников в Интернете. Эксперты по безопасности также советуют тщательно обдумать, нужен ли вообще такой инструмент, как Netcat, при установке систем (особенно frontend-систем).

Еще один риск безопасности: Netcat обычно передает данные открытым текстом без шифрования. По этой причине инструмент следует использовать только в очень хорошо защищенных сетях или — еще лучше — отрезанных от Интернета. Для передачи данных в Интернете лучше использовать преемника Netcat — Cryptcat, поскольку он шифрует данные. Кроме того, при передаче данных, имеющих отношение к безопасности, соединения могут быть туннелированы через SSH.

Преимущества и потенциальные риски ясно показывают, что Netcat — это инструмент, который следует внимательно изучить опытным пользователям, системным администраторам и ИТ-менеджерам. Те, кто понимает преимущества, могут воспользоваться универсальностью и эффективностью инструмента удаленного администрирования. А те, кто способен адекватно оценить опасность для безопасности собственной сети, могут принять превентивные меры, чтобы остановить хакерские атаки — или хотя бы сдержать ущерб.

Однако этот инструмент уже довольно устарел — он появился в хакерских кругах более 20 лет назад. Существуют более совершенные инструменты для различных видов сетевой деятельности. Помимо Cryptcat, стоит упомянуть и Socat. Он может использовать сетевой протокол SCTP в дополнение к TCP и UDP, работает через прокси-серверы и поддерживает шифрование. Он также работает на всех распространенных платформах, как и Netcat.

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

Оцените статью
cdelat.ru
Добавить комментарий