ncat命令使用实例
Ncat工具功能类似于cat 命令 ,但用于网络。它是一个 命令 行的工具,用于跨网络读取、写入和重定向数据。它被设计成一个可靠的后端工具,可以与 脚本 或其他程序一起使用。
ncat可以是端口扫描工具,安全工具或监视工具,并且还是简单的TCP代理。由于它具有许多功能,因此被称为网络瑞士军刀。它是每个系统管理员都应该了解工具之一。
系统环境
Centos 8
如何安装ncat
在Centos7/8系统中ncat安装包名称为nmap-ncat
[root@server1 ~]# yum -y install nmap-ncat
一、检查TCP的80端口的连接
此示例我们将检查主机名为DCserver的80端口连接。
[root@server1 ~]# nc -vz DCserver 80
Ncat: Version 7.70 ( )
Ncat: Connected to 192.168.0.6:80.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
-z选项为“Zero - I/O 模式”,用于检查连接状态。
二、创建一个监听端口
下面命令可以创建一个tcp监听端口:
[root@server1 ~]# nc -vl 1234
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Listening on :::1234
Ncat: Listening on 0.0.0.0:1234
使用netstat -tlunp查看一下:
在另一台主机中,使用nc命令测试一下该端口的连接:
[root@server1 ~]# nc -vz 192.168.43.131 1234
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.43.131:1234.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
然后返回到侦听端,可以看到来自192.168.43.131的45568端口连接侦听端的1234端口。
[root@server1 ~]# nc -vl 1234
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Listening on :::1234
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from 192.168.43.131.
Ncat: Connection from 192.168.43.131:45568.
可以使用-k选项,让侦听端保持打开状态。
三、作为聊天工具
ncat可以用作聊天工具,我们将服务器配置侦听端口,远程主机连接服务器的同一端口并发送消息。在服务器端,运行下面命令开启侦听端口:
[root@qdzabbix ~]# ncat -l 8080
在远程主机中运行下面命令,并且在下面输入聊天内容,按回车发送,在服务端可以看到消息内容了。
[root@server1 ~]# ncat 192.168.0.12 8080
Hello qdzabbix
下面在服务端和远程主机都可以看到消息内容。
想要退出,只需要按Ctrl + c就可以。
四、检查SSH软件版本
可以使用nc命令通过将EXIT命令发送到ssh的22端口上,来检查服务器软件版本,如下所示:
[root@server1 ~]# echo "EXIT" | nc 192.168.43.131 22
SSH-2.0-OpenSSH_7.8
Protocol mismatch.
五、使用ncat创建后门
可以使用ncat命令创建后门。此功能主要由黑客使用。可以这样运行命令,在服务端执行下面一条命令:
[root@qdzabbix ~]# nc -l 5566 -e /bin/bash
-e选项后面指定运行的命令。现在客户端可以连接到服务器上的端口5566,并且可以通过运行以下命令通过bash完全访问我们的系统:
[root@server1 ~]# nc qdzabbix 5566
ls
anaconda-ks.cfg
a.txt
batch
Customer_Supplied_Tickets
custom_resolv.conf
下图中红线圈出来的就是执行的命令。
六、使用ncat运行带有静态页面的Web服务器
可以在本地主机上使用ncat命令启动Web服务器,这将打开静态网页面sample.html。你可以运行如下命令:
首先将下面内容保存到/root/sample.html文件中。
[root@qdzabbix ~]# vim /root/sample.html
? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ? ? ? ? ?
Level 1 header
? ? ? ? ? ? ? ?
Subheading
? ? ? ? ? ? ? ?
Normal text here
? ? ? ?
然后执行下面命令:
[root@qdzabbix ~]# while true; do nc -l -p 80
上面命令中,-p 88选项指定源端口为80。
在浏览器中访问,可以看到页面内容。
总结
ncat工具可以帮助你从使用telnet进行连通性测试切换到使用ncat测试连通性。
nc 命令使用小结
nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。比如大家很熟悉使用telnet测试tcp端口,而nc可以支持测试linux的tcp和udp端口,而且也经常被用于端口扫描,甚至把nc作为server以TCP或UDP方式侦听指定端口做简单的模拟测试。
2020年10月07日 - 初稿
阅读原文 -
ncat 或者说 nc 是一款功能类似 cat 的工具,但是是用于网络的。它是一款拥有多种功能的 CLI 工具,可以用来在网络上读、写以及重定向数据。 它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。
ncat / nc 既是一个端口扫描工具,也是一款安全工具,还能是一款监测工具,甚至可以做为一个简单的 TCP 代理。 由于有这么多的功能,它被誉为是网络界的瑞士军刀。 这是每个系统管理员都应该知道并且掌握它。
在大多数 Debian 发行版中, nc 是默认可用的,它会在安装系统的过程中自动被安装。 但是在 CentOS 7 / RHEL 7 的最小化安装中, nc 并不会默认被安装。 你需要用下列命令手工安装。
nc的作用:
nc的控制参数不少,常用的几个参数如下所列:
用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。
暂未用到(老版本的nc可能需要在端口号前加-p参数)
指定发送数据的源IP地址,适用于多网卡机
指定nc使用UDP协议,默认为TCP
输出交互或出错信息,新手调试时尤为有用
6)-w
超时秒数,后面跟数字
7)-z
表示zero,表示扫描时不发送任何数据
作用:批量端口扫描,可根据扫描主机的配置调整后台扫描进程数量(手动执行后根据统计的执行时间调整脚本中关于进程数量的参数),通过定时任务作为简单的服务监控(可修改脚本添加其他报警功能,例如邮件等)
实现:使用nc指令扫描端口,使用管道特性控制后台扫描进程数量
不足:仅仅对扫描端口状态为down的信息做记录,并没有其他报警操作
使用:
10 useful ncat (nc) Command Examples for Linux Systems
nc命令用法举例
...为什么用nc想要建立连接,显示Ncat:connection refused
nc与ncat不是一个东西,ncat是nmap的一个套间,我也遇到了这个问题,但是网上搜不出来相关的东西,我估计是软链接把nc解析成ncat了,还有netcat也是被解析成ncat了,nc与netcat是一个东西。
安装了nmap为什么还说ncat
nmap一般在/usr/bin/nmap,查看有没有这个文件。再说了查看环境变量有没有设置成功只需要输入echo $PATH,把这条命令输出结果拿出来看才有用。一般修改.bash_profile需要logout后重新登录才会起效,个人觉得你的系统应该是没有安装这个工具,你需要yum install nmap....
测试特定协议下指定端口是否开启
我们在检测远程服务是否正常时,经常会用一些工具(命令)来检测端口是否开启,来确定服务是否正常。通常可用于检测的工具有nc、socat、nmap等,基本思想是向远端指定端口发送数据,看其状态。
远端:192.168.0.15
本端:192.168.0.10
单向检测(适用于无法登录远端服务查看的情况)
如果返回succeeded,则说明相应的UDP端口访问正常。
如果无任何返回信息,则说明相应的UDP端口访问失败。
nc -uvz $IP $Port.?? //UDP
nc -vz $IP $Port?? //TCP
远端不监听1777端口情况
# nc -uvz 192.168.0.15 1777
#
远端监听1777端口
# nc -ul 1777
XXXXX
# nc -uvz 192.168.0.15 1777
Connection to 192.168.0.15 1777 port [udp/powerguardian] succeeded!
如果succeeded,则无任何返回,如果failed则返回Connection refused。
echo "This socat udp test." | socat - udp-connect:$IP:$Port
远端不监听1777端口,本端发送udp数据至远端指定端口。
# echo "This socat udp test." | socat - udp-connect:192.168.0.15:1777
2017/06/18 14:26:39 socat[22195] E read(3, 0xb48a20, 8192): Connection refused
远端开启监听,本端再次发送。
# nc -ul 1777
This socat udp test.
# echo "This socat udp test." | socat - udp-connect:192.168.0.15:1777
#
用指定协议扫描远端指定端口
nmap -sU -p $Port $IP
# nmap -sU -p 1777 192.168.0.15
Starting Nmap 5.51 ( ) at 2017-06-18 14:35 CST
Nmap scan report for host-192-168-0-15 (192.168.0.15)
Host is up (0.00098s latency).
PORT ??? STATE? SERVICE
1777/udp closed unknown
MAC Address: FA:16:3E:1A:54:30 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
可以通过传输文本及文件来测试UDP端口是否正常(先开监听,再发送)
远端:nc -ul $Port
本端: nc -u $IP $Port
在本端键入任意字符,看远端是否可以收到。
远端:nc -l $Port > $Filename
本端:nc $IP $Port
可以执行md5sum看两端的文件md5是否相同
注:如果是检测tcp协议端口,上述nc命令中,去掉参数-u即可。另外,也可以使用telnet $IP $Port来完成
$ nc -vzw 2 180.76.148.122 22-81 //显示详细信息,包含失败的
$ nc -zw 2 180.76.148.122 22-81 //不显示详细信息,只包含成功的,如果检测udp端口,可用"vzw"参数,"z"参数表示连接成功后立即关闭连接
Connection to 180.76.148.122 port 22 [tcp/ssh] succeeded!
Connection to 180.76.148.122 port 80 [tcp/http] succeeded!
附全面的ncat使用方法: https://linux.cn/article-9190-1.html