Установка netcat в Windows и Linux

Обновлено 03.11.2023

netcat logo

Доброго времени суток! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы успешно с вами устранили причину черного экрана в Windows 10/11. Идем далее и сегодня я хочу вам немного рассказать про сетевую утилиту netcat, как и где ее можно применять, а главное как ее установить на такие платформы: Windows/Centos/Ubuntu. Думаю, что данный инструмент вы оставите себе в коллекции полезных утилит, которые нужны системному администратору или продвинутому инженеру технической поддержки.

Что такое netcat?

Утилита Netcat, также известная как nc, является мощным инструментом для работы с сетевыми соединениями в операционных системах Unix и Linux. Она предоставляет возможность создания TCP и UDP соединений, а также выполнения различных сетевых операций, таких как чтение и запись данных через сокеты. Netcat может быть использована во множестве сценариев и приложений, благодаря своей гибкости и простоте использования. Вот некоторые из основных способов применения утилиты Netcat:

  1. Порт-сканирование: Netcat позволяет сканировать порты удаленного хоста, чтобы определить, открыты ли они или закрыты. Это может быть полезно для проверки безопасности сети или для обнаружения служб, работающих на удаленном сервере.
  2. Передача файлов: Netcat позволяет передавать файлы между двумя хостами по сети. Это может быть полезно, когда необходимо быстро передать файлы или резервные копии между компьютерами.
  3. Создание обратного шелла: Netcat может использоваться для создания обратного шелла, который позволяет удаленно управлять компьютером. Это может быть полезно для администрирования удаленных серверов или для выполнения команд на удаленном компьютере.
  4. Тестирование сетевых приложений: Netcat может использоваться для тестирования сетевых приложений, отправляя и получая данные через сокеты. Это позволяет проверить работоспособность и надежность сетевых приложений перед их внедрением в рабочую среду.
  5. Прокси-сервер: Netcat может быть использована в качестве простого прокси-сервера, который перенаправляет сетевой трафик между клиентом и сервером. Это может быть полезно для отладки сетевых проблем или для создания простого прокси-сервера для обхода ограничений сети.

Как установить netcat в Windows

Самый простой вариант, это скачать отдельный у меня zip-архив в котором уже есть чисто утилита netcat в portable виде (не требующей установки)

проверить открытые порты в netcat

Либо можно установить самую свежую версию Netcat (Ncat), но в составе Nmap. Перейдите по ссылке:

https://nmap.org/download.html

Выбираем последнюю версию Nmap для Windows.

Скачивание Netcat (Ncat) для Windows

Я выберу последнюю стабильную версию Nmap. Начнется ее загрузка.

Последняя стабильная версия nmap

По завершении загрузки  приступаем к установке Netcat (Ncat). Запустите исполняемый файл из папки "Загрузки". Щелкните правой кнопкой мыши по нему и  нажмите "Запуск от имени администратора".  Весь процесс инсталляции я буду производить на Windows 11.

Запуск дистрибутива Netcat (Ncat) в режиме администратора

У вас откроется окно мастера установки. Согласимся с лицензионным соглашением "I Agree".

Лицензионное соглашение Netcat (Ncat)

Вам следует выбрать все компоненты, поставляемые с установщиком Nmap, и особенно выбрать  Ncat, после чего нажмите далее.

Выбор компонентов при установке Netcat (Ncat)

Остается выбрать каталог установки, я советую оставить все по умолчанию, если у вас конечно нет других требований к этому, нажимаем кнопку "Install".

Выбор каталога установки Netcat (Ncat)

В процесс установки, вам еще предложат установить библиотеку npcap. Npcap - это бесплатная и открытая для разработчиков библиотека пакетного захвата сетевых пакетов для операционных систем Windows. Она является альтернативой WinPcap и предоставляет возможность программам захватывать и анализировать сетевой трафик на уровне ядра операционной системы. Npcap поддерживает различные функции, такие как захват пакетов, фильтрация трафика, внедрение пакетов и многое другое. Она широко используется в инструментах и программном обеспечении для сетевого анализа, мониторинга и безопасности. Нажмите "I Agree".

Установка npcap

Оставим все как есть "Install Npcap in WinPcap API-compatible Mode"

Install Npcap in WinPcap API-compatible Mode

В конце инсталляции вам нужно будет выбрать, будут ли созданы ярлыки Netcat (Ncat) или нет, я советую их создать.

Создание ярлыков Netcat (Ncat)

Читайте так же - Установка NuGet в Windows

Как запустить Netcat в Windows

После установки Ncat вам необходимо запустить командную строку в режиме администратора. Далее давайте введем вот такую команду и посмотрим, что умеет утилита:

ncat -h

Справка Ncat

Установка утилиты Netcat в Ubuntu

Для установки утилиты Netcat в Ubuntu, выполните следующие шаги:

  • Откройте терминал.
  • Обновите список пакетов:

