Поиск по сайту:

8 Команда Netcat (nc) с примерами


Netcat (или nc короче) — это простой, но мощный сетевой инструмент командной строки, используемый для выполнения любых операций в Linux, связанных с TCP, < Strong>UDP или UNIX-сокеты.

Netcat можно использовать для сканирования портов, перенаправления портов, в качестве прослушивателя портов (для входящих соединений); его также можно использовать для открытия удаленных подключений и многого другого. Кроме того, вы можете использовать его как бэкдор для получения доступа к целевому серверу.

В этой статье мы объясним команды использования Netcat на примерах.

Как установить и использовать Netcat в Linux

Чтобы установить пакет netcat в вашей системе, используйте менеджер пакетов по умолчанию для вашего дистрибутива Linux.

yum install nc                  [On CentOS/RHEL]
dnf install nc                  [On Fedora 22+ and RHEL 8]
sudo apt-get install Netcat     [On Debian/Ubuntu]

После установки пакета netcat вы можете продолжить изучение использования команды netcat в следующих примерах.

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

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

Вот пример: опция -z устанавливает nc для простого сканирования прослушивающих демонов, без фактической отправки им каких-либо данных. Параметр -v включает подробный режим, а -w задает тайм-аут для соединения, которое не может быть установлено.

nc -v -w 2 z 192.168.56.1 22     #scan a single port
OR
nc -v -w 2 z 192.168.56.1 22 80  #scan multiple ports
OR
nc -v -w 2 z 192.168.56.1 20-25  #scan range of ports

Перенос файлов между серверами Linux

Netcat позволяет передавать файлы между двумя компьютерами или серверами Linux, и на обеих этих системах должен быть установлен nc.

Например, чтобы скопировать файл образа ISO с одного компьютера на другой и отслеживать ход передачи (с помощью утилиты pv), выполните следующую команду на компьютере отправителя/сервера (где существует файл ISO).

При этом nc будет запущен в режиме прослушивания (флаг -l) на порту 3000.

tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso  | pv | nc -l -p 3000 -q 5

А на компьютере-получателе/клиенте выполните следующую команду, чтобы получить файл.

nc 192.168.1.4 3000 | pv | tar -zxf -

Создайте сервер чата из командной строки

Вы также можете использовать Netcat для мгновенного создания простого сервера обмена сообщениями с командной строкой. Как и в предыдущем примере использования, nc должен быть установлен в обеих системах, используемых для чата.

В одной системе выполните следующую команду, чтобы создать сервер чата, прослушивающий порт 5000.

nc -l -vv -p 5000

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

nc 192.168.56.1 5000

Создайте базовый веб-сервер

С опцией -l nc команды, используемой для создания базового, небезопасного веб-сервера для обслуживания статических веб-файлов в учебных целях. Чтобы продемонстрировать это, создайте файл .html, как показано.

vim index.html

Добавьте в файл следующие строки HTML.

<html>
        <head>
                <title>Test Page</title>
        </head>
        <body>
                      <p>Serving this file using Netcat Basic HTTP server!</p>
        </body>
</html>

Сохраните изменения в файле и выйдите.

Затем отправьте указанный выше файл через HTTP, выполнив следующую команду, которая позволит HTTP-серверу работать непрерывно.


while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done

Затем откройте веб-браузер и получите доступ к содержимому, используя следующий адрес.

http://localhost:8080
OR
http://SERVER_IP:8080

Обратите внимание, что вы можете остановить HTTP-сервер Netcat, нажав [Ctrl+ C].

Устранение неполадок подключения к Linux-серверу

Еще одно полезное использование Netcat — устранение проблем с подключением к серверу. Здесь вы можете использовать Netcat, чтобы проверить, какие данные отправляет сервер в ответ на команды, выданные клиентом.

Следующая команда возвращает домашнюю страницу example.com.

printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80

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

Найдите службу, работающую на порту

Вы также можете использовать Netcat для получения баннеров портов. В этом случае он сообщит вам, какая служба работает за определенным портом. Например, чтобы узнать, какой тип службы работает за портом 22 на конкретном сервере, выполните следующую команду (замените 192.168.56.110 на IP-адрес целевого сервера). Флаг -n означает отключение DNS или поиска служб.

nc -v -n 192.168.56.110 80

Создание потоковых сокетов

Netcat также поддерживает создание потоковых сокетов UNIX-домена. Следующая команда создаст и прослушивает потоковый сокет UNIX-домена.

nc -lU /var/tmp/mysocket &
ss -lpn | grep "/var/tmp/"

Создать бэкдор

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

Чтобы действовать как бэкдор, вам необходимо, чтобы Netcat прослушивал выбранный порт (например, порт 3001) на целевом сервере, а затем вы могли подключиться к этому порту со своего компьютера следующим образом.

Это команда, предназначенная для запуска на удаленном сервере, где опция -d отключает чтение со стандартного ввода, а -e указывает команду для запуска в целевой системе.

nc -L -p 3001 -d -e cmd.exe 

И последнее, но не менее важное: Netcat можно использовать в качестве прокси-сервера для различных служб/протоколов, включая HTTP, SSH и многие другие. Для получения дополнительной информации см. его справочную страницу.

man nc

В этой статье мы объяснили 8 практических примеров использования команд Netcat. Если вам известны какие-либо другие практические варианты использования, поделитесь с нами через форму обратной связи ниже. Вы также можете задать вопрос.