合 Linux之ncat命令
简介
ncat
或者说 nc
是一款功能类似 cat
的工具,但是是用于网络的。它是一款拥有多种功能的 CLI
工具,可以用来在网络上读、写以及重定向数据。 它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。
ncat
/nc
既是一个端口扫描工具,也是一款安全工具,还是一款监测工具,甚至可以做为一个简单的 TCP
代理。 由于有这么多的功能,它被誉为是网络界的瑞士军刀。 这是每个系统管理员都应该知道并且掌握它。
安装
在大多数 Debian
发行版中,nc
是默认可用的,它会在安装系统的过程中自动被安装。 但是在 CentOS 7/RHEL 7
的最小化安装中,nc
并不会默认被安装。 你需要用下列命令手工安装。
1 | yum install nmap nmap-ncat -y |
系统管理员可以用它来审计系统安全,用它来找出开放的端口然后保护这些端口。 管理员还能用它作为客户端来审计 Web
服务器、telnet
服务器、邮件服务器等, 通过 nc
我们可以控制发送的每个字符,也可以查看对方的回应。
我们还可以用它捕获客户端发送的数据以此来了解这些客户端是做什么的。
命令
基本语法:
1 | ncat [选项] 主机 端口 |
常用选项:
-l
:监听模式,指定ncat处于服务器模式,等待连接。-p <port>
:指定本地端口号。-s <source_address>
:指定本地源地址。-v
:详细模式,显示更多调试信息。-u
:使用UDP协议进行通信。-4
:强制使用IPv4协议。-6
:强制使用IPv6协议。-i <interval>
:设置发送数据的间隔时间(以秒为单位)。-n
:禁用DNS解析,直接使用IP地址进行连接。-w <timeout>
:设置超时时间(以秒为单位)。
使用示例
在本文中,我们会通过下面这些例子来学习如何使用 nc
命令。
1) 监听入站连接
通过 -l
选项,ncat
可以进入监听模式,使我们可以在指定端口监听入站连接。 完整的命令是这样的:
1 | ncat -l port_number |
比如
1 | ncat -l 8080 |
服务器就会开始在 8080
端口监听入站连接。
2) 连接远程系统
使用下面命令可以用 nc
来连接远程系统
1 | ncat IP_address port_number |
我们来看个例子
1 | ncat 192.168.1.100 80 |
这会创建一个连接,连接到 IP 为 192.168.1.100
的服务器上的 80
端口,然后我们就可以向服务器发送指令了。 比如我们可以输入下面内容来获取完整的网页内容
1 | GET / HTTP/1.1 |
或者获取页面名称
1 | GET / HTTP/1.1 |
或者我们可以通过以下方式获得操作系统指纹标识
1 | HEAD / HTTP/1.1 |
这会告诉我们使用的是什么软件来运行这个 web
服务器的
3) 连接 UDP 端口
默认情况下,nc
创建连接时只会连接 TCP
端口。 不过我们可以使用 -u
选项来连接到 UDP
端口
1 | ncat -l -u 1234 |
现在我们的系统会开始监听 UDP
的 1234
端口,我们可以使用下面的 netstat
命令来验证这一点
1 2 3 | netstat -tunlp | grep 1234 udp 0 0 0.0.0.0:1234 0.0.0.0:* 17341/nc udp6 0 0 :::1234 :::* 17341/nc |
假设我们想发送或者说测试某个远程主机 UDP
端口的连通性,我们可以使用下面命令
1 | ncat -v -u {host-ip} {udp-port} |
比如
1 2 3 | ncat -v -u 192.168.105.150 53 Ncat: Version 6.40 ( http://nmap.org/ncat ) Ncat: Connected to 192.168.105.150:53 |
4) 将 nc 作为聊天工具
nc
也可以作为聊天工具来用,我们可以配置服务器监听某个端口,然后从远程主机上连接到服务器的这个端口,就可以开始发送消息了。 在服务器这端运行: