8 Netcat (nc) 命令及示例

网猫(或者数控简而言之)是一个简单但功能强大的用于在 Linux 中执行与以下相关的任何操作传输控制协议,UDP协议, 或者UNIX系统-域套接字。

网猫可用于,端口重定向,作为端口侦听器(用于传入连接);它还可以用来打开远程连接和许多其他东西。此外,您还可以将其用作后门来访问目标服务器。

在这篇文章中,我们将解释网猫使用命令和示例。

如何在 Linux 中安装和使用 Netcat

要安装网络猫包在您的系统上,使用适用于您的 Linux 发行版的默认包管理器。

$ yum install nc                  [On CentOS/RHEL]
$ dnf install nc                  [On Fedora 22+ and RHEL 8]
$ sudo apt-get install Netcat     [On Debian/Ubuntu]

一次网络猫包安装完毕后,您可以进一步学习使用netcat命令在以下示例中。

端口扫描

网猫可用于端口扫描:了解并在目标机器上运行服务。它可以扫描单个或多个或一系列开放端口。

这是一个例子,-z选项集数控简单地扫描监听守护进程,而不实际向它们发送任何数据。这-v选项启用详细模式并且-w指定无法建立连接的超时时间。

$ nc -v -w 2 z 192.168.56.1 22     #scan a single port
OR
$ nc -v -w 2 z 192.168.56.1 22 80  #scan multiple ports
OR
$ nc -v -w 2 z 192.168.56.1 20-25  #scan range of ports
扫描 Linux 中的开放端口

在 Linux 服务器之间传输文件

网猫允许您并且这两个系统都必须有数控安装。

例如,将 ISO 映像文件从一台计算机复制到另一台计算机并监控传输进度(使用),在发送者/服务器计算机(ISO 文件所在的位置)上运行以下命令。

这将运行数控在聆听模式下(-l旗)在港口3000

$ tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso  | pv | nc -l -p 3000 -q 5

在接收方/客户端计算机上,运行以下命令来获取该文件。

$ nc 192.168.1.4 3000 | pv | tar -zxf -
Linux系统之间的文件传输

创建命令行聊天服务器

您还可以使用网猫创建一个简单的即刻。正如前面的使用示例一样,数控必须安装在用于聊天室的两个系统上。

在一个系统上,运行以下命令来创建侦听端口的聊天服务器5000

$ nc -l -vv -p 5000

在另一个系统上,运行以下命令以启动与运行消息服务器的计算机的聊天会话。

$ nc 192.168.56.1 5000
在命令行中创建聊天服务器

创建基本的 Web 服务器

机智的-l的选项数控指令用于创建基本的、不安全的 Web 服务器来为学习目的提供静态 Web 文件。为了演示这一点,创建一个.html文件如图所示。

$ vim index.html

在文件中添加以下 HTML 行。

<html>
        <head>
                <title>Test Page</title>
        </head>
        <body>
                      <p>Serving this file using Netcat Basic HTTP server!</p>
        </body>
</html>

保存文件中的更改并退出。

然后通过运行以下命令通过 HTTP 提供上述文件,这将使 HTTP 服务器能够持续运行。

$ while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done
在命令行中创建 Web 服务器

然后打开网络浏览器,可以使用以下地址访问内容。

https://localhost:8080
OR
https://SERVER_IP:8080
测试网络服务器

请注意,您可以停止Netcat HTTP 服务器通过按[Ctrl+ C]

Linux 服务器连接故障排除

另一个有用的用法网猫是为了问题。在这里,您可以使用网猫验证服务器正在发送哪些数据来响应客户端发出的命令。

以下命令检索主页example.com

$ printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80

上述命令的输出包括网络服务器发送的标头,可用于故障排除。

查找端口上运行的服务

您还可以使用网猫获取端口横幅。在这种情况下,它会告诉您某个端口后面正在运行什么服务。例如,了解端口后面正在运行什么类型的服务22在特定服务器上,运行以下命令(替换192.168.56.110与目标服务器的 IP 地址)。这-nflag 表示禁用 DNS 或服务查找。

$ nc -v -n 192.168.56.110 80
查找端口上运行的服务

创建流套接字

网猫还支持创建 UNIX 域流套接字。以下命令将创建并侦听 UNIX 域流套接字。

$ nc -lU /var/tmp/mysocket &
$ ss -lpn | grep "/var/tmp/"
在命令行中创建流套接字

创建后门

你也可以运行网猫作为后门。然而,这需要更多的工作。如果网猫安装在目标服务器上后,您可以使用它来创建后门,以获取远程命令提示符。

要充当后门,您需要网猫监听选定的端口(例如端口3001),然后您可以从您的计算机连接到此端口,如下所示。

这是旨在在远程服务器上运行的命令-d选项禁用从标准输入读取,并且-e指定要在目标系统上运行的命令。

$ nc -L -p 3001 -d -e cmd.exe 

最后但并非最不重要的,网猫可以用作不同服务/协议的代理,包括 HTTP、SSH 等等。有关更多信息,请参阅其手册页。

$ man nc

在这篇文章中,我们解释了8个实用的Netcat命令使用示例。如果您知道任何其他实际用例,请通过下面的反馈表与我们分享。您也可以提出问题。