当前位置:文档之家› Nmap扫描原理与用法

Nmap扫描原理与用法

[+]Nmap扫描原理与用法2012年6月16日1Nmap介绍Nmap基本命令和典型用法•全面进攻性扫描(包括各种主机发现、端口扫描、版本扫描、OS扫描及默认脚本扫描):nmap -A -v targetip•Ping扫描:nmap -sn -v targetip•快速端口扫描:nmap -F -v targetip•版本扫描:nmap -sV -v targetip•操作系统扫描:nmap -O -v targetip2Nmap扫描原理与用法PDF:下载地址Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。

软件名字Nmap是Network Mapper的简称。

Nmap最初是由Fyodor在1997年开始创建的。

随后在开源社区众多的志愿者参与下,该工具逐渐成为最为流行安全必备工具之一。

最新版的Nmap6.0在2012年5月21日发布,详情请参见:。

一般情况下,Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。

Nmap 可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。

Nmap的优点:1. 灵活。

支持数十种不同的扫描方式,支持多种目标对象的扫描。

2. 强大。

Nmap可以用于扫描互联网上大规模的计算机。

3. 可移植。

支持主流操作系统:Windows/Linux/Unix/MacOS等等;源码开放,方便移植。

4. 简单。

提供默认的操作能覆盖大部分功能,基本端口扫描nmap targetip,全面的扫描nmap –A targetip。

5. 自由。

Nmap作为开源软件,在GPL License的范围内可以自由的使用。

6. 文档丰富。

Nmap官网提供了详细的文档描述。

Nmap作者及其他安全专家编写了多部Nmap 参考书籍。

7. 社区支持。

Nmap背后有强大的社区团队支持。

8. 赞誉有加。

获得很多的奖励,并在很多影视作品中出现(如黑客帝国2、Die Hard4等)。

9. 流行。

目前Nmap已经被成千上万的安全专家列为必备的工具之一。

1.1 ZenmapZenmap是Nmap官方提供的图形界面,通常随Nmap的安装包发布。

Zenmap是用Python语言编写而成的开源免费的图形界面,能够运行在不同操作系统平台上(Windows/Linux/Unix/Mac OS等)。

Zenmap旨在为nmap提供更加简单的操作方式。

简单常用的操作命令可以保存成为profile,用户扫描时选择profile即可;可以方便地比较不同的扫描结果;提供网络拓扑结构(NetworkTopology)的图形显示功能。

其中Profile栏位,用于选择“Zenmap默认提供的Profile”或“用户创建的Profile”;Command 栏位,用于显示选择Profile对应的命令或者用户自行指定的命令;Topology选项卡,用于显示扫描到的目标机与本机之间的拓扑结构。

1.2 功能架构图Nmap包含四项基本功能:1.主机发现(Host Discovery)2.端口扫描(Port Scanning)3.版本侦测(Version Detection)4.操作系统侦测(Operating System Detection)而这四项功能之间,又存在大致的依赖关系(通常情况下的顺序关系,但特殊应用另外考虑),首先需要进行主机发现,随后确定端口状况,然后确定端口上运行具体应用程序与版本信息,然后可以进行操作系统的侦测。

而在四项基本功能的基础上,Nmap提供防火墙与IDS(IntrusionDetection System,入侵检测系统)的规避技巧,可以综合应用到四个基本功能的各个阶段;另外Nmap提供强大的NSE(Nmap Scripting Language)脚本引擎功能,脚本可以对基本功能进行补充和扩展。

2 Nmap基本扫描方法Nmap主要包括四个方面的扫描功能,主机发现、端口扫描、应用与版本侦测、操作系统侦测。

在详细讲解每个具体功能之前,首先可以看看Nmap的典型用法。

2.1 用法引入2.1.1 确定端口状况如果直接针对某台计算的IP地址或域名进行扫描,那么Nmap对该主机进行主机发现过程和端口扫描。

该方式执行迅速,可以用于确定端口的开放状况。

命令形式:nmap targethost可以确定目标主机在线情况及端口基本状况。

2.1.2 完整全面的扫描如果希望对某台主机进行完整全面的扫描,那么可以使用nmap内置的-A选项。

使用了该选项,nmap对目标主机进行主机发现、端口扫描、应用程序与版本侦测、操作系统侦测及调用默认NSE 脚本扫描。

命令形式:nmap –T4 –A –v targethost其中-A选项用于使用进攻性(Aggressive)方式扫描;-T4指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4;-v表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。

