netcat - netcat

редактировать
netcat
Netcat.png Команда netcat
Оригинальный автор (ы) * Hobbit *
Разработчик (и) Avian Research
Первоначальный выпуск28 октября 1995 г.; 24 года назад (1995-10-28)
Стабильный выпуск 1.10 / 2 января 2007 г.; 13 лет назад (02.01.2007)
Операционная система Unix и Unix-подобная, DOS, Microsoft Windows, Windows CE
Тип Сетевая служебная программа
Лицензия Исходная версия: индивидуальная, разрешающая лицензия. Версия GNU: GPL. Версия OpenBSD: BSD
Веб-сайтnc110.sourceforge.net

netcat (часто сокращенно nc ) это компьютерная сетевая утилита для чтения и записи в сетевые соединения с использованием TCP или UDP. Команда разработана как надежная внутренняя часть, которая может использоваться напрямую или легко управляться другими программами и скриптами. В то же время это многофункциональный инструмент для отладки и исследования сети, поскольку он может создавать практически любое соединение, которое может понадобиться его пользователю, и имеет ряд встроенных возможностей.

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

Содержание

  • 1 Возможности
  • 2 Примеры
    • 2.1 Открытие необработанного соединения с портом 25
    • 2.2 Выполнение HTTP-запроса
    • 2.3 Настройка одноразового веб-сервера на порту 8080 для представления содержимого файла
    • 2.4 Проверка наличия портов UDP (-u) 80– 90 открыты на 192.168.0.1 с использованием ввода-вывода в нулевом режиме (-z)
    • 2.5 Проверить, открыт ли UDP-порт: простой UDP-сервер и клиент
    • 2.6 Канал через UDP (-u) с временем ожидания (- w) 1 секунда до "loggerhost" на порту 514
    • 2.7 Сканирование портов
    • 2.8 Проксирование
    • 2.9 Превращение любого процесса в сервер
  • 3 ncat
    • 3.1 Передача зашифрованных файлов
  • 4 порта и повторные реализации
  • 5 См. также
  • 6 Ссылки
  • 7 Внешние ссылки

Возможности

Исходные функции netcat включают:

  • Исходящие или входящие соединения, TCP или UDP, к или от любого порты
  • Полная прямая / обратная проверка DNS с соответствующей войной nings
  • Возможность использования любого локального порта источника
  • Возможность использования любого локально сконфигурированного сетевого адреса источника
  • Встроенные возможности сканирования портов с рандомизацией
  • Встроенная возможность свободной маршрутизации от источника
  • Может считывать аргументы командной строки из стандартного ввода
  • Режим медленной отправки, одна строка каждые N секунд
  • Шестнадцатеричный дамп переданных и полученные данные
  • Дополнительная возможность разрешить другой программной службе устанавливать соединения
  • Необязательный ответчик telnet -options

Переписывает, например, GNU и OpenBSD, поддерживает дополнительные функции. Например, OpenBSD nc поддерживает TLS, а GNU netcat изначально поддерживает режим туннелирования, поддерживающий UDP и TCP (опционально позволяющий туннелировать один через другой) в одной команде, где другие версии могут потребовать передачи данных от одного экземпляра netcat к другому.

Примеры

Открытие прямого соединения с портом 25

nc mail.server.net 25

Выполнение HTTP-запроса

printf "GET / index.html HTTP / 1.0 \ r \ nHost: info.cern.ch \ r \ n \ r \ n "| nc info.cern.ch 80

Полный ответ (включая заголовки HTTP) будет выведен на стандартный вывод.

Настройка одноразового веб-сервера на порту 8080 для представления содержимого файла

{printf 'HTTP / 1.0 200 OK \ r \ nContent-Length:% d \ r \ n \ r \ n '"$ (wc -c < some.file)"; cat some.file; } | nc -l 8080

Затем к файлу можно будет получить доступ через веб-браузер по адресу http: // servername: 8080 /. Netcat обслуживает файл только один раз первому клиенту, который подключается, а затем завершает работу; он также предоставляет длина содержимого для обозревателей, которые этого ожидают (это должно нормально работать в локальной сети, но может потенциально выйти из строя с любым типом межсетевого экрана). В некоторых версиях netcat, таких как netcat-Traditional в Debian 8.6, вам необходимо указать -p перед номером порта.

Проверка того, открыты ли порты UDP (-u) 80–90 на 192.168.0.1 с использованием ввода-вывода нулевого режима (-z)

nc -vzu 192.168.0.1 80-90

Обратите внимание, что тесты UDP всегда отображаются как «открытые».

Проверка, открыт ли порт UDP: простой сервер и клиент UDP

