概念
NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工具包。Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。
其基本功能有三个:
- 扫描主机端口,嗅探所提供的网络服务
- 探测一组主机是否在线
- 推断主机所用的操作系统,到达主机经过的路由,系统已开放端口的软件版本
nmap端口状态解析
open
:应用程序在该端口接收 TCP 连接或者 UDP 报文;closed
:关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应,但没有应用程序在其上监听;filtered
:由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则或者主机上的软件防火墙;unfiltered
:未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭,只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态;open | filtered
:无法确定端口是开放还是被过滤,开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议,FIN,Null 等扫描会引起。closed | filtered
:(关闭或者被过滤的)无法确定端口是关闭的还是被过滤的。
常用命令
nmap nmap.org -p1-65535
扫描目标的1~65535所有在监听的tcp端口;
如果不指定要扫描的端口,默认扫描从1~1024再加上nmap-services列出的端口;
nmap-services是一个包含大约2200个著名的服务的数据库,通过查询该数据库可以报告那些端口可能对应于什么服务器,但不一定正确;
不加-p 时,显示的都是已知协议的端口,对于未知协议的端口没显示;
注意,nmap有自己的库,存放一些已知的服务和对应端口号,假如有的服务不在nmap-services,可能nmap就不会去扫描,这就是明明一些端口已经是处于监听状态,nmap默认没扫描出来的原因。
nmap -sU nmap.org -Pn
扫描udp端口
nmap 10.0.1.11 10.0.1.12
扫描多个IP用法
nmap 10.0.1.10-20
扫描连续的ip地址
nmap 10.0.1.0/24
扫描一个子网网段所有IP
nmap -iL ip.txt
扫描文件里的IP
nmap 10.0.1.161-162 --exclude 10.0.1.162
扫描地址段是排除某个IP地址
nmap -PS nmap.org