当前位置: 首页 > 工具软件 > Ncat > 使用案例 >

ncat

顾嘉纳
2023-12-01

官方介绍: https://nmap.org/ncat/

使用手册: https://nmap.org/ncat/guide/index.html

 

概述

1 介绍

1.1 选项

1.2 exec模式的环境变量

2 使用手册

2.1 用途

2.2 基本用法

2.3 协议

2.4 连接代理

2.5 SSL

2.6 命令执行

2.7 输出选项

2.8 访问控制

2.9 代理

2.10 其它选项

2.11 文件传输

2.12 聊天

2.13 Neat Tricks(巧妙用法)

2.14 模拟诊断服务

 

 

1 介绍

ncat为nmap项目而编写

ncat是对netcat的一种改进,但它们不共享任何源代码,且ncat与netcat(包含不同分支的netcat)有着良好的兼容性

ncat支持TCP/UDP端口重定向、SOCKS4/HTTP代理、SSL等功能

1.1 选项

-4

仅使用IPv4

-6

仅使用IPv6

-U, --unixsockUse

仅使用Unix域套接字(程序间通信)

--vsockUse

仅使用vsock套接字(vsock用于虚拟机与其运行的主机进行通信)

-C, --crlf

使用CRLF作为每行的结尾

-c, --sh-exec <command>

连接建立后,使用/bin/sh执行指定的命令

-e, --exec <command>

连接建立后,执行指定的程序

--lua-exec <filename>

连接建立后,执行Lua脚本

-g hop1[,hop2,...]

松散源路由跃点

-G <n>

松散源路由跃点指针

-m, --max-conns <n>

同一时间的最大连接数

-h, --help

显示帮助信息

-d, --delay <time>

读、写的延迟时间(间隔时间)

-o, --output <filename>

保存会话内容到文件

-x, --hex-dump <filename>

保存会话的16进制数据到文件

-i, --idle-timeout <time>

读、写等待的超时时间

-p, --source-port port

指定本地端口

-s, --source addr

指定本地地址(不能与-l同时使用,-l后可以指定监听地址和端口)

-l, --listen

绑定并侦听传入连接

-k, --keep-open

在侦听模式下接受多个连接

-n, --nodns

不进行DNS解析

-t, --telnet

响应telnet谈判

-u, --udp

使用UDP协议

--sctp

使用SCTP协议

-v, --verbose

显示更多详细信息(多次使用,信息更加详细)

-w, --wait <time>

指定连接超时时间

-z

Zero-I/O模式,用于端口检测

--append-output

Append rather than clobber specified output files

--send-only

仅发送数据,遇到EOF退出

--recv-only

仅接收数据

--no-shutdown

从stdin接收到EOF后以半双工形式继续运行(接收到EOF后不退出,仍可以接受数据,但不能在发送数据)

--allowAllow

允许指定的主机连接,其它主机均不可连接

--allowfile

指定文件,该文件包含允许连接的主机列表

--deny

拒接指定的的主机连接,其它主机均可连接

--denyfile

指定文件,该文件包含拒绝连接的主机列表

--broker

启动代理模式(需要与-l选项搭配使用)

--chat

启动一个简单聊天服务器(有身份标识)

--proxy <addr[:port]>

指定代理服务器地址和端口

--proxy-type <type>

指定代理类型("http", "socks4", "socks5")

--proxy-auth <auth>

HTTP或SOCKS代理身份验证

--proxy-dns <type>

指定代理目标由谁解析("local", "remote", "both", "none")

--ssl

启用SSL

--ssl-certSpecify

指定监听模式下的SSL证书(PEM格式)

--ssl-key Specify

指定监听模式下的SSL秘钥(PEM格式)

--ssl-verify

验证证书和域名

--ssl-trustfile

指定可信任的SSL证书(PEM格式)

--ssl-ciphers

指定要使用的SSL密码的密码列表

--ssl-alpn

要使用的ALPN协议列表(TLS的扩展,允许在安全连接的基础上进行应用层协议的协商)

