Nmap网络安全审计(三)
端口扫描技术
端口的概念
网络中一共有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要多一些。
|
目标主机的应答 |
目标端口的状态 |
从目标端口得到任意的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

指定扫描的端口
- 扫描常见的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个
备注
因为系统查的比较严,所以删减了一部分的文章,还请谅解