端口扫描详解

TCPconnect扫描: tcp全连接扫描。使用系统提供的connect()函数来连接目标端口,如果目标端口正在监听这个端口,那么connect()函数将会被成功返回,否则,说明改端口不可访问。通过完整的tcp三次握手(也即一次tcp连接),来判断目标端口的状态

TCPSYN扫描: 半打开扫描。首先客户端向要扫描的端口发送一个SYN分组(tcp连接的第一次握手),然后等待服务器返回的SYN/ACK应答(tcp连接的第二次握手),如果收到SYN/ACK应答,那么表示这个端口处于监听状态;如果收到RST/ACK(重置连接)则认为这个端口不在监听状态或者被防火墙拒绝了;如果什么都收不到那么表示被防火墙直接丢弃了。而客户端无论收到什么分组,都会向该端口发送一个RST/ACK分组,这样就没有建立一个完整的TCP连接,但是客户端却知道了这个端口是否开放,并且这种扫描并不会在目标系统上产生连接日志

TCPFIN扫描: 客户端首先向目标端口发送一个FIN分组(结束连接),按照RFC793的规定,目标端口如果是一个关闭的端口,那么将会返回一个RST分组;如果是一个打开的端口将会忽略这个请求。
PS:只对给予UNIX的TCP/IP协议栈有效

TCPACK扫描:该扫描方式,无法判断目标端口是否开放。首先客户端直接发送一个ACK分组给服务端,而目标端口无论是否开放都会返回一个RST分组,所以无法判断端口是否开放。但是可以通过这种方法判断防火墙配置和规则的设计,测试安全策略的有效性。

TCPWindows扫描: 基于tcp窗口大小的报告方式不规则,可检测AIX和FreeBSD系统上打开的以及被过滤/不被过滤的端口

TCPXmas树扫描: 客户端向目标端口同时发送URG(指示数据时紧急数据,应立即处理),PUSH(强制将数据压入缓冲区),FIN(在结束TCP会话时使用)标志位,由于这三个标志位不能被同时设置,所以可以用来判断端口开放,如果目标端口开放,则这个数据包将被丢弃,什么都不返回;如果目标端口开放,则将会返回一个RST分组
PS:同样是利用了RFC793规定,只对基于UNIX的系统有效

TCPNULL扫描: 客户端发送一个不带任何标志位的tcp数据包给目标主机,如果目标端口关闭,那么就会返回一个RST分组;如果目标端口开放则什么都不返回,直接丢弃这个数据包
PS:同样只对遵守RFC793规定的基于UNIX的主机有效,windows主机无论关闭与否都会返回RST标志位,可用来判断目标操作系统

TCPRPC扫描: 主要用于识别定位远程过程调用(rpc)端口及相关程序和版本号

UDP扫描: 向目标端口发送一个UDP数据包,如果目标端口返回一个ICMP端口不可达icmp响应,那么此端口是关闭的;如果没有任何响应(被直接丢弃了)则认为是开放的
PS: 由于UDP的无连接不可靠性,扫描准确性受外界干扰。另外由于RFC1812对生成ICMP错误报文的速度做出了限制,扫描速度会很慢

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值