使用Nmap进行端口扫描和服务识别

本文详细介绍了如何使用Nmap进行网络扫描,包括端口扫描、服务识别和输出结果。Nmap是一款开源的网络探测和安全审核工具,可用于发现网络上的主机和服务。在端口扫描中,Nmap提供了多种扫描类型,如SYN扫描,能够识别出开放和关闭的端口。同时,Nmap还可以进行服务识别,通过发送探针报文确定服务类型和版本。此外,Nmap还支持输出扫描结果到XML等不同格式,方便用户和软件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Nmap进行端口扫描和服务识别

第1章            Nmap的简介[1]

Nmap (Network Mapper(网络映射器)) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些 主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息) 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核, 许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息, 管理服务升级计划,以及监视主机和服务的运行。

Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使用的选项。 “所感兴趣的端口表格”是其中的关键。那张表列出端口号,协议,服务名称和状态。状态可能是 open(开放的)filtered(被过滤的) closed(关闭的),或者unfiltered(未被过滤的) Open(开放的)意味着目标机器上的应用程序正在该端口监听连接/报文。 filtered(被过滤的) 意味着防火墙,过滤器或者其它网络障碍阻止了该端口被访问,Nmap无法得知 它是 open(开放的) 还是 closed(关闭的) closed(关闭的) 端口没有应用程序在它上面监听,但是他们随时可能开放。 当端口对Nmap的探测做出响应,但是Nmap无法确定它们是关闭还是开放时,这些端口就被认为是 unfiltered(未被过滤的) 如果Nmap报告状态组合 open|filtered closed|filtered时,那说明Nmap无法确定该端口处于两个状态中的哪一个状态。 当要求进行版本探测时,端口表也可以包含软件的版本信息。当要求进行IP协议扫描时 (-sO)Nmap提供关于所支持的IP协议而不是正在监听的端口的信息。

除了所感兴趣的端口表,Nmap还能提供关于目标机的进一步信息,包括反向域名,操作系统猜测,设备类型,和MAC地址。

1.1 Nmap支持的扫描种类[2]

第2章            Nmap的下载与安装

本文使用Windows2000系统作为操作平台,下载Nmapwin32安装版本,下载地址为 http://insecure.org/Nmap/dist/Nmap-4.00-setup.exe

安装过程如下一系列交互图构成

2.1

2.2

2.3

2.4

 

 

安装完后运行cmd窗口,输入Nmap看到如下选项列表界面表示安装成功了。

2.5

 

 

 

 

第3章            使用Nmap进行端口扫描

使用Nmap进行端口扫描的格式为

      Nmap [ 扫描类型 ...] [ 选项 ] { 扫描目标说明 }

 

Nmap可以进行多种扫描类型的扫描,它们是[1]

-sS (TCP SYN扫描)

-sT (TCP connect()扫描)

-sU (UDP扫描)

-sN; -sF; -sX (TCP NullFINand Xmas扫描)

Null扫描 (-sN)

FIN扫描 (-sF)

Xmas扫描 (-sX)

-sA (TCP ACK扫描)

-sW (TCP窗口扫描)

-sM (TCP Maimon扫描)

--scanflags (定制的TCP扫描)

--scanflags

-sI <zombie host[:probeport]> (Idlescan)

-sO (IP协议扫描)

-b <ftp relay host> (FTP弹跳扫描)

 

具体的扫描原理和说明可以参照Nmap参考指南(Man Page)[1] ,这里只对SYN扫描进行举例叙述。

 

 

 

 

 

默认情况下,Nmap使用SYN方式进行扫描,扫描原理如下图

3.1 SYN扫描原理图[2]

SYN被称为半开放扫描,因为它不打开一个完全的TCP连接。它发送一个SYN报文,就像您真的要打开一个连接,然后等待响应。 SYN/ACK表示端口在监听 (开放),而 RST (复位)表示没有监听者[1]

以下我们以SYN进行端口扫描实验,用EtherDetect Packet Sniffer软件进行抓包分析。实验中,我们以202.193.161.196 为目标地址,以本机 202.193.161.242为源地址进行扫描,扫描目标地址的135136端口,我们已知目标地址135为开放的,136为关闭的,下面是扫描和抓包分析截图。

扫描命令为 Nmap -p 135-136 202.193.161.196

3.2 Nmap进行端口扫描返回结果视图

