Linux 超级军刀 Nmap详解( 四 )


探测端口开放过程: 确定主机在线之后,nmap会按照nmap-services文件中的端口号发送TCP SYN报文给主机相应的端口,如果主机回复一个包含TCP SYN、ACK的报文,则说明该端口号开放 。nmap会再回复一个TCP RST清除连接复位 。下面的截图是nmap是和目标主机的80号端口的探测过程,由此可见,目标主机的22号端口属于开放状态!
全面扫描(nmap -A ip)
nmap -A 202.207.236.2
例如: nmap -A 202.207.236.2 这个命令不仅列出目标主机开放的端口号,对应的服务,还较为详细的列出了服务的版本,其支持的命令,到达目标主机的每一跳路由等信息 。在进行完全扫描时,扫描机与目标主机之间存在大量的数据流量交互,扫描时长随之增加 。完全扫描不仅仅是TCP协议上的通信交互,还有例如ICMP、HTTP、NBSS、TDS、POP等等协议的交互,这些协议的交互是因为在完全扫描开始时首先对目标主机的开放端口进行了确认,之后再根据不同对应的不同服务进行服务版本信息探测、账户信息等信息的探测!
探测主机是否在线:全面扫描时探测主机是否在线和简单扫描完全一致
探测端口是否打开:全面扫描时探测主机端口开放和简单扫描完全一致
探测端口服务具体版本:每个协议都不一样,总之就是确定端口开放了之后,和该端口进行更多的数据交互,以获得更多的信息 。在下一节的版本探测中有更深入的研究
探测主机系统:在下一节的系统探测中有更深入的研究 。
nmap -T4 -A -v xx.xx.xx.xx
-A 选项用于使用进攻性方式扫描
-T4 指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况较好的情况下推荐使用T4
-v 表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态
例如:nmap -T4 -A -v 10.96.10.246
全面扫描时数据流量包的截图,确定了哪些端口的协议开启了之后,进行更加深入的探测!
探测指定端口的开放状态
在默认情况下,Nmap对端口的扫描方式是从小到大进行的,或者是参照 nmap-services 中文件列出的端口进行扫描 。-p选项可以指定一个端口号或者一个端口范围 。若既想扫描TCP端口又想扫描UDP端口,则需要在端口号前加上T:或U:来分别代表TCP和UDP协议 。注意,要既扫描TCP又扫描UDP,则需要指定-sU及至少一个TCP扫描类型(-sS(半连接扫描),-sT(全连接扫描)等),如果没有给定协议限定符,端口号会被加到所有协议列表 。
例: nmap -p 80-445 10.96.10.246 扫描目标主机的80-445端口的开放情况
从上面的图中可以看到,若只简单的指定一个端口范围,Nmap会默认以TCP SYN方式扫描目标端口,若既想扫描目标TCP端口又想扫描UDP的端口,则需要指定扫描方式以及端口 。
例: nmap -sS -sU -p T:80,U:445 10.96.10.246 以半连接的TCP SYN方式扫描目标主机的80端口,以UDP方式扫描目标主机的445端口
探测N个最有可能开放的端口
例:nmap -sS -sU --top-ports 100 10.96.10.246
参数-sS表示使用TCP SYN方式扫描TCP端口;-sU表示扫描UDP端口;--top-ports 100表示扫描最有可能开放的100个端口(TCP和UDP分别100个端口) 。
四:版本侦测
版本侦测,用于确定目标主机开放端口上运行的具体的应用程序及版本信息 。
Nmap提供的版本侦测具有如下的优点:
高速 。并行地进行套接字操作,实现一组高效的探测匹配定义语法 。
尽可能地确定应用名字与版本名字 。
支持TCP/UDP协议,支持文本格式与二进制格式 。
支持多种平台服务的侦测,包括Linux/Windows/Mac OS/FreeBSD等系统 。
如果检测到SSL,会调用openSSL继续侦测运行在SSL上的具体协议(如HTTPS/POP3S/IMAPS) 。
如果检测到SunRPC服务,那么会调用brute-force RPC grinder进一步确定RPC程序编号、名字、版本号 。
支持完整的IPv6功能,包括TCP/UDP,基于TCP的SSL 。
通用平台枚举功能(CPE)
广泛的应用程序数据库(nmap-services-probes) 。目前Nmap可以识别几千种服务的签名,包含了180多种不同的协议 。
版本侦测原理
版本侦测主要分为以下几个步骤:
首先检查open与open|filtered状态的端口是否在排除端口列表内 。如果在排除列表,将该端口剔除 。
如果是TCP端口,尝试建立TCP连接 。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的totalwaitms) 。通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息 。nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比 。查找对应应用程序的名字与版本信息 。


推荐阅读