Nmap概述

Nmap(Network Mapper(网络映射器))是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。

正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。

Nmap包含四项基本功能:主机发现(Host Discovery)端口扫描(Port Scanning)版本侦测(Version Detection)操作系统侦测(Operating System Detection)而这四项功能之间,又存在大致的依赖关系(通常情况下的顺序关系,但特殊应用另外考虑),首先需要进行主机发现,随后确定端口状况,然后确定端口上运行具体应用程序与版本信息,然后可以进行操作系统的侦测。而在四项基本功能的基础上,Nmap提供防火墙与IDS(IntrusionDetection System,入侵检测系统)的规避技巧,可以综合应用到四个基本功能的各个阶段;另外Nmap提供强大的NSE(Nmap Scripting Language)脚本引擎功能,脚本可以对基本功能进行补充和扩展。

通常,一个简单的使用ICMP协议的ping操作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所 使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。

Nmap安装

首先访问Nmap官网,获得windows对应版本的安装包。

根据提示,一直安装即可

软件主界面

可以看出其内置了很多扫描类型,支持查看多种扫描结果,UI界面比较直观

此外,还可以在linux终端内安装,更加灵活。

Nmap使用

查看linux下nmap的帮助信息。(执行命令nmpa -h)

Nmap 7.80 ( https://nmap.org )

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

可见nmap指令的一般格式是:nmap \[扫描类型(可叠加)\] \[选项\] \[目标\]

其中目标可以有如下格式:

TARGET SPECIFICATION:
Can pass hostnames, IP addresses, networks, etc.
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.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: 目标勘测的手段

  • SCAN TECHNIQUES: 指定扫描的技术

  • PORT SPECIFICATION AND SCAN ORDER: 指定端口和扫描顺序

  • SERVICE/VERSION DETECTION: 服务/版本 勘测

  • OS DETECTION: 操作系统勘测

参考windows上有UI的nmap版本内置的扫描类型:


  Intense scan                  nmap -T4 -A -v www.baidu.comIntense scan plus UDP         nmap -sS -sU -T4 -A -v www.baidu.comIntense scan, all TCP ports   nmap -p 1-65535 -T4 -A -v www.baidu.comIntense scan, no ping         nmap -T4 -A -v -Pn www.baidu.comPing scan                     nmap -sn www.baidu.comQuick scan                    nmap -T4 -F www.baidu.comQuick scan plus               nmap -sV -T4 -O -F \--version-light www.baidu.comQuick traceroute              nmap -sn \--traceroute www.baidu.comRegular scan                  nmap www.baidu.comSlow comprehensive scan       nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 \--script \"default or (discovery and safe)\" www.baidu.com

利用Nmap实施网络扫描

主机发现

原理

当网络不通时,我们需要ping一下主机,检查网关是否正常,这与主机发现原理一样。当测试目标是一个网络时,在线的主机才是我们的用主机发现的目标,nmap中提供了许多主机发现的方法,大多与TCP/IP协议簇中的协议有关。

  • 1、跳过ping扫描阶段:

nmap进行其他扫描之前都会对目标进行一个ping扫描。如果目标对ping 扫描无反应将结束整个扫描过程。这种方法可以跳过那些没有响应的主机,从而节省大量时间,但如果目标在线只是采用某种手段屏蔽了ping 扫描,从而躲过我们的其他扫描操作,我们可以指定无论目标是否响应ping 扫描,毒药将整个扫描过程完整的参数呈现出来;如 nmap -PN 192.168.169.131。

  • 2、仅使用ping协议进行主机发现:

有时需要对大量的主机扫描,nmap如果对一个目标主机采取各种手段进行扫描会花费大量时间。这时我们只对目标主机进行扫描。如 nmap -sP 192.168.169.131。

  • 3、使用ARP协议进行主机发现:

当目标主机与我们处于同一网段时,使用ARP协议扫描是最佳选择。不仅速度快,扫描结果精准。因为没有任何的安全措施会阻止正常的arp请求。如 nmap -PR 192.168.169.131。

  • 4、使用TCP协议进行主机发现:

TCP协议主要是三次握手构成,主动端发送syn报文,被动端回应syn+ack报文,然后主动端回应ack。利用此过程,nmap向目标发送syn报文,如果对方回应了syn+ack则说明在线。半开扫描,如nmap -sS 192.168.169.131。全开扫描,如nmap -sT 192.168.169.131。

  • 5、使用UDP协议进行主机发现:

UDP相比较TCP简单,但扫描时并不比TCP协议方便,而且花费时间长,因此这种扫描不常用。如nmap -sU 192.168.169.131。

用法

通常主机发现并不单独使用,而只是作为端口扫描、版本侦测、OS侦测先行步骤。而在某些特殊应用(例如确定大型局域网内活动主机的数量),可能会单独专门适用主机发现功能来完成。

HOST DISCOVERY:-sL: List Scan - simply list targets to scan-sn: Ping Scan - disable port scan-Pn: Treat all hosts as online -- skip host discovery-PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes-PO[protocol list]: IP Protocol Ping-n/-R: Never do DNS resolution/Always resolve [default: sometimes]--dns-servers <serv1[,serv2],...>: Specify custom DNS servers--system-dns: Use OS's DNS resolver--traceroute: Trace hop path to each host

其中,比较常用的使用的是-sn,表示只单独进行主机发现过程;-Pn表示直接跳过主机发现而进行端口扫描等高级操作(如果已经确知目标主机已经开启,可用该选项);-n,如果不想使用DNS或reverse DNS解析,那么可以使用该选项。

操作

命令:nmap -sn IP

端口扫描

原理

nmap向目标主机发送报文并根据返回报文从而认定端口的6种状态。(注意:这六种状态只是namp认为的端口状态,例如:有些主机或者防火墙会返回一些不可靠的报文从而妨碍nmap对端口开放问题的确认)。

  • Open(开放的):端口处于开放状态,意味着目标机器上的应用程序正在该端口监听连接/报文;

  • Closed(关闭的):端口处于关闭状态。这里我们值得注意的是关闭的端口也是可访问的,只是该端口没有应用程序在它上面监听,但是他们随时可能开放;

  • Filtered(过滤的):由于包过滤阻止探测报文到达端口, Nmap 无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙;

  • Unfiltered(未被过滤的):意味着端口可访问,但 Nmap 不能确定它是开放还是关闭。这种状态和filtered的区别在于:unfiltered的端口能被nmap访问,但是nmap根据返回的报文无法确定端口的开放状态,而filtered的端口直接就没能够被nmap访问。端口被定义为Unfilterd只会发生在TCP ack扫描类型时当返回RST的报文。而端口被定义为filtered 状态的原因是是报文被防火墙设备,路由器规则,或者防火墙软件拦截,无法送达到端口,这通常表现为发送NMAP的主机收到ICMP报错报文,或者主机通过多次重复发送没有收到任何回应)。

  • Open|filtered状态:这种状态主要是nmap无法区别端口处于open状态还是filtered状态。这种状态只会出现在open端口对报文不做回应的扫描类型中,如:udp,ip protocol ,TCP null,fin,和xmas扫描类型。

  • Closed|filtered状态:这种状态主要出现在nmap无法区分端口处于closed还是filtered时。