--version

显示版本信息

 

1.2 exec模式环境变量

NCAT_REMOTE_ADDR

连接中对端的地址

NCAT_REMOTE_PORT

连接对中端的端口

NCAT_LOCAL_ADDR

连接中本端的地址

NCAT_LOCAL_PORT

连接中本端的端口

NCAT_PROTO

连接使用的协议

 

 

2 使用手册

2.1 用途

ncat是一个通用的命令行工具,用于通过网络读取、写入、重定向和加密数据

1 充当一个简单的TCP/UDP/SCTP/SSL客户端

2 充当一个简单的TCP/UDP/SCTP/SSL服务器

3 将TCP/UDP/SCTP流量重定向或代理到其他端口或主机

4 加密与SSL的通信,并通过IPv 4或IPv 6传输它。

5 充当执行系统命令的网络网关,I/O重定向到网络

6 充当连接代理,允许两个(或更多)客户端通过第三台(代理)服务器彼此连接

7 支持多种操作系统:Linux、Windows、MacOS

 

2.2 基本用法

连接模式

ncat <host> [<port>]

监听模式

ncat --listen [<host>] [<port>]

ncat -l [<host>] [<port>]

注意事项

1 监听模式下忽略host则绑定到0.0.0.0

2 连接模式或监听模式下忽略port则使用默认端口31337

3 -keep open/-k选项

3.1 tcp监听模式下使用--keep open或-k选项

ncat接收多个并发连接,直至达到连接限制

服务器接收每个客户端发送的所有内容,服务器发送的任何内容都会发送给所有客户端

3.2 udp监听模式下使用--keep open或-k选项

udp服务器将只与一个客户端(第一个向其发送数据的客户端)通信,因为在udp中没有“已连接”客户端的列表

4 协议选择

--udp/-u 指定udp

--sctp 指定sctp

-4 指定IPv4

-6 指定IPv6

当未指定-4或-6选项时,ncat同时监听ipv4和ipv6

HTTP协议:https://www.rfc-editor.org/rfc/inline-errata/rfc2616.html

连接模式示例-web客户端

# ncat -C www.baidu.com 80

GET / HTTP/1.0

 

-C选项指定CRLF作为行尾,部分协议识别CRLF

监听模式示例-模拟web服务器

# cat hello.http

HTTP/1.0 200 OK

 

<html>

<body>

<h1>Hello,world</h1>

</body>

</html>

                                    

# ncat -l -p 8080 < hello.http

 

通过浏览器访问x.x.x.x:80端口即可查看;

实际通过nc、telnet、ncat访问都可以获取信息,因为当端口连接时,ncat就将文本内容传输给对端,并没有进行http协议的处理

 

2.3 协议

1 ncat可以使用TCP、UDP、SCTP、SSL、IPv4、IPv6和它们的组合.默认为TCP IPv4

2 TCP可以与SSL结合使用

3 UDP仅在连接模式下支持DTLS,监听模式下不支持DTLS

4 SCTP可以与SSL结合使用

5 正确使用SSL、TLS可以为网络流量提供安全性,--ssl选项启用ssl

 

2.4 连接代理

代理说明:代理模式下的ncat服务端接受来自多个客户端的连接,当接收到其中一个客户端发来的数据时,会转发给其它所有的客户端。

功能启用:通过--broker选项启用代理模式,该选项必须与--listen选项组合使用,单独使用--broker选项则无效

 

2.5 SSL

1 选项

1.1 --ssl

启用SSL对TCP和SCTP的数据加密

1.2 --ssl-cert

指定证书文件(PEM编码)

1.3 --ssl-key

指定私钥文件(PEM编码)

1.4 --ssl-verify

验证证书和匹配域名

验证使用ncat自带的ca-bundle.crt证书以及操作系统可能提供的任何可信证书

ncat不进行证书吊销检查

1.5 --ssl-trustfile

指定信任证书,与--ssl-verify选项一起使用,验证非CA签发的证书

