Kali Linux 最佳工具之nc 命令 (Netcat)

admin 2023年11月29日10:02:56评论18 views字数 3451阅读11分30秒阅读模式

介绍

Netcat ( nc) 命令是一个命令行实用程序,用于在两个计算机网络之间读取和写入数据。通信使用TCP或 UDP 进行。该命令因系统而异(netcatncncat和其他)。

由于丰富的连接故障排除功能和脚本可用性,Netcat 是网络和系统管理员需要掌握的重要工具。

本文解释了该nc命令(Netcat OpenBSD 版本)并提供了示例用例。

Kali Linux 最佳工具之nc 命令 (Netcat)

先决条件

  • 同一网络中的两台机器。这些示例使用两个Ubuntu 18.04虚拟机。

  • 访问两台设备上的命令行/终端。

  • 每个设备的IP地址

  • 访问浏览器或curl命令。

nc 命令语法

nc命令的基本语法是:

nc [<options>] <host> <port>

该命令由以下元素组成:

  • 在 Ubuntu 上,这些命令ncnetcat都充当Netcat OpenBSD 版本的符号链接。在 CentOS、Debian 和 RHEL 上,命令为ncat.

  • 可以<host>是数字 IP 地址,也可以是符号主机名。

  • <port>数字端口或服务名称。

Netcat有两种工作模式:

  • 连接模式在连接模式下,Netcat 作为客户端工作。该实用程序需要<host><port>参数。

  • 聆听模式在监听模式下,Netcat 作为服务器工作。<host>省略时,Netcat 侦听指定端口的所有可用地址。

该命令尝试在提供的主机和端口上启动 TCP 连接,不带任何选项。

Netcat (nc) 命令选项

下表概述了常用nc命令选项:

选项 类型 描述
-4 协议 仅使用 IPv4。
-6 协议 仅使用 IPv6。
-U
--unixsock
协议 使用 Unix 域套接字。
-u
--udp
协议 使用UDP连接。
-g <hop1, hop2,...> 连接方式 设置 IPv4 中松散源路由的跃点。跃点是 IP 地址或主机名。
-p <port>
--source-port <port>
连接方式 将 Netcat 源端口绑定到 <port>。
-s <host>
--source <host>
连接方式 将 Netcat 主机绑定到 <主机>。
-l
--listen
聆听模式 侦听连接而不是使用连接模式。
-k
--keep-open
聆听模式 使多个同时连接保持打开状态。
-v
--verbose
输出 设置详细级别。多次使用可以增加冗长程度。
-z 输出 无需建立连接即可报告连接状态。

该列表并不全面。使用man 命令查看手册页以获取完整的选项列表

man netcat

使用箭头键导航并按q退出。

nc 命令示例

以下nc命令示例假设两台设备具有唯一的 IP 地址。示例中的两个设备是:

1. phoenixNAP_1(设备1)有IP 10.0.2.4


Kali Linux 最佳工具之nc 命令 (Netcat)


2. phoenixNAP_2(设备2)有IP 10.0.2.5


Kali Linux 最佳工具之nc 命令 (Netcat)


两台设备都作为虚拟机运行 Ubuntu 18.04,但也可以进行其他设置。请注意,不同操作系统的命令有所不同。

客户端/服务器连接

两个设备之间存在简单的客户端/服务器连接。一个设备充当服务器(侦听),而另一台设备充当客户端(连接)。

1. 在设备 1 上,在侦听模式下运行nc命令并提供端口:

nc -lv 1234


Kali Linux 最佳工具之nc 命令 (Netcat)


-l选项激活监听模式,使设备 1 成为服务器。输出显示设备由于该-v选项正在侦听连接。

2. 在设备 2 上,使用nc设备 1 的 IP 地址和端口运行命令:

nc -v 10.0.2.4 1234


Kali Linux 最佳工具之nc 命令 (Netcat)


输出结果表明连接成功。设备 1 确认链接并打印设备 2 的 IP 地址。


Kali Linux 最佳工具之nc 命令 (Netcat)


客户端/服务器连接成功建立。

3. 从任一设备发送消息,另一台设备上会显示相同的消息。连接建立后,客户端和服务器的行为相同。

要结束连接,请在任一计算机上按CTRL + C。

Ping 网站上的特定端口

使用 Netcat 作为ping 命令的替代方法来测试网站的特定端口。例如:

nc -zv google.com 443


Kali Linux 最佳工具之nc 命令 (Netcat)


如果 ping 成功,输出将显示连接成功的消息。-z选项可确保连接不会持续存在。

Netcat没有给出任何具体信息,还有其他方法可以ping特定端口

扫描端口

使用该nc命令扫描开放端口。

1、在设备2上运行nc,监听1234端口:

nc -lkv 1234


Kali Linux 最佳工具之nc 命令 (Netcat)


-k选项可确保连接在断开连接后保持打开状态。

2. 在设备2上执行以下命令,检查1234端口是否开放:

nc -zv 10.0.2.4 1234


Kali Linux 最佳工具之nc 命令 (Netcat)


如果端口打开,输出将显示连接成功的消息。

3. 或者,通过添加端口范围来扫描设备 2 上的多个端口。例如:

nc -zv 10.0.2.4 1230-1235


