Use Netcat to Spawn Reverse Shells & Connect to Other Computers [Tutorial]
Оглавление:
- Синтаксис Netcat
- Сканирование портов
- Отправка файлов через Netcat
- Создание простого сервера чата
- Выполнение HTTP-запроса
- Вывод
Netcat (или nc) - это утилита командной строки, которая читает и записывает данные через сетевые подключения, используя протоколы TCP или UDP. Это один из самых мощных инструментов в арсенале сетевых и системных администраторов, который считается швейцарским армейским ножом сетевых инструментов.
Netcat является кроссплатформенным и доступен для Linux, macOS, Windows и BSD. Вы можете использовать Netcat для отладки и мониторинга сетевых подключений, сканирования открытых портов, передачи данных в качестве прокси-сервера и многого другого. Пакет Netcat предустановлен в MacOS и популярных дистрибутивах Linux, таких как Ubuntu.
Синтаксис Netcat
Самый основной синтаксис утилиты Netcat имеет следующий вид:
nc host port
В Ubuntu вы можете использовать
netcat
или
nc
. Обе они являются символическими ссылками на версию Netcat для openBSD.
По умолчанию Netcat пытается установить TCP-соединение с указанным хостом и портом. Если вы хотите установить UDP-соединение, используйте опцию
-u
:
Сканирование портов
Сканирование портов является одним из наиболее распространенных способов использования Netcat. Вы можете сканировать один порт или диапазон портов.
Например, для поиска открытых портов в диапазоне 20-80 вы должны использовать следующую команду:
nc -z -v 10.10.8.8 20-80
Опция
-z
nc
сканировать только открытые порты, не отправляя на них никаких данных, а опцию
-v
- предоставить более подробную информацию.
Вывод будет выглядеть примерно так:
nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded! nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused… nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused Connection to 10.10.8.8 80 port succeeded!
nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!
Вы также можете использовать Netcat для поиска серверного программного обеспечения и его версии. Например, если вы отправляете команду «EXIT» на сервер по стандартному SSH-порту 22:
echo "EXIT" | nc 10.10.8.8 22
Вывод будет выглядеть примерно так:
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 Protocol mismatch.
Для сканирования портов UDP просто добавьте в команду параметр
-u
как показано ниже:
nc -z -v -u 10.10.8.8 20-80
В большинстве случаев Nmap лучше, чем Netcat, для сканирования сложных портов.
Отправка файлов через Netcat
Netcat можно использовать для передачи данных с одного хоста на другой, создав базовую модель клиент / сервер.
Это работает путем настройки Netcat на прослушивание определенного порта (с помощью параметра
-l
) на принимающем хосте, а затем установления обычного TCP-соединения с другого хоста и отправки файла через него.
На приеме запустите следующую команду, которая откроет порт 5555 для входящего соединения и перенаправит вывод в файл:
nc -l 5555 > file_name
С узла-отправителя подключитесь к узлу-получателю и отправьте файл:
nc receiving.host.com 5555 < file_name
Для передачи каталога вы можете использовать tar для архивирования каталога на исходном хосте и для извлечения архива на конечном хосте.
На принимающем хосте настройте средство Netcat на прослушивание входящего соединения через порт 5555. Входящие данные передаются в команду tar, которая извлечет архив:
nc -l 5555 | tar xzvf -
На отправляющем хосте упакуйте каталог и отправьте данные, подключившись к процессу прослушивания
nc
на принимающем хосте:
tar czvf - /path/to/dir | nc receiving.host.com 5555
Вы можете наблюдать за прогрессом передачи на обоих концах. После завершения
CTRL+C
чтобы закрыть соединение.
Создание простого сервера чата
Процедура создания онлайн-чата между двумя или более хостами такая же, как и при передаче файлов.
На первом хосте запустите процесс Netcat для прослушивания порта 5555:
nc -l 5555
Со второго хоста выполните следующую команду для подключения к порту прослушивания:
nc first.host.com 5555
Теперь, если вы наберете сообщение и нажмете клавишу
ENTER
оно будет отображаться на обоих хостах.
Чтобы закрыть соединение,
CTRL+C
Выполнение HTTP-запроса
Несмотря на то, что есть намного лучшие инструменты для HTTP-запросов, такие как curl, вы также можете использовать Netcat для отправки различных запросов на удаленные серверы.
Например, чтобы получить справочную страницу Netcat с веб-сайта OpenBSD, введите:
printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80
Полный ответ, включая заголовки HTTP и код HTML, будет напечатан в терминале.
Вывод
Из этого руководства вы узнали, как использовать утилиту Netcat для установки и тестирования соединений TCP и UDP.
Для получения дополнительной информации посетите справочную страницу Netcat и прочитайте обо всех других мощных параметрах команды Netcat.
терминал netcatКоманда Echo в Linux с примерами
Команда echo является одной из самых основных и часто используемых команд в Linux. Аргументы, передаваемые echo, выводятся на стандартный вывод.
Команда curl в linux с примерами
Curl - это утилита командной строки для передачи данных с или на сервер, предназначенная для работы без взаимодействия с пользователем. В этом руководстве мы покажем вам, как использовать инструмент скручивания, на практических примерах и подробных объяснениях наиболее распространенных вариантов скручивания.
Linux cut команда с примерами
Вырезать - это утилита командной строки, которая позволяет вырезать части строк из указанных файлов или переданных данных и выводить результат в стандартный вывод. В этом руководстве мы покажем вам, как использовать команду Linux Cut, на практических примерах и подробных объяснениях наиболее распространенных параметров резки.







