8带有示例的Netcat(nc)命令

Netcat(nc)是一个简单但功能强大的网络命令行工具,用于在Linux中执行与TCP,UDP或UNIX域套接字相关的任何操作。

Netcat (或简称nc )是一个简单但功能强大的网络命令行工具,用于在Linux中执行与TCPUDPUNIX域套接字相关的任何操作。

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

在本文中,我们将通过示例解释Netcat使用命令。

如何在Linux中安装和使用Netcat

要在系统上安装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软件包后 ,您可以继续学习以下示例中netcat命令的用法。

端口扫描

Netcat可用于端口扫描:了解哪些端口在目标计算机上打开并运行服务。 它可以扫描单个或多个或一系列开放端口。

下面是一个示例, -z选项将nc设置为只扫描监听守护进程,而不实际向其发送任何数据。 -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中扫描开放端口

在Linux服务器之间传输文件

Netcat允许您在两台Linux计算机或服务器之间传输文件 ,这两个系统都必须安装nc

例如,要将ISO映像文件从一台计算机复制到另一台计算机并监视传输进度(使用pv实用程序 ),请在发送方/服务器计算机(存在ISO文件的位置)上运行以下命令。

这将在端口3000上的监听模式( -l标志)中运行nc

$ 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系统之间的文件传输

Linux系统之间的文件传输

创建命令行聊天服务器

您还可以使用Netcat立即创建简单的命令行消息服务器 与前面的用法示例一样,必须在用于聊天室的两个系统上安装nc

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

$ nc -l -vv -p 5000

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

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

在命令行中创建聊天服务器

创建基本Web服务器

使用nc命令-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服务器

在命令行中创建Web服务器

然后打开Web浏览器并使用以下地址访问内容。

http://localhost:8080
OR
http://SERVER_IP:8080
测试Web服务器

测试Web服务器

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

排除Linux服务器连接故障

Netcat的另一个有用用途是解决服务器连接问题。 在这里,您可以使用Netcat验证服务器发送的数据以响应客户端发出的命令。

以下命令检索example.com的主页。

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

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

查找在端口上运行的服务

您还可以使用Netcat获取端口横幅。 在这种情况下,它将告诉您在某个端口后面运行的服务。 例如,要知道特定服务器上端口22后面运行的服务类型,请运行以下命令(将192.168.56.110替换为目标服务器的IP地址)。 -n标志表示禁用DNS或服务查找。

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

查找在端口上运行的服务

创建流套接字

Netcat还支持创建UNIX域流套接字。 以下命令将在UNIX域流套接字上创建和监听。

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

在命令行中创建流套接字

创建一个后门

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

要操作后门,您需要Netcat监听目标服务器上的选定端口(例如端口3001 ),然后您可以从您的计算机连接到此端口,如下所示。

这是用于在远程服务器上运行的命令,其中-d选项禁用从stdin读取, -e指定在目标系统上运行的命令。

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

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

$ man nc

在本文中,我们已经解释了8个实用的Netcat命令用法示例 如果您了解任何其他实际用例,请通过下面的反馈表与我们分享。 你也可以问一个问题。