使用 netcat [nc] 命令进行 Linux 和 Unix 端口扫描
Nmap(“网络映射器”)是一款用于网络探索和安全审计的开源工具。如果未安装 Nmap,并且您不想使用所有 Nmap 选项/功能,则可以使用 netcat/nc 命令扫描端口。这可能有助于了解目标机器上哪些端口是开放的并且正在运行服务。您也可以使用nmap 命令进行端口扫描。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux/Unix 带有 netcat/nc |
预计阅读时间 | 5 分钟 |
如何使用 nc 扫描 Linux、UNIX 和 Windows 服务器端口扫描?
尝试以下 nc / netcat 命令。该-z标志可用于告诉 nc 报告开放端口,而不是发起连接。使用-z标志运行 nc 命令。您需要指定主机名 / ip 以及端口范围来限制和加速操作:
## netcat or nc syntax ## nc -z -v {host-name-here} {port-range-here} nc -z -v host-name-here ssh nc -z -v host-name-here 22 nc -w 1 -z -v server-name-here port-Number-here ## scan 1 to 1023 ports ## nc -zv vip-1.vsnl.example.in 1-1023
示例输出:
Connection to localhost 25 port [tcp/smtp] succeeded! Connection to vip-1.vsnl.example.in 25 port [tcp/smtp] succeeded! Connection to vip-1.vsnl.example.in 80 port [tcp/http] succeeded! Connection to vip-1.vsnl.example.in 143 port [tcp/imap] succeeded! Connection to vip-1.vsnl.example.in 199 port [tcp/smux] succeeded! Connection to vip-1.vsnl.example.in 783 port [tcp/*] succeeded! Connection to vip-1.vsnl.example.in 904 port [tcp/vmware-authd] succeeded! Connection to vip-1.vsnl.example.in 993 port [tcp/imaps] succeeded!
使用 netcat 进行端口扫描 [nc]
你也可以扫描单个端口。语法如下
nc -zv v.txvip1 443 nc -zv v.txvip1 80 nc -zv v.txvip1 22 nc -zv v.txvip1 21 nc -zv v.txvip1 smtp nc -zvn v.txvip1 ftp ## really fast scanner with 1 timeout value ## netcat -v -z -n -w 1 v.txvip1 1-1023
示例输出:
图 01:Linux/Unix:使用 Netcat 在服务器上建立和测试 TCP 和 UDP 连接
- -z:端口扫描模式即零I/O模式。
- -v:详细一点 [使用两次-vv可更加详细]。
- -n:使用纯数字的 IP 地址,即不使用 DNS 来解析 IP 地址。
- -w 1:设置超时值为1。
- -u:使用 udp 而不是 TCP。
- -4:强制使用 IPv4 版本地址。
- -6:确保我们只使用 IPv6 版本地址。
让我们扫描 UDP 端口 1194(OpenVPN)或 WireGuard VPN UDP 端口 31194:
上一个命令使用了 IPv4,当远程主机具有 IPv4 和 IPv6 地址时,它很有用。例如,运行dig 命令/ host 命令如下:
我们看到:
$ nc -w 2 -v -u ln.sg-vpn-1 1194
$ nc -w 2 -v -u ln.sg-vpn-1 31194
$ nc -w 2 -v -4 www.example.com 443
$ host www.example.com
www.example.com has address 104.22.10.214 www.example.com has address 172.67.7.239 www.example.com has address 104.22.11.214 www.example.com has IPv6 address 2606:4700:10::6816:bd6 www.example.com has IPv6 address 2606:4700:10::6816:ad6 www.example.com has IPv6 address 2606:4700:10::ac43:7ef
现在仅为 www.example.com 使用 IPv6 地址:
$ nc -w 2 -v -6 www.example.com 443
更多示例
让我们尝试一下:
$ netcat -z -vv www.example.com http www.example.com [75.126.153.206] 80 (http) open sent 0, rcvd 0 $ netcat -z -vv google.com https DNS fwd/rev mismatch: google.com != maa03s16-in-f2.1e100.net DNS fwd/rev mismatch: google.com != maa03s16-in-f6.1e100.net DNS fwd/rev mismatch: google.com != maa03s16-in-f5.1e100.net DNS fwd/rev mismatch: google.com != maa03s16-in-f3.1e100.net DNS fwd/rev mismatch: google.com != maa03s16-in-f8.1e100.net DNS fwd/rev mismatch: google.com != maa03s16-in-f0.1e100.net DNS fwd/rev mismatch: google.com != maa03s16-in-f7.1e100.net DNS fwd/rev mismatch: google.com != maa03s16-in-f4.1e100.net google.com [74.125.236.162] 443 (https) open sent 0, rcvd 0 $ netcat -v -z -n -w 1 192.168.1.254 1-1023 (UNKNOWN) [192.168.1.254] 989 (ftps-data) open (UNKNOWN) [192.168.1.254] 443 (https) open (UNKNOWN) [192.168.1.254] 53 (domain) open
使用 nc 进行数据传输
我将启动 nc 来监听特定端口(例如 4242),并将输出捕获到名为 file.output 的文件中:
$ nc -l 4242 > file.output
使用第二台笔记本电脑(macbook pro)连接到监听的 nc 进程,向其提供要传输的文件:
$ nc -N 192.168.2.25 4242 < /path/to/input.file
文件传输完成后,连接将自动关闭。当然,这并不安全,因为没有进行加密。因此,切勿在没有 VPN 的情况下通过 Internet 或 LAN 运行它。
查找 OpenSSH 服务器版本
语法很简单
# Port Scanning With netcat including displaying version # echo "QUIT" | nc 192.168.2.17 22 echo "QUIT" | nc -v 192.168.2.254 ssh # OR pass the -vv to get remote OpenSSH version # nc -vv 192.168.2.254 ssh
我们还可以指定要扫描的端口列表,例如:
$ nc -zv 192.168.2.17 http https 20 22-23
我们的最后一个例子,只显示开放或关闭的端口:
nc -w 1 -zv {host} {port} 20-23 2>&1 | grep succeeded nc -w 1 -zv 192.168.2.17 https 20-23 2>&1 | grep succeeded nc -w 1 -zv 192.168.2.17 https 20-23 2>&1 | grep failed
在 Linux、Unix 和 macOS 系统上使用 nc/netcat 扫描端口
总结
在本页中,我们解释了如何使用 netcat / nc 实用程序从 Unix、macOS 或 Linux 计算机进行端口扫描。Linux 或 Unix 上的 nc /netcat 命令可用于涉及 TCP、UDP 或 UNIX 域套接字的几乎所有事情。因此,我建议通过键入以下 man 命令来阅读手册页:
$ man nc
您可能也会发现以下教程很有用:
- 使用 nmap 命令扫描网络中的开放端口以获取更多信息。
- netcat/nc下载页面。