Total Pageviews

Thursday 7 November 2019

Ncat--网络工具箱里的『瑞士军刀』

ncat readmore
Ncat is a feature-packed networking utility which reads and writes
data across networks from the command line. Ncat was written for the
Nmap Project as a much-improved reimplementation of the venerable
Netcat.
ncat -l localhost 8080 --sh-exec "ncat example.org 80"

Ncat is a general-purpose command-line tool for reading, writing, redirecting, and encrypting data across a network. It aims to be your network Swiss Army knife, handling a wide variety of security testing and administration tasks.
以前在手机上装 busybox ,总听人讲到什么『瑞士军刀』。哥们儿小地方的娃,没见过大场面.

总的来说,Ncat 还是对得起这个称号的,小巧但功能强悍。这里只简要地介绍下有趣的功能。
关于安装,Ncat 其实是 nmap 项目对传统的 Netcat(即 nc 命令)的重写,是包含在 nmap 安装包里的,具体可参考官网。不做赘述。
安装nmap之后,ncat就出现在此:/usr/local/bin/ncat

一、Ncat 作为浏览器

命令示例:ncat -C scanme.nmap.org 80
其中 -C 是格式化选项,80 指代端口号( web 服务监听)。输出结果如下:

Ncat 访问网页

需要注意的是,该命令是以交互的方式执行的。即输入 ncat -C scanme.nmap.org 80回车 后,接着继续输入 GET / HTTP/1.0 ,再敲击两次 回车 。即可获取目标网站的 HTML 文档内容。

二、监听模式(模拟 web 服务器)

命令示例:ncat -l 8080 < hello.http
其中 hello.http 的文件内容:
HTTP/1.0 200 OK -l 即 --listen(监听)。

需要注意的是,访问一次后程序即自动退出。

三、执行命令(远程 shell)

命令示例:ncat -l 8080 --exec "/bin/echo Hello."

进一步,可以开启一个远程 shell 供其他设备连接。命令如下:
ncat -l 8022 --exec "/bin/bash -i"

Ncat 同时还支持 sh 脚本( --sh-exec )和 lua 脚本( --lua-exec 

注:以上情形均支持局域网远程访问,访问时将 IP 地址改为对应数字。

四、访问控制

  • 只允许指定客户端连接:ncat -l --allow 10.2.67.204
  • 只拒绝指定客户端连接:ncat -l --deny 10.2.67.204
  • 只允许指定网段的本地 IP:
    1. ncat -l --allow 10.2.67.0/24
    2. ncat -l --allow 10.2.67.0-255
  • 从文件中获取允许访问的地址列表:ncat -l --allowfile trusted_hosts.txt
  • 设置最大连接数为5:ncat -l --max-conns 5

五、文件传输

  • 传输单个文件
  1. 接收者监听:
    receiver$ ncat -l > outputfile
    sender$ ncat --send-only receiver_ip < inputfile
  2. 发送者监听:
    sender$ ncat -l --send-only < inputfile
    receiver$ ncat sender_ip > outputfile
  • 传输目录
receiver$ ncat -l | tar xzvf -
sender$ tar czvf - dirname | ncat --send-only receiver_ip

  • 传输磁盘镜像(压缩)
receiver$ ncat -l | bzip2 -d > sender-hda.image
sender$ cat /dev/hda | bzip2 | ncat --send-only receiver_ip

六、聊天

  • 双人聊天
host1$ ncat -l
host2$ ncat host1
  • 多人聊天
server$ ncat -l --chat
clients$ ncat server_ip

七、简易 web 服务器

  • Linux 用户:ncat -lk -p 8080 --sh-exec "echo -e 'HTTP/1.1 200 OK\r\n'; cat index.html"
  • Windows 用户:ncat -lk -p 8080 --sh-exec "echo HTTP/1.1 200 OK& echo(&type index.html"

八、流媒体视频

server$ $cat video.avi | ncat -l
client$ ncat server_ip | mplayer -vo x11 -cache 3000 -
-----------------

10 个例子教你学会 ncat命令


ncat是一款功能类似 cat 的工具,但是是用于网络的。它是一款拥有多种功能的 CLI 工具,可以用来在网络上读、写以及重定向数据。 它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。
ncat既是一个端口扫描工具,也是一款安全工具,还能是一款监测工具,甚至可以做为一个简单的 TCP 代理。 由于有这么多的功能,它被誉为是网络界的瑞士军刀。 这是每个系统管理员都应该知道并且掌握它。
在大多数 Debian 发行版中,ncat是默认可用的,它会在安装系统的过程中自动被安装。 但是在 CentOS 7 / RHEL 7 的最小化安装中,ncat并不会默认被安装。 你需要用下列命令手工安装。
  1. [root@linuxtechi ~]# yum install nmap-ncat -y (在mac上,则是brew install nmap)
系统管理员可以用它来审计系统安全,用它来找出开放的端口然后保护这些端口。 管理员还能用它作为客户端来审计 Web 服务器、telnet 服务器、邮件服务器等, 通过 ncat我们可以控制发送的每个字符,也可以查看对方的回应。
我们还可以用它捕获客户端发送的数据以此来了解这些客户端是做什么的。
在本文中,我们会通过 10 个例子来学习如何使用 ncat命令。

例子: 1) 监听入站连接