sudo apt update

  • Установите утилиту Netcat:

sudo apt install netcat

  • После завершения установки, утилита Netcat будет доступна для использования. Проверьте установку, выполнив команду:

nc --version

Вы должны увидеть информацию о версии утилиты Netcat, если она была успешно установлена. Теперь вы можете использовать утилиту Netcat для работы с сетевыми соединениями в Ubuntu.

Установка утилиты Netcat в CentOS

Для установки утилиты Netcat в CentOS 8, выполните следующие шаги:

  • Откройте терминал.
  • Обновите список пакетов:

sudo yum update

  • Установите утилиту Netcat:

sudo yum install nc

  • После завершения установки, утилита Netcat будет доступна для использования. Проверьте установку, выполнив команду:

nc --version

Вы должны увидеть информацию о версии утилиты Netcat, если она была успешно установлена. Теперь вы можете использовать утилиту Netcat для работы с сетевыми соединениями в CentOS.

Примеры использования утилиты Netcat в Windows

  • Посмотреть текущую версию netcat. Для этого введите:

ncat --version

Узнать версию ncat

  • Прослушивание порта. Очень часто используется, чтобы заставить в системе слушаться нужный порт:

ncat -l -p <порт>

  • Отправка данных на определенный порт. Выглядит это так

В одном оке cmd пишем ncat -l -p 34567, тут будет слушаться данный порт, во втором окне ncat -C localhost 34567 и подключаемся к нему и пробуем отправить данные

передача сообщений через ncat

или

echo <данные> | ncat <хост> <порт>

ncat Отправка данных на определенный порт

  • Передача файла через по сети:

ncat -vl  <порт> > путь <файл>
ncat <хост> <порт>  путь < <файл>

ncat Передача файла через сеть

  • Для того, чтобы проверить удаленный порт с помощью netcat, по сути заменив утилиту Telnet или командлет Test-NetConnection вы можете воспользоваться такой конструкцией

ncat -t <удаленный_хост> <удаленный_порт>

  • Как загрузить файл с удалённого компьютера

Предположим, мне нужно скачать с удалённого компьютера файл 1.csv. Тогда на сервере я запускаю:

ncat -vl 12345 < C:\Temp\1.csv
А на локальном компьютере, куда будет скачен файл, запускаю Ncat следующим образом:

ncat 192.168.146.96 12345 > D:\Scripts\1.csv
Обратите внимание, что не будет ничего показано и после загрузки файла оба экземпляра Ncat продолжат работу.

Как загрузить файл с удалённого компьютера

 

ncat -u -vl <порт>

ncat проверка UDP порта

  • Отправка данных на UDP-порт:

echo <данные> | ncat -u <хост> <порт>

ncat отправка данных по udp

  • Установка обратного соединения:

ncat -e cmd.exe <хост> <порт>

  • Установка обратного UDP-соединения:

ncat -u <хост> <порт> | cmd.exe

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

ncat -v -n -z -w1 [Целевой_IP] [начальныйПорт]-[конечныйПорт]

  • Сканирование UDP-портов:

nmap -sU -p <порты> <хост>

  • Перенаправление портов:

ncat -vL -p <локальный_порт> -d <удаленный_хост> <удаленный_порт>

  • Перенаправление UDP-портов:

ncat -u -vl <локальный_порт> | ncat -u <удаленный_хост> <удаленный_порт>

  • Отправка HTTP-запроса:

echo -ne "GET / HTTP/1.1\r\nHost: <хост>\r\n\r\n" | ncat <хост> 80

  • Отправка UDP-запроса:

echo -ne "GET / HTTP/1.1\r\nHost: <хост>\r\n\r\n" | ncat -u <хост> <порт>

  • Создание прокси-сервера:

ncat -vl -p <порт> | ncat <удаленный_хост> <удаленный_порт>

Например: ncat -vl 12345 --proxy-type http --proxy-auth <пользователь>:<пароль>

В примере указанном выше тип прокси http, а в качестве аутентификации логин и пароль. Далее вы идете на клиентскую ОС, открываете настройки браузера и указываете там все данные для подключения к Proxy серверу, в результате теперь ваш трафик будет идти через него.

Поддерживается создание HTTP прокси как к аутентификацией, так и без:

ncat -l 3128 --proxy-type http
ncat -l 3128 --proxy-type http --proxy-auth <пользователь>:<пароль>

  • Можно ли сделать из ncat веб-сервер, чтобы произвести проверку в браузере. Тут нам сначала нужно подготовить файлик pyatilistnik.http вот с таким содержимым:

HTTP/1.0 200 OK

<html>
<body>
<h1>Test Webserver Pyatilistnik.org</h1>
</body>
</html>