例如,扫描局域网内地址为192.168.1.100的电脑。

显而易见,扫描出的信息非常丰富,在对192.168.1.100的扫描报告部分中(以红框圈出),可以看到主机发现的结果“Host is up”;端口扫描出的结果,有996个关闭端口,4个开放端口(在未指定扫描端口时,Nmap默认扫描1000个最有可能开放的端口);而版本侦测针对扫描到的开放状况进一步探测端口上运行的具体的应用程序和版本信息;OS侦测对该目标主机的设备类型与操作系统进行探测;而绿色框图是nmap调用NSE脚本进行进一步的信息挖掘的显示结果。

2.2 主机发现主机发现(Host Discovery),即用于发现目标主机是否在线(Alive,处于开启状态)。

2.2.1 主机发现原理主机发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。

Nmap支持十多种不同的主机探测方式,比如发送ICMP ECHO/TIMESTAMP/NETMASK 报文、发送TCP SYN/ACK包、发送SCTP INIT/COOKIE-ECHO包,用户可以在不同的条件下灵活选用不同的方式来探测目标机。

主机发现基本原理:(以ICMP echo方式为例)Nmap的用户位于源端,IP地址192.168.0.5,向目标主机192.168.0.3发送ICMP Echo Request。

如果该请求报文没有被防火墙拦截掉,那么目标机会回复ICMP Echo Reply包回来。

以此来确定目标主机是否在线。

默认情况下,Nmap会发送四种不同类型的数据包来探测目标主机是否在线。

1. ICMP echo request2. a TCP SYN packet to port 4433. a TCP ACK packet to port 804. an ICMP timestamp request依次发送四个报文探测目标机是否开启。

只要收到其中一个包的回复,那就证明目标机开启。

使用四种不同类型的数据包可以避免因防火墙或丢包造成的判断错误。

2.2.2 主机发现的用法通常主机发现并不单独使用,而只是作为端口扫描、版本侦测、OS侦测先行步骤。

而在某些特殊应用(例如确定大型局域网内活动主机的数量),可能会单独专门适用主机发现功能来完成。

不管是作为辅助用法还是专门用途,用户都可以使用Nmap提供的丰富的选项来定制主机发现的探测方式。

[plain]view plaincopyprint?1.-sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。

2.-sn: Ping Scan 只进行主机发现,不进行端口扫描。

3.-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。

4-PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。

4.5.-PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。

-PO[protocollist]:IP协议包探测对方主机是否开启。

6.7.-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。

8.9.--dns-servers <serv1[,serv2],...>: 指定DNS服务器。

10.11.--system-dns: 指定使用系统的DNS服务器12.13.--traceroute: 追踪每个路由节点其中,比较常用的使用的是-sn,表示只单独进行主机发现过程;-Pn表示直接跳过主机发现而进行端口扫描等高级操作(如果已经确知目标主机已经开启,可用该选项);-n,如果不想使用DNS 或reverse DNS解析,那么可以使用该选项。

2.2.3 使用演示探测下面以探测的主机为例,简单演示主机发现的用法。

命令如下:nmap –sn –PE –PS80,135 –PU53 使用Wireshark抓包,我们看到,向 的IP地址182.140.147.57发送了四个探测包:ICMPEcho,80和135端口的TCP SYN包,53端口的UDP包(DNS domain)。

而收到ICMP Echo的回复与80端口的回复。

从而确定了主机正常在线。

探测局域网内活动主机扫描局域网192.168.1.100-192.168.1.120范围内哪些IP的主机是活动的。

命令如下:nmap –sn 192.168.1.100-120从结果中,可以看到这个IP范围内有三台主机处于活动状态。

从Wireshark抓取的包中,可以看到发送的探测包的情况:在局域网内,Nmap是通过ARP包来询问IP地址上的主机是否活动的,如果收到ARP回复包,那么说明主机在线。

例如,某条ARP回复的报文详细信息如下:2.3 端口扫描端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。

默认情况下,Nmap会扫描1000个最有可能开放的TCP端口。

Nmap通过探测将端口划分为6个状态:1.open:端口是开放的。

2.closed:端口是关闭的。

3.filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。

4.unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。

5.open|filtered:端口是开放的或被屏蔽。

6.closed|filtered :端口是关闭的或被屏蔽。

2.3.1 端口扫描原理Nmap在端口扫描方面非常强大,提供了十多种探测方式。

相关主题