3.3 SYN扫描135端口分析视图(1

3.4 SYN扫描135端口分析视图(2

3.5 SYN扫描135端口分析视图(3

3.6 SYN扫描135端口分析视图(4

3.7 SYN扫描136端口分析视图(1

3.8 SYN扫描136端口分析视图(2

3.9 SYN扫描136端口分析视图(3

      如图所示,cmd窗口返回的信息可以看出目标地址的135端口是开放的,136端口是关闭的,在Service一栏,135运行的服务是msrpc136profile。而通过我们的抓包分析,我们已经了解了进行SYN扫描的整个过程,但这里有一个问题,我们在上面的SYN扫描过程中,并没有对服务进行识别,那么为什么Nmap返回了两个端口的服务,何况136端口是关闭的,更没有办法获得服务类型,我们在下一章中介绍Nmap的服务识别原理。

 

 

 

 

 

 

 

 

 

 

 

 

第4章            使用Nmap进行服务识别

上章最后我们提出了问题,为什么Nmap没有进行服务识别的相关操作也得到了服务类型呢?我们知道,一般情况下,ftp服务是运行在21端口的,http80端口,诸如这些端口都是 周知(well-know)端口。我们在进行Nmap端口扫描时,Nmap并没有进行服务的识别,而是将端口号在自己的 端口服务表 数据库中进行查找,然后返回告诉你一般情况下,这个端口开放的服务是这个,也就是说,这种返回的服务只是数据库中的,并非事实中端口所运行的服务,只是一般情况下大家都会使用固定的端口进行固定的服务。那如果要进行更精确的服务检测呢?Nmap提供了更精确的服务及版本检测选项。我们通过添加选项 –sV 来进行服务和版本识别,服务和版本识别还有更多的选项,这里就不做介绍了,如有兴趣可参照Nmap参考指南(Man Page)[1]

实验:应用Nmap的服务和版本识别扫描目标主机的135端口。

扫描命令: Nmap –p 135 –sV 202.193.161.196

4.1 Nmap服务及版本识别输出结果

 

 

 

 

 

 

4.2 抓包视图

 

4.3 进行服务识别视图(1

4.4进行服务识别视图(2

4.5进行服务识别视图(3

4.6进行服务识别视图(4

4.7进行服务识别视图(5

4.8进行服务识别视图(6

4.9 进行版本识别视图(1

4.10 进行版本识别视图(2

4.11 进行版本识别视图(2

 

由以上一系列图,我们可以分析Nmap的服务识别大致过程如下:

1        首先进行端口扫描,默认情况下使用SYN扫描

2        进行服务识别,发送探针报文,得到返回确认值,确认服务。

3        进行版本识别,发送探针报文,得到返回的报文信息,分析得出服务的版本。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第5章            使用Nmap输出扫描结果

Nmap还具有输出扫描结果的选项,使结果可以供用户和其它软件使用,其中包含了方便直接查看的交互方式和方便软件处理 XML格式。

Nmap输出格式

-oN <filespec> (标准输出)

-oX <filespec> (XML输出)

-oS <filespec> (ScRipT KIdd|3 oUTpuT)

-oG <filespec> (Grep输出)

-oA <basename> (输出至所有格式)

关于各种输出格式及其意义,读者可参照Nmap参考指南(Man Page)[1] ,这里只对输出xml格式文件进行描述。

 

实验:输出扫描结果到 testnmap.xml 文件

扫描命令: nmap -oX C:/testnmap.xml -p 135 -sV 202.193.161.196

5.1 Nmap操作窗口

5.2 生成的testnmap.xml

5.3 testnmap.xml的内容

XML提供了可供软件解析的稳定格式输出,主要的计算机 语言都提供了免费的XML解析器,如C/C++PerlPythonJava 针对这些语言有一些捆绑代码用于处理Nmap的输出和特定的执行程序。 例如perl CPAN中的Nmap::Scanner Nmap::Parser 对几乎所有与Nmap有接口的主要应用来说,XML是首选的格式。[1]

 

【参考文献】

[1]      Nmap参考指南(Man Page). http://insecure.org/Nmap/man/zh/, 2006-11-18

[2]      James Messer. Secrets of Network Cartography:A Comprehensive Guide to Nmap. http://www.networkuptime.com/nmap/index.shtml, 2006-11-18

[3]      W.R Stevens. TCP/IP 详解 卷一:协议.范建华等译. 北京: 机械工业出版社, 2000:169-199

WR Stevens. TCP/IP Illustrated Volume 1:The Protocols. Addison-Wesley.1994

附录1:选项概要列表

Usage: Nmap [Scan Type(s)] [Options] {target specification}

TARGET SPECIFICATION:

  Can pass hostnames, IP addresses, networks, etc.

  Ex: scanme.Nmap.org, microsoft.com/24, 192.168.0.1; 10.0-255.0-255.1-254

  -iL <inputfilename>: Input from list of hosts/networks

  -iR <num hosts>: Choose random targets

  --exclude <host1[,host2][,host3],...>: Exclude hosts/networks

  --excludefile <exclude_file>: Exclude list from file

HOST DISCOVERY:

  -sL: List Scan - simply list targets to scan

  -sP: Ping Scan - go no further than determining if host is online

  -P0: Treat all hosts as online -- skip host discovery

  -PS/PA/PU [portlist]: TCP SYN/ACK or UDP discovery probes to given ports

  -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes

  -n/-R: Never do DNS resolution/Always resolve [default: sometimes resolve]

SCAN TECHNIQUES:

  -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans

  -sN/sF/sX: TCP Null, FIN, and Xmas scans

  --scanflags <flags>: Customize TCP scan flags

  -sI <zombie host[:probeport]>: Idlescan

  -sO: IP protocol scan

  -b <ftp relay host>: FTP bounce scan

PORT SPECIFICATION AND SCAN ORDER:

  -p <port ranges>: Only scan specified ports

    Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080

  -F: Fast - Scan only the ports listed in the Nmap-services file)

  -r: Scan ports consecutively - don't randomize

SERVICE/VERSION DETECTION:

  -sV: Probe open ports to determine service/version info

  --version-light: Limit to most likely probes for faster identification

  --version-all: Try every single probe for version detection

  --version-trace: Show detailed version scan activity (for debugging)

OS DETECTION:

  -O: Enable OS detection

  --osscan-limit: Limit OS detection to promising targets

  --osscan-guess: Guess OS more aggressively

TIMING AND PERFORMANCE:

  -T[0-6]: Set timing template (higher is faster)

  --min-hostgroup/max-hostgroup <msec>: Parallel host scan group sizes

  --min-parallelism/max-parallelism <msec>: Probe parallelization

  --min_rtt_timeout/max-rtt-timeout/initial-rtt-timeout <msec>: Specifies

      probe round trip time.

  --host-timeout <msec>: Give up on target after this long

  --scan-delay/--max_scan-delay <msec>: Adjust delay between probes

FIREWALL/IDS EVASION AND SPOOFING:

  -f; --mtu <val>: fragment packets (optionally w/given MTU)

  -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys

  -S <IP_Address>: Spoof source address

  -e <iface>: Use specified interface

  -g/--source-port <portnum>: Use given port number

  --data-length <num>: Append random data to sent packets

  --ttl <val>: Set IP time-to-live field

  --spoof-mac <mac address, prefix, or vendor name>: Spoof your MAC address

OUTPUT:

  -oN/-oX/-oS/-oG <file>: Output scan results in normal, XML, s|<rIpt kIddi3,

     and Grepable format, respectively, to the given filename.

  -oA <basename>: Output in the three major formats at once

  -v: Increase verbosity level (use twice for more effect)

  -d[level]: Set or increase debugging level (Up to 9 is meaningful)

  --packet-trace: Show all packets sent and received

  --iflist: Print host interfaces and routes (for debugging)

  --append-output: Append to rather than clobber specified output files

  --resume <filename>: Resume an aborted scan

  --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML

  --no_stylesheet: Prevent Nmap from associating XSL stylesheet w/XML output

MISC:

  -6: Enable IPv6 scanning

  -A: Enables OS detection and Version detection

  --datadir <dirname>: Specify custom Nmap data file location

  --send-eth/--send-ip: Send packets using raw ethernet frames or IP packets

  --privileged: Assume that the user is fully privileged

  -V: Print version number

  -h: Print this help summary page.

EXAMPLES:

  Nmap -v -A scanme.Nmap.org

  Nmap -v -sP 192.168.0.0/16 10.0.0 .0/8

  Nmap -v -iR 10000 -P0 -p 80

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值