Ncat 使用方法整理
之前整理转发过一篇《Linux Netcat 命令——网络工具中的瑞士军刀》,里面讲了很多常用方法,但是 Netcat(nc) 有些旧,而且不同的发行版参数可能也有些差异,所以本篇文章介绍下 Netcat(nc) 的升级版 Ncat 以及一些有用的使用方法。
一、Ncat 介绍
译自《Ncat Users' Guide——Ncat: Your General-Purpose Network Connector》
Ncat 是用于在网络上读取,写入,重定向和加密数据的通用命令行工具。它旨在成为您的瑞士军刀网络,处理各种各样的安全测试和管理任务。 Ncat 适合交互使用或作为其他工具的网络连接后端。 Ncat 可以:
-
充当简单的 TCP/UDP/SCTP/SSL 客户端,用于与 Web 服务器,Telnet 服务器,邮件服务器和其他 TCP/IP 网络服务进行交互。理解服务(解决问题,发现安全漏洞或测试自定义命令)的最佳方法通常是使用 Ncat 与服务进行交互。这使您可以控制发送的每个字符并查看未经过滤的原始响应。
-
充当简单的 TCP/UDP/SCTP/SSL 服务器,以向客户端提供服务,或者通过捕获它们发送的每个字节来简单地了解现有客户端的功能。
-
将 TCP/UDP/SCTP 通信重定向或代理到其他端口或主机。可以使用简单的重定向(发送到端口的所有信息都自动转发到您预先指定的其他位置)或充当 SOCKS 或 HTTP 代理,以便客户端指定自己的目的地来完成此操作。在客户端模式下,Ncat 可以通过一系列匿名或身份验证的代理连接到目标。
-
在所有主要操作系统上运行。我们分发 Linux、Windows 和 Mac OS X 二进制文件,并且 Ncat 在大多数其他系统上进行编译。无论您使用的是哪种计算机,无论何时需要,受信任的工具都必须可用。
-
使用 SSL 加密通信,并通过 IPv4 或 IPv6 进行传输。
-
充当执行系统命令的网络网关,I/O 重定向到网络。它的设计工作原理类似于 Unix 实用程序 cat,但适用于网络。
-
充当连接代理,允许两个(或更多)客户端通过第三个(代理)服务器彼此连接。这使隐藏在 NAT 网关后面的多台计算机可以相互通信,并且还可以启用简单的 Ncat 聊天模式。
组合使用时,这些功能将变得更加强大和通用。
Ncat 是我们对 Hobbit 在 1996 年发布的古老 Netcat(nc)工具的现代改造。Ncat 在本质上类似于 Netcat,但它们不共享任何源代码。取而代之的是,Ncat 使用了经过 Nmap 优化和测试的网络库。在不与 Ncat 的增强功能冲突或不会引起可用性问题的情况下,保持了与原始 Netcat 及其某些知名变体的兼容性。 Ncat 添加了 Hobbit 原始 nc 中未发现的许多功能,包括 SSL 支持,代理连接,IPv6 和连接代理。最初的 nc 包含一个简单的端口扫描程序,但是我们从 Ncat 省略了它,因为我们拥有该功能的首选工具。
二、使用样例
1、端口探测
# 探测 httpbin.org 的 80 端口
$ ncat -zv httpbin.org 80
2、简易数据通讯
# 服务端
$ ncat -l 9999
# 如果服务端需要启用 SSL/TLS,--ssl-cert 指定 完整证书链
$ ncat -l 9999 --ssl-cert bundle.crt --ssl-key server.key
# 客户端
$ ncat 服务端 9999
# 如果要连接 SSL/TLS 服务器
$ ncat 服务端 9999 --ssl
3、发送文件
# 从 HOST1(Client) 发送文件到 HOST2(Server) 的 TCP 9899 端口
# HOST2:
$ ncat -l 9899 > outputfile
#HOST1:
$ ncat HOST2 9899 < inputfile
4、端口转发
# 重定向本机 9999 TCP 端口到 httpbin.org 的 80 端口
$ ncat --sh-exec "ncat httpbin.org 80" -l 9999 --keep-open
5、分享 Shell
# 在本机的 9999 端口分享 Bash Shell,让对方可以通过网络访问此端口来自由访问 Bash Shell
$ ncat --exec "/bin/bash" -l 9999 --keep-open
6、通过代理服务器连接
# 通过 SOCKS5 1080 端口,连接 smtphost:25
$ ncat --proxy socks5host --proxy-type socks5 --proxy-auth proxyusername:password smtphost 25
# SSH 通过 Ncat 指定代理,通过代理访问
$ ssh -o ProxyCommand="ncat --proxy-type http/socks4/socks5 --proxy proxy.net:端口 %h %p" user@server.net
7、创建代理服务器
# 在本机 8888 端口创建 HTTP 代理
$ ncat -l --proxy-type http localhost 8888 --proxy-auth username:password
# 测试 HTTP 代理服务器(支持隧道模式)
$ curl -x 'http://username:password@localhost:8888' httpbin.org/anything
三、参考资料
(完)