索引
Nmap的功能
- 扫描远程服务开放的端口
- 识别目标服务器上的服务
- 发现局域网中存活的主机
官方网站
Nmap官网:https://nmap.org
扫描远程服务器开放端口
使用命令:nmap 域名/IP
提示:探测中可以使用回车查看探测进度。
端口状态
- Open 表示端口处于开放状态
- Closed 表示端口处于关闭状态
- Filterd 表示端口处于过滤无法收到返回的probe状态
- UnFilterd 表示端口收到反悔的probe,但是无法确认
- Open/Filterd 表示端口处于开放或者是过滤状态
- Closed/UnFilterd 表示端口处于关闭或者过滤状态
原理
扫描原理:nmap根据输入的命令判断是否包含域名,若包含域名则需要利用DNS服务器对域名进行解析,让后发送ICMP数据包来探测主机是否存活。对存活主机发送探测包判读对应端口是否开放。
指定DNS服务器
如果使用的是域名,则探测前需要把域名通过DNS服务器解析为IP地址,可以通过参数–dns-servers指定DNS服务器.
nmap --dns-servers 8.8.8.8 smallstore.top
跳过机器存活探测
对于已经知道存活或者防火墙开启的机器,可以使用-Pn参数来跳过探测前的ICMP请求,从而达到不触发防火墙的安全机制
使用命令:nmap -Pn 域名/IP
指定探测范围内的端口
使用-p m-n参数可以指定探测一定范围内的端口
使用命令:nmap -p m-n 域名/IP
识别目标服务器上的服务指纹
服务指纹信息包括服务端口、服务名和版本信息。
使用命令:nmap -sV IP
原理
通过分析目标机器返回的的数据包中的协议标记、选项和数据,可以推断出发送数据的服务信息。
侵略性探测
探测目标机器的操作系统、服务信息等。
使用命令:nmap -A -v -T4 IP
-A 侵略性探测;-v 持续输出; -T4 加速探测
探测局域网中存活的主机
使用命令:nmap -sP CIDR
或者 nmap -sn CIDR
CIDR(无类别域间路由)是一种网络表达方式,例如:192.168.88.1/24
结果输出为xml文件:`nmap -sn CIDR -oX test.xml
端口探测技巧
对单个端口进行探测
使用参数-p可以指定探测端口
# 探测指定IP的80端口
nmap -p80 192.168.88.107`
对多个端口进行探测
# 探测指定IP的80,22,443端口
nmap -p80,22,443 192.168.88.107`
对范围内端口进行探测
# 探测指定IP的1-5000内端口
nmap -p 1-5000 192.168.88.107
对所有端口进行探测
# 探测指定IP的所有端口
nmap -p- 192.168.88.107
对指定协议端口探测
# 探测指定IP的TCP协议25端口,UDP协议53号端口
nmap -p T:25,U:53 192.168.88.107
对指定协议端口探测
# 探测指定IP的smtp协议端口
nmap -p smtp 192.168.88.107
对模糊协议名称端口探测
# 探测指定IP中名称以s开头的协议端口
nmap -p s* 192.168.88.107
NSE脚本的使用
NSE(Nmap Script Engine) Nmap脚本引擎,内置很多可以用来扫描,针对特定任务的脚本。通过脚本拓展Nmap的扫描策略,加强Nmap的功能。
# 使用参数--script来指定使用的脚本,脚本储存在/usr/share/nmap/script下。
nmap --script http-title 192.168.88.101
NSE特定情况使用举例
漏洞探测
# 探测目标机器漏洞,利用方法,漏洞参考。
nmap -sV --script vuln 192.168.88.101
分类探测
# 通过版本信息分类
nmap -sV --script version,discovery 192.168.88.101
通过模糊匹配使用多个脚本并排除指定脚本
# 使用Nmap中的http开头的脚本,但是除了(http-slowlors and http-brute)。
nmap -sV --script "(http*) and not (http-slowlors and http-brute)" 192.168.88.101
调试功能的使用
# 使用Nmap中的exploit脚本,同时开启调试模式。-d表示调试等级 有(0-9)10个等级
nmap -sV --script exploit -d 3 --script-trace 192.168.88.101
脚本参数的使用
# 使用Nmap中的http-title脚本,同时指定user_Agent的参数
nmap -sV --script http-title --script-args http.useragent="Mozilla 999" 192.168.88.101
脚本的更新
# 更新NSE脚本
nmap --script-updatedb
脚本功能查询
具体脚本功能可以登录官方网站查看:https://nmap.org/nsedoc/scripts/
指定网卡探测
针对多网卡网络,可以指定网卡探测。
使用nmap -iflist
命令查看本机网卡信息
# 指定使用eth0进行探测
nmap -e eth0 192.168.88.1/24
对比扫描结果
使用ndiff工具进行对比
# 对比两次探测结果
ndiff output1.xml output2.xml
Nmap可视化使用
在windows安装Nmap是会自动安装Zenmap,找打安装位置打开即用。