- nc — Unix, Linux Command
- SYNOPSIS
- DESCRIPTION
- CLIENT/SERVER MODEL
- DATA TRANSFER
- Команда Netcat (nc) с примерами
- Синтаксис Netcat
- Сканирование портов
- Отправка файлов через Netcat
- Создание простого чат-сервера
- Выполнение HTTP-запроса
- Выводы
- Команда Netcat (nc) в Linux с примерами
- Синтаксис Netcat
- Сканирование портов
- Отправка файлов через Netcat
- Создание простого сервера чата
- Выполнение HTTP-запроса
- Заключение
- Полезные трюки при работе с netcat
- Практические примеры
- Проверка наличия открытого TCP-порта 12345
- Сканирование TCP-портов с помощью netcat:
- Сканирование UDP-портов.
- Отправка UDP-пакета
- Прием данных на UDP-порту и вывод принятых данных
- Netcact в роли простейшего веб-сервера.
- Чат между узлами
- Реверс-шелл
nc — Unix, Linux Command
SYNOPSIS
DESCRIPTION
Common uses include:
- simple TCP proxies
- shell-script based HTTP clients and servers
- network daemon testing
- a SOCKS or HTTP ProxyCommand for ssh(1)
- and much, much more
The options are as follows:
Tag | Description |
---|---|
—4 | Forces nc to use IPv4 addresses only. |
—6 | Forces nc to use IPv6 addresses only. |
—D | Enable debugging on the socket. |
—d | Do not attempt to read from stdin. |
—h | Prints out nc help. |
—i interval | |
Specifies a delay time interval between lines of text sent and received. Also causes a delay time between connections to multiple ports. | |
—k | Forces nc to stay listening for another connection after its current connection is completed. It is an error to use this option without the —l option. |
—l | Used to specify that nc should listen for an incoming connection rather than initiate a connection to a remote host. It is an error to use this option in conjunction with the —p , —s , or —z options. Additionally, any timeouts specified with the —w option are ignored. |
—n | Do not do any DNS or service lookups on any specified addresses, hostnames or ports. |
—p source_port | |
Specifies the source port nc should use, subject to privilege restrictions and availability. It is an error to use this option in conjunction with the —l option. | |
—r | Specifies that source and/or destination ports should be chosen randomly instead of sequentially within a range or in the order that the system assigns them. |
—S | Enables the RFC 2385 TCP MD5 signature option. |
—s source_ip_address | |
Specifies the IP of the interface which is used to send the packets. It is an error to use this option in conjunction with the —l option. | |
—T ToS | |
Specifies IP Type of Service (ToS) for the connection. Valid values are the tokens «lowdelay», «throughput», «reliability», or an 8-bit hexadecimal value preceded by «0x». | |
—t | Causes nc to send RFC 854 DONT and WONT responses to RFC 854 DO and WILL requests. This makes it possible to use nc to script telnet sessions. |
—U | Specifies to use Unix Domain Sockets. |
—u | Use UDP instead of the default option of TCP. |
—v | Have nc give more verbose output. |
—w timeout | |
If a connection and stdin are idle for more than timeout seconds, then the connection is silently closed. The —w flag has no effect on the —l option, i.e. nc will listen forever for a connection, with or without the —w flag. The default is no timeout. | |
—X proxy_version | |
Requests that nc should use the specified protocol when talking to the proxy server. Supported protocols are «4» (SOCKS v.4), «5» (SOCKS v.5) and «connect» (HTTPS proxy). If the protocol is not specified, SOCKS version 5 is used. | |
—x proxy_address[: port] | |
Requests that nc should connect to hostname using a proxy at proxy_address and port. If port is not specified, the well-known port for the proxy protocol is used (1080 for SOCKS, 3128 for HTTPS). | |
—z | Specifies that nc should just scan for listening daemons, without sending any data to them. It is an error to use this option in conjunction with the —l option. |
hostname can be a numerical IP address or a symbolic hostname (unless the —n option is given). In general, a hostname must be specified, unless the —l option is given (in which case the local host is used).
port [s] can be single integers or ranges. Ranges are in the form nn-mm. In general, a destination port must be specified, unless the —U option is given (in which case a socket must be specified).
CLIENT/SERVER MODEL
nc is now listening on port 1234 for a connection. On a second console (or a second machine), connect to the machine and port being listened on:
There should now be a connection between the ports. Anything typed at the second console will be concatenated to the first, and vice-versa. After the connection has been set up, nc does not really care which side is being used as a ‘server’ and which side is being used as a ‘client’. The connection may be terminated using an EOF (‘^D’).
DATA TRANSFER
Start by using nc to listen on a specific port, with output captured into a file:
$ nc -l 1234 > filename.out
Using a second machine, connect to the listening nc process, feeding it the file which is to be transferred:
Источник
Команда Netcat (nc) с примерами
Netcat (или nc ) — это утилита командной строки, которая считывает и записывает данные через сетевые соединения с использованием протоколов TCP или UDP. Это один из самых мощных инструментов в арсенале сетевых и системных администраторов, который считается швейцарским армейским ножом сетевых инструментов.
Netcat является кроссплатформенным и доступен для Linux, macOS, Windows и BSD. Вы можете использовать Netcat для отладки и мониторинга сетевых подключений, сканирования открытых портов, передачи данных в качестве прокси-сервера и многого другого.
Пакет Netcat предварительно установлен в macOS и популярных дистрибутивах Linux, таких как Ubuntu, Debian или CentOS.
Синтаксис Netcat
Самый простой синтаксис утилиты Netcat имеет следующий вид:
В Ubuntu вы можете использовать netcat или nc . Оба они являются символическими ссылками на версию Netcat для openBSD.
По умолчанию Netcat пытается запустить TCP-соединение с указанным хостом и портом. Если вы хотите установить UDP-соединение, используйте параметр -u :
Сканирование портов
Сканирование портов — одно из самых распространенных применений Netcat. Вы можете сканировать один порт или диапазон портов.
Например, чтобы сканировать открытые порты в диапазоне 20-80, вы должны использовать следующую команду:
Опция -z укажет nc сканировать только открытые порты, не отправляя им никаких данных, а опция -v предоставит более подробную информацию.
Результат будет выглядеть примерно так:
Если вы хотите распечатать только строки с открытыми портами, вы можете отфильтровать результаты с помощью команды grep .
Вы также можете использовать Netcat для поиска серверного программного обеспечения и его версии. Например, если вы отправляете команду «EXIT» на сервер через SSH-порт 22 по умолчанию:
Результат будет выглядеть примерно так:
Чтобы сканировать порты UDP, просто добавьте к команде параметр -u как показано ниже:
Как правило, Nmap — лучший инструмент, чем Netcat для комплексного сканирования портов.
Отправка файлов через Netcat
Netcat можно использовать для передачи данных с одного хоста на другой путем создания базовой модели клиент / сервер.
Это работает путем настройки Netcat для прослушивания определенного порта (с использованием параметра -l ) на принимающем хосте, а затем установления обычного TCP-соединения с другим хостом и отправки файла через него.
При получении выполните следующую команду, которая откроет порт 5555 для входящего соединения и перенаправит вывод в файл:
От отправляющего хоста подключитесь к принимающему хосту и отправьте файл:
Чтобы передать каталог, вы можете использовать tar для архивации каталога на исходном хосте и для извлечения архива на целевом хосте.
На принимающем хосте настройте инструмент Netcat для прослушивания входящего соединения через порт 5555. Входящие данные передаются команде tar , которая распаковывает архив:
На передающем хосте упакуйте каталог и отправьте данные, подключившись к слушающему процессу nc на принимающем хосте:
Вы можете наблюдать за процессом передачи на обоих концах. По завершении CTRL+C чтобы закрыть соединение.
Создание простого чат-сервера
Процедура создания онлайн-чата между двумя и более хостами такая же, как и при передаче файлов.
На первом хосте запустите процесс Netcat для прослушивания порта 5555:
Со второго хоста выполните следующую команду для подключения к слушающему порту:
Теперь, если вы наберете сообщение и нажмете ENTER оно будет отображаться на обоих хостах.
Чтобы закрыть соединение, введите CTRL+C
Выполнение HTTP-запроса
Хотя есть гораздо лучшие инструменты для HTTP-запросов, такие как curl , вы также можете использовать Netcat для отправки различных запросов на удаленные серверы.
Например, чтобы получить справочную страницу Netcat с веб-сайта OpenBSD, вы должны ввести:
Полный ответ, включая заголовки HTTP и HTML-код, будет напечатан в терминале.
Выводы
В этом руководстве вы узнали, как использовать утилиту Netcat для установления и тестирования соединений TCP и UDP.
Для получения дополнительной информации посетите страницу руководства Netcat и прочтите обо всех других мощных параметрах команды Netcat.
Если у вас есть вопросы или замечания, пожалуйста, оставьте комментарий ниже.
Источник
Команда Netcat (nc) в Linux с примерами
Netcat является кроссплатформенным и доступен для Linux, macOS, Windows и BSD. Вы можете использовать Netcat для отладки и мониторинга сетевых подключений, сканирования открытых портов, передачи данных в качестве прокси-сервера и многого другого. Пакет Netcat предустановлен в MacOS и популярных дистрибутивах Linux, таких как Ubuntu.
Синтаксис Netcat
Самый основной синтаксис утилиты Netcat имеет следующий вид:
В Ubuntu вы можете использовать либо netcat или nc. Обе они являются символическими ссылками на версию Netcat для openBSD.
По умолчанию Netcat пытается установить TCP-соединение с указанным хостом и портом. Если вы хотите установить UDP-соединение, используйте -uопцию:
Сканирование портов
Сканирование портов является одним из наиболее распространенных способов использования Netcat. Вы можете сканировать один порт или диапазон портов.
Например, для поиска открытых портов в диапазоне 20-80 вы должны использовать следующую команду:
Опция -z скажет nc сканировать только открытые порты, без отправки каких – либо данных на них и -v дает возможность предоставления более подробной информации.
Вывод будет выглядеть примерно так:
Если вы хотите распечатать только строки с открытыми портами, вы можете отфильтровать результаты с помощью команды grep.
Вы также можете использовать Netcat для поиска серверного программного обеспечения и его версии. Например, если вы отправляете команду «EXIT» на сервер по стандартному SSH-порту 22:
Вывод будет выглядеть примерно так:
Для сканирования портов UDP просто добавьте параметр -u в команду, как показано ниже:
В большинстве случаев Nmap лучше, чем Netcat, для сканирования сложных портов.
Отправка файлов через Netcat
Netcat можно использовать для передачи данных с одного хоста на другой, создав базовую модель клиент/сервер.
Это работает, настроив Netcat на прослушивание определенного порта (используя опцию -l) на принимающем хосте, а затем установив обычное TCP-соединение с другим хостом и отправив файл через него.
На приеме запустите следующую команду, которая откроет порт 5555 для входящего соединения и перенаправит вывод в файл:
С узла-отправителя подключитесь к узлу-получателю и отправьте файл:
Для передачи каталога вы можете использовать tar для архивирования каталога на исходном хосте и для извлечения архива на конечном хосте.
На принимающем хосте настройте средство Netcat на прослушивание входящего соединения через порт 5555. Входящие данные передаются в команду tar, которая извлечет архив:
На отправляющем хосте упакуйте каталог и отправьте данные, подключившись к процессу прослушивания nc на принимающем хосте:
Вы можете наблюдать за прогрессом передачи на обоих концах. После завершения введите CTRL+C, чтобы закрыть соединение.
Создание простого сервера чата
Процедура создания онлайн-чата между двумя или более хостами такая же, как и при передаче файлов.
На первом хосте запустите процесс Netcat для прослушивания порта 5555:
Со второго хоста выполните следующую команду для подключения к порту прослушивания:
Теперь, если вы наберете сообщение и нажмете ENTER, оно будет показано на обоих хостах.
Чтобы закрыть соединение, введите CTRL+C.
Выполнение HTTP-запроса
Несмотря на то, что есть намного лучшие инструменты для HTTP-запросов, такие как curl, вы также можете использовать Netcat для отправки различных запросов на удаленные серверы.
Например, чтобы получить справочную страницу Netcat с веб-сайта OpenBSD, введите:
Полный ответ, включая заголовки HTTP и код HTML, будет напечатан в терминале.
Заключение
Из этой статьи вы узнали, как использовать утилиту Netcat для установки и тестирования соединений TCP и UDP.
Для получения дополнительной информации посетите справочную страницу Netcat и прочитайте обо всех других мощных параметрах команды Netcat.
Если у вас есть какие-либо вопросы или замечания, пожалуйста, оставьте комментарий ниже.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Полезные трюки при работе с netcat
В данной статье я рассмотрю популярную сетевую утилиту netcat и полезные трюки при работе с ней.
Netcat — утилита Unix, позволяющая устанавливать соединения TCP и UDP, принимать оттуда данные и передавать их. Несмотря на свою полезность и простоту, многие не знают способы ее применения и незаслуженно обходят ее стороной.
С помощью данной утилиты можно производить некоторые этапы при проведении тестирования на проникновение. Это может быть полезно, когда на атакованной машине отсутствуют (или привлекут внимание) установленные пакеты, есть ограничения (например IoT/Embedded устройства) и т.д.
Что можно сделать с помощью netcat:
- Сканировать порты;
- Перенаправлять порты;
- Производить сбор баннеров сервисов;
- Слушать порт (биндить для обратного соединения);
- Скачивать и закачивать файлы;
- Выводить содержимое raw HTTP;
- Создать мини-чат.
Вообще с помощью netcat можно заменить часть unix утилит, поэтому этот инструмент можно считать неким комбайном для выполнения тех или иных задач.
Практические примеры
Во многих случаях при необходимости проверки того или иного хоста используют телнет, либо собственные сервисные службы для выявления хоста или баннера. Как нам может помочь netcat:
Проверка наличия открытого TCP-порта 12345
nc: connect to 192.168.1.100 12345 (tcp) failed: Connection refused
Connection to 192.168.1.100 22 port [tcp/ssh] succeeded!
SSH-2.0-OpenSSH
Сканирование TCP-портов с помощью netcat:
При таком сканировании не будет соединение с портом, а только вывод успешного соединения:
nc: connectx to 192.168.1.100 port 20 (tcp) failed: Connection refused
nc: connectx to 192.168.1.100 port 21 (tcp) failed: Connection refused
found 0 associations
found 1 connections:
1: flags=82
outif en0
src 192.168.1.100 port 50168
dst 192.168.1.100 port 22
rank info not available
TCP aux info available
Connection to 192.168.1.100 port 22 [tcp/*] succeeded!
nc: connectx to 192.168.1.100 port 23 (tcp) failed: Connection refused
nc: connectx to 192.168.1.100 port 24 (tcp) failed: Connection refused
Сканирование UDP-портов.
Для сканирования UDP портов с помощью nmap необходимы root привилегии. Если их нет — в этом случае нам тоже может помочь утилита netcat:
Connection to 192.168.1.100 port 5555 [udp/*] succeeded!
Отправка UDP-пакета
Это может быть полезно при взаимодействии с сетевыми устройствами.
Прием данных на UDP-порту и вывод принятых данных
После первого сообщения вывод будет остановлен. Если необходимо принять несколько сообщений, то необходимо использовать while true:
Передача файлов. С помощью netcat можно как получать файлы, так и передавать на удаленный хост:
Netcact в роли простейшего веб-сервера.
Netcat может выполнять роль простейшего веб-сервера для отображения html странички.
C помощью браузера по адресу: http://хост netcat:8888/index.html. Для использования стандартного порта веб-сервера под номером 80 вам придется запустить nc c root привелегиями:
Чат между узлами
На первом узле (192.168.1.100):
После выполнения команд все символы, введенные в окно терминала на любом из узлов появятся в окне терминала другого узла.
Реверс-шелл
С помощью netcat можно организовать удобный реверс-шелл:
Теперь можно соединиться с удаленного узла:
Не стоит опускать руки, если нет тех или иных инструментов, зачастую довольно громоздких, иногда задачу можно решить подручными средствами.
Источник