1.6 --ssl-ciphers

用于指定加密套件(SSL密码的密码列表)

SSL连接取决于客户端和服务器是否同意共同的加密套件:密钥交换、对称密码和消息完整性机制的组合

默认加密套件:ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!MD5:@STRENGTH

2 SSL服务器

2.1 ncat可以充当SSL服务器,但需要指定一个证书,客户端可以根据自己的选择进行验证

2.2 如果未使用--ssl-cert选项和--ssl-key选项启用SSL服务器,则ncat自动生成证书和2048位的

    任何进行证书验证的应用程序都不会信任该证书,使用-v选项,秘钥的指纹信息将被打印出来,如果需要的话,可以手工验证

2.3 建议使用--ssl-cert选项和--ssl-key选项指定现有的证书和密钥来

3 示例

3.1 SSL客户端

ncat -C --ssl <server> 443

3.2 进行证书验证的SSL客户端

ncat -C --ssl-verify <server> 443

3.3 使用指定证书进行证书验证的SSL客户端

ncat -C --ssl-verify --ssl-trustfile <custom-certs.pem> <server> 443

3.4 指定加密套件的SSL客户端

ncat --ssl-ciphers <HIGH:!aNULL:!eNULL> <server> 443

3.5 自动生成证书和密钥的服务端

ncat -v --listen --ssl

3.6 使用证书文件和密钥连接

服务端

# 生成证书和密钥

# 生成证书时,commonName字段要与主机的域名/IP匹配

# openssl req -new -x509 -keyout test-key.pem -out test-cert.pem

# 使用生成的证书和密钥运行ssl服务

# ncat --listen --ssl --ssl-cert test-cert.pem --ssl-key test-key.pem

客户端

# 将服务端生成的证书复制到客户端使用

# ncat --ssl-verify --ssl-trustfile test-cert.pem

 

 

2.6 命令执行

1 说明

ncat可以在连接建立后执行外部命令

外部命令的stdin重定向到连接的inband,stdout重定向到outbound

2 运行方式

2.1 --exec  运行不带shell解释的命令(执行程序,类似nc -e)

2.2 --sh-exec  通过传递字符串给系统shell来运行命令(执行命令,类似 nc -c)

2.3 --lua-exec  使用ncat的内置Lua解释器运行Lua程序

3 示例

2.1 --exec

说明: --exec或-e选项接受要执行的命令的完整路径名及其参数,随后将直接执行该命令

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

2.2 --sh-exec

说明: --sh-exec或-c选项的工作方式与-exec相同,只不过它通过将命令传递给Unix上的/bin/sh -c或Windows上的cmd.exe /C来执行命令

 如果命令路径位于path环境变量中,则不必使用命令的完整路径名;此外,还可以访问shell工具,如管道和环境变量扩展

示例: ncat -l --sh-exec "echo `pwd`"

2.3 --lua-exec

说明: --lua-exec选项接受要运行的lua程序的文件名,随后ncat使用其内置的解释器运行程序,并重定向其输入和输出流至inbound和outbound

 使用Lua程序的优点是所有平台使用相同的解释器

Lua: 学习网址  http://www.lua.org/pil/contents.html

 交互脚本  https://svn.nmap.org/nmap/ncat/scripts/conditional.lua

示例: # cat hello-luaexec.lua

--This is a --lua-exec "Hello world" example. In order to send to a client,

--all you need to do is output it to the standard output.

print("Hello, world!")

 

 # ncat -l --lua-exec hello-luaexec.lua

2.4 --keep-open --exec

说明: --exec选项可用于客户端和服务端

  在服务端使用--exec选项时,ncat接受一个连接,随后执行命令,当命令结束后退出ncat;

  当--exec与--keep-open选项一起使用时,ncat可以接受多个连接,并为每个连接单独执行命令;

  该组合可以在UDP模式下工作,并且将打破UDP模式下仅连接一个客户端的限制;

  服务器将持续运行,直到按下ctrl+C或以其他方式外部终止它。