用法

扫描方式选项

SCAN TECHNIQUES:-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans-sU: UDP Scan-sN/sF/sX: TCP Null, FIN, and Xmas scans--scanflags <flags>: Customize TCP scan flags-sI <zombie host[:probeport]>: Idle scan-sY/sZ: SCTP INIT/COOKIE-ECHO scans-sO: IP protocol scan-b <FTP relay host>: FTP bounce scan

端口参数与扫描顺序:

PORT SPECIFICATION AND SCAN ORDER:-p <port ranges>: Only scan specified portsEx: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9--exclude-ports <port ranges>: Exclude the specified ports from scanning-F: Fast mode - Scan fewer ports than the default scan-r: Scan ports consecutively - don't randomize--top-ports <number>: Scan <number> most common ports--port-ratio <ratio>: Scan ports more common than <ratio>

操作

命令:nmap --sS --sU --T4 --top-ports 300 www.baidu.com

参数:

-sS表示使用TCP SYN方式扫描TCP端口;

-sU表示扫描UDP端口;

-T4表示时间级别配置4级;

–top-ports 300表示扫描最有可能开放的300个端口(TCP和UDP分别有300个端口)。

从上图中,我们看到扫描结果,在扫描的300个端口中,有298个是关闭的;开放的 分别是80和443端口。

