Nmap(Network Mapper,网络映射器)是一款开放源代码的网络探测和安 全审核工具。它被设计用来快速扫描大型网络,包括主机探测与发现、开放的端口情 况、操作系统与应用服务指纹识别、WAF 识别及常见安全漏洞。它的图形化界面是 Zenmap, 分布式框架为DNmap。
Nmap 的特点如下所示。
●主机探测:探测网络上的主机,如列出响应TCP和ICMP 请求、ICMP 请求、 开放特别端口的主机。
●端口扫描:探测目标主机所开放的端口。
●版本检测:探测目标主机的网络服务,判断其服务名称及版本号。
●系统检测:探测目标主机的操作系统及网络设备的硬件特性。
●支持探测脚本的编写:使用Nmap 的脚本引擎 (NSE) 和Lua编程语言。
3.3.1 安装Nmap
Nmap Setup
Lcense Agreement
PNease review the license terms before instaling Nmap.
Press Page Down to see the rest of the agreement.
COPYING-Descrbes the terms under which Nmap is distrbuted.
IMPORTANT NMAP LICENSE TERMS
The Nmap Security Scanner is(C)1996-2016 Inseare.Com LLC(The Nmap Project).
Nmap is also a registered trademark of the Nmap Project.This program is free software;
you may redistrbute and/or modify it under the terms of the GNU General Public License
as publshed by the Free Software Foundation;Version 2(GPL),BUT ONLY WTTH ALL
OF THE CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN.This quarantees your
Nulsoft Install System y2.51
IAgree Cancel
3.3.2 Nmap入门
3.3.2.1 扫描参数
进入安装目录后,在命令行直接执行Nmap 或查看帮助文档(输入nmap— help) 将显示Namp的用法及其功能,如图3-47所示。
在讲解具体的使用方法前,先介绍一下Nmap 的相关参数的含义与用法。
首先介绍设置扫描目标时用到的相关参数,如下所示。
●-iL: 从文件中导入目标主机或目标网段。
●-iR: 随机选择目标主机。
●——exclude: 后面跟的主机或网段将不在扫描范围内。
●——excludefile: 导入文件中的主机或网段将不在扫描范围中。
与主机发现方法相关的参数如下。
●-sL:List Scan (列表扫描),仅列举指定目标的IP, 不进行主机发现。
●-sn:Ping Scan, 只进行主机发现,不进行端口扫描。
●-Pn: 将所有指定的主机视作已开启,跳过主机发现的过程。
●-PS/PA/PU/PY [portlist]:使用TCP SYN/ACK或SCTP INIT/ECHO方式 来发现。
●-PE/PP/PM: 使用ICMP echo 、timestamp 、netmask请求包发现主机。
●-PO [protocollist]:使用IP协议包探测对方主机是否开启。
●-n/-R:-n 表示不进行DNS解析; -R表示总是进行DNS解析。
●——dns-servers<serv1 [,serv2],……>: 指定DNS服务器。
●——system -dns: 指定使用系统的DNS服务器。
●——traceroute: 追踪每个路由节点。
与常见的端口扫描方法相关的参数如下。
●-sS/sT/sA/sW/sM: 指定使用TCP SYN/Connect()/ACK/Window/ Maimon scans的方式对目标主机进行扫描。
●-sU: 指定使用UDP扫描的方式确定目标主机的UDP端口状况。
●-sN/sF/sX: 指定使用TCP Null/FIN/Xmas scans秘密扫描的方式协助探测 对方的TCP端口状态。
●——scanflags<flags>: 定制TCP包的flags。
●-sl<zombie host [:probeport]>:指定使用Idle scan的方式扫描目标 主机(前提是需要找到合适的zombie host)。
●-sY/sZ: 使用SCTP INIT/COOKIE-ECHO扫描SCTP协议端口的开放情况。
●-sO: 使用IP protocol扫描确定目标机支持的协议类型。
●-b<FTP relay host>: 使用FTP bounce scan扫描方式。
跟端口参数与扫描顺序的设置相关的参数如下。
●-p<port ranges>: 扫描指定的端口。
●-F:Fast mode (快速模式),仅扫描TOP 100的端口。
●-r: 不进行端口随机打乱的操作(如无该参数,Nmap会将要扫描的端口以
随机顺序的方式进行扫描,让Nmap 的扫描不易被对方防火墙检测到)。
●——top-ports<number>: 扫描开放概率最高的number个端口 (Nmap
的作者曾做过大规模的互联网扫描,以此统计网络上各种端口可能开放的概率,并排列 出最有可能开放端口的列表,具体可以参见nmap-services文件。默认情况下,Nmap
会扫描最有可能的1000个TCP端口)。
●——port-ratio<ratio>: 扫描指定频率以上的端口。与上述——top-ports
类似,这里以概率作为参数,概率大于——port-ratio 的端口才被扫描。显然参数必须 在0~1之间,想了解具体的概率范围可以查看nmap-services文件。
与版本侦测相关的参数如下所示。
●-sV: 指定让Nmap进行版本侦测。
●——version-intensity<level>: 指定版本侦测的强度(0~9),默认为 7。数值越高,探测出的服务越准确,但是运行时间会比较长。
●—version-light: 指定使用轻量级侦测方式 (intensity 2)。
●——version-all: 尝试使用所有的probes进行侦测 (intensity 9)。
●——version-trace:显示出详细的版本侦测过程信息。
在了解以上参数及其含义后,再来看用法会更好理解,扫描命令格式:Nmap
+扫描参数+目标地址或网段。比如一次完整的Nmap 扫描命令如下。
nmap-T4-A-v ip
其中-A表示使用进攻性(Aggressive) 方式扫描; -T4表示指定扫描过程使用
的时序 (Timing), 共有6个级别(0~5),级别越高,扫描速度越快,但也容易被防 火墙或IDS检测并屏蔽掉,在网络通信状况良好的情况下推荐使用T4 。-v表示显示冗余
(verbosity) 信息,在扫描过程中显示扫描的细节,有助于让用户了解当前的扫描状 态。
3.3.2.2常用方法
Nmap 的参数较多,但是通常用不了那么多,以下是在渗透测试过程中比较常
见的命令。
1.扫描单个目标地址
在Nmap 后面直接添加目标地址即可扫描,如图3-48所示。
nmap 192.168.0.100
图3-48扫描单个目标地址
2.扫描多个目标地址
如果目标地址不在同一网段,或在同一网段但不连续且数量不多,可以使用该 方法进行扫描,如图3-49所示。
nmap 192.168.0.100192.168.0.105
3.扫描一个范围内的目标地址
可以指定扫描一个连续的网段,中间使用“-”连接,例如,下列命令表示扫
描范围为192.168.0.100~192.168.0.110,如图3-50所示。
nmap 192.168.0.100-110
4.扫描目标地址所在的某个网段
以C段为例,如果目标是一个网段,则可以通过添加子网掩码的方式扫描,下 列命令表示扫描范围为192.168.0.1~192.168.0.255,如图3-51所示。
nmap 192.168.0.100/24
管理员:C:\Windows\system32\cmd.exe
Host is up<0.10s latency).
Not shown:998 filtered porte
STATE SERUICE
HM/tCD
19M/tcp
nC
Nnap scan report for 192.168.0.182
Hoat is up(0.13s lateney).
Not showm:999 closed porte
PORT STATE SERUICE
8882/tcp open blackice-alerta
NaC Address:74:AC:5F:2C:88:DA<Qiku Internet Network Scientific(Shenzhen)>
Nnap scan report for 192.168.0.183
Host is up<0.865s latency).
A111888 scanned porte on 192.168.0.183 are closed
nC Address:F4:8B:32:71:2P:DF(Xiaoni Connun ications>
Nnap scan report for 192.168.0.185
Host is up<0.08012s latency).
Not shown:997 closed porte
PORT STATE SERUICE
22/tcp opsesnh
443/tcp ophe
tps
302/tep 0pdn iss-realsecure
MnC Addr
sCs:: 自9:82:57:21:6A(Intel Corporate)
Nnap scan roport for 192.168.0.180
Host is up<0.8828s latency).
Not shown:992 closed porte
tep open(STA)TE nsrpe(SERUI)CE
139/tCP 0pen netbios-ssn
445/tCp open nicrosoft-ds
5357/tep open wsdapi
49152/tcp 0pen unknown
49153/tcp 0pen unknowm
49154/tcp open unknown
49155/tcp open unknowm
Nhsp done:256 IP addreeses(5 hoste up)scanned in 127.71 seconds
图3-51 扫描一个C 段目标地址
5.扫描主机列表targets.txt 中的所有目标地址
扫描targets.txt中的地址或者网段,此处导入的是绝对路径,如果targets.txt 文件与nmap.exe在同一个目录下,则直接引用文件名即可,如图3-52所示。
nmap-iL C:\Users\Aerfa\Desktop\targets.txt
图3-52扫描指定文本
6.扫描除某一个目标地址之外的所有目标地址
下列命令表示扫描除192.168.0.105之外的其他192.168.0.x地址,从扫描结果 来看确实没有对192.168.0.105进行扫描,如图3-53所示。
nmap 192.168.0.100/24-exclude 192.168.0.105
图3-53扫描除某一目标地址之外的所有目标地址
7.扫描除某一文件中的目标地址之外的目标地址
下列命令表示扫描除了target.txt 文件夹中涉及的地址或网段之外的目标地 址。还是以扫描192.168.0x网段为例,在targets.txt 中添加192.168.0.100和 192.168.0.105,从扫描结果来看已经证实该方法有效可用,如图3-54所示。
nmap 192.168.0.100/24-excludefile C:\Users\Aerfa\Desktop
\targets.txt
图3-54扫描除某一文件中的目标地址之外的目标地址
8.扫描某一目标地址的21、22、23、80端口
如果不需要对目标主机进行全端口扫描,只想探测它是否开放了某 一 端口,那 么使用-p参数指定端口号,将大大提升扫描速度,如图3-55所示。
nmap 192.168.0.100-p 21,22,23,80
图3-55扫描指定端口
9.对目标地址进行路由跟踪
下列命令表示对目标地址进行路由跟踪,如图3-56所示。
nmap——traceroute 192.168.0.105
安 全 攻 防 : 渗 透 测 试 实 战 指 南
P:Wnap>nmap -sP 192.168.0.168/24
Starting Nnap 7.48<httpe://nnap.org )at 281?-86-1121:8??
Nnap scan report for 192.168.0.1
Nost is up<8.886Bs latency).
MnC Address:34:96:?2:12:B5:54<Tp-link Technologies)
Nnap scan report for 192.168.0.185
Nost is up<8.8818s latency).
MnC Address:8C:A9:82:57:21:6A<Intel Corporate>
Nmap scan report for 192.168.0.186
Host is up<0.081s latency).
MAC Address:CC:AF:78:92:BO:CB<Hon Hai Precision Ind.>
Nnap scan report for 192.168.0.188
Host is up:
Nmap done:256 IP addresses<4 hosts up)scanned in 3.54 seco
图3-57扫描目标地址所在C段的在线状况
11.目标地址的操作系统指纹识别
下列命令表示通过指纹识别技术识别目标地址的操作系统的版本,如图3-58 所示。
nmap-0192.168 .0.105
P:Wmap>nmap -0192.168.0.185
Starting Nnap ?.40<https://nnap.org )at Nnap scan report for 192.168.0.185 N(H)o(o)tssh(t i)o(s)w(u)pn<:?04.1(3)8c(s)losed(laten)p(c)yo)r.ts,256 filtered | 2017-86-1121:15 ? ports |
PORT STATE SERUICE
22/tcp open ssh
443/tcp open https
902/tcp open iss-realsecure
MAC Address:8C:A9:82:57:21:6A<Intel Corporate>
Device type:general purpose
Running:Linux_3.X14.X
08 CPE:cpe:/o:linux:linux kernel:3 cpe:/o:linux:linux kernel
0S details:Linux 3.2 -4.6(_)
Network Distance:1 hop
08 detection perforned.Please report any incorrect results a
submit/.
Nnap done:1 IP address <1 host up?scanned in 13.63 seconds
图3-58扫描目标地址的操作系统
12.目标地址提供的服务版本检测
下列命令表示检测目标地址开放的端口对应的服务版本信息,如图3-59所
nmap-sV 192.168.0.105
P:Nnap>nnap -sU 192.168.0.185
Starting Nhap 7 40<httpe://anap ory >at 2017-86-1121:26 ?D1ú±6×?6±??
Nhap scan report for 192.168.8.185
lost is up《8 052a lateney).
Not shown:997 closed ports
PORT STATE SEWICE WERSION
22/tep open sh OpenSSH 6 7p1 Debian 5+deb⁸u2(protocol 2.0)
443/tcp open 1/http UHvare WirtualCenter eb service
282/tcp open sel/vnware-auth UMware Authentication Daenon 1.10<Uses VNC,SOAP>
NaC Address:8C:A9:82:57:21:6A<Intel Corporate)
Service Info:0S:Linux;CPE:cpe:/o:linux:linux kernel
Service detectian perforned.Please report any incorrect resulte at https://nnap
org/subnit/
Nnap done:1 IP address(1 host up>scanned in 18.36 seconds
图3-59检测目标地址开放端口对应的服务版本
13.探测防火墙状态
在实战中,可以利用FIN扫描的方式探测防火墙的状态。FIN扫描用于识别端
口是否关闭,收到RST 回复说明该端口关闭,否则就是open 或filtered状态,如图3-60 所示。
nmap-sF-T4192.168.0.105
图3-60探测防火墙状态
3.3.2.3状态识别
Nmap 输出的是扫描列表,包括端口号、端口状态、服务名称、服务版本及协 议。通常有如表3-1所示的6种状态。
表3-1常见的6种Nmap 端口状态及其含义
状 态 | 含 义 |
open | 开放的,表示应用程序正在监听该端口的连接,外部可以访问 |
filtered | 被过滤的,表示端口被防火墙或其他网络设备阻止,不能访问 |
closed | 关闭的,表示目标主机未开启该端口 |
unfiltered | 未被过滤的,表示Nmap无法确定端口所处状态,需进一步探测 |
open/filtered | 开放的或被过滤的,Nmap不能识别 |
closed/filtered | 关闭的或被过滤的,Nmap不能识别 |
了解了以上状态,在渗透测试过程中,将有利于我们确定下一步应该采取什么
方法或攻击手段。