示例: ncat -l --keep-open --exec "/bin/echo Hello."

4 环境变量

说明:

无论exec模式是什么,ncat都会在派生程序的环境中设置描述连接的环境变量

变量:

NCAT_REMOTE_ADDR

连接中对端的地址

NCAT_REMOTE_PORT

连接对中端的端口

NCAT_LOCAL_ADDR

连接中本端的地址

NCAT_LOCAL_PORT

连接中本端的端口

NCAT_PROTO

连接使用的协议

示例:

服务端

# ncat -l -c "env | grep NCAT"

客户端

# ncat 192.168.8.114

NCAT_LOCAL_PORT=31337

NCAT_PROTO=TCP

NCAT_REMOTE_ADDR=192.168.8.100

NCAT_REMOTE_PORT=39474

NCAT_LOCAL_ADDR=192.168.8.114

注释

客户端显示的是服务端的环境变量

5 Lua脚本注意事项

在Windows上每当执行--lua-exec选项指定的脚本时(搭配--keep-open选项时),都会重新加载它,因此脚本可以时时刷新

在其它系统上,则不是这样,需要重新运行ncat来加载最新的脚本

 

2.7 输出选项

1 说明

1.1 输入、输出

ncat从stdin读取输入,写入输出到stdout

1.2 ----exec、--sh-exec

当使用--exec或--sh-exec选项时,输入与输出被重定向至连接的inbound和outbound

因此在命令行输入的内容不会影响通信内容,除非使用-C或--telnet之类的选项修改流内容

1.3 -v选项

ncat使用stderr打印诊断信息

默认情况ncat不打印诊断信息,可以使用-v或--verbose选项启用它,多次使用-v可以获得更详细的信息

2 选项

2.1 --output/-o

说明: 该选项记录发送和接收的内容到文件

示例: ncat -C --o 192.168.8.100 22

2.2 --hex-dump/-x

说明: 该选项记录发送/接收的内容以及其16进制形式的数据到文件

示例: ncat -C -x 192.168.8.100 22

 

2.8 访问控制

1 选项

1.1 --allow

指定允许连接的主机

1.2 --deny

指定拒绝连接的主机

1.3 --allowfile

指定文件,文件包含允许连接的主机列表

1.4 --denyfile

指定文件,文件包含拒绝连接的主机列表

1.5 --max-conns/-m

指定最大连接数

类Unix默认大连接数为100,Windows默认大连接数为60

2 参数格式

2.1 主机

1 IPv4地址

2 IPv6地址

3 主机名

4 IPv4默认子网掩码

5 CIDR网络掩码(IPv4、IPv6都支持)

使用--allow选项或--deny选项指定多个主机时,使用 , 分隔

如果主机同时匹配--allow和--deny,将执行deny

2.2 主机列表文件

该文件的每一行都是一个主机条目

3 示例

3.1 允许一个主机

ncat -l --allow 192.168.0.125

ncat -l --allow 2001:db8::7d

ncat -l --allow trusted.example.com

3.2 拒绝一个主机

ncat -l --deny 192.168.0.200

ncat -l --deny 2001:db8::c8

3.3 允许一个网络

ncat -l --allow 192.168.0.0/24

ncat -l --allow 192.168.0.0-255

ncat -l --allow 2001:db8::/32

3.4 允许文件列表中的主机

ncat -l --allowfile trusted-hosts.txt

3.5 拒绝文件列表中的主机

ncat -l --denyfile external-hosts.txt

3.6 指定最大连接数

ncat -l --max-conns 5

注意: 基于主机的访问控制容易受到欺骗攻击和其它各种可能的失败,不应依赖该机制来实现绝对安全

 

2.9 代理

1 客户端

1.1 语法:

ncat --proxy <proxyhost>[:<proxyport>] --proxy-type { http | socks4 | socks5 } <host> [<port>]

1.2 说明:

--proxy <proxyhost>[:<proxyport>] 指定代理的服务器和端口