通过 -l 选项,ncat 可以进入监听模式,使我们可以在指定端口监听入站连接。 完整的命令是这样的:
  1. $ ncat -l port_number
比如,
  1. $ ncat -l 8080
服务器就会开始在 8080 端口监听入站连接。

例子: 2) 连接远程系统

使用下面命令可以用 ncat来连接远程系统,
  1. $ ncat IP_address port_number
让我们来看个例子,
  1. $ ncat 192.168.1.100 80
这会创建一个连接,连接到 IP 为 192.168.1.100 的服务器上的 80 端口,然后我们就可以向服务器发送指令了。 比如我们可以输入下面内容来获取完整的网页内容
  1. GET / HTTP/1.1
或者获取页面名称,
  1. GET / HTTP/1.1
或者我们可以通过以下方式获得操作系统指纹标识,
  1. HEAD / HTTP/1.1
这会告诉我们使用的是什么软件来运行这个 web 服务器的。

例子: 3) 连接 UDP 端口

默认情况下,ncat创建连接时只会连接 TCP 端口。 不过我们可以使用 -u 选项来连接到 UDP 端口,
  1. $ ncat -l -u 1234
现在我们的系统会开始监听 UDP 的 1234 端口,我们可以使用下面的 netstat 命令来验证这一点,
  1. $ netstat -tunlp | grep 1234
  2. udp 0 0 0.0.0.0:1234 0.0.0.0:* 17341/nc
  3. udp6 0 0 :::1234 :::* 17341/nc
假设我们想发送或者说测试某个远程主机 UDP 端口的连通性,我们可以使用下面命令,
  1. $ ncat -v -u {host-ip} {udp-port}
比如:
  1. [root@localhost ~]# ncat -v -u 192.168.105.150 53
  2. Ncat: Version 6.40 ( http://nmap.org/ncat )
  3. Ncat: Connected to 192.168.105.150:53

例子: 4) 将 ncat作为聊天工具

ncat也可以作为聊天工具来用,我们可以配置服务器监听某个端口,然后从远程主机上连接到服务器的这个端口,就可以开始发送消息了。 在服务器这端运行:
  1. $ ncat -l 8080
在远程客户端主机上运行:
  1. $ ncat 192.168.1.100 8080
之后开始发送消息,这些消息会在服务器终端上显示出来。

例子: 5) 将 ncat作为代理

ncat也可以用来做代理。比如下面这个例子,
  1. $ ncat -l 8080 | ncat 192.168.1.200 80
所有发往我们服务器 8080 端口的连接都会自动转发到 192.168.1.200 上的 80 端口。 不过由于我们使用了管道,数据只能被单向传输。 要同时能够接受返回的数据,我们需要创建一个双向管道。 使用下面命令可以做到这点:
  1. $ mkfifo 2way
  2. $ ncat -l 8080 0<2way | ncat 192.168.1.200 80 1>2way
现在你可以通过 ncat代理来收发数据了。

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

ncat还能用来在系统间拷贝文件,虽然这么做并不推荐,因为绝大多数系统默认都安装了 ssh/scp。 不过如果你恰好遇见个没有 ssh/scp 的系统的话, 你可以用 ncat来作最后的努力。
在要接受数据的机器上启动 ncat 并让它进入监听模式:
  1. $ ncat -l 8080 > file.txt
现在去要被拷贝数据的机器上运行下面命令:
  1. $ ncat 192.168.1.100 8080 --send-only < data.txt
这里,data.txt 是要发送的文件。 -–send-only 选项会在文件拷贝完后立即关闭连接。 如果不加该选项, 我们需要手工按下 ctrl+c 来关闭连接。
我们也可以用这种方法拷贝整个磁盘分区,不过请一定要小心。

例子: 7) 通过 ncat 创建后门

ncat 命令还可以用来在系统中创建后门,并且这种技术也确实被黑客大量使用。 为了保护我们的系统,我们需要知道它是怎么做的。 创建后门的命令为:
  1. $ ncat -l 10000 -e /bin/bash
-e 标志将一个 bash 与端口 10000 相连。现在客户端只要连接到服务器上的 10000 端口就能通过 bash 获取我们系统的完整访问权限:
  1. $ ncat 192.168.1.100 10000

例子: 8) 通过 ncat 进行端口转发

我们通过选项 -c 来用 ncat 进行端口转发,实现端口转发的语法为:
  1. $ ncat -u -l 80 -c 'ncat -u -l 8080'
这样,所有连接到 80 端口的连接都会转发到 8080 端口。

例子: 9) 设置连接超时

ncat 的监听模式会一直运行,直到手工终止。 不过我们可以通过选项 -w 设置超时时间:
  1. $ ncat -w 10 192.168.1.100 8080
这回导致连接 10 秒后终止,不过这个选项只能用于客户端而不是服务端。

例子: 10) 使用 -k 选项强制 ncat 待命

当客户端从服务端断开连接后,过一段时间服务端也会停止监听。 但通过选项 -k 我们可以强制服务器保持连接并继续监听端口。 命令如下:
  1. $ ncat -l -k 8080
现在即使来自客户端的连接断了也依然会处于待命状态。

via: https://www.linuxtechi.com/nc-ncat-command-examples-linux-systems/