Этот тест полезен, если у вас есть доступ к серверу, который нужно протестировать, но вы не знаете, есть ли блок межсетевого экрана установить определенный порт UDP на сервере.

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

nc -l -u -p 4171

На отправляющем хосте выполните следующие действия - обратите внимание, что servname- это имя хоста прослушивающего хоста:

nc -u servname 4172

Если текст введен на отправляющем хосте (введите что-нибудь и нажмите Enter) отображается также на прослушивающем хосте, тогда UDP-порт 4172 открыт. Если он не открыт, вы получите сообщение об ошибке, например «В соединении отказано».

Есть нюанс. На некоторых машинах IPv6 может быть версией IP по умолчанию для использования netcat. Таким образом, с хостом, указанным в имени хоста, связываются с использованием IPv6, и пользователь может не знать об этом. Порты могут показаться закрытыми в тесте, даже если они будут открыты при использовании IPv4. Это может быть трудно заметить, и может возникнуть ложное впечатление, что порт заблокирован, хотя на самом деле он открыт. Вы можете принудительно использовать IPv4, добавив -4к параметрам команд nc.

Перенаправлять через UDP (-u) с временем ожидания (-w) в 1 секунду к "loggerhost" на порту 514

echo '<0>message' | nc -w 1 -u loggerhost 514

Сканирование портов

Необычным использованием netcatявляется сканирование портов. Netcat не считается лучшим инструментом для этой работы, но его может быть достаточно (более продвинутый инструмент - nmap )

nc -v -n -z -w 1 192.168.1.2 1-1000

Параметр -nздесь запрещает поиск DNS, -zзапрещает ncполучать данные с сервера, а -w 1устанавливает тайм-аут соединения после 1 секунды бездействия.

Прокси

Еще одно полезное поведение - использование netcatв качестве прокси. И порты, и хосты могут быть перенаправлены. Посмотрите на это пример:

nc -l 12345 | nc www.google.com 80

Порт 12345 представляет запрос.

Это запускает сервер ncна порт 12345, и все соединения перенаправляются на google.com:80. Если веб-браузер делает запрос на nc, запрос будет отправлен в Google, но ответ не будет отправляется в веб-браузер. Это потому, что каналы однонаправлены. Это можно обойти с помощью именованного канала на перенаправить вход и выход . ut.

mkfifo backpipe nc -l 12345 0 backpipe

Опция -cтакже может использоваться с реализацией ncat:

ncat -l 12345 -c 'nc www.google.com 80'

Использование именованного канала - более надежный метод, поскольку использование параметра -cобеспечивает только одноразовый прокси.

Еще одна полезная функция - прокси-соединения SSL. Таким образом, трафик нельзя будет просмотреть в приложениях для прослушивания проводов, таких как wirehark. В UNIX это можно сделать с помощью mkfifo, netcatи openssl.

mkfifo tmp mkfifo tmp2 nc -l 8080 -k>tmp < tmp2 while true; do openssl s_client -connect www.google.com:443 -quiet < tmp>tmp2 done

Превращение любого процесса в сервер

netcatможно использовать для превращения любого процесса в сетевой сервер. Он может прослушивать порт и перенаправлять входящие данные этому процессу.

Параметр -eпорождает исполняемый файл, вход и выход которого перенаправляются через сетевой сокет.

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

Для этого на компьютере A с IP-адресом 192.168.1.2 выполните следующую команду:

$ nc -l -p 1234 -e / bin / sh

Затем с любого другого компьютера в той же сети можно запустить команду nc:

$ nc 192.168.1.2 1234 ls -la total 4288 drwxr-xr-x 15 фиктивных пользователей 4096 17.02.2009 07:47. drwxr-xr-x 4 фиктивных пользователя 4096 18.01.2009 21:22.. -rw ------- 1 фиктивных пользователей 8192 16.02.2009 19:30.bash_history -rw-r - r- - 1 фиктивные пользователи 220 2009-01-18 21:04.bash_logout...

Таким образом, можно использовать параметр -eдля создания элементарного бэкдора. Некоторые администраторы воспринимают это как риск и поэтому не разрешают использовать netcatна компьютере.

ncat

Ncat - это инструмент, аналогичный netcat, предоставляемый набором Nmap. «Хотя Ncat не построен на каком-либо коде из« традиционного »Netcat (или любой другой реализации), Ncat, безусловно, основан на Netcat по духу и функциональности».