Kali Linux 最佳工具之nc 命令 (Netcat)


输出显示每个端口的连接是否成功。

4. 扫描端口范围时,使用grep过滤结果

nc -zv 10.0.2.4 1230-1235 2>&1 | grep 'succeeded'


Kali Linux 最佳工具之nc 命令 (Netcat)


例如,对单词进行 grepsucceeded 仅显示输出中的开放端口。

传输文件

Netcat 允许通过已建立的连接传输文件。要查看文件传输的工作原理,请执行以下操作:

1. 使用以下命令在设备 1 上创建示例文件touch

touch file.txt

该命令创建一个空文本文件。

2. 在设备1上创建监听连接并将文件重定向到nc命令:

nc -lv 1234 < file.txt


Kali Linux 最佳工具之nc 命令 (Netcat)


3. 在设备 2 上,连接到设备 1 并重定向文件:

nc -zv 10.0.2.4 1234 > file.txt

Kali Linux 最佳工具之nc 命令 (Netcat)

使用ls 命令确认文件传输已完成

输出显示文件名,表明传输成功。

传输目录

Netcat 不允许以与文件相同的方式传输目录。使用tar 命令发送多个文件或目录并将命令通过管道传输到 Netcat。

1. 在任一设备上创建一个目录并添加多个文件:

mkdir files; touch files/file{1..5}.txt

该命令创建一个包含五个文本文件的文件目录。

2. 使用cd 命令导航到该目录

cd files

3. 在另一台设备上,创建并输入目标目录:

mkdir files_destination && cd files_destination

4. 在端口 1234 上创建侦听连接并通过管道传输tar命令:

nc -lv 1234 | tar xfv -


Kali Linux 最佳工具之nc 命令 (Netcat)


侦听连接需要 tar 提取的文件。

5. 在另一台设备上,发送目录:

tar -cf - . | nc -v 10.0.2.5 1234


Kali Linux 最佳工具之nc 命令 (Netcat)


连接建立并发送 tar 文件。


Kali Linux 最佳工具之nc 命令 (Netcat)


接收端立即提取文件,传输完成。

创建网络服务器

要使用 Netcat 创建 Web 服务器,请执行以下操作:

1. 在设备 1 上运行 Web 服务器并侦听端口 1234 上的连接:

nc -lv 10.0.2.4 1234


Kali Linux 最佳工具之nc 命令 (Netcat)


省略该地址将在localhost上运行 Web 服务器

2. 在设备 2 上,在浏览器中运行地址和端口。或者,使用curl命令

curl 10.0.2.4:1234

页面暂时不显示任何内容。

3. 在 Web 服务器正在侦听的设备 1 上,浏览器发送的请求 或 是curl可见的。


Kali Linux 最佳工具之nc 命令 (Netcat)


该消息显示请求信息,例如请求类型、主机和用户代理。

4. 要将响应发送到客户端(设备 2),请将以下代码粘贴到设备 1 上:

HTTP/1.1 200 Everything OK
Server: netcat
Content-Type: text/html; charset=UTF-8

<!DOCTYPE html>
<html>

<head>
<title>
Netcat
</title>
</head>
<body>
<h1>A webpage served with nc</h1>
</body>
</html>

Kali Linux 最佳工具之nc 命令 (Netcat)

响应立即更新信息。


Kali Linux 最佳工具之nc 命令 (Netcat)


如果从浏览器访问 Web 服务器,浏览器页面会实时获取更新。


Kali Linux 最佳工具之nc 命令 (Netcat)


Web 服务器已成功运行。使用CTRL + C关闭服务器

简单的聊天服务器

利用 Netcat 通信功能创建一个简单的聊天服务器

1. 在设备 1 上,运行以下命令:

awk -W interactive '$0="Bob: "$0' | nc -lv 1234


Kali Linux 最佳工具之nc 命令 (Netcat)


awk 命令帮助将 Bob 的用户名添加到通过服务器发送的消息中。

2. 在设备 2 上,添加不同的用户名并连接到聊天服务器:

awk -W interactive '$0="Alice: "$0' | nc 10.0.2.4 1234

来回发送消息以测试聊天。Bob(设备 1)看到从 Alice(设备 2)发送的带有前缀名称的消息,反之亦然。


Kali Linux 最佳工具之nc 命令 (Netcat)


他们自己的用户名不会显示在聊天窗口中。

发送 HTTP 请求

使用 Netcat 和printf向网站发送HTTP请求。例如,要在端口 80(用于 TCP/IP 连接)上向 google.com 发送请求,请运行以下命令:

printf "GET / HTTP/1.0rnrn" | nc -v google.com 80

Kali Linux 最佳工具之nc 命令 (Netcat)

输出打印页眉和内容。大多数页面都会禁用 TCP 连接并获取 404 错误页面。

结论

按照本教程中的示例进行操作后,将了解如何使用该nc命令。Netcat 是网络管理员的强大工具。

原文始发于微信公众号(河南等级保护测评):Kali Linux 最佳工具之nc 命令 (Netcat)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月29日10:02:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Kali Linux 最佳工具之nc 命令 (Netcat)https://cn-sec.com/archives/2250257.html

发表评论

匿名网友 填写信息