--proxy-type { http | socks4 | socks5 }  指定代理的类型

<host> [<port>]  为要访问的服务

1.3 细节:

--proxy-type可以忽略,默认为http

IPv4下<proxyport>可以忽略,默认http为3128端口,socks为1080端口

IPv6必须指定<proxyport>

1.4 验证

http与socks5可以通过选项--proxy-auth <username>:<password>进行验证

socks4可以通过选项--proxy-auth <username> 进行验证

2 服务端

2.1 示例

ncat -l 3128 --proxy-type http

ncat -l 3128 --proxy-type http --proxy-auth <user>:<pass>

2.2 说明

ncat仅支持http代理服务

--proxy-auth <user>:<pass>用于身份验证

 

2.10 其它选项

一般选项

1 --nodns/-n

不进行DNS解析,主机需要指定为IPv4或IPv6地址

2 --telnet/-n

ncat将作为telnet客户端或服务端

3 --send-only

ncat将转换为单向通信,仅发送数据,而不接收数据

ncat会在数据发送结束后,自动退出

4 --recv-only

ncat将转换为单向通信,仅接收数据,而不发送数据

来源选项

5 --source/-s

指定用于创建连接的本地地址,该地址必须为本地已启用的地址

6 --source-port/-p

指定用于创建连接的本地端口

7 -g

为IPv4松散源路由选择跳数

8 -G

设置源路由指针

时间选项

时间单位: ms--毫秒 s--秒 m--分钟 h--小时

9 --delay/-d

指定读、写的延迟时间

10 --idle-timeout/-I

指定空闲超时

当连接成功建立后,在指定时间内没有发生读、写操作则退出ncat

11 --wait/-w

指定等待超时

在指定时间内未成功建立连接,则退出ncat,仅在客户端模式下有效

 

2.11 文件传输

1 提示

1.1 默认情况下,ncat不对通信数据加密,但是可以通过指定ssl相关的选项进行加密传输

1.2 默认情况下,ncat在输入完数据后不会关闭连接,直到对端关闭连接。这是因为对端可能仍有数据要发送

通过指定--send-only选项指定输入结束后关闭连接,该选项通常用于单向传输

2 示例

单文件

1 客户端发送到服务端

服务端 ncat -l > outputfile

客户端 ncat --send-only 192.168.8.100 < inputfile

2 服务端发送到客户端

服务端 ncat -l --send-only < inputfile

客户端 ncat 192.168.8.100 > outputfile

多文件: 将文件归档后发送

客户端发送到服务端

服务端 ncat -l | tar xzv

客户端 tar czv <files> | ncat --send-only 192.168.8.100

字节流

1 客户端发送到服务端(磁盘镜像)

服务端 ncat -l > host1-hda.image

客户端 ncat --send-only host2 < /dev/hda

2 客户端发送到服务端(压缩磁盘镜像)

服务端 ncat -l | bzip2 -d > host1-hda.image

客户端 cat /dev/hda | bzip2 | ncat --send-only host2

代理转发: 在接收双方都无法监听的情况下,可以使用第三台设备进行代理转发

代理端 ncat -l --broker

接收端 ncat 代理端ip > outputfile

发送端 ncat --send-only 代理端ip < inputfile

注意:

1 代理端时时转发数据,因此要注意连接顺序

2 代理端不会主动断开连接,因此接收端需要ctrl+c主动断开连接或使用-i选项

 

2.12 聊天

1 双人聊天

示例:

主机A ncat -l

主机B ncat 主机A

说明:

当需要双人聊天时,一端先运行ncat监听模式,随后另一端进行连接,当连接成功建立后即可聊天

2 多人聊天

2.1 无身份标识的多人聊天

示例:

代理端 ncat -l --broker

说明:

选择一台pc作为代理服务器运行ncat -l --broker,随后其他用户连接打代理服务器

代理服务器接收到任意用户的消息,都将其转发至其他用户

2.2 有身份标识的多人聊天

示例:

