Установка netcat в Windows и Linux
Доброго времени суток! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы успешно с вами устранили причину черного экрана в Windows 10/11. Идем далее и сегодня я хочу вам немного рассказать про сетевую утилиту netcat, как и где ее можно применять, а главное как ее установить на такие платформы: Windows/Centos/Ubuntu. Думаю, что данный инструмент вы оставите себе в коллекции полезных утилит, которые нужны системному администратору или продвинутому инженеру технической поддержки.
Что такое netcat?
Утилита Netcat, также известная как nc, является мощным инструментом для работы с сетевыми соединениями в операционных системах Unix и Linux. Она предоставляет возможность создания TCP и UDP соединений, а также выполнения различных сетевых операций, таких как чтение и запись данных через сокеты. Netcat может быть использована во множестве сценариев и приложений, благодаря своей гибкости и простоте использования. Вот некоторые из основных способов применения утилиты Netcat:
- Порт-сканирование: Netcat позволяет сканировать порты удаленного хоста, чтобы определить, открыты ли они или закрыты. Это может быть полезно для проверки безопасности сети или для обнаружения служб, работающих на удаленном сервере.
- Передача файлов: Netcat позволяет передавать файлы между двумя хостами по сети. Это может быть полезно, когда необходимо быстро передать файлы или резервные копии между компьютерами.
- Создание обратного шелла: Netcat может использоваться для создания обратного шелла, который позволяет удаленно управлять компьютером. Это может быть полезно для администрирования удаленных серверов или для выполнения команд на удаленном компьютере.
- Тестирование сетевых приложений: Netcat может использоваться для тестирования сетевых приложений, отправляя и получая данные через сокеты. Это позволяет проверить работоспособность и надежность сетевых приложений перед их внедрением в рабочую среду.
- Прокси-сервер: Netcat может быть использована в качестве простого прокси-сервера, который перенаправляет сетевой трафик между клиентом и сервером. Это может быть полезно для отладки сетевых проблем или для создания простого прокси-сервера для обхода ограничений сети.
Как установить netcat в Windows
Самый простой вариант, это скачать отдельный у меня zip-архив в котором уже есть чисто утилита netcat в portable виде (не требующей установки)
Либо можно установить самую свежую версию Netcat (Ncat), но в составе Nmap. Перейдите по ссылке:
Выбираем последнюю версию Nmap для Windows.
Я выберу последнюю стабильную версию Nmap. Начнется ее загрузка.
По завершении загрузки приступаем к установке Netcat (Ncat). Запустите исполняемый файл из папки "Загрузки". Щелкните правой кнопкой мыши по нему и нажмите "Запуск от имени администратора". Весь процесс инсталляции я буду производить на Windows 11.
У вас откроется окно мастера установки. Согласимся с лицензионным соглашением "I Agree".
Вам следует выбрать все компоненты, поставляемые с установщиком Nmap, и особенно выбрать Ncat, после чего нажмите далее.
Остается выбрать каталог установки, я советую оставить все по умолчанию, если у вас конечно нет других требований к этому, нажимаем кнопку "Install".
В процесс установки, вам еще предложат установить библиотеку npcap. Npcap - это бесплатная и открытая для разработчиков библиотека пакетного захвата сетевых пакетов для операционных систем Windows. Она является альтернативой WinPcap и предоставляет возможность программам захватывать и анализировать сетевой трафик на уровне ядра операционной системы. Npcap поддерживает различные функции, такие как захват пакетов, фильтрация трафика, внедрение пакетов и многое другое. Она широко используется в инструментах и программном обеспечении для сетевого анализа, мониторинга и безопасности. Нажмите "I Agree".
Оставим все как есть "Install Npcap in WinPcap API-compatible Mode"
В конце инсталляции вам нужно будет выбрать, будут ли созданы ярлыки Netcat (Ncat) или нет, я советую их создать.
Как запустить Netcat в Windows
После установки Ncat вам необходимо запустить командную строку в режиме администратора. Далее давайте введем вот такую команду и посмотрим, что умеет утилита:
Установка утилиты Netcat в Ubuntu
Для установки утилиты Netcat в Ubuntu, выполните следующие шаги:
- Откройте терминал.
- Обновите список пакетов:
- Установите утилиту Netcat:
- После завершения установки, утилита Netcat будет доступна для использования. Проверьте установку, выполнив команду:
Вы должны увидеть информацию о версии утилиты Netcat, если она была успешно установлена. Теперь вы можете использовать утилиту Netcat для работы с сетевыми соединениями в Ubuntu.
Установка утилиты Netcat в CentOS
Для установки утилиты Netcat в CentOS 8, выполните следующие шаги:
- Откройте терминал.
- Обновите список пакетов:
- Установите утилиту Netcat:
- После завершения установки, утилита Netcat будет доступна для использования. Проверьте установку, выполнив команду:
Вы должны увидеть информацию о версии утилиты Netcat, если она была успешно установлена. Теперь вы можете использовать утилиту Netcat для работы с сетевыми соединениями в CentOS.
Примеры использования утилиты Netcat в Windows
- Посмотреть текущую версию netcat. Для этого введите:
- Прослушивание порта. Очень часто используется, чтобы заставить в системе слушаться нужный порт:
- Отправка данных на определенный порт. Выглядит это так
или
- Передача файла через по сети:
ncat <хост> <порт> путь < <файл>
- Для того, чтобы проверить удаленный порт с помощью netcat, по сути заменив утилиту Telnet или командлет Test-NetConnection вы можете воспользоваться такой конструкцией
- Как загрузить файл с удалённого компьютера
Предположим, мне нужно скачать с удалённого компьютера файл 1.csv. Тогда на сервере я запускаю:
ncat -vl 12345 < C:\Temp\1.csv
А на локальном компьютере, куда будет скачен файл, запускаю Ncat следующим образом:
ncat 192.168.146.96 12345 > D:\Scripts\1.csv
Обратите внимание, что не будет ничего показано и после загрузки файла оба экземпляра Ncat продолжат работу.
- Прослушивание UDP порта, очень полезно, например когда проверяете работу портов Active Directory
- Отправка данных на UDP-порт:
- Установка обратного соединения:
- Установка обратного UDP-соединения:
- Сканирование портов:
- Сканирование UDP-портов:
- Перенаправление портов:
- Перенаправление UDP-портов:
- Отправка HTTP-запроса:
- Отправка UDP-запроса:
- Создание прокси-сервера:
Например: ncat -vl 12345 --proxy-type http --proxy-auth <пользователь>:<пароль>
В примере указанном выше тип прокси http, а в качестве аутентификации логин и пароль. Далее вы идете на клиентскую ОС, открываете настройки браузера и указываете там все данные для подключения к Proxy серверу, в результате теперь ваш трафик будет идти через него.
Поддерживается создание HTTP прокси как к аутентификацией, так и без:
ncat -l 3128 --proxy-type http --proxy-auth <пользователь>:<пароль>
- Можно ли сделать из ncat веб-сервер, чтобы произвести проверку в браузере. Тут нам сначала нужно подготовить файлик pyatilistnik.http вот с таким содержимым:
<html>
<body>
<h1>Test Webserver Pyatilistnik.org</h1>
</body>
</html>
- Как сделать, чтобы ncat после отключения не закрывал прослушивание порта, так как если после подключения вы нажмете CTRL+C на компьютере откуда идет подключение, то сервер прослушивающий порт, так же перестанет его прослушивать и закроет его. Но если вы добавите ключ --keep-open, то этого не произойдет.
- Как через netcat производить подключение через SSL (HTTPS). Предположим, что я хочу подключиться к сайту https://pyatilistnik.org, для этого команда будет выглядеть так:
Тут вы говорим, что используем ssl и 443 порт. Теперь, чтобы сайт отдал нам содержимое HTML, вам нужно ввести:
Host: Pyatilistnik.org
Вот в таком виде парсеры и воруют контент.
- Как через 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>
Если вы хотите получить не все содержимое страницы, а только заголовки, то можно за место GET использовать HEAD.
ncat -vC pyatilistnik.org 80
HEAD / HTTP/1.0
Host: Pyatilistnik.org
Как видите тут нет ни слова про редирект, только заголовки. Ранее я отключал заголовок X-Powered-By и его тут и нет.
- Как настроить netcat как SSL сервер. У ncat есть режим сервера, где он может подставлять SSL сертификат. У вас есть возможность проверить сертификат, который netcat будет подставлять. Логично предположить, что он будет самоподписанный и ему никто не будет доверять, пока не установить его в доверенные узлы. Ncat будет использовать сгенерированный 1024-битный ключ RSA.
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
Если у вас уже есть другой сертификат, выпущенный доверенным CA, то вы можете его протестировать. Главное, чтобы CommonName прописанное в нем, должно соответствовать FQDN хоста на котором работает сервер/
Чтобы установить проверенное клиентское соединение, скопируйте файл pyatilistnik-key.pem куда-нибудь, где клиент сможет получить к нему доступ, затем запустите:
- Использование протокола Stream Control Transmission Protocol (SCTP). SCTP - это протокол транспортного уровня, который предоставляет надежную и многопоточную передачу данных в компьютерных сетях. Он был разработан как альтернатива протоколам TCP и UDP, чтобы обеспечить более надежную и эффективную передачу данных. SCTP поддерживает несколько потоков данных внутри одного соединения, что позволяет параллельно передавать и получать данные. Он также обеспечивает надежность доставки данных с помощью механизмов повторной передачи и контроля целостности. SCTP поддерживает как установление соединения, так и безусловную передачу данных, что делает его гибким для различных приложений. Он также имеет встроенную защиту от атак типа "отказ в обслуживании" и поддерживает механизмы управления потоком и приоритетами. SCTP широко используется в сетях с высокими требованиями к надежности и производительности, таких как VoIP, видеоконференции, финансовые транзакции и телекоммуникационные системы.
Для использования SCTP в ncat, необходимо указать параметр "-sctp" при запуске утилиты. Например, чтобы установить SCTP-соединение с хостом "example.com" на порту 1234, можно выполнить следующую команду:
После установки соединения, можно параллельно передавать и получать данные по разным потокам. Для этого необходимо указать номер потока при отправке или получении данных. Например, чтобы отправить данные на поток номер 1, можно выполнить следующую команду:
Аналогично, чтобы принять данные из потока номер 2, можно выполнить следующую команду:
Я не коснулся и десятой части того, что умеет утилита netcat. Если у вас есть интересные примеры, то пишите о них в комментариях, я дополню статью. А с вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.