ncat / nc 是网络实用程序,功能类似于 cat 命令,但用于网络。它是一个通用的 CLI 工具,用于在网络上读取、写入和重定向数据。它被设计成一个可靠的后端工具,可以与脚本或其他程序一起使用。它也是一个很棒的网络调试工具,因为它可以创建任何类型的连接。
ncat / nc 可以是端口扫描工具、安全工具或监控工具,也是一个简单的 TCP 代理。由于它有这么多的功能,它被称为网络瑞士军刀。它是每个系统管理员都应该知道和掌握的工具之一。
在大多数 Debian 发行版中,nc 都可以使用,并且在安装过程中会自动安装。但是在 Minimal Centos 7 / RHEL 7 安装中,您需要使用以下命令安装。
[root@linuxtechi ~]# yum install nmap-ncat -y
管理员可以使用它来审计他们的系统安全,可以使用它来找到被打开的端口并保护它们。管理员也可以使用它作为审计 web 服务器,telnet 服务器,邮件服务器等客户端,使用它我们可以控制每个字符的发送以及查看请求的响应。还可以让它捕获客户端发送的数据,以了解他们在做什么。
在本教程中,我们将通过 10 个示例学习如何使用 nc 命令。
(1) 监听入站连接
ncat 可以在监听模式下工作,我们可以用选项 l 监听端口号上的入站连接,示例如下:
$ ncat -l 8080
服务器现在将开始监听端口 8080 以获取入站连接。
(2) 连接到远程系统
要使用 nc 连接到远程系统,可以使用以下命令
$ ncat IP_address port_number
示例如下:
$ ncat 192.168.1.100 80
现在连接到 IP 地址为 192.168.1.100 服务器的 80 端口,我们现在可以向服务器发送指令了,就像我们可以得到完整的页面内容
GET / HTTP/1.1
or get the page name,
GET / HTTP/1.1
or we can get banner for OS fingerprinting with the following,
HEAD / HTTP/1.1
This will tell what software is being used to run the web Server.
(3) 连接到 UDP 端口
默认情况下,nc 只连接到 TCP 端口。可以使用选项 u 连接到 UDP 端口,示例如下:
$ ncat -l -u 1234
系统将开始监听 udp 端口 1234,可以使用 netstat 命令来验证
$ 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 连接,使用以下命令
$ ncat -v -u {host-ip} {udp-port}
示例如下:
[root@localhost ~]# 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 也可以用作聊天工具,我们可以配置服务器监听端口,然后可以从同一个端口上的远程机器连接到服务器并开始发送消息。
在服务端,运行如下命令:
$ ncat -l 8080
在客户端,运行如下命令:
$ ncat 192.168.1.100 8080
然后开始发送消息,他们将显示在服务器终端上。
(5) NC 作为代理
NC 也可以使用一个简单的命令充当代理,示例如下:
$ ncat -l 8080 | ncat 192.168.1.200 80
现在,通过端口 8080 连接到我们服务器的所有连接都将自动重定向到端口 80 的 192.168.1.200 服务器。但是由于我们使用的是管道,只能传而不能收数据,为了能够收数据,我们需要创建一个双向管道,使用以下命令:
$ mkfifo 2way
$ ncat -l 8080 0<2way | ncat 192.168.1.200 80 1>2way
现在你将能够通过 nc 代理发送和接收数据。
(6) 复制文件
nc 也可以用来将文件从一个系统复制到另一个系统,但是不建议使用,因为大多数系统都默认安装 ssh / scp。如果您遇到了一个系统没有 ssh / scp,nc 将派上用场。
在要接收数据的机器上,启动 nc 为监听模式
$ ncat -l 8080 > file.txt
在要复制数据的机器上,运行以下命令
$ ncat 192.168.1.100 8080 --send-only < data.txt
在这里,data.txt 是必须发送的文件,–send-only 选项用来设置复制文件后关闭连接。如果不使用这个选项,我们需要按 ctrl+C
手动关闭连接。
(7) 创建后门
nc 命令也可以用来创建系统后门,这种技术实际上被黑客使用很多。为了保护我们的系统,我们应该知道它是如何工作的。要创建一个后门,使用如下命令:
$ ncat -l 10000 -e /bin/bash
e 选项将 bash 绑定到 10000 端口上,现在客户端可以连接到服务器的 10000 端口,并可以通过 bash 完全访问我们的系统
$ ncat 192.168.1.100 10000
(8) 端口转发
使用选项 c ,nc 可以进行端口转发,示例如下:
$ ncat -u -l 80 -c 'ncat -u -l 8080'
现在,80 端口的所有连接都将被转发到 8080 端口
(9) 设置连接超时
ncat 的监听模式是持续运行的,必须手动终止,可以用选项 w 来配置超时
$ ncat -w 10 192.168.1.100 8080
这将导致连接在 10 秒内终止,但它只能在客户端使用,不能在服务器端使用。
(10) 强制持续运行
当客户端与服务器断开连接时,一段时间后服务器也停止监听。我们可以使用选项 k 强制服务器保持连接并继续端口监听,运行如下命令:
$ ncat -l -k 8080