代理端 ncat -l --chat

说明:

--chat选项包含--broker选项,并且为每个连接分配标识 <user<n>>,<user 0>为代理服务器,其它标识无法指定

信息转发时会为其添加前缀<user<n>>,由此来区分不同用户

 

2.13 Neat Tricks(巧妙用法)

1 发送邮件

1.1 示例

$ ncat -C mail.example.com 25

220 mail.example.com ESMTP

HELO client.example.com

250 mail.example.com Hello client.example.com

MAIL FROM:a@example.com

250 OK

RCPT TO:b@example.com

250 Accepted

DATA

354 Enter message, ending with "." on a line by itself

From: a@example.com

To: b@example.com

Subject: Greetings from Ncat

 

Hello. This short message is being sent by Ncat.

.

250 OK

QUIT

221 mail.example.com closing connection

1.2 说明

mail.example.com替换为SMTP服务器

SMTP交互内容查看RFC文档: https://www.rfc-editor.org/rfc/rfc5321

2 简单web服务器

1 --sh-exec

示例:

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"

说明:

利用ncat发送一次http的响应数据

2 --lua-exec示例

示例:

ncat --lua-exec httpd.lua --listen 8080 --keep-open

说明:

httpd.lua脚本存放在ncat v6.40以后版本的ncat/scripts/目录下

该脚本适用于所有与POSIX兼容的系统和Windows系统

在脚本指定发送给用户的文件

3 警告

ncat的http服务器功能比较简单,不建议用于生产环境,建议复制文件和教育等目的使用

3 ncat链

1 示例1

示例:

host3$ ncat -l > log.txt

host2$ ncat -l | ncat host3

host1$ ncat host2 < log.txt

说明:

host1文件内容,发送到host3

文件发送至host2后,通过管道输出给ncat host3

host2输入内容,发送到host1

ncat host3的stdin被重定向,因此不接收输入

ncat -l的stdin依旧存在,因此数据发送到host1

host3输入内容,发送到host2

ncat host3的stdout未被重定向,因此接收并显示数据

2 示例2

示例:

host3$ ncat -l --recv-only > log.txt

host2$ ncat -l --recv-only | ncat host3 --send-only

host1$ ncat --send-only host2 < log.txt

说明:

指定接收端仅接收,发送端仅发送,这样形成一条单向链

3 示例3

示例:

host3$ ncat -l

host2$ ncat -l --sh-exec "ncat host3"

host1$ ncat host2

说明:

host2通过'ncat host3'与host3建立连接

然后host2将'ncat host3'的输入、输出重定向到host1

host1实际上作为了'ncat host3'的输入和输出

该通信为host1与host3双向通信

4 示例4

示例:

ncat -l localhost 8080 --sh-exec "ncat example.org 80"

说明:

访问本地8080端口等于访问example.org的80

5 | 与 --sh-exec区别

1 | 需要运行两个ncat,然后将第一个ncat的输出内容写到第二个ncat的输入

2 --sh-exec仅需运行一个ncat

  当连接成功建立后,--sh-exec指定的命令将执行,并将控制权交给该命令,

  同时命令的输入、输出被重定向到连接的inboud和outband  逻辑上可以理解为本地操作

3 | 是第一个ncat将远端接收的数据输出到到第二个ncat的输入,然后第二个ncat将数据发送给目标

  --sh-exec指定的ncat则是将远端数据作为stdin,然后发送给目标,逻辑上不就是本地操作吗

语言描述能力较差...请见谅

4 SSL展开

场景:

远端的IMAP服务器为SSL传输,本地邮件阅读器不支持SSL,通过ncat进行SSL转发

命令:

ncat -l localhost 143 --sh-exec "ncat --ssl imap.example.com 993"

说明:

邮件阅读器访问本地143端口,将数据输入到ncat,ncat通过SSL加密传输给IMAP服务器,然后将接收到数据解密后输出到邮件阅读器

注意该方法不适用于HTTP,因为HTTP通常涉及到到多个主机,而ncat同一时间仅能作用于一个主机