版本侦测

原理

版本侦测主要分为以下几个步骤:

  • 首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。

  • 如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的totalwaitms)。通常在等待时间内,会接收到目标机发送的"WelcomeBanner"信息。nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。

  • 如果通过"Welcome Banner"无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。

  • 如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。

  • 如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。

  • 如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务。

用法

SERVICE/VERSION DETECTION:-sV: Probe open ports to determine service/version info--version-intensity <level>: Set from 0 (light) to 9 (try all probes)--version-light: Limit to most likely probes (intensity 2)--version-all: Try every single probe (intensity 9)--version-trace: Show detailed version scan activity (for debugging)

操作

命令:nmap --sV www.baidu.com

从图中可知,本次一个扫描了1000个端口,其中有998个是关闭的。

对开开放的两个端口上的服务进行版本侦测的结如方框内显示。

OS侦测

原理

Nmap使用TCP/IP协议栈指纹来识别不同的操作系统和设备。在RFC规范中,有些地方对TCP/IP的实现并没有强制规定,由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根据这些细节上的差异来判断操作系统的类型的。

具体实现方式如下:

  • Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中)。将此指纹数据库作为进行指纹对比的样本库。

  • 分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。

  • 将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。

用法

OS DETECTION:
-O: Enable OS detection
--osscan-limit: Limit OS detection to promising targets
--osscan-guess: Guess OS more aggressively

操作

命令:nmap --O 127.0.0.1

从上图中可看到,指定-O选项后先进行主机发现与端口扫描,根据扫描到端口来进行进一步的OS侦测。获取的结果信息有设备类型,操作系统类型,操作系统的CPE描述,操作系统细节,网络距离等。

最后综合上述命令,对www.baidu.com执行一次加强的快速扫描:

命令: nmap -sV -T4 -O -F --version-light www.cug.edu.cn

通过上述结果,可以看出:

本次侦测共用时5.38s。扫描了一个IP的100个端口,该主机在线。扫描出5个运行中的服务,类型如上图。暂时无法准确判断操作系统的类型,但是最有可能是FreeBSD和PC-BSD,对应的概率如上图所示。

参考文献

  1. 张星亮,张洪波.网络安全扫描工具的比较与分析[J].电脑知识与技术,2018,14(11):56-57.DOI:10.14004/j.cnki.ckt.2018.1200.

  2. 俞海.基于Nmap网络扫描的场景仿真实验[J].绍兴文理学院学报(自然科学),2017,37(01):28-31.DOI:10.16169/j.issn.1008-293x.k.2017.07.005.

