Nmap介绍
Namp是一款开源、免费的网络探测、安全审计的工具
如下图所示,在安装有Nmap的电脑上,我们可以通过Nmap发送对应的数据包,通过对应的网络设备,将数据包传递到对应的服务器上,服务器接收到数据包会返回对应的信息,Nmap通过返回的信息会分析出一些服务器的信息,比如探测服务器的存活以及开放的服务,对目标进行安全审计
Nmap下载安装
下载地址:https://nmap.org/download.html
Nmap列举远程机器开放端口
Nmap扫描原理示意图
一、Nmap列举远程机器开放端口
使用nmap +地址
来列举站点的端口信息,以百度为例
1.使用图形化工具测试
命令为 :nmap www.baidu.com
可以看出百度开放端口信息以及IP地址
2.使用命令行方式测试
- 先进入nmap安装目录
- 使用命令
nmap.exe+地址
nmap.exe www.baidu.com
二、Nmap指定DNS服务器列举远程机器开放的端口
nmap进行探测之前要把域名通过DNS服务器解析为IP地址,我们也可以使用指定的DNS服务器进行解析。
命令为--dns-servers
参数来指定
命令nmap --dns-servers 8.8.8.8 www.baidu.com
使用谷歌DNS服务器进行扫描
图形化界面操作
命令行操作
命令:nmap.exe --dns-servers 8.8.8.8 www.baidu.com
三、避开已知开启防火墙开启的服务器
对于已经知道主机存活或者防火墙开启的机器,可以使用-Pn
参数来停止探测前的ICMP请求,已达到不触发防火墙安全机制。
可视化界面命令nmap -Pn www.baidu.com
命令行命令:nmap.exe -Pn www.baidu.com
四、指定端口范围扫描
对于默认端口范围,可能并不能满足日常需要,可以是使用-p m-n
来指定探测端口范围为m-n之间的所有端口
一下结果可以看出,第二次探测443端口没有被探测
端口状态
- Open 表示端口处于开放状态
- Closed 表示端口处于关闭状态
- Filtered表示端口处于过滤无法收到返回的probe状态
- UnFiltered 表示端口收到返回的probe,但无法确认
- Opend/UnFiltered 表示端口处于开放或者未过滤状态
- Close/UnFiltered 表示端口处于关闭或者未过滤状态
服务指纹
为了确保一个成功的渗透测试或网络设备监控,必须要知道目标系统中服务的指纹信息。
服务指纹信息包括服务端口号、服务名和版本等
通过分析目标往nmap发送的数据包中的某些协议标记、选项和数据我们可以推断出发送这些数据包的操作系统
nmap通过向目标主机发送多个UDP与TCP数据包并分析其响应来进行操作系统指纹识别工作
命令:nmap -sV IP地址
,用来识别目标机器的服务信息。
命令行命令:nmap.exe -sV. IP地址
Nmap侵略性探测
- 命令:
namp -A -v -T4 IP地址
用于探测目标机器的操作系统、服务信息 - 命令:
namp -sC -sV -O IP地址
其中sC表示使用nmap脚本进行探测,sV表示探测目标机器上的服务信息,O 表示探测目标机器的操作系统信息
主机发现
局域网中肯定存在多台主机,如何去发现主机的开机状态呢?
-
使用ping ip地址探测,缺点是在比较复杂的网络情况下会手动探测很费劲
-
使用不同的工具进行批量探测
CIDR(无类别域间路由,Classless Inter-Domain Routing),可以快速表示一个网络,比如:172.16.1.1/24表示在172.168.1.1-172.168.1.255之间的所有IP地址
使用Nmap进行主机发现
命令:nmap -sR CIDR
对该网络中的所有IP进行ping扫描,以探测主机的存活性。扫描过程中使用了TCP SYN 扫描,ICMP echo Request来探测主机的存活。
Nmap探测结果的输出保存
使用Nmap命令namp -sn CIDR -oX test.xml
表示对该网络中的所有主机进行ping扫描,探测主机的存活性,并将结果输出到test.xml文件中,以便后续使用。
在对应的nmap文件夹下会有对应的test.xml文件,在命令窗口下使用dir命令可查看文件夹详情
端口探测
使用nmap可以对某个端口的状态进行探测
命令:namp -p+端口号 +地址
namp -p80 www.baidu.com
对某几个端口进行探测
命令:namp -p+端口号,端口号,端口号 +地址
对某个范围端口进行探测nmap -p范围 +地址
nmap -p1-100+www.baidu.com
对所有端口进行探测:namp -p- www.baidu.com
指定协议探测端口namp -p T:25,U:53 www.baidu.com
T为TCP协议,25代表端口号
通过名称范围扫描 namp -p s* www.baidu.com
代表扫描范围以s开头的所有协议
namp中的NSE脚本使用
NSE(Nmap script Engine): Namp脚本引擎,内置可以用来扫描的、针对特定任务的脚本
- 使用nmap探测http服务的http头
namp --script http-headers +地址
namp --script http-headers www.baidu.com
- 使用Nmap中漏洞分类脚本对目标脚本进行探测
使用命令:- nmap -sV --script vuln+地址
可以扫描出目标的一些漏洞,比如sql注入等问题 - NSE调试功能使用,使用Nmap中的exploit,在使用的同时开启调试模式,使用命令:
- nmap -sV --script exploit -d 3 --script-trace +目标地址
注意:-d(debug 范围0~9) - 使用namp的http-title脚本,并且指定对应的user-Agent。
命令namp -sV --script http-title --script-args http.useragent="Mozilla 999"+目标地址
该命令可以突破某些站点限制对于设备浏览器限制的操作
脚本有很多,命令也有很多,可以查看官方文档查找自己需要的命令以及脚本官网链接