5 隧道

1 ncat隧道

示例:

ssh -o ProxyCommand="ssh -q 192.168.8.114 ncat %h %p" 192.168.8.116

说明:

使用192.168.8.114作为转发服务器连接192.168.8.116

1 ssh -q 192.168.8.114 ncat %h %p

ssh命令,%h %p被替换为目标主机与目标端口

该命令用于连接192.168.8.114的ssh服务,并且在成功连接后执行ncat命令,

随后ncat获取控制权,并将输入、输出重定向到连接的inbound、outbound,

即本机的发送的数据作为ncat的输入,ncat的输出作为本端接收的数据,由此来与192.168.8.116进行通信

2 -o用于指定额外操作,ProxyCommand指定用于连接到服务器的命令

2 ssh隧道

示例:

主机A

ssh 192.168.8.114 -D 8080

ncat --proxy localhost:8080 --proxy-type socks5 192.168.8.116 --ssl

主机C

ncat -l --ssl

 

说明:

ncat通过ssh隧道进行通信

官方文档给出的示例不需要--ssl,问题尚未解决

 

6 发现nmap扫描细节

示例:

# ncat -l --keep-open 5200 --hex-dump vscan.log > /dev/null

# nmap -d -sV --version-all localhost -p 5200

说明:

监听本地5200端口,丢弃stdout内容,将收发数据的二进制内容保存

使用nmap扫描本地5200端口,ncat将扫描时发送的数据dump,然后查看文件分析具体的扫描过程

 

2.14 模拟诊断服务

1 discard

忽略任何内容

1.1 RFC

https://www.rfc-editor.org/rfc/rfc863

1.2 TCP示例

ncat -l 9 --keep-open --recv-only > /dev/null

1.3 UDP示例

ncat -l 9 --keep-open --udp --sh-exec "cat > /dev/null"

2 echo

响应所有接收到的数据,直到连接关闭为止

2.1 RFC

https://www.rfc-editor.org/rfc/rfc862

2.2 TCP示例

ncat -l 7 --keep-open --exec "/bin/cat"

2.3 UDP示例

ncat -l 7 --keep-open --udp --exec "/bin/cat"

3 daytime

响应人类可读的日期和时间字符串,忽略输入

3.1 RFC

https://www.rfc-editor.org/rfc/rfc867

3.2 TCP示例

ncat -l 13 --keep-open --send-only --exec "/bin/date"

3.3 UDP示例

ncat -l 13 --keep-open --udp --send-only --exec "/bin/date"

3.4 daytime.nse脚本

nmap附带daytime.nse脚本,作用于daytime服务

nmap -sSU -p 13 --script=daytime localhost

4 qotd (quote of the day)

忽略输入,返回一条短消息

4.1 RFC

https://www.rfc-editor.org/rfc/rfc865

4.2 TCP示例

ncat -l 17 --keep-open --send-only --exec "/usr/games/fortune"

4.3 UDP示例

do ncat -l 17 --keep-open --udp --send-only --exec "/usr/games/fortune"

5 chargen

5.1 RFC

https://www.rfc-editor.org/rfc/rfc864

5.2 TCP示例 - 忽略输入,一直发送数据

yes "chargenchargenchargen" | ncat -l --keep-open 19 --send-only

该方法导致同时连接的用户都将同步地看到相同的输出流,,如果希望每个流的内容是独立的,则使用--exec选项

5.3 UDP示例 - 接收到数据报后返回一个包含随机字符数的数据报

ncat -l 19 --keep-open --udp --send-only --sh-exec "yes chargenchargenchargen | dd count=1 bs=$(($RANDOM % 512)) 2> /dev/null"

注意使用--sh-exec而不是--exec,是因为可以shell的环境变量和算术计算。

然后将标准错误被重定向到/dev/null,以避免包括dd的摘要行(1+0记录输出),否则ncat就会显示这些内容

 类似资料:

相关阅读

相关文章

相关问答