使用Nmap进行端口扫描和服务识别
使用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进行端口扫描和服务识别相关推荐
- 内网IP端口扫描统计+服务识别简单思路
前提:内网是10网段的,几乎所有机器都开了80和22端口,所以以此为依据认为扫描到的都是在线的IP. 目标是得到在线的IP启动了哪些端口,尽量猜测端口对应的服务. Centos7 (macos用bre ...
- day08 系统篇端口扫描CDN服务负载均衡WAF防火墙
前言 #知识点: 获取网络信息-服务厂商&网络架构 2.获取服务信息-应用协议&内网资产 3.获取阻碍信息-CDN&WAF&负载&防火墙 #详细点: CDN服务 ...
- python 端口扫描 东京_GitHub - w2n1ck/portscan: 一个基于Python+Go的端口扫描及服务探测脚本...
portscan 一个基于Python+Go的端口扫描及服务探测脚本 0x00 前言 近期由于公司环境整改/迭代以及历史弱口令等撞库,运维同事将内网测试环境的一些SSH等敏感端口对外,导致被挖矿团伙利 ...
- ★Kali信息收集★8.Nmap :端口扫描
Kali信息收集~ 0.Httrack 网站复制机 http://www.cnblogs.com/dunitian/p/5061954.html Kali信息收集~ 1.Google Hacking ...
- NMap参数抓包分析——主机发现,端口扫描,服务和版本探测
1. NMap (1)NMap 介绍: NMap(Network Mapper)是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统 ...
- 基于原理分析Nmap——活跃主机发现、端口扫描、服务探测、伪装技术、NSE脚本
参考书籍<诸神之眼--Nmap网络安全审计技术揭秘> 李华峰 著 清华大学出版社 基于原理分析Nmap 1. 活跃主机发现技术 1.1 基于ARP协议 1.2 基于ICMP协议 1.2.1 ...
- python——利用nmap进行端口扫描,爆破ftp密码,上传wellshell.
一.端口扫描 首先安装nmap与python-nmap模块.从http://nmap.org/download.html网站下载nmap安装文件.从http://xael.org/norman/pyt ...
- Python使用nmap进行端口扫描
nmap安装文件下载地址:https://nmap.org/download.html Python 3.x版本的nmap http://xael.org/norman/python/python-n ...
- 信息收集之基础端口扫描《诸神之眼——Nmap网络安全审计技术揭秘》总结一
端口扫描 <诸神之眼--Nmap网络安全审计技术揭秘>总结 手动端口扫描 Nmap Nmap的基本操作 活跃主机发现技术 基于ARP协议的活跃主机发现技术 基于ICMP协议的活跃主机发现技 ...
最新文章
- 认识计算机ppt课件游戏,认识计算机)ppt课件
- 大数据 清华 覃征_调剂到清华读研?不想去!清华大学大数据调剂生放弃录取!...
- VC++软件工程师高端培训
- POJ1063 Flip and Shift
- std::ostream_iterator、std::cout、std:copy实现输出
- java程序员被误导的一个概念,Set也可以有序
- java yaml dump方法_yamlyaml.load与yaml.dump方法
- 腾讯视频vip会员_腾讯视频如何查看版本号
- 有关VUE学习的经验(2)
- 3 pyspark学习---sparkContext概述
- 安装uwsgi报错:error linking uWSGI解决方法
- 当下流行的语音识别技术是不是发展错了方向?
- sharepoint 2007 无法自动跳转到default.aspx
- JNI引用溢出导致的重启问题分析
- 计算机病毒是计算机软件出现的故障,计算机病毒引发故障有哪些
- 常识之外:全表扫描为何产生大量 db file sequential read 单块读?
- USB复合设备调试 STM32
- 从前慢-MySql基础
- 教大家如何安装win to go
- 软件工程的国家标准下载