一、Nmap/Zenmap简介:Nmap(NetworkMapper(网络映射器))是一款开放源代码的网络探测和安全审核的工具,支持在Windows、Unix/Linux以及Macos平台下运行。它的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息),它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核,许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息,管理服务升级计划,以及监视主机和服务的运行。Zenmap是官方推出的一款基于nmap的安全扫描GUI(图形用户界面),它是一款多平台(Windows、Unix/Linux、Macos等)免费开源的应用程序,它的推出使得Nmap对于新手来说更容易上手,同时也对有经验的用户提供了更高级的特性。经常被用到的扫描被保存成了预配置项,这使得重复利用变得极其容易。当然也容许互动的创建命令行。扫描的结果能够被保存下来供后续分析,可以将不同的保存下来的扫描结果进行对比以找到差异。最近的扫描结果会被保存在一个可搜索的数据库中。有了这款工具就让我们可以更直观的使用Nmap的强大功能。二、Zenmap(GUI模式)安装:Windows平台下的安装配置和验证:a)到nmap官网下载最新自安装版本,nmap-6.47-setup.exe(最新版本是6.49)b)双击安装,除安装位置可以自选外,其它都可以采用默认设置。(安装中可能会根据系统情况提示你安装winpcap、visualC++运行时环境,均答复同意)c)安装完毕后执行Zenmap可以进行测试验证。三、Zenmap的常用使用方法:1、Zenmap的预览及各区域简介:菜单栏区域:汇集Zenmap的各种功能的快捷连接。详细如下列图示Scan菜单:Tools菜单:Profile菜单:Help菜单:快速扫描配置区域:用于日常扫描的快速配置任务区域:任务列表(含主机和服务)此处列出所执行的任务列表,通过此处对任务进行切换查看。底部的“FilterHosts”单击可以出现筛选列表用于在繁多的任务列表中定位要关注的主机。扫描结果输出区域:扫描结果显示区域,包含最常用到的扫描结果显示(NmapOutput)、扫描的端口和主机(Ports/Hosts)、扫描主机拓扑(Topology)、扫描主机的详细信息(HostDetails)以及扫描命令的详细说明(Scans)2、简单扫描流程:方法一:填写扫描目标选择扫描预配置类型根据需要修改扫描详细命令执行扫描方法二:直接在命令文本框中输入扫描命令,执行扫描3、进阶扫描流程:如果希望自己自定义的扫描可以重复利用,那么需要将自己编写的扫描指令存储为预配置,其自然就会出现在预配置下拉列表中,后续就可以很方便的使用了。当然也可以对系统自带的预配置项进行修改以更适应自己的需要。下面说明一下预配置制作的方法。创建自己的预配置项:[Profile][NewProfileorCommand]打开iProfile编辑器,后续就可以在该编辑器中创建预配置项,此处将主要的几个TAB配置也做简要说明,其它可参考选项右侧的说明。配置过程中可以在顶部的命令栏中看到详细的指令内容,等所有选项配置完毕后,点击右下角的保存按钮[SaveChanges]即可。然后就可以在预配置下拉列表中看到自定义的预配置项。修改已有的预配置项:在Profile下拉列表中选择待修改的选项,然后点击[Profile][EditSelectedCommand],剩下的就和新建没有啥区别了。4、扫描结果的保存:扫描任务完成后可以将扫描结果保存下来供后续分析使用,也可以用来对扫描任务的结果进行对比使用。Zenmap提供的扫描结果保存的格式预定义的有两种(XML格式和nmap格式)。其中nmap格式是纯文本格式,可以直接使用文本编辑器打开查看。而XML格式能够存储更多的信息,后续可以在Zenmap中打开还原使用。建议保存格式选择XML。[Scan][SaveScan]四、端口扫描技术:1、端口扫描基础:虽然Nmap这些年来功能越来越多,它也是从一个高效的端口扫描器开始的,并且仍然是它的核心功能。Nmaptarget这个简单的命令扫描目标主机上的超过1660个TCP端口。许多传统的端口扫描器只列出所有端口是开放还是关闭的,Nmap的信息粒度比它们要细得多。它把端口分成六个状态:open(开放的),closed(关闭的),filtered(被过滤的),unfiltered(未被过滤的),open|filtered(开放或者被过滤的),closed|filtered(关闭或者未被过滤的)。当然这些状态并非端口本身的性质,而是描述Nmap怎样看待它们。例如:对于同样的目标机器的135/tcp端口,从同网络扫描显示它是开放的,而跨网络做完全相同的扫描则可能显示它是filtered(被过滤的)。Nmap所设别的六个端口状态:Open(开放的):应用程序正在该端口接收TCP连接或者UDP报文。发现这一点常常是端口扫描的主要目标。安全意识强的人们知道每个开放的端口都是攻击的入口。攻击者或者入侵测试者想要发现开放的端口。而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。非安全扫描可能对于开放的端口也感兴趣,因为它们显示了网络上那些服务可供使用。Closed(关闭的):关闭的端口对于Nmap也是可访问的(它接收Nmap的探测报文并作出响应),但没有应用程序在其上监听。它们可以显示出该IP地址上(主机发现,或者ping扫描)的主机正在运行,也对部分操作系统探测有所帮助。因为关闭的端口是可访问的,也许过会儿值得再扫描一下,可能一些又开放了。系统管理员可能会考虑用防火墙封锁这样的端口。那样他们就会被显示为被过滤的状态。Filtered(被过滤的):由于包过滤阻止探测报文到达端口,Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙。这样的端口让攻击者感觉很挫折,因为它们几乎不提供任何信息。有时候它们响应ICMP错误信息如类型3代码13(无法到达目标:通信被管理员静止),但更普遍的是过滤器只是丢弃探测帧,不做任何响应。这迫使Nmap重试,这使得扫描速度明显变慢。Unfiltered(未被过滤的):未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定端口是否开放。Open|filtered(开放或者被过滤的):当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何响应。因此Nmap无法确定该端口是开放还是被过滤的。UDP,IP协议,FIN,NULL,和Xmas扫描可能把端口归入此类。Closed|filtered(关闭或者未被过滤的):该状态用于Nmap不能确定端口是关闭的还是被过滤的。它只可能出现在IPIDIdle扫描中。2、Nmap指令语法:nmap[扫描类型...][选项]{扫描目标说明}其中扫描类型和选项参考后边的端口扫描技术部分,此处将详细解释一下扫描目标说明部分。有时候您希望扫描整个网络的相邻主机。为此,Nmap支持CIDR风格的地址。您可以附加一个/numbit在一个IP地址或主机名后面,Nmap将会扫描所有和该参考IP地址具有numbit相同比特的所有IP地址或主机。例如,192.168.10.0/24将会扫描192.168.10.0(二进制格式:11000000101010000000101000000000)和192.168.10.255(二进制格式:11000000101010000000101011111111)之间的256台主机。192.168.10.40/24将会做同样的事情。假设主机scanme.nmap.org的IP地址是205.217.153.62,scanme.nmap.org/16将扫描205.217.0.0和205.217.255.255之间的65536个IP地址。所容许的最小值是/1,这将会扫描半个互联网。最大值是/32,这将会扫描该主机或IP地址,因为所有的比特都固定了。CIDR标志位很简洁但有时候不够灵活。例如,您也许想要扫描192.168.0.0/16,但略过任何以.0或者.255结束的IP地址,因为它们通常是广播地址。Nmap通过八位字节地址范围支持这样的扫描您可以用逗号分开的数字或范围列表为IP地址的每个八位字节指定它的范围。例如,192.168.0-255.1-254将略过在该范围内以.0和.255结束的地址。范围不必限于最后的8位:0-255.0-255.13.37将在整个互联网范围内扫描所有以13.37结束的地址。这种大范围的扫描对互联网调查研究也许有用。IPv地址只能用规范的IPv6地址或主机名指定。CIDR和八位字节范围不支持IPv6,因为它们对于IPv6几乎没什么用。Nmap命令行接受多个主机说明,它们不必是相同类型。例如命令nmapscanme.nmap.org192.168.0.0/810.0.0,1,3-7.0-255将和您预期的一样执行。虽然目标通常在命令行指定,下列选项也可用来控制目标的选择:-iLinputfilename(从列表中输入)从inputfilename中读取目标说明。在命令行输入一堆主机名显得很笨拙,然而经常需要这样。例如,您的DHCP服务器可能导出10000个当前租约的列表,而您希望对它们进行扫描。如果您不是使用未授权的静态IP来定位主机,或许您想要扫描所有IP地址。只要生成要扫描的主机的列表,