编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

10分钟学会网络安全渗透,你也是安全专家!之:Netcat

wxchong 2024-06-13 22:30:53 开源技术 10 ℃ 0 评论

Netcat(nc)是常用的四层TCP或UDP端口连接测试及扫描工具,并且同时Server和Client模式。

TCP/UDP报文

TCP/UDP协议是目前网络传输中最为重要的两个协议,分别用于可靠传输和高速传输的应用场景。

由于TCP/UDP协议构成较为复杂,这里不展开说明,仅介绍几个和本文相关的知识点。

  • TCP建连/拆连
  • 三次握手建连

发起SYN建连的为客户端;

客户端一般采用随机端口建立连接;

TCP建连由OS协议栈管理,应用程序不参与。

  • TCP四次挥手拆连

客户端、服务器均可主动发起拆连;

拆连由应用发起,OS协议栈管理;

  • 两种快速拆连机制

服务器FIN与ACK在一个报文中标识

客户端或服务器收到FIN后使用RST断开连接

该方式避免close waiting问题。

  • TCP Flags

TCP Flags用于标识TCP报文的类型,常用的有:

SYN:用于标识TCP连接的建立;

ACK:用于报文的接受确认;

FIN:用于标识TCP连接的拆除;

RST:用于标识TCP连接的中断。

  • TCP Sequence number

Sequence number和Acknowledgement number用于TCP报文的顺序、完整性确认。

其中SYN的Sequence number为随机生成,Acknowledgement number为0。

后续的每个响应报文的Acknowledgement number均为前一个报文的Sequence number + 其报文的TCP负载长度,如果负载长度为0,则+1。

语法

nc [option] [target]

示例

  • 开启server模式,并测试连接
# 开启server模式,监听TCP 18080端口
LeoMBPR:~ leoxu$ nc -l 18080
# 测试端口连接并输出
LeoMBPR:~ leoxu$ nc -v -w 3 127.0.0.1 18080
found 0 associations
found 1 connections:
     1:	flags=82<CONNECTED,PREFERRED>
  outif lo0
  src 127.0.0.1 port 60541
  dst 127.0.0.1 port 18080
rank info not available
  TCP aux info available
Connection to 127.0.0.1 port 18080 [tcp/*] succeeded!
  • 开始server模式,并传输数据
# 开启server模式,并将接受内容写入output文件:
LeoMBPR:~ leoxu$ nc -l 18080 > output
# 创建input文件,并发送至netcat的server端口
LeoMBPR:~ leoxu$ echo "this is a test" > input
LeoMBPR:~ leoxu$ cat input
this is a test
LeoMBPR:~ leoxu$ nc 127.0.0.1 18080 < input
# 查看server端文本传输内容
LeoMBPR:~ leoxu$ cat output
this is a test
  • 端口扫描
# TCP端口扫描,语法:nc -z [host] [port range]
LeoMBPR:~ leoxu$ nc -z 192.168.10.10 80-88
Connection to 192.168.10.10 port 80 [tcp/http] succeeded!
# UDP端口扫描,语法:nc -uz [host] [port range]
LeoMBPR:~ leoxu$ nc -uz 192.168.10.10 80-88
Connection to 192.168.10.10 port 80 [udp/http] succeeded!
Connection to 192.168.10.10 port 88 [udp/kerberos] succeeded!

[option]

-4

强制使用IPv4地址;

-6

强制使用IPv6地址;

-b

指定nc使用的网络接口;

-D

开启debug;

-i

指定数据发送以及端口连接的间隔时间;

-G

指定TCP连接的超时时间(秒);

-I

指定TCP保活(keep alive)的间隔时间(秒);

-H

指定发起TCP保活的时间(秒);

-J

指定TCP保活报文的发送次数;

-k

nc连接结束后不退出,继续监听其他连接,需要和-l参数一起使用;

-l

强制nc为监听模式,不发起连接;

-n

不使用DNS解析IP地址或主机名;

-p

指定nc发起连接的源端口;

-r

指定源、目的端口为随机端口而非顺序端口;

-s

指定nc发起连接时的源IP地址;

-u

nc默认使用TCP连接,该参数使用UDP连接;

-v

显示更多的输出;

-w

nc默认没有超时时间,该参数可设定nc的链接超时时间(秒);

-X

指定nc使用代理协议,支持的Target为:4(SOCKS v.4),5(SOCKS v.5),connect(HTTPS),默认为5。

-x

指定nc连接代理协议的时候使用主机名加端口,如果端口没指定,则使用协议的默认端口。(SOCKS 1080,HTTPS 3128)。

总结

netcat是目前最常用的四层测试及扫描工具,不仅能覆盖常见的4层端口测试,还可以进行数据传输测试,以及部分的应用数据交互测试。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表