使用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系统作为操作平台,下载Nmap的win32安装版本,下载地址为 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 Null,FIN,and 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为源地址进行扫描,扫描目标地址的135,136端口,我们已知目标地址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运行的服务是msrpc,136是profile。而通过我们的抓包分析,我们已经了解了进行SYN扫描的整个过程,但这里有一个问题,我们在上面的SYN扫描过程中,并没有对服务进行识别,那么为什么Nmap返回了两个端口的服务,何况136端口是关闭的,更没有办法获得服务类型,我们在下一章中介绍Nmap的服务识别原理。

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

上章最后我们提出了问题,为什么Nmap没有进行服务识别的相关操作也得到了服务类型呢?我们知道,一般情况下,ftp服务是运行在21端口的,http是80端口,诸如这些端口都是 周知(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++,Perl,Python和Java。 针对这些语言有一些捆绑代码用于处理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

使用Nmap进行端口扫描和服务识别相关推荐

  1. 内网IP端口扫描统计+服务识别简单思路

    前提:内网是10网段的,几乎所有机器都开了80和22端口,所以以此为依据认为扫描到的都是在线的IP. 目标是得到在线的IP启动了哪些端口,尽量猜测端口对应的服务. Centos7 (macos用bre ...

  2. day08 系统篇端口扫描CDN服务负载均衡WAF防火墙

    前言 #知识点: 获取网络信息-服务厂商&网络架构 2.获取服务信息-应用协议&内网资产 3.获取阻碍信息-CDN&WAF&负载&防火墙 #详细点: CDN服务 ...

  3. python 端口扫描 东京_GitHub - w2n1ck/portscan: 一个基于Python+Go的端口扫描及服务探测脚本...

    portscan 一个基于Python+Go的端口扫描及服务探测脚本 0x00 前言 近期由于公司环境整改/迭代以及历史弱口令等撞库,运维同事将内网测试环境的一些SSH等敏感端口对外,导致被挖矿团伙利 ...

  4. ★Kali信息收集★8.Nmap :端口扫描

    Kali信息收集~ 0.Httrack 网站复制机 http://www.cnblogs.com/dunitian/p/5061954.html Kali信息收集~ 1.Google Hacking ...

  5. NMap参数抓包分析——主机发现,端口扫描,服务和版本探测

    1. NMap (1)NMap 介绍: NMap(Network Mapper)是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统 ...

  6. 基于原理分析Nmap——活跃主机发现、端口扫描、服务探测、伪装技术、NSE脚本

    参考书籍<诸神之眼--Nmap网络安全审计技术揭秘> 李华峰 著 清华大学出版社 基于原理分析Nmap 1. 活跃主机发现技术 1.1 基于ARP协议 1.2 基于ICMP协议 1.2.1 ...

  7. python——利用nmap进行端口扫描,爆破ftp密码,上传wellshell.

    一.端口扫描 首先安装nmap与python-nmap模块.从http://nmap.org/download.html网站下载nmap安装文件.从http://xael.org/norman/pyt ...

  8. Python使用nmap进行端口扫描

    nmap安装文件下载地址:https://nmap.org/download.html Python 3.x版本的nmap http://xael.org/norman/python/python-n ...

  9. 信息收集之基础端口扫描《诸神之眼——Nmap网络安全审计技术揭秘》总结一

    端口扫描 <诸神之眼--Nmap网络安全审计技术揭秘>总结 手动端口扫描 Nmap Nmap的基本操作 活跃主机发现技术 基于ARP协议的活跃主机发现技术 基于ICMP协议的活跃主机发现技 ...

最新文章

  1. 认识计算机ppt课件游戏,认识计算机)ppt课件
  2. 大数据 清华 覃征_调剂到清华读研?不想去!清华大学大数据调剂生放弃录取!...
  3. VC++软件工程师高端培训
  4. POJ1063 Flip and Shift
  5. std::ostream_iterator、std::cout、std:copy实现输出
  6. java程序员被误导的一个概念,Set也可以有序
  7. java yaml dump方法_yamlyaml.load与yaml.dump方法
  8. 腾讯视频vip会员_腾讯视频如何查看版本号
  9. 有关VUE学习的经验(2)
  10. 3 pyspark学习---sparkContext概述
  11. 安装uwsgi报错:error linking uWSGI解决方法
  12. 当下流行的语音识别技术是不是发展错了方向?
  13. sharepoint 2007 无法自动跳转到default.aspx
  14. JNI引用溢出导致的重启问题分析
  15. 计算机病毒是计算机软件出现的故障,计算机病毒引发故障有哪些
  16. 常识之外:全表扫描为何产生大量 db file sequential read 单块读?
  17. USB复合设备调试 STM32
  18. 从前慢-MySql基础
  19. 教大家如何安装win to go
  20. 软件工程的国家标准下载

热门文章

  1. 10行代码教你用Python扫描Excel表格,自动生成条形码!
  2. LPL比赛数据可视化,完成这个项目,用尽了我的所有Python知识
  3. 解决(无法启动服务,错误1068:依赖服务或组无法启动、telnet)
  4. 将一个文本打乱顺序的简单方法
  5. psn服务器正在维护,链接psn服务器超时
  6. 解决spirng无法注入redis工具类及dao层类(Springboot项目)
  7. JiaoZiVideoPlayer饺子视频播放器
  8. 【免费】中国省级行政单位ISO 3166-2对照表
  9. 干货 | 以模型为中心,携程契约系统的演进
  10. 怎么设置邮箱自动回复?哪个品牌邮箱自动回复设置最简单?