Nmap扫描原理简介
Nmap(NetWork Mapper)最初是由Fyodor在1997年创建的一款开源免费的网络发现和安全审计工具。随后在开源社区众多的志愿者参与下,该工具逐渐完善并成为了最为流行的安全必备工具。Nmap可以检测目标主机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。它已成为网络管理员用以评估网络系统安全的必备工具之一。
Nmap的四大基本功能与两大扩展功能:
基本功能:
1. 主机发现
2. 端口扫描
3. 版本侦测
4. 操作系统侦测
扩展功能:
1. 防火墙/IDS规避
2. NSE脚本引擎

一般情况下,nmap顺序进行各种功能,首先需要进行主机发现,随后确定端口状况,在已经确定的端口上查找运行的具体应用程序的名字与版本信息,然后可以进行操作系统的侦测。而在四项基本功能的基础上,Nmap提供防火墙与IDS(入侵检测系统)的规避技巧,以及强大的NSE(Nmap Scripting Language)脚本引擎功能,可以综合运用到四个基本功能的各个阶段,对基本功能进行补充和扩展。
Nmap与渗透测试:
Nmap常用在渗透测试中信息搜集阶段,用于搜集目标机主机的基本状态信息,列举网络主机清单、管理服务升级调度、监控主机、服务运行状况。Nmap不仅可以用于扫描单个目标机,也可以适用于扫描大规模的计算机网络。扫描结果可以作为漏洞扫描、漏洞利用和权限提升阶段的输入。例如,漏洞扫描工具Nessus与漏洞利用工具Metasploit都可以导入Nmap的XML形式的扫描结果。
Nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)和Null扫描。Nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口影射),碎片扫描,以及灵活的目标和端口设定。
根据使用的功能选项,Nmap也可以报告远程主机的下列特征:使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。
Nmap工作原理分析:
1. 主机发现
----目的:
用于发现目标主机是否处于存活状态。
----原理:
主机发现的原理类似于Ping命令,即发送探测包到目标主机,如果可以收到回复报文,那么就证明目标主机是开启状态。默认情况下,Nmap会默认发送四种不同类型的数据包来探测目标主机是否在线(ICMP echo request // TCP SYN // TCP ACK // ICMP timestamp request),依次发送四个报文来探测目标机是否开启。只要成功收到其中一个的返回包,就证明目标机开启。除此之外,Nmap还支持一些其他类型的探测包, (SCTP INIT // COOKIE-ECHO //NETMASK)等。使用不同类型的数据包可以避免因防火墙过滤或丢包造成的判断失误。
2. 端口扫描
----目的:
用于扫描目标机上的端口状态。
在默认状态下,Nmap会扫描1660个常用的端口,可以覆盖大多数基本应用情况。
----原理:
端口扫描实际上是运用TCP和UDP以及一些其他连接方式对目标机的各个端口进行连接,根据返回包的结果判断端口是否处于正常开放(open)、关闭(Closed)、过滤(Filtered)、未过滤(Unfiltered)的状态。根据连接方式以及返回的数据包的不同可以大致可以分成以下几种扫描方法。TCP connect()、 TCP SYN、 TCP ACK、 UDP、 FIN、 XMAS、 NULL扫描等。
----类型图解:

TCP connect()扫描:
TCP connect()方式使用系统网络API connect向目标主机的端口发起TCP连接,如果目标端口有程序监听,connect()就会成功收到返回包,否则这个端口是不可达的。这项技术最大的优点是,不需root权限。任何UNIX用户都可以自由使用这个系统调用。缺点是,扫描速度较慢(因为要经历完整的 “三次握手“ 过程),且很容易被检测到,会在目标主机的日志中会记录大批的连接请求以及错误信息。
TCP connect()探测到端口关闭:

TCP connect()探测到端口打开:

TCP SYN 扫描:
这是Nmap默认的扫描方式,也叫TCP半开放扫描。该扫描在发送SYN报文至目 标端口后,如果收到了SYN / ACK的回复包,就可以判断端口是开放状态。如果收到了RST 包,证明端口是关闭状态的。如果没有收到回复包,那么判断端口是被屏蔽的。
不同于connect全扫描,半开放扫描并不需要经历完整的 “三次握手” ,不需建立完整的TCP连接,所以相对比较隐蔽,速度更快,适用范围更广。
TCP SYN 探测到端口关闭:

TCP SYN 探测到端口开放:

TCP ACK 扫描:
TCP ACK 扫描区别于以上两种扫描方式,该扫描方法并不能用来判断端口是否开启,因为当客户端向服务器发送一个ACK数据包时,无论端口是否开启,都会返回一个RST包。所以,该方法通常用来判断某个端口有没有被防火墙屏蔽或过滤,如果被屏蔽则无法收到RST包,若没有屏蔽则可以收到。此方法常与TCP SYN扫描一起使用,辅助SYN扫描,判断目标主机防火墙的状况。该方法是一种秘密扫描。
秘密扫描是一种不被审计工具所检测的扫描技术。它通常用于在通过普通的防火墙或路由器的筛选(filtering)时隐藏自己。秘密扫描能躲避IDS、防火墙、包过滤器和日志审计的检查,从而获取目标端口的开放或关闭的信息。由于没有包含TCP “三次握手”协议的任何部分,所以无法被记录下来,比半连接扫描更为隐蔽。但是这种扫描的缺点是扫描结果的不可靠性会增加,精度降低,而且扫描主机也需要自己构造IP包。现有的秘密扫描有TCP FIN扫描、TCP ACK扫描、NULL扫描、XMAS扫描和SYN/ACK扫描等。
TCP ACK 探测到端口被过滤:

TCP ACK 探测到端口未被过滤:

TCP FIN 扫描:
该方法是向目标机发送一个带有FIN标识和端口号的数据包给服务器,如果端口开启,无论防火墙是否过滤了请求包,都不会回应任何信息,如果端口关闭,都会返回一个RST 报文。该扫描方法的好处就是完全不建立TCP连接,从而大大减少了被目标主机记录下来的可能性。该方法是秘密扫描的一种。
TCP FIN 探测到端口关闭:

TCP FIN 探测到端口开启:

TCP XMAS 扫描:
该方法的原理是客户端向目标机发送带有PSH,FIN,URG标识且值为1的数据包,其中URG标志,指示紧急数据,应立即处理;PSH标志,指示强制将数据压入缓冲区;FIN 标志,指示结束TCP会话请求。
如果端口开放,则目标机不会有任何的响应,如果目标及返回一个RST数据包,则表明端口处于关闭状态;如果返回的是一个ICMP 数据包则表明数据包被过滤。正常情况下,三个标志位不能同时被设置。此扫描也属于秘密扫描。
TCP XMAS 探测到端口关闭:

TCP XMAS 探测到端口开启:

TCP XMAS 探测到端口过滤:

TCP Null 扫描:
该方法又叫反向扫描,是将一个没有设置任何标志位的数据包发送给TCP端口,由于在正常的通信中,数据包至少要设置一个标志位,根据RFC 793的要求,在端口关闭的情况下,若收到一个没有设置任何标志位的数据字段,那么主机应该舍弃改分段,并发送一个RST 数据包,否则不会响应发起扫描的客户端计算机。
简单来说,客户端发送NULL数据包,目标机无响应,证明端口开放;目标机返回RST 数据包证明端口关闭。但windows系统主机不遵从RFC 793标准,且只要收到没有设置任何标志位的数据包时,不管端口是处于开放还是关闭都响应一个RST 数据包。所以可以在一定程度上区分主机系统是windows还是Unix。
TCP NULL探测到端口关闭:

TCP NULL探测到端口开启:

UDP 扫描:
由于UDP协议是面向非连接的,因此该方法不可能像TCP端口扫描一样,依赖于建立连接的过程,这也使得UDP端口扫描的可靠性不高。
UDP扫描方式用于判断UDP端口的情况。
第一种扫描方法是利用ICMP端口不可达报文进行扫描。此原理是当一个UDP端口接收到一个UDP数据报时,如果他是关闭状态,会返回一个“ICMP port unreachable”数据包;如果是开放的,就会忽略数据包从而不返回任何信息。因此,可以通过反向排除法来断定哪些UDP端口是可能处于开放状态。但是由于此方法需要系统管理员的权限,且扫描结果可靠性不高(因为不知道数据包是否到达目标机),最重要的是在RFC 1812中对ICMP错误报文生成速度进行了限制,导致了此方法有一定局限性。
第二种方法是对UDP中的recvfrom()和write()扫描。此方法是对上一个方法的改进版本,一定程度上解决了需要系统管理员的问题。因为ICMP错误报文,只有管理员有权限查看,那么在未获得权限的时候可以使用recvfrom()和write()这两个系统调用来间接获得对方端口状态。对于一个处于关闭状态的端口而言,第二次调用write()时,通常会得到出错信息。而调用recvfrom()时,如果未收到ICMP报文会返回错误代码13,如果收到ICMP错误报文会返回错误代码111,可根据这些区别判断端口状态。
UDP 探测到端口关闭:

UDP 探测到端口开启:

DUMP 扫描:
此方法也被称为Idle扫描,在扫描主机时应用了第三方僵尸计算机扫描。由僵尸主机向目标主机发送SYN包。目标主机端口开发时回应SYN|ACK,关闭时返回RST,僵尸主机对SYN|ACK回应RST,对RST不做回应。
从僵尸主机上进行扫描时,进行的是一个从本地计算机到僵尸主机的、连续的ping操作。查看僵尸主机返回的Echo响应的ID字段,能确定目标主机上哪些端口是开放的还是关闭的。
3. 版本侦测
–目的:
用于识别端口上运行的应用程序与程序版本。
–原理:
Nmap当前可识别,检测别数千种应用的签名及数百种应用协议。对于不识别的应用,Nmap会默认将应用的指纹打印出来,让用户自行判断。
a. 首先检查开启状态下的端口是否在排除端口列表内。如果在则将端口剔除。
b. 若是TCP 端口,尝试TCP 连接。在等待连接的时间里,会接受到目标机发送的“WelcomeBanner”信息。Nmap将接收到的Bnner与nmap -service -probes中NULL prode的签名进行对比。查找对应应用程序的名字和版本信息。
c. 若无法通过Banner确定应用程序版本,那么Nmap再次尝试发送其他的探测包将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。
d. 若是UDP 端口,那么直接使用nmap -service -probes中探测包进行匹配,根据匹配结果分析应用程序版本。
e. 如果探测到的应用程序时SSL,那么调用openSSL进一步侦查运行在SSL之上的具体的应用程序。
f. 如果探测到的应用程序时SunRPC,那么调用brute -force RPC grinder 进一步探测具体服务。
4. 操作系统侦测
–目的:
用于识别目标主机的操作系统类型、版本编号及设备类型。
–原理:
Nmap使用TCP/IP协议栈指纹来识别不同的操作系统和设备。在RFC规范中,有些地方对TCP/IP的实现并没有强制规定,由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根据这些细节上的差异来判断操作系统的类型的。
a. Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中), 可以识别通用PC系统、路由器、交换机等设备类型。将此指纹数据库作为进行指纹对比的样本库。
b. 分别挑选一个开启和关闭状态下的端口,向其发送经过精心设计的TCP / UDP / ICMP数据包,根据返回的数据包生成一份系统指纹。
c. 将探测生成的指纹与 nmap -os -db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。
5. 防火墙/IDS规避和欺骗
–目的:
Nmap提供多种机制来规避防火墙、IDS的屏蔽和检查,便于秘密的探查目标主机的状况。
–原理:
基本的规避方法包括:分片、IP诱骗、IP伪装、指定源端口、扫描延时等。
分片(Fragmentation):
将可疑的探测包进行分片处理(例如将TCP包拆分成多个IP包发送过去),某些简单的防火墙为了加快处理速度可能不会进行重组检查,以此避开其检查。
IP诱骗(IP decoys):
在进行扫描时,将真实IP地址和其他主机的IP地址(其他主机需要在线,否则目标主机将回复大量数据包到不存在的主机,从而实质构成了拒绝服务攻击)混合使用,以此让目标主机的防火墙或IDS追踪检查大量的不同IP地址的数据包,降低其追查到自身的概率。注意,某些高级的IDS系统通过统计分析仍然可以追踪出扫描者真实IP地址。
IP伪装(IP Spoofing):
顾名思义,IP伪装即将自己发送的数据包中的IP地址伪装成其他主机的地址,从而目标机认为是其他主机在与之通信。需要注意,如果希望接收到目标主机的回复包,那么伪装的IP需要位于统一局域网内。另外,如果既希望隐蔽自己的IP地址,又希望收到目标主机的回复包,那么可以尝试使用idle scan或匿名代理(如TOR)等网络技术。
指定源端口(Specify source port):
某些目标主机只允许来自特定端口的数据包通过防火墙。例如FTP服务器配置为:允许源端口为21号的TCP包通过防火墙与FTP服务端通信,但是源端口为其他端口的数据包被屏蔽。所以,在此类情况下,可以指定Nmap将发送的数据包的源端口都设置特定的端口。
扫描延时(Scanning Delay):
某些防火墙针对发送过于频繁的数据包会进行严格的侦查,而且某些系统限制错误报文产生的频率(例如,Solaris 系统通常会限制每秒钟只能产生一个ICMP消息回复给UDP扫描),所以,定制该情况下发包的频率和发包延时可以降低目标主机的审查强度、节省网络带宽。
6. NSE脚本引擎
–目的:
用于增强主机发现、端口扫描、版本侦测和操作系统侦测等功能,还可以用来扩展高级的功能如web扫描,漏洞发现何漏洞利用等。
–原理:

Nmap使用Lua语言作为NSE脚本语言,当前的Nmap脚本库已经支持350多个脚本。在nmap_main里面,调用init_main()进行详细的初始化过程,加载Lua标准库与Nmap扩展库,准备参数环境,加载并执行nse_main.lua文件;这个文件加载用户选择的脚本文件,执行完之后返回函数对象给init_main(),被保存到Lua注册表中。
在nse_main.lua中,定义两个核心的类,Script和Thread,Script用于管理NSE脚本,当新的脚本被加载时,调用 Script.new创建脚本对象,该对象被保存下来在后续的扫描过程中使用;Thread用于管理脚本的执行,该类中也包含对脚本健全性的检查。在脚本执行时,如果脚本之间存在依赖关系,那么会将基础的无依赖的脚本统一执行完毕,再执行依赖性的脚本。
执行脚本扫描时,从nmap_main()中调用script_scan()函数。在进入script_scan()后,会标记扫描阶段类型,然后进入到初始化阶段返回的main()函数(来自nse_main.lua脚本中的main)中,在函数中解析具体的扫描类型。
main()函数负责处理三种类型的脚本扫描:预扫描(SCRIPT_PRE_SCAN)、脚本扫描(SCRIPT_SCAN)、后扫描 (SCRIPT_POST_SCAN)。预扫描即在Nmap调用的最前面(没有进行主机发现、端口扫描等操作)执行的脚本扫描,通常该类扫描用于准备基本的信息,例如到第三服务器查询相关的DNS信息。而脚本扫描,是使用NSE脚本来扫描目标主机,这是最核心的扫描方式。后扫描,是整个扫描结束后,做一些善后处理的脚本,比如优化整理某些扫描。
在main()函数中核心操作由run函数负责。而run()函数的本身设计用于执行所有同一级别的脚本(根据依赖关系划分的级别),直到所有线程执行完毕才退出。run()函数中实现三个队列:执行队列(Running Queue)、等待队列(Waiting Queue)、挂起队列(Pending Queue),并管理三个队列中线程的切换,直到全部队列为空或出错而退出。
Nmap基本语法:
–格式:
Nmap [ <扫描类型> …… ] [ <选项> ] { <扫描目标说明> }
–具体类型详解:
-sT: TCP connect()扫描,这是最基本的TCP扫描方式。connect()是一种系统调用,由操作系统提供,用来打开一个tcp连接。如果目标端口有程序监听, connect()就会成功返回,否则这个端口是不可达的。这项技术最大的优点是,不需要root权限。任何UNIX用户都可以自由使用这个系统调用。
-sS: TCP同步扫描(TCP SYN):因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。用户发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接,这实际上有我们的操作系统内核自动完成的。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,用户需要root权限来定制SYN数据包。
-sF -sX -sN:TCP FIN扫描、TCP XMAS扫描和TCP Null扫描都属于秘密扫描,在SYN扫描无法确定的情况下,可以判断端口状态。关闭状态的端口对用户的探测包回应RST包,开启状态的端口会忽略探测包,所以可根据返回结果判断端口是否开启。虽然扫描方法对Windows95/NT无效,但可以使用此特性来判断目标主机是windows还是Unix。
-sP: Nmap进行ping扫描,用于判断主机是否存活。向指定的网络内的每个IP地址发ICMP echo请求数据包,根据服务器是否做出响应,判断主机状态。但有一些网站会阻塞ICMP echo请求数据包。Nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。
-sU: UDP扫描,用于扫描目标机上的UDP端口。Nmap首先向目标主机的每个端口发出一个0字节的UDP包,如果我们收到端口不可达的ICMP消息,端口就是关闭的,否则我们就假设它是打开的。但是UDP扫描有时非常缓慢,因为大多数主机限制ICMP错误信息的比例。例如,在Linux内核中 (在net/ipv4/icmp.h文件中)限制每4秒钟只能出现80条目标不可达的ICMP消息,如果超过这个比例,就会给1/4秒钟的处罚。 solaris的限制更加严格,每秒钟只允许出现大约2条ICMP不可达消息,这样,使扫描更加缓慢。Nmap会检测这个限制的比例,减缓发送速度,而不是发送大量的将被目标主机丢弃的无用数据包。
-sA: TCP ACK扫描,这项高级的扫描方法通常用来穿过防火墙的规则集。通常情况下,这有助于确定一个防火墙是功能比较完善的或者是一个简单的包过滤程序。这种扫描是向特定的端口发送ACK包(使用随机的应答/序列号)。如果返回一个RST包,这个端口就标记为unfiltered状态。如果什么都没有返回,或者返回一个不可达ICMP消息,这个端口就归入filtered类。注意,Nmap通常不输出unfiltered的端口,所以在输出中通常不显示所有被探测的端口。显然,这种扫描方式不能找出处于打开状态的端口。因此仅仅只能作为一个辅助手段。
-sW:对滑动窗口的扫描,这项高级扫描技术非常类似于ACK扫描,除了它有时可以检测到处于打开状态的端口,因为滑动窗口的大小是不规则的,有些操作系统可以报告其大小。这些系统至少包括:某些版本的AIX、Amiga、BeOS、BSDI、Cray、Tru64 UNIX、DG/UX、OpenVMS、Digital UNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS 4.x、Ultrix、VAX、VXWORKS。
-sR: RPC扫描,此方法通常与Nmap的其他不同端口扫描方法结合使用。选择所有处于打开状态的端口向它们发出SunRPC程序的NULL命令,以确定它们是否是RPC端口,如果是,就确定是哪种软件及其版本号。
-b: FTP反弹攻击,FTP协议中支持代理FTP连接。使用这个特征,可以在一台代理FTP服务器扫描TCP端口。因此,用户需要连接到防火墙后面的一台FTP服务器,接着进行端口扫描。如果在这台FTP服务器中有可读写的目录,用户还可以向目标端口任意发送数据。
-o: 这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志。换句话说,Nmap使用一些技术检测目标主机操作系统网络协议栈的特征。Nmap使用这些信息建立远程主机的指纹特征,把它和已知的操作系统指纹特征数据库做比较,就可以知道目标主机操作系统的类型。
-T: 用于调整探测时间,设置Nmap的适时策略。Paranoid:为了避开IDS的检测使扫描速度极慢,Nmap串行所有的扫描,每隔至少5分钟发送一个包; Sneaky:也差不多,只是数据包的发送间隔是15秒;Polite:不增加太大的网络负载,避免宕掉目标主机,串行每个探测,并且使每个探测有0.4 秒种的间隔;Normal:nmap默认的选项,在不是网络过载或者主机/端口丢失的情况下尽可能快速地扫描;Aggressive:设置5分钟的超时限制,使对每台主机的扫描时间不超过5分钟,并且使对每次探测回应的等待时间不超过1.5秒钟;Insane:只适合快速的网络或者你不在意丢失某些信息,每台主机的超时限制是75秒,对每次探测只等待0.3秒钟。你也可是使用数字来代替这些模式,例如:-T 0等于-T Paranoid,-T 5等于-T Insane。
Nmap中可能的攻击方式:
- 端口扫描攻击:
攻击者发出端口号从0开始依次递增的TCP SYN或UDP报文,如果收到了针对这个TCP报文的RST报文,或针对这个UDP报文的ICMP不可达报文,则说明这个端口没有开放;相反,如果收到了针对这个TCP SYN报文的ACK报文,或者没有接收到任何针对该UDP报文的ICMP报文,则说明该TCP端口是开放的,UDP端口可能开放。这样继续下去,便可以很容易的判断出目标计算机开放了哪些TCP或UDP端口,然后针对端口的具体数字,进行下一步攻击,这就是所谓的端口扫描攻击。 - TCP SYN拒绝服务攻击:
攻击者向目标计算机发送一个TCP SYN报文;目标计算机收到这个报文后,建立TCP连接控制结构(TCB),并回应一个ACK,等待发起者的回应;而发起者始终不向目标计算机回应ACK报文,这样导致目标计算机一致处于等待状态。消耗系统服务资源。 - 分片IP报文攻击:
为了传送一个大的IP报文,IP协议栈需要根据链路接口的MTU对该IP报文进行分片,通过填充适当的IP头中的分片指示字段,接收计算机可以很容易的把这些IP分片报文组装起来。如果攻击者给目标计算机只发送一片分片报文,而不发送所有的分片报文,这样攻击者计算机便会一直等待,这个过程会消耗掉一部分内存,以及一些IP协议栈的数据结构。这也是一种DOS攻击 - 畸形报文攻击:
正常情况下,SYN标志(连接请求标志)和FIN标志(连接拆除标志)是不能同时出现在一个TCP报文中的。而且RFC也没有规定IP协议栈如何处理这样的畸形报文,因此,各个操作系统的协议栈在收到这样的报文后的处理方式也不同,攻击者就可以利用这个特征,通过发送SYN和FIN同时设置的报文,来判断操作系统的类型,然后针对该操作系统,进行进一步的攻击。 - NSE 脚本攻击:
在Nmap目录下存在一个用来保存Nmap脚本引擎扩展库的 nselib文件夹和一个用来保存脚本扩展的Scripts文件夹。通常情况下可以使用 nmap –script 命令指定调用的脚本,针对确定的注入点进行攻击。省去了通过Metasploit进行漏洞利用繁琐操作的时间。
Nmap的9个优点:
- 灵活。支持数十种不同的扫描方式,支持多种目标对象的扫描。
- 强大。Nmap可以用于扫描互联网上大规模的计算机。
- 可移植。支持主流操作系统:Windows/Linux/Unix/MacOS等等;源码开放,方便移植。
- 简单。提供默认的操作能覆盖大部分功能,基本端口扫描nmap targetip,全面的扫描nmap –A targetip
- 自由。Nmap作为开源软件,在GPL License的范围内可以自由的使用。
- 文档丰富。Nmap官网提供了详细的文档描述。Nmap作者及其他安全专家编写了多部Nmap参考书籍。
- 社区支持。Nmap背后有强大的社区团队支持。
- 赞誉有加。获得很多的奖励,并在很多影视作品中出现(如黑客帝国2、Die Hard4等)。
- 流行。目前Nmap已经被成千上万的安全专家列为必备的工具之一
Zenmap与Nmap:
Zenmap是Nmap官方提供的图形界面,通常随Nmap的安装包发布。Zenmap是用Python语言编写而成的开源免费的图形界面,能够运行在不同操作系统平台上(Windows/Linux/Unix/Mac OS等)。Zenmap旨在为Nmap提供更加简单的操作方式。简单常用的操作命令可以保存成为profile,用户扫描时选择profile即可;可以方便地比较不同的扫描结果;提供网络拓扑结构(NetworkTopology)的图形显示功能。
3574

被折叠的 条评论
为什么被折叠?