Как сделать веб-сервер с Ncat

  • Как сделать, чтобы ncat после отключения не закрывал прослушивание порта, так как если после подключения вы нажмете CTRL+C на компьютере откуда идет подключение, то сервер прослушивающий порт, так же перестанет его прослушивать и закроет его. Но если вы добавите ключ --keep-open, то этого не произойдет.

ncat -vl 1234 --keep-open

Как сделать так, чтобы при закрытии клиента Ncat, не отключался сервер Ncat

  • Как через netcat производить подключение через SSL (HTTPS). Предположим, что я хочу подключиться к сайту https://pyatilistnik.org, для этого команда будет выглядеть так:

ncat -vC --ssl pyatilistnik.org 443

Тут вы говорим, что используем ssl и 443 порт. Теперь, чтобы сайт отдал нам содержимое HTML, вам нужно ввести:

GET / HTTP/1.0
Host: Pyatilistnik.org

Вот в таком виде парсеры и воруют контент.

netcat получение содержимого html

  • Как через netcat производить подключение через HTTPS. Предположим, что я хочу подключиться к сайту https://pyatilistnik.org, для этого команда будет выглядеть так:

ncat -vC pyatilistnik.org 80

GET / HTTP/1.0
Host: Pyatilistnik.org

Нажимаем кнопку ENTER нажата дважды. Как видите там происходит 301 редирект на HTTPS версию.

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 02 Nov 2023 21:22:55 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 233
Connection: close
Location: /
Cache-Control: max-age=600
Expires: Thu, 02 Nov 2023 21:32:55 GMT
Vary: Accept-Encoding

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="/">here</a>.</p>
</body></html>

Подключение к HTTP в Ncat

Если вы хотите получить не все содержимое страницы, а только заголовки, то можно за место GET использовать HEAD.

ncat -vC pyatilistnik.org 80

HEAD / HTTP/1.0
Host: Pyatilistnik.org

Как видите тут нет ни слова про редирект, только заголовки. Ранее я отключал заголовок X-Powered-By и его тут и нет.

Использование HEAD в netcat

  • Как настроить netcat как SSL сервер. У ncat есть режим сервера, где он может подставлять SSL сертификат. У вас есть возможность проверить сертификат, который netcat будет подставлять. Логично предположить, что он будет самоподписанный и ему никто не будет доверять, пока не установить его в доверенные узлы. Ncat будет использовать сгенерированный 1024-битный ключ RSA.

ncat -v --listen --ssl

Ncat: Version 7.94 ( https://nmap.org/ncat )
Ncat: Generating a temporary 2048-bit RSA key. Use --ssl-key and --ssl-cert to use a permanent one.
Ncat: SHA-1 fingerprint: 9A26 0E6F 7566 11BB F99C 684B 272F 30EF 57D9 1E4B
Ncat: Listening on [::]:31337
Ncat: Listening on 0.0.0.0:31337

Как настроить netcat как SSL сервер

Если у вас уже есть другой сертификат, выпущенный доверенным CA, то вы можете его протестировать. Главное, чтобы CommonName прописанное в нем, должно соответствовать FQDN хоста на котором работает сервер/

ncat --listen --ssl --ssl-cert pyatilistnik-key.pem --ssl-key pyatilistnik-key.pem

Чтобы установить проверенное клиентское соединение, скопируйте файл pyatilistnik-key.pem куда-нибудь, где клиент сможет получить к нему доступ, затем запустите:

ncat --ssl-verify --ssl-trustfile pyatilistnik-key.pem

  • Использование протокола Stream Control Transmission Protocol (SCTP). SCTP - это протокол транспортного уровня, который предоставляет надежную и многопоточную передачу данных в компьютерных сетях. Он был разработан как альтернатива протоколам TCP и UDP, чтобы обеспечить более надежную и эффективную передачу данных. SCTP поддерживает несколько потоков данных внутри одного соединения, что позволяет параллельно передавать и получать данные. Он также обеспечивает надежность доставки данных с помощью механизмов повторной передачи и контроля целостности. SCTP поддерживает как установление соединения, так и безусловную передачу данных, что делает его гибким для различных приложений. Он также имеет встроенную защиту от атак типа "отказ в обслуживании" и поддерживает механизмы управления потоком и приоритетами. SCTP широко используется в сетях с высокими требованиями к надежности и производительности, таких как VoIP, видеоконференции, финансовые транзакции и телекоммуникационные системы.

Для использования SCTP в ncat, необходимо указать параметр "-sctp" при запуске утилиты. Например, чтобы установить SCTP-соединение с хостом "example.com" на порту 1234, можно выполнить следующую команду:

ncat -sctp pyatilistnik.org 12345

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

echo "Hello, Pyatilistnik!" | ncat -sctp pyatilistnik.org 12345 --sctp-streams=1

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

ncat -sctp pyatilistnik.org 12345 --sctp-streams=2

Я не коснулся и десятой части того, что умеет утилита netcat. Если у вас есть интересные примеры, то пишите о них в комментариях, я дополню статью. А с вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *