Linux 中的 Netcat 命令——完整指南

数控 或者 Netcat 命令是 Linux 中的网络命令行工具。 它的工作原理类似于端口扫描工具、安全工具或网络监控工具。 它是系统管理员需要注意的重要实用程序,通常被称为网络工具的瑞士军刀。

netcat 命令可用于以下情况:

  • 端口扫描
  • 通过服务器复制文件
  • 创建命令行聊天服务器
  • 转发端口
  • 创建代理服务器
  • 从远程机器拉取横幅信息
  • 托管 Web 服务器
  • 创建后门

安装 Netcat 命令

首先,在大多数 ubuntu 系统中, 网猫 可作为安装的软件包使用,但如果不是,您可以使用以下命令下载它:

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

操作模式

使用 necat 有两种操作模式,作为客户端或作为服务器。

这两种模式的语法可以表示为:

连接到某处:(客户端)

 nc [-options] [hostname] [ports] 

侦听入站:(服务器)

nc –l –p port [options] [hostname] [port]

当使用 Netcat 连接某物时,即使用两者中的前者。 当您使用您的机器从另一台机器获取一些信息时,您实际上是在客户端模式下工作。

使用 Netcat 侦听入站连接时,机器充当服务器。 这 -l 代表聆听。

使用 Netcat 扫描端口

最基本和最常见的用途之一 网猫 是确定哪些端口是开放的。 端口扫描主要使用三个标志:

-和使 nc 能够扫描监听守护进程,而不向它们发送任何数据
-v启用详细模式
-w需要指定超时条件时使用

可以通过三种方式指定监听端口:

监听单个端口:

$ nc -v -w 2 z 127.0.0.1 20

监听多个端口:

$ nc -v -w 2 z 127.0.0.1 20 25 30

侦听一系列端口:

$ nc -v -w 2 z 127.0.0.1 20-25 
监听多个端口

在 Linux 中使用 Netcat 命令复制文件

netcat 命令 可用于将文件从一个系统传输到另一个系统,即使它与 ssh/scp。 这可以通过使用以下命令来完成。

这是通过将文件信息从源机器通过通道发送到接收机器来实现的。 接收机器在侦听模式下运行并侦听特定端口上的数据。 发送机器通过与接收器建立连接来发送数据。 这将使用 Netcat 构建服务器-客户端模型。

重定向运算符 < 、 > 用于写入文件和从文件写入。

在听音机(目的地)上:

$ nc -l  8080 > file.txt

在发送机器上(来源):

$ nc 192.168.1.100 8080 < data.txt

如果您没有提及文件和重定向操作符,那么相同的命令可以用作聊天模型。 我们接下来会看到这个:

使用 NC 的命令行聊天服务器

网猫 可以用来制作一个基本的命令行聊天服务器,可以让两个系统在命令行中聊天。

在其中一台服务器上运行命令:

$ nc -l 8080

在远程机器上,使用以下命令进行连接:

$ nc 127.0.0.1 8080

这将建立连接,并且在一个终端上写入的任何内容都将显示在另一个终端上。

这将起作用。

运行两个终端实例并在两者之间创建一个聊天服务器:

通过 Netcat 聊天
netcat 命令通过 Netcat 聊天

将连接模式更改为 UDP

Netcat 中的默认连接模式是 TCP,但还有另一种称为 UDP 的连接模式可供选择。

这可以通过使用’-u‘ Netcat 命令中的选项。

*TCP 代表传输控制协议,而 UDP 代表用户定义的数据报。

$ nc -l -u 55
数据传输协议数据传输协议

这连接到 55 UDP 端口。 我们可以看到连接的类型是UDP而不是TCP通过使用’-v’ 选项:

UDP验证UDP验证

您可以通过在聊天服务器中使用 -u 来使用它来创建 UDP 聊天服务器 example 以上。 唯一的区别是现在将使用 UDP 协议而不是 TCP 进行交换。

抓取横幅

Netcat 还可用于从远程系统获取横幅信息。

这可以通过连接到 Web 地址的端口 80 然后发送一个 头 / HTTP/1.0 或者 头 / HTTP/1.1

您还可以使用 CONNECT、DELETE、DEBUG、OPTIONS、GET 代替 HEAD。

$ nc [source name] 80
HEAD / HTTP/ 1.1 

写完第二行后,输入几次。

截图 2020 06 02 在 11.23.36 PM使用 HEAD/HTTP 抓取横幅
截图 2020 06 02 在 11.24.07 PM使用 OPTIONS /HTTP 抓取横幅
截图 2020 06 02 在 11.34.12 PM使用 GET / HTTP 抓取横幅

使用 Netcat 作为代理服务器

要创建代理服务器,我们需要创建一个通道来发送和接收信息。 只是重定向传入的连接将创建一个只能以一种方式工作的服务器。 在这种情况下,响应将被丢弃。

创建服务器的命令是:

$ nc -l 8080 | nc 192.168.1.200 80

为了使这两种方式,我们使用:

$ mkfifo 2wayPipe
$ nc -l 8080 0<2wayPipe | nc 192.168.1.200 80 1>2wayPipe

linux 中的 mkfifo 命令用于创建管道。 管道本质上是先进先出(fifo),主要帮助linux中的两个进程进行通信。

2wayPipe 是我们任意选择的管道名称。

这提供了通过网络发送和接收信息的能力 网猫 代理服务器。

创建一个基本的 Web 服务器

假设您要托管一个基本的 HTML 文件。 该文件在您的系统上名为 index.html。 然后你可以使用下面的命令来创建一个 本地 Netcat 服务器 并托管 HTML 文件。 我们将在 shell 脚本中使用 while 循环来确保服务器继续侦听端口 8080 并为每个请求提供我们的 index.html 页面。

$ while : ; do (echo -ne "HTTP/1.1 200 OKrn"; cat index.html;) | nc -l -p 8080 ; done

使用没有终止条件的 while 循环使服务器能够运行直到手动终止,除非手动终止。 可以通过键入查看网页 https://本地主机:8080 在浏览器窗口中。

在 IPV6 和 IPV4 之间切换

如果您需要连接特定版本的 IP,您可以使用以下命令标签之一来执行此操作。

-4仅允许 IPV4 地址
-6仅允许 IPV6 地址

为了 example,在我们上面的命令行聊天模型中,我们可以使用这些标志之一连接到 IPv4 或 IPv6,如下所示。

对于 IPV4:

$ nc -4 -l 8080
$ nc -4 192.168.1.100 8080

对于 IPV6:

$ nc -6 -l 8080
$ nc -6 192.168.1.100 8080

使用Netcat创建系统后门

网猫 用于在您的系统中创建后门,这是黑客经常使用的一种非常流行的方法。 黑客可以使用后门以绕过系统惯用安全机制的方式访问您的系统。 这利用 -e 选项可用 网猫 命令。 -e 命令在 Netcat 中用于在客户端连接时执行指定的程序。

这个命令是:

$ nc -l 5500 -e /bin/bash

这会将端口 5500 连接到您的 bin/bash 远程机器可以通过键入以下命令来访问它以执行命令:

$ nc 10.10.10.100 5500

断开连接后继续收听

当使用 Netcat 设置服务器时,即使与客户端断开连接也会导致服务器终止。 为了防止这种情况,我们使用 -k 无论与客户端的连接怎样,它都会强制服务器保持运行状态。

$ nc -k -l 8080

这可确保即使在客户端断开连接后服务器仍在运行。

结论

netcat 命令是一个非常广泛的实用程序,上面演示的用途只是 netcat 命令可以做的事情的沧海一粟。 您可以在他们的网站上了解有关该命令的更多信息 维基百科页面 或者 手册页.