操作系统侦测(OS detection)
用于识别目标机的操作系统类型、版本编号及设备类型。
Nmap目前提供了上千种操作系统或设备的指纹数据库,可以识别通用PC系统、路由器、交换机等设备类型。
防火墙/IDS规避(Firewall/IDS evasion)
Nmap提供多种机制来规避防火墙、IDS的的屏蔽和检查,便于秘密地探查目标机的状况。
基本的规避方式包括:分片(Fragment)/IP诱骗(IP decoys)/IP伪装(IP spoofing)/MAC地址伪装(MAC spoofing)等等。
NSE脚本引擎(Nmap Scripting Engine)
NSE是Nmap最强大最灵活的特性之一,可以用于增强主机发现、端口扫描、版本侦测、操作系统侦测等功能,还可以用来扩展高级的功能如web扫描、漏洞发现、漏洞利用等等。Nmap使用Lua语言来作为NSE脚本语言,目前的Nmap脚本库已经支持350多个脚本。
常用扫描类型
解开Nmap中文版命令行版的压缩包之后,进入Windows的命令控制台,再转到安装Nmap的目录(如果经常要用Nmap,最好把它的路径加入到PATH环境变量)。不带任何命令行参数
。GUI版的功能基本上和命令行版本一样,鉴于许多人更喜欢用命令行版本,本文后面的说明就以命令行版本为主。 下面是Nmap中文版支持的四种最基本的扫描方式:
⑴ TCP connect() 端口扫描(-sT参数)。
⑵ TCP同步(SYN)端口扫描(-sS参数)。
⑶ UDP 端口扫描(-sU参数)。
⑷ Ping扫描(-sP参数)。
扫描tcp端口
前期准备
B机器使用nmap去扫描A机器,扫描之前,A机器先查看自己上面有哪些端口在被占用,A机器上查看本地ipv4的监听端口。
扫描tcp端口:B机器上使用nmap扫描A机器所有端口
nmap 10.0.1.161 -p1-65535表示扫描A机器的1到65535所有在监听的tcp端口。
指定端口范围使用-p参数,如果不指定要扫描的端口,Nmap默认扫描从1到1024再加上nmap-services列出的端口
nmap-services是一个包含大约2200个著名的服务的数据库,Nmap通过查询该数据库可以报告那些端口可能对应于什么服务器,但不一定正确。
所以正确扫描一个机器开放端口的方法是上面命令。-p1-65535
注意,nmap有自己的库,存放一些已知的服务和对应端口号,假如有的服务不在nmap-services,可能nmap就不会去扫描,这就是明明一些端口已经是处于监听状态,nmap默认没扫描出来的原因,需要加入-p参数让其扫描所有端口。
虽然直接使用nmap 10.0.1.161也可以扫描出开放的端口,但是使用-p1-65535 能显示出最多的端口
区别在于不加-p 时,显示的都是已知协议的端口,对于未知协议的端口没显示
如果不加-p1-65535,对于未知服务的端口(A机器的13306端口)就没法扫描到
1.修复已知bug
2.优化操作体验