Nmap
Network Mapper
一款开源免费的网络发现和安全审计工具。
用途
列举网络主机清单
监控主机或服务运行状况
管理服务升级调度
检测目标主机是否在线
检测目标主机端口开放情况
侦测运行的服务类型及版本信息
侦测操作系统与设备类型的信息
功能
主机发现
也称作ping 扫描。发现所要扫描的主机是否正在运行的状态。
原理:发送探测包到目标主机,看目标主机是否回复。默认发送四种不同类型的包。
端口扫描
确定端口的开放状况,最核心的功能。
版本侦测
确定主机开放端口上运行的具体的应用程序及版本信息。
操作系统侦测
检测目标主机运行的操作系统类型及设备类型的等信息。
Nmap工作原理
Nmap首选都是发送arp请求的,因为在同网段中它几乎总是更快。
主机发现
-sL #列表扫描,仅将指定的目标IP列举出来,不进行主机发现
-sn #只进行主机发现,不进行端口扫描
-sP #仅对主机进行ping扫描
-P0 #关闭ping,跳过ping的步骤
-Pn #将所有主机视作开启的,跳过主机发现的过程
-PA #使用TCP ACK Ping扫描方式进行发现
-PU #使用TCP UDP Ping扫描方式进行发现
-PY #使用SCTP INIT Ping扫描方式进行发现
-PE #使用ICMP echo请求包发现主机
-PP #使用timestamp请求包发现主机
-PM #使用and netmask请求包发现主机
-PO #使用IP协议报探测对方主机是否开启
-PS #向目标主机发送一个设置了SYN标志位的空的TCP报文,主机返回包即判断存活
-n #不进行DNS解析
-R #总是进行DNS解析
-dns-servers #指定DNS服务器
-traceroute #追踪每个路由节点
端口扫描
Nmap端口状态
open #开放状态
closed #关闭状态
filtered #被过滤状态
unfiltered #未被过滤状态(ACk扫描时出现)
Open Filtered #开放或是过滤的
closed Filtered #不能确定端口是关闭的还是被过滤的
常用扫描方式
时序扫描
(-T效果并不好,通常配合-F使用,提高扫描速度与效果)
T0 #非常慢的扫描,用于IDS(入侵检测系统)逃避
T1 #缓慢的扫描,介于0和2之间的速度,同样可以躲开某些IDS
T2 #降低扫描速度,通常不用
T3 #默认扫描速度
T4 #快速扫描,可能会淹没目标,如果有防火墙可能会触发
T5 #极速扫描,牺牲了准确度来换去速度
常规扫描
-sS #TCP SYN扫描,半开放扫描,速度快,不易被防火墙发现
-sA #TCP ACK扫描,不能判断端口状态
-sT #TCP连接扫描,基础稳定,会完成三次握手,会被防火墙记录
-sU #UDP扫描,速度慢,常用-p指定端口
隐蔽扫描
-sN #Null扫描,非常规数据包,端口关闭会相应,开放则不响应
-sF #FIN扫描,类似SYN扫描
-sX #打开数据包FIN、PSH和URG位,检测RST响应包
空闲扫描
-sI [zombie] [target ip] #防止IDS记录
-sO #IP协议扫描,扫描IP协议号,确定对方主机支持哪些IP协议
操作系统指纹识别
用于识别某台设备上运行的操作系统。
-sV #版本探测
--allports #全端口版本探测
--version-intensity #设置扫描强度
--version-light #轻量级扫描
--version-all #重量级扫描
--version-trace #获取详细版本信息
-sR #RPC扫描
-O #启用操作系统探测
--osscan-limit #对指定的目标进行操作系统探测
--oscan-guess;--fuzzy #推测系统识别
Nmap输出
5种不同的输出格式
interactive output
grepable output
normal output
script kiddi3 Output
XML输出
-oN #标准输出,将标准输出写入指定文件
-oX #XML输出,将XML输出写入指定文件
-oS #script kiddi3输出,适合原来全是大写的输出
-oG #Grep输出
-oA #可以将扫描结果以标准格式、XML格式和Grep格式一次性输出