目录
端口扫描技术
端口的概念
网络中一共有65536个端口(0-65535),端口是供数据进出网络设备的,也是计算机与外界通信的出口。 网络中很多程序需要进行网络通信,而信息实际上都需要通过网卡出入,如何区分出入信息是哪个程序使用的呢,这个就由操作系统处理,而它采用的机制就是划分出65536个端口,程序在发送的信息中加入端口编号,而操作系统在接收到信息后会按照端口号将信息分流到当前内存中使用该端口号的程序。
端口的分类
根据端口使用情况的不同,可以简单的将端口分为三类:
公认端口:
这一类端口是我们常用的端口。端口编号0-1024的端口都是公认端口。通常这些端口已经明确的与某种服务的协议进行了关联,一般不会进行更改,比如我们常用的80端口(Http)、23端口(Telnet)、22端口(SSH)。
注册端口:
这部分的端口号的范围是从1025-49151。它们通常也会关联到一些服务上,但是并没有明确的规定,不同的程序可以根据实际情况进行定义。
动态/私有端口:
这部分端口号的范围是从49152-65535。一般来说,常见的服务不应该使用这些端口,所有容易被忽视。此外,我们根据协议的不同,可以分为TCP协议端口、UDP协议端口,因为这两个都属于传输层的协议,为通信的双方提供端到端的服务。
Nmap中对端口状态的定义
Nmap中对端口给出了6种不同的状态:
open:如果目标端口的状态处于open,则说明该端口有应用程序接受TCP连接或UDP报文。
closed:如果目标端口的状态处于close,这里不完全意味没有任何反应,状态为close的端口是可访问的,这种端口可以接受Nmap的探测报文并做出响应。
filtered:产生这种状态主要原因是因为存网络数据包过滤,导致Nmap无法确定该端口是否开放
unfiltered:这种结果很少见,它表明目标端口是可以访问的,但是Nmap却无法判断它到底是开放还是关闭,通常在ACK扫描时会出现这种状况。
open | filtered:无法确定端口是开放的还是被过滤了。
closed | filtered:无法确定端口是关闭的还是被过滤了。
Nmap中的各种端口扫描技术
Nmap中提供了大量的技术来实现对端口状态的检测,由于TCP技术相对于UDP技术要复杂一些,所以TCP的检测手段比UDP要多一些。
SYN扫描:
SYN扫描是最为流行的一种扫描方式,同时也是Nmap采用的默认扫描方式。这种扫描方式速度快,可以在一秒钟扫描上千个端口。 首先Nmap会向目标主机的一个端口发送请求连接的SYN数据包,而目标计算机接收到以后会以SYN/ACK应答,Nmap在接收到SYN/ACK后会发送RST包请求断开连接, 而不是ACK应答。这样三次握手就没有完成,无法建立正常的TCP连接,因此,(准备划重点)此次扫描就不会被记录到系统日志中。 用TCP SYN扫描时会有以下几种结果:
Connect扫描:
Connect扫描方式其实跟SYN扫描很像,只是这种扫描方式完成了TCP的三次握手。
nmap -sT 192.168.126.139
UDP扫描:
使用UDP扫描对一个端口进行扫描时有以下几种结果
目标主机的应答 | 目标端口的状态 |
---|---|
从目标端口得到任意的UDP应答 | open |
如果目标主机没有给出应答 | open filtered |
ICMP端口无法抵达错误(代码 3) | closed |
ICMP无法抵达的错误(代码 1 2 9 10 13) | filtered |
UDP的扫描速度相对较慢
nmap -sU 192.168.126.139
这个扫描结果中有很多端口状态都是filtered,但是这个端口的真实状态可能是open或者closed,我们要想判断这些端口到底是开放还是关闭的话就需要进一步测试。
UDP程序的服务一般不会对Nmap所发的空数据包做出回应,UDP程序需要使用它们自己的格式。如果保证能向所有常见的UDP服务发送合适的数据包,Nmap需要一个很大的数据库来储存这些格式,Nmap将这些格式存放在Nmap-service-probes中。
我们可以使用-sV 或 -A 参数,Nmap将会向每个 open | filtered 端口发送UDP probe,如果目标端口对任何一个probe有了响应,状态都会被更改为open。
TCP FIN扫描:
TCP FIN扫描方法向目标端口发送一个FIN数据包。按照RFC 793的规定,所有关闭的端口,目标系统应该返回RST标志。 使用TCP FIN扫描端口语法如下:
nmap -sF 192.168.126.139
NULL扫描:
TCP NULL扫描方法是向目标端口发送一个不包含任何标志的数据包。按照RFC 793的规定,对于所有关闭的端口,目标主机应该返回RST标志。 使用 TCP NULL扫描端口的语法如下:
nmap -sN 192.168.126.139
Xmas Tree扫描:
TCP Xmas Tree扫描方法是向目标端口发送一个含有FIN URG 和 PUSH标志的数据包。按照RFC 793规定,对于关闭的端口,目标系统应该返回RST标志 使用TCP Xmas Tree扫描端口的语法如下:
nmap -sX 192.168.126.139
指定扫描的端口
1. 扫描常见的100个端口
nmap -F 192.168.126.139
2.指定扫描某个端口
nmap -p 8080 192.168.126.139 //-p后加指定的端口号
3.使用名字来指定扫描端口
nmap -p dns,http 192.168.126.139 //-p后跟端口名称,多个端口用逗号隔开
4.使用协议指定扫描端口
nmap -p U:53 , T:22 192.168.126.139 //对UDP的53端口和TCP的22端口进行扫描,目标192.168.126.139
5.扫描所有端口
nmap -p * 192.168.126.139 //慎用
6.扫描常用端口
nmap --top-ports 20 192.168.126.139 //对前20个端口进行扫描,数字根据自己需求设置,默认是10个