千锋教育-做有情怀、有良心、有品质的IT职业教育机构
位置:首页 > 行业动态

千锋Linux培训老师分享NC命令的使用

时间:2018-01-12 16:30:24  |  来源:千锋长沙培训机构  |  作者:千锋  

   说起长沙Linux培训,那就不得不提到千锋,千锋老师的Linux系统水平在业内一向以专业著称,这次,就让千锋老师教我们一个有趣的调试工具!

图片9.jpg

  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

  或者我们可以通过以下方式获得操作系统指纹标识,

  HEAD / HTTP/1.1

  这会告诉我们使用的是什么软件来运行这个 web 服务器的。

  例子: 3) 连接 UDP 端口

  默认情况下,nc 创建连接时只会连接 TCP 端口。 不过我们可以使用 -u 选项来连接到 UDP 端口,

  $ ncat -l -u 1234

  现在我们的系统会开始监听 UDP 的 1234 端口,我们可以使用下面的 netstat 命令来验证这一点,

  $ netstat -tunlp | grep 1234

  udp 0 0 0.0.0.0:1234 0.0.0.0:* 17341/nc

  udp6 0 0 :::1234 :::* 17341/nc

  假设我们想发送或者说测试某个远程主机 UDP 端口的连通性,我们可以使用下面命令,

  $ ncat -v -u {host-ip} {udp-port}

  比如:

  [root@localhost ~]# ncat -v -u 192.168.105.150 53

  Ncat: Version 6.40 ( http://nmap.org/ncat )

  Ncat: Connected to 192.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 端口。 不过由于我们使用了管道,数据只能被单向传输。 要同时能够接受返回的数据,我们需要创建一个双向管道。 使用下面命令可以做到这点:

  $ mkfifo 2way

  $ ncat -l 8080 0<2way | ncat 192.168.1.200 80 1>2way

  现在你可以通过 nc 代理来收发数据了。

  例子: 6) 使用 nc 拷贝文件

  nc 还能用来在系统间拷贝文件,虽然这么做并不推荐,因为绝大多数系统默认都安装了 ssh/scp。 不过如果你恰好遇见个没有 ssh/scp 的系统的话, 你可以用 nc 来作后的努力。

  在要接受数据的机器上启动 nc 并让它进入监听模式:

  $ ncat -l 8080 > 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 -l 80 -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

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

上一篇:云计算培训出来就拿?来千锋就知道
下一篇:软件测试学习速成?千锋武汉老师教你如何

课程咨询

千锋开发者联盟QQ群

JavaEE学习交流群:343013298

HTML5学习技术交流群: 314548237

UI技术学习交流群:159532533

PHP学习交流群:517739045

  • 深圳科技园校区:深圳市南山区科苑南路高新技术产业园R3-B栋5层
    深圳大学城校区:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    咨询电话:0755-86681178/9-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、好程序员特训营
  • 北京天丰利校区:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术广场服务楼2层、南区服务楼2层
    咨询电话:400-654-7778 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训、好程序员特训营
  • 上海地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-65025129-601
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、好程序员特训营
  • 郑州地址:郑州市金水区纬五路21号河南教育综合楼6楼、7楼
    咨询电话:0371-55911950 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 广州地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 大连地址:大连市高新园区软件园路2号B8座
    咨询电话:0411-39026086 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 武汉地址:武汉市东新区光谷大道77号金融港B26栋9楼
    咨询电话:027-59905909 027-59905908 027-59905902
    面授课程:iOS课程培训、Android课程培训
  • 成都地址:成都市一环路西二段17号四川旅游青羊校区内
    咨询电话:028-83178771 028-61967740
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 西安地址:西安市二环南路西段60号永安大厦4层
    咨询电话:029-85260160 029-85261030 029-85260960
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 杭州地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训
  • 千锋学员专属客户端
    “锋向标”扫描下载

  • 千锋教育微信号
    扫描加好友

关闭