一、背景
ncat
或者说 nc
是一款功能类似 cat
的工具,但是是用于网络的。
它是一款拥有多种功能的 CLI
工具,可以用来在网络上读、写以及重定向数据。 它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。
ncat
/ nc
既是一个端口扫描工具,也是一款安全工具,还是一款监测工具,甚至可以做为一个简单的 TCP
代理。 由于有这么多的功能,它被誉为是网络界的瑞士军刀。 这是每个系统管理员都应该知道并且掌握它。
系统管理员可以用它来审计系统安全,用它来找出开放的端口然后保护这些端口。 管理员还能用它作为客户端来审计 Web
服务器、telnet
服务器、邮件服务器等, 通过 nc
我们可以控制发送的每个字符,也可以查看对方的回应。
我们还可以用它捕获客户端发送的数据以此来了解这些客户端是做什么的。
在本文中,我们会通过下面这些例子来学习如何使用 nc
命令。
二、监听入站连接
通过 -l
选项,ncat
可以进入监听模式,使我们可以在指定端口监听入站连接。 完整的命令是这样的:
ncat -l port_number
比如
ncat -l 8080
服务器就会开始在 8080
端口监听入站连接。
我们可以使用下面的 netstat
命令来验证这一点:
netstat -tunlp | grep 8081
结果:
二、连接远程服务器
使用下面命令可以用 nc
来连接远程服务器,同时该命令可以验证连同性。
ncat IP_address port_number
我们来看个栗子:
ncat 192.168.1.100 8080
这会创建一个连接,连接到 IP 为 192.168.1.100
的服务器上的 8080
端口,然后我们就可以向服务器发送指令了。
我们可以通过以下方式获得操作系统指纹标识
HEAD / HTTP/1.1
这会告诉我们使用的是什么软件来运行这个 web
服务器的
3、将 nc
作为聊天工具
nc
也可以作为聊天工具来用,我们可以配置服务器监听某个端口,然后从远程主机上连接到服务器的这个端口,就可以开始发送消息了。 在服务器这端运行:
ncat -l 8080
在远程客户端主机上运行:
ncat 192.168.1.100 8080
之后开始发送消息,这些消息会在服务器终端上显示出来。
4、将 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
代理来收发数据了。
5、使用 nc
拷贝文件
nc
还能用来在系统间拷贝文件,虽然这么做并不推荐,因为绝大多数系统默认都安装了 ssh
/ scp
。 不过如果你恰好遇见个没有 ssh
/scp
的系统的话, 你可以用 nc
来作最后的努力。
在要接受数据的机器上启动 nc
并让它进入监听模式:
ncat -l 8080 > file.txt
现在去要被拷贝数据的机器上运行下面命令:
ncat 192.168.1.100 8080 < data.txt
这里,data.txt
是要发送的文件。
另外还可以之前传输打包的文件,栗子如下:
我们把 nc 的输出,使用管道交给 tar 命令处理。xfvz
和 cvfz
是一对参数,你应该猜到要怎么做了。(服务器)
nc -l 5879 | tar xfvz -
没错,客户端的代码与上面的是相反的。不过这次,我们的 nc 命令接收了打包的文件。
tar cfz - redis-5.0.5 | nc -v 192.16.1.54 5879
6、通过 nc
创建后门
nc
命令还可以用来在系统中创建后门,并且这种技术也确实被黑客大量使用。 为了保护我们的系统,我们需要知道它是怎么做的。 创建后门的命令为:
ncat -l 10000 -e /bin/bash
-e
标志将一个 bash
与端口 10000
相连。现在客户端只要连接到服务器上的 10000
端口就能通过 bash
获取我们系统的完整访问权限:
ncat 192.168.1.100 10000
7、通过 nc
进行端口转发
我们通过选项 -c
来用 nc
进行端口转发,实现端口转发的语法为:
ncat -u -l 80 -c 'ncat -u -l 8080'
这样,所有连接到 80
端口的连接都会转发到 8080
端口。
这里面的 -u 指的是 udp 。
8、设置连接超时
nc
的监听模式会一直运行,直到手工终止。 不过我们可以通过选项 -w
设置超时时间:
ncat -w 10 192.168.1.100 8080
这会导致连接 10
秒后终止,不过这个选项只能用于客户端而不是服务端。
9、使用 -k
选项强制 nc
待命
当客户端从服务端断开连接后,过一段时间服务端也会停止监听。 但通过选项 -k
我们可以强制服务器保持连接并继续监听端口。 命令如下:
ncat -l -k 8080
现在即使来自客户端的连接断了也依然会处于待命状态。
作者:Angel_Kitty
链接:https://www.imooc.com/article/250743
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作
(SAW:Game Over!)