Nmap的介绍、安装 并进行网络扫描相关推荐

  1. NMAP网络扫描工具的安装与使用

    简介 NMAP是一款流行的网络扫描和嗅探工具也是一个强大的端口扫描类安全测评工具,被广泛应用在黑客领域做漏洞探测以及安全扫描,更多的nmap是一个好用的网络工具,在生产和开发中也经常用到,主要做端口开 ...

  2. Kali Linux网络扫描教程(内部资料)

    Kali Linux网络扫描教程(内部资料) 试读样张:http://pan.baidu.com/s/1qWuNSYw 前  言 Kali Linux是业内最知名的安全渗透测试专用操作系统.它的前身就 ...

  3. kali linux网络扫描~网络扫描基础技术

    理论知识 ICMP是TCP/IP协议簇的一个子协议,用于在IP主机.路由器之间传递控制消息,控制消息是指网络通不通.主机是否可达.路由是否可用等网络本身的消息 标准ICMP扫描就是简单的通过向目标主机 ...

  4. 【2023最新版】超详细NMAP安装保姆级教程,Nmap的介绍、功能并进行网络扫描,收藏这一篇就够了

    简介 从诞生之初,Nmap就一直是网络发现和攻击界面测绘的首选工具.从主机发现和端口扫描,到操作系统检测和IDS规避/欺骗,Nmap是大大小小黑客行动的基本工具. 为了绘制网络拓扑图,Nmap的发送特 ...

  5. 网络扫描工具Nmap使用教程(1)

    http://blog.sina.com.cn/s/blog_a1790a3701012tmo.html 1.简介 是什么:Nmap ("Network Mapper") 是一个免 ...

  6. 2021-09-10 网安实验-漏洞扫描与利用之Nmap网络扫描脚本使用

    一:nmap脚本介绍 1.基本使用 在使用nmap时,通过在命令中加–scritp就可以调用nmap的脚本来配合扫描.Nmap自带后已经安装了很多脚本,kali中的路径如下所示 auth 处理身份验证 ...

  7. 网络扫描和嗅探工具包 Nmap

    Nmap 是一款命令行网络探测工具,支持 ping 扫描,以确定网络主机.端口扫描技术和TCP/IP指纹识别远程设备识别. Nmap 可确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这 ...

  8. Nmap网络扫描使用手册(from it8g)

    原贴:http://www.it8g.com/AnQuan/200808/281.htm Nmap最初被开发用于允许系统管理员察看一个大的网络系统有哪些主机以及其上运行何种服务,通过TCP/IP来甄别 ...

  9. Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap

    Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap 网络扫描和嗅探工具--Nmap Nmap也就网络映射器(Network Mapper),是一个免费开放的网络扫描和嗅探工具.该工具可以扫描 ...

最新文章

  1. Linked List Cycle II
  2. 软件开发管理规范流程图
  3. 织梦 百度sitemap制作教程
  4. python【蓝桥杯vip练习题库】ADV-359分解质因数
  5. 32GSSD组建RAID0后对硬盘的加速效果
  6. IOS开发学习笔记011-xcode使用技巧
  7. 忍“乳”负重,身材好的女孩子究竟有多不容易?我从科学的角度算出来了……...
  8. Linux进程间通信:共享内存与管道
  9. 数据库——Oracle(1)
  10. CSDN资源下载积分规则
  11. 如何通过OCJP认证考试
  12. JS 提取字符串中的数字 正则表达式去除非数字字符
  13. C#工厂模式——简单工厂、工厂方法、反射+简单工厂、抽象工厂
  14. Makefile wildcard函数说明
  15. 密歇根大学张阳团队开发全球首个蛋白质和RNA分子通用结构比对算法
  16. 移动支付模式方面的技术
  17. 华为服务器修改管理网口,怎么设置华为服务器管理口
  18. Multi-task learning of facial landmarks and attributes with Tensorflow(一)
  19. 关于向量的模和向量的范数的理解
  20. javascript中字符串的‘单‘与“双“引号

热门文章

  1. 基于Cookie信息的互联网精准广告定向技术研究
  2. 常见的规则引擎(Drools,RuleBook,Easy Rules等)对比
  3. 银行使用计算机实现个人存款,银行使用计算机实现个人存款业务的通存通兑,属于计算机在什么方面的应用...
  4. 【Python CUDA版】河北工业大学计算机图像处理实验五:图像分割
  5. 撩几句BIM的好处及用处
  6. laravel框架偶尔会出现SQLSTATE[HY000] [1045] Access denied for user ‘forge‘@‘localhost‘报错,怎么解决
  7. Matlab高光谱遥感数据处理
  8. 【bzoj1115】 [POI2009]石子游戏Kam
  9. PrepareStatement和Statement的区别
  10. 计算机专业学生新学期必读好书推荐