Возможности Ncat включают: способность связывать Ncats вместе перенаправьте порты TCP и UDP на другие сайты, поддержку SSL и прокси-соединения через прокси-серверы SOCKS4 или HTTP (метод CONNECT) (также с опциональной аутентификацией прокси).

  • Подключитесь к example.org через TCP-порт 8080.: ncat example.org 8080
  • Слушать соединения на TCP-порту 8080.: ncat -l 8080
  • Перенаправить TCP-порт 8080 на локальном компьютере на хост на порт 80.: ncat - -sh-exec "ncat example.org 80" -l 8080 --keep-open
  • Привязать к TCP-порту 8081 и прикрепить / bin / bash для свободного доступа всего мира. : ncat --exec "/ bin / bash" -l 8081 --keep-open
  • Привязать оболочку к TCP-порту 8081, ограничить доступ к узлам в локальной сети и ограничить максимальное количество одновременных подключений to 3:
ncat --exec "/ bin / bash" --max-conns 3 --allow 192.168.0.0/24 -l 8081 --keep-open
  • Подключиться к smtphost: 25 через сервер SOCKS4 на порту 1080: ncat --proxy socks4host --proxy-type socks4 --proxy-auth user smtphost 25
  • Создать прокси-сервер HTTP на порту localhost 8888.: ncat -l --proxy- введите http localhost 8888
  • Отправьте файл через TCP-порт 9899 с хоста 2 (клиент) на хост 1 (сервер).
    пользователь @ HOST1 $ ncat -l 9899>выходной файл пользователь @ HOST2 $ ncat HOST1 9899 < inputfile
  • Передача в обратном направлении, превращая Ncat в «однофайловый» сервер.
    user @ HOST1 $ ncat -l 9899 < inputfile [email#160;protected] $ ncat HOST1 9899>outputfile

Передача зашифрованных файлов

Предположим, у вас есть туннель SSH, и вы хотите скопировать файл на удаленный компьютер. Вы можете просто scpнапрямую, но это открывает другое соединение. Цель состоит в том, чтобы повторно использовать существующее соединение. Для этого можно использовать netcat:

Когда вы входите по SSH, добавьте -L 31000: 127.0.0.1: 31000(это перенаправление портов, отправка всего с порта 31000 на удаленном компьютере). компьютер к тому же порту на локальном компьютере)

  • На удаленном: ncat -lvnp 31000 127.0.0.1>файл
  • На локальном: ncat -v -w 2 127.0.0.1 31000 < file

Никаких дополнительных накладных расходов. TCP заботится об исправлении ошибок. SSH уже зашифровал канал.

Порты и повторные реализации

Исходная версия netcat была программой Unix. Последняя версия (1.10) была выпущена в марте 1996 года.

Существует несколько реализаций в системах POSIX, включая перезапись с нуля, например GNU netcat или OpenBSD. netcat, последний из которых поддерживает IPv6 и TLS. Версия OpenBSD была перенесена на базу FreeBSD и Windows / Cygwin. Mac OS X поставляется с netcat, установленным начиная с OSX 10.13, или пользователи могут использовать MacPorts для установите вариант.

A DOS версия netcat под названием NTOOL включена в группу пакетов FreeDOS Networking. Он основан на стеке WatTCP и лицензирован по Общественной лицензии Европейского Союза Версия 1.1.

Известные порты для встраиваемых систем включают версии для Windows CE (с названием "Netcat 4 wince ") или для iPhone.

BusyBox по умолчанию включает облегченную версию netcat.

Solaris 11 включает реализацию netcat на основе OpenBSD netcat.

Socat - более сложный вариант netcat. Он больше и гибче, и в нем больше параметров, которые необходимо настроить для данной задачи. 1 февраля 2016 г. и выпустил рекомендации по безопасности в отношении параметра composite Диффи-Хеллмана, который был жестко закодирован в OpenSSL <101.>реализация socat. Маловероятность того, что составной элемент мог быть непреднамеренно введен, когда требуется простое число, привела к подозрению в саботаже с целью введения бэкдора уязвимости программного обеспечения.. Эта ошибка socat затронула версии 1.7.3.0 и 2.0.0-b8, она была исправлена ​​в следующих выпусках 1.7.3.1 и 2.0.0-b9.

Cryptcat - это версия netcat со встроенными возможностями транспортного шифрования.

В середине 2005 года Nmap анонсировал еще одно воплощение netcat под названием Ncat. Он предлагает новые возможности, такие как «посредничество при подключении», перенаправление TCP / UDP, поддержка клиентов и серверов SOCKS4, возможность «цепочки» процессов Ncat, проксирование HTTP CONNECT (и создание цепочек прокси), поддержка SSL-подключения / прослушивания и фильтрация IP-адресов / подключений.. Как и Nmap, Ncat является кроссплатформенным.

. В некоторых системах модифицированные версии или аналогичные утилиты netcat имеют имена команд nc, ncat, pnetcat, socat, sock, socket, sbd.

См. Также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-31 04:42:54
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте