NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。
它是网络管理员必用的软件之一,以及用以评估网络系统安全正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。
Nmap 常被跟评估系统漏洞软件Nessus 混为一谈Nmap 以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作Nmap 在黑客帝国(The Matrix)中,连同SSH1的32位元循环冗余校验漏洞,被崔妮蒂用以入侵发电站的能源管理系统。
namp功能非常强大,从它实现功能的方向性来划分,主要有以下四个基本功能: 主机探测:探测网络上的主机,例如列出响应TCP和ICMP请求、icmp请求、开放特别端口的主机 端口扫描:探测目标主机所开放的端口。
版本检测:探测目标主机的网络服务,判断其服务名称及版本号 系统检测:探测目标主机的操作系统及网络设备的硬件特性 支持探测脚本的编写:使用Nmap的脚本引擎(NSE)和Lua编程语言 这几个基本功能相互独立,又依次依赖,因为一般的网络嗅探都是从主机发现开始的,在发现在线的主机后,接着需要进行端口扫描,进而通过扫描得到的端口确定应用程序类型及版本信息,并最终确定操作系统的版本及漏洞信息。
另外nmap还提供了防火墙与入侵检测系统的规避技巧,这个功能可以应用到基本功能的各个阶段中,最后namp还提供了高级用法,即通过nse脚本引擎功能对nmap基本功能进行补充和扩展一、nmap的安装与验证
nmap的安装非常简单,官方提供源码编译安装和RPM包两种方式,读者可根据自己的喜好选择安装即可这里下载的版本为nmap-6.40.tar.bz2,下面分别介绍两种安装方式 1、源码编译安装。
[root@localhost ~]# yum install gcc -y [root@localhost ~]# yum install gcc-c++ -y [root@localhost
~]# yum install gdb -y [root@localhost ~]# cd /usr/local/src/ [root@localhost src]# wget http://nmap.org/dist/nmap-6.01.tar.bz2
[root@localhost src]# tar -jxvf nmap-6.01.tar.bz2 [root@localhost src]# cd nmap-6.01 [root@localhost
nmap-6.01]# ./configure [root@localhost nmap-6.01]# make install 到这里就全部安装完成了,可以用-h来测试一下你是否安装成功了。
[root@localhost nmap-6.01]# nmap -h 2、RPM包安装 nmap官方也提供RPM格式的安装包,直接从网站下载RPM格式的安装包,然后进行安装即可,操作过程如下。
[root@localhost ~]# wget http://nmap.org/dist/nmap-6.40-1.x86_64.rpm [root@localhost ~]# rpm -Uvh nmap-6.40-1.x86_64.rpm
安装完成之后,执行“nmap -h”如果能输出帮助信息,表示安装成功,否则根据错误提示重新安装nmap的典型用法 前面踢到了nmap主要包含四个方面的扫描功能,在详细介绍每个功能之前,首先介绍nmap的典型用法。
最简单的nmap命令形式如下:namp 目标主机 通过这个命令,可以确定目标的在线情况和端口的监听状态,如下图所示:
由输出可知,目标主机“192.168.163.111”处于“up”状态,并且此主机上开放与22、80、111、3306、3690端口,同事还侦查到每个端口对应的服务,在最后还给出目标主机的mac信息。
如果希望了解目标主机更多的信息,可以通过完全扫描的方式实现,nmap命令内置了“-A”选项,可以实现对目标主机进行主机发现、端口扫描、应用程序与版本侦测、操作系统识别等完整的扫描,命令形式如下:
nmap -TA -A -v 目标主机 其中“-A”选项用于开启全面扫描;“-T4”指定扫描过程中使用的时序模块,总共有6个等级(0-5)等级越高,扫描速度越快,但也越容易被防火墙或者入侵检测设备发现并屏蔽,所以选择一个适当的扫描登记非常重要,这里推荐使用“-T4”“-v”参数可显示扫描细节。
二、nmap主机发现扫描 主机发现主要用来判断目标主机是否在线,其扫描原理类似与ping命令,通过发送探测数据包到目标主机,如果能收到回复,那么认为目标主机处于在线状态nmap支持多种不同的主机探测方法,例如发送TCP SYN/ACK包、发送SCTP包、发送TCMP echo/timestamp/netmask请求报文等,用户可在不同的环境下选择不同的方式来探测目标主机。
1、主机发现的用法 nmap提供了丰富的选项以供用户选择不同的主机发现探测方式,使用语法如下: nmap [选项或者参数] 目标主机 nmap常用的主机发现选项与含义: -sn:只进行主机发现扫描,不进行端口扫描
-Pn:跳过主机发现扫描,将所有指定的主机都视为在线状态,进行端口扫描 -sL:仅仅列出指定的目标主机IP,不进行主机发现扫描 -PS/PA/PU/PY[portlist]:指定nmap使用TCP SYN、TCP ACK、UDP、SCTP方式进行主机发展,例如nmap -PS80,21
-PE/PP/PM:指定nmap使用ICMP echo、timestamp、netmask请求报文方式发现主机 -PO:使用IP协议包探测目标主机是否在线 -n/-R:指定是否使用DNS解析,其中“-n”表示不进行dns解析;“-R”表示总是进行dns解析
2、使用实例 下面以探测www.tiejiang.org主机的信息为例,简单演示主机发现的用法。首先,在联网的服务器上执行如下命令:
在这个例子中使用“-PE”、“-PS”、”-PU”等参数,根据上面的介绍,“-PE”是以发送ICMP echo报文的形式进行主机检测的,“-PS”是以发送TCP SYN/ACK包的形式侦测主机的信息的,而“-PU”则是以UDP的方式进行主机侦测的。
为了清晰展示nmap的侦测方式和侦测过程,这里通过抓包工具wireshark动态检测nmap探测主机的过程三、nmap端口扫描 端口扫描是nmap最核心的功能,通过端口扫描可以发现目标主机上TCP、UDP端口的开放情况,nmap在默认状态下会扫描1000个最有可能开放的端口,在将侦测到的端口状态分为6类,分别是:
open,表示端口是开放的 closed,表示端口是关闭的 filtrerd,表示端口被防火墙屏蔽,无法进一步确认状态 unfiltered,表示端口没有被屏蔽,但是不处于开放状态,还需要进一步确定。
open|filtered,表示不确定状态,端口可能是开放的,也可能是屏蔽的 closed|fultered,表示不确定状态,端口可能是关闭的,可能是屏蔽的! 在端口扫描方式上,nmap支持10多种探测方式,最常用的有“TCP SYN scanning”,这是默认的端口扫描方式,另外还有“TCP connect scanning”,“UDP scanning”等探测方式。
具体使用哪种探测方式,用户可以自己指定 1、端口扫描的用法 nmap提供了多个选项以供用户来指定扫描方式和扫描端口,使用语法如下: nmap [选项或参数] 目标主机 nmap端口扫描的常用选项与含义:
-sS/-sT/sA/sW/sM:指定使用TCP SYN/Connect()/ACK/Windows/Maimon scans来对目标主机进行端口扫描 -sU:指定使用UDP扫描方式扫描目标主机的UDP端口状况
-sN/sF/sX:指定使用TCP Null、FIN、Xmas scans秘密扫描方式来协助侦测目标主机的TCP端口状态 -p:仅仅扫描指定的一个或一批端口,例如“-p80”“-p1-100”“-p T:80-88,8000,8080,U:53,111,S:9”其中T表示TCP协议,U表示UDP协议,S表示SCTP协议。
-F:快速扫描模式,仅仅扫描开放率最高的前100个端口 –top-ports:仅扫描开放率最高的number个端口 2、使用实例 下面仍以探测www.tiejiang.org主机的信息为例,简单演示端口扫描的使用方法。
首先,在联网的服务器上执行如下命令:
在上图中,参数“-sS”表示使用TCP SYN方式扫描TCP端口,“-sS”表示扫描UDP端口,“-F”表示使用快速扫描模式,扫描最可能开放的前100个端口(TCP和UDP各100个端口),有输出可知,有6个端口处于开放或者屏蔽状态,其他100个端口处于关闭状态。
四、nmap版本侦测 nmap的版本侦测功能主要来确定目标主机开放的端口上运行的应用程序及版本信息,nmap的版本侦测支持TCP/UDP协议,支持多种平台的服务侦测,支持IPV6功能,并能识别几千种服务前面,下面介绍nmap版本侦测的使用方法。
1、版本侦测的用法 nmap在版本侦测方面的命令选项非常简单,常用的语法如下: nmap [选项或参数] 目标主机 nmap在版本侦测方面的常用选项及含义如下: -sV:设置nmap进行版本侦测
–version-intensity:设置版本侦测的强度值,取值范围为0-9,默认是7这个数值越高,探测出的服务版本就越精准,但扫描的时间更长 –version-light:设置使用轻量级的侦测方式,相当于侦测强度值为2。
–version-all:尝试使用所有的probes进行侦测,相当与侦测强度为9 –version-trace:显示版本侦测的详细过程 2、使用实例 下面探测211.149.188.22主机上运行的应用程序的版本信息为例,简单延时版本侦测的使用方法。
首先,在联网的服务器上执行如下命令: nmap -sV 211.149.188.22
从上图中nmap的输出可以看到每个端口对应的服务名称以及详细的版本信息,通过对服务器上运行的服务了解,以及对服务器版本的探测,基本能判断出来此服务器是否存在软件漏洞,进而提醒运维管理人员进行端口关闭或升级软件等操作,尽早应对可能出现的安全威胁!
五、nmap操作系统侦测 操作系统侦测主要是对目标主机运行的操作系统类型及版本信息进行检测nmap拥有丰富的系统指纹库,目前可以识别3000种操作系统与设备类型下面介绍nmap操作系统统侦测的使用方法 1、操作系统侦测的用法
nmap在操作系统侦测方面提供的命令选项比较少,常用的语法如下: nmap [选项或参数] 目标主机 -O:设置nmap进行操作系统侦测 –osscan-guess:猜测目标主机的操作系统类型,nmap会给出可能性的比率,用户可以根据提供的比赛综合判断操作系统类型。
2、使用实例 下面以探测“192.168.163.111”和“192.168.163.103“主机的操作系统类型为例,简单演示操作系统侦测的使用方法首先,在联网的服务器上执行如下命令: nmap -O –osscan-guess 192.168.163.111-103
从上图中可以看出,在指定了”-O”选项后,nmap命令首先执行了主机发现操作,接着执行了端口扫描软件,然后根据端口扫描的结果进行了操作系统类型的侦探,获取到的信息有设备类型、操作系统版本、操作系统的CPE描述、操作系统的细节和网络距离。
如果不能确定操作系统的版本,会猜测每个系统版本的可能性比率