Nmap渗透测试详解(一)

如今,Nmap享有“扫描之王”盛誉。

Nmap诞生于1996年。在这个信息爆炸的互联网时代,Nmap依然保持着充沛的活力以及旺盛的生命力。原因如下:

知名度高:只要是黑客,肯定知道Nmap,否则就不能称为一名黑客。Nmap绝对是著名的网络安全工具。

功能强大:也许Nmap 在不少人眼里是一个网络端口扫描以及远程操作系统、服务鉴别工具。其实除了这些基础功能外,Nmap还具备相对完整的信息收集、数据库渗透、网络渗透测试等功能。Nmap 在强大的脚本支持下几乎可以做到我们想做的任何网络扫描测试

Nmap介绍

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

Nmap的基本功能有3个,一是探测一组主机是否在线,其次是扫描主机端口,嗅探所提供的网络服务,还可以推断主机所用的操作系统。Nmap 可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap还允许用户定制扫描技巧。通常,一个简单的使用ICMP协议的Ping 操作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所使用的操作系统;还可以将所有探测结果记录到各种格式的日志里,供进一步分析操作。

Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使用的选项。Open(开放的)意味着目标机器上的应用程序正在该端口监听连接/报文。Filtered(被过滤的)意味着防火墙,过滤器或者其他网络障碍阻止了该端口被访问,Nmap无法得知它是Open(开放的)还是Closed(关闭的)。Closed(关闭的)端口上面没有应用程序监听,但是它们随时可能开放。

Nmap-Script功能的使用。在Nmap的安装目录的share/nmap/scripts里,已经有多种写好的脚本提供,使用这些脚本可以轻易地发起渗透测试。

Nmap工作原理

Nmap使用TCP/IP协议栈指纹准确地判断目标主机的操作系统类型,Nmap工作原理如下:

测试 描述
T1 发送TCP数据包(Flag=SYN)到开放TCP端口
T2 发送一个空的TCP数据包到开放的TCP端口
T3 发送TCP数据包(Flag=SYN,URG,PSH,FIN)到开放的TCP端口
T4 发送TCP数据包(Flag=ACK)到开放的TCP端口
T5 发送TCP数据包(Flag=SYN)到关闭的TCP端口
T6 发送TCP数据包(Flag=ACK)到开放的TCP端口
T7 发送TCP数据包(Flag=URG,PSH,FIN)到关闭的TCP端口

Nmap对目标主机进行一系列的测试,利用测试结构建立相应目标主机的Nmap指纹,然后Nmap会对指纹进行匹配,最终输出相应的结果。

Nmap语法

Nmap固定语法格式如下:
Nmap 【空格】【选项|多选项|协议】【空格】【目标】
选项与多选项之间也是用空格进行分割的,如果某些选项需要指定某些数据,那么在这些选项与指定的数据之间也需要用空格进行分割。

注意:所有的选项与命令以及选项参数都用空格进行分割的,有时候选项与参数知己可以不用空格分割,如-p80,-p为选项,80为参数。为了让Nmap语法更加严谨,建议严格按照空格进行分割。

Nmap的图形界面工具Zenmap

Nmap不仅有命令行的输入方式,还有图形界面,极大地方便了操作。
Zenmap便是它的图形用户界面,它是一个跨平台的开源应用,不仅方便初学者使用,同时为高级使用者提供了很多高级特性。频繁的扫描能够被存储,激进型重复运行。命令行工具提供了直接与Nmap的交互操作。扫描结果能够被存储以便于时候查阅。存储的扫描可以被比较,以辨别其异同。

Nmap的基本知识点

全面扫描

选项 解释
-A(即All) 全面扫描/综合扫描,一种完整扫描目标信息的扫描方式

Nmap全面扫描的选项为-A,优点:它可以全面扫描指定IP或域名的所有端口及其目标系统信息等。缺点:它需要等待较长的时间。
如:nmap -A 192.168.126.129

扫描指定段

在Nmap里我们可以指定扫描一个C段,这个功能不需要其他额外的选项,只需要使用“-”连接即可
如:nmap 192.168.126.1-200(扫描192.168.126.1到192.168.126.200这个段)

一次简单的扫描

该扫描方式可以针对IP或域名进行扫描,扫描方式迅速,可以很方便地发现目标端口的开放情况以及主机在线情况。
如:nmap 192.168.126.129

Ping扫描

选项 解释
-sP(即scan ping缩写) Ping扫描

Ping扫描只进行Ping,然后显示出在线的主机。扫描时只需要加入-sP选项就可以很方便地启用Ping扫描,使用该选项时,Nmap仅进行Ping扫描,然后会显出做出相应的主机,使用该选项扫描可以轻易地获取目标信息而不会被轻易发现。在默认情况下,Nmap会发送一个ICMP回声请求和一个TCP报文到目标端口。Ping扫描的优点是不会返回太多的信息造成对结果的分析,并且这是一个很高效的扫描方式。
如:nmap -sP 192.168.126.129/24

无Ping扫描

选项 解释
-P0(0表示无,即无Ping扫描) 无Ping扫描

无Ping扫描通常用于防火墙禁止Ping的情况下,它能确定正在运行的机器。默认情况下,Nmap只对正在运行的主机进行高强度的探测,如端口扫描、版本探测或者操作系统探测用-P0禁止主机发现会让Nmap对每一个指定的目标IP地址进行所要求的扫描,这可以穿透防火墙,也可以避免被防火墙发现。需要注意的是,-P0的第二个字符是数字0而不是字母o。
注意:无Ping扫描可以躲避某些防火墙的防护,可以在目标主机禁止Ping的情况下采用。
格式为:“nmap -P0 【协议1,协议2】【目标】”

协议1 ICMP协议
协议2 IGMP协议
协议6 TCP协议
协议17 UDP协议

如果没有指定任何协议,Nmap会默认使用协议1,协议2进行扫描
如:nmap -P0 192.168.126.129

若想知道这些协议是如何判断目标主机是否存活可以使用 --packet-trace选项
如:nmap -P0 --packet-trace scanme.nmap.org

指定TCP,UDP,IGMP协议向目标主机发送包并判断目标主机是否在线
如:nmap -P0 6,17,2 --packet-trace scanme.nmap.org

TCP SYN Ping扫描

选项 解释
-PS(即Ping SYN缩写) TCP SYN Ping扫描

TCP协议是面向连接的、可靠的传输层协议,允许发送和接收字节流形式的数据,为了让服务器和客户端以不同的速度产生和消费数据,TCP提供了发送和接收两个缓冲区。TCP提供全双工服务,数据同时能双向流动。通信的每一方都有发送和接收两个缓冲区,可以双向发送数据。TCP在报文里加上一个递进的确认序列号来告诉发送者,接收者期望收到的下一个字节,如果在规定时间内,没有收到关于这个包的确认响应,则重新发送此包,这保证了TCP为一种可靠的传输层协议。

-PS选项发送一个设置了SYN标志位的空TCP报文。默认目的端口为80(可以通过改变nmap.h)文件里的DEFAULT_TCP_PROBE_PORT值进行配置,但不同的端口也可以作为选项指定,甚至可以指定一个以逗号分隔的端口列表(如_PS22,23,25,80,115,3306,3389),在这种情况下,每个端口会并发地扫描。
通常情况下,Nmap默认Ping扫描是采用TCP ACK和ICMP Echo请求对目标进行是否存活的响应,当目标主机的防火墙阻止这些请求时,我们可以采用TCP SYN Ping扫描来进行对目标主机存活的判断。

如:nmap -PS 192.168.126.129

TCP ACK Ping扫描

选项 解释
-PA(即Ping ACK 缩写) TCP ACK Ping扫描

使用-PA选项可以进行TCP ACK Png扫描,它与TCP SYN Ping扫描是类似的,唯一的区别是设置TCP的标志位是ACK而不是SYN,使用这类方式扫描可以探测组织SYN包或ICMP Echo请求的主机。
很多防火墙会封锁SYN报文,所以Nmap提供了TCP SYN Ping扫描与TCP ACK Ping扫描
两种探测方式,这两种方式可极大地提高通过防火墙的概率,我们还可同时采用-PS与-SA来既发送SYN又发送ACK。在采用TCP ACK Ping扫描时,Nmap会发送一个ACK标志的TCP包给目标主机,若目标主机不是存活状态则不响应请求,若目标主机在线则会返回一个RST包。

进行TCP ACK Ping扫描:
如:nmap -PA 192.168.126.129

同时使用-PS与-PA选项:
如:nmap -PA -PS 192.168.126.129

UDP Ping扫描

选项 解释
-PU (即Ping UDP缩写) UDP Ping扫描

-PU选项是发送一个空的UDP报文到指定端口。若不指定端口则默认为40125.该默认值可以通过在编译时改变nmap.h文件里的DEFAULT-UDP-PROBE-PORT值进行配置。默认采用这样一个奇怪的端口是因为对于开放端口,很少会使用这样的扫描方式。

采用UDP Ping扫描时Nmap会发送一个空的UDP包到目标主机,若目标主机响应则返回一个ICMP端口不可达错误,若目标主机不是存活状态则会返回不同的ICMP错误信息。

如:nmap -PU 192.168.126.129

ICMP Ping Types扫描

选项 解释
-PE(即ICMP Echo缩写) 向目标发送ICMP Echo数据包
-PP(即ICMP Ping缩写) ICMP时间戳Ping扫描
-PM(即ICMP Mask缩写) ICMP地址掩码Ping扫描

使用-PE;-PP;-PM选项可以进行ICMP Ping Types扫描。ICMP(Internet Control Message Protocol)是Internet控制报文协议。它是TCP/IP协议的一个子协议,用于在IP主机、路由器之间传递控制信息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

Nmap发送一个ICMP type8(回声请求)报文到目标IP地址,从运行的主机得到一个type0(回声响应)报文。

-PE选项简单地来说是通过向目标发送ICMP Echo数据包来探测目标主机是否在线,正因为许多主机的防火墙会禁止这些报文,所以仅仅ICMP扫描对于互联网上的目标通常是不够的。但对于系统管理员监视一个内部网络,它们可能是实际有效的途径。使用选项打开该回声请求功能。

-PP选项是ICMP时间戳Ping扫描,虽然大多数的防火墙配置不允许ICMP Echo请求,但由于配置不当可能回复ICMP时间戳请求,所以可以使用ICMP时间戳来确定目标主机是否存活。

-PM选项可以进行ICMP地址掩码Ping扫描。此扫描方式会试图用备选的ICMP等级Ping指定主机,通常有不错的穿透防火墙的效果。

(1)使用ICMP Echo扫描方式
如:nmap -PE 192.168.126.129

(2)使用ICMP时间戳Ping扫描
如:nmap -PP 192.168.126.129

(3)使用ICMP地址掩码Ping 扫描
如:nmap -PM 192.168.126.129

ARP Ping扫描

选项 解释
-PR (即Ping ARP缩写) ARP Ping扫描

-PR选项通常在扫描局域网时可采用。地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议,其功能是:主机将ARP请求广播到网络上的所有主机,并接收返回消息,确定目标IP地址的物理地址,同时将IP地址和硬件地址存入本机ARP缓存内,下次请求时直接查询ARP缓存。

ARP Ping扫描是Nmap对目标进行一个ARP Ping的过程,尤其在内网的情况下,采用ARP Ping扫描方式是最有效的,在本地局域网内防火墙不会禁止ARP请求,这就导致它比其他Ping扫描都更加高效,在内网里采用ARP Ping是非常有效的。在默认情况下,若Nmap发现目标主机就在它所在的局域网上,会进行ARP扫描。即使指定了不同的Ping类型(如-PI或者-PS),Nmap也会对任何相同局域网上的目标机使用ARP。若不想用ARP 扫描,可以指定–send-ip。

如:nmap -PR 192.168.126.129

列表扫描

选项 解释
-sL (即scan List缩写) 列表扫描

列表扫描是主机发现的退化形式,它仅仅列出指定网络上的每台主机,不发送任何报文到目标主机。默认情况下,Nmap仍然会对主机进行反向域名解析以获取它们的名字。

如:nmap -sL 192.168.126.129/24

扫描一个IPv6地址

选项 解释
-6(即IPv6缩写) 扫描IPv6地址

IPv6是Internet Protocol Version 6 的缩写,是IPv4的下一代IP协议。
Nmap很早就支持IPv6的扫描,在Nmap选项后加入-6选项就可以对IPv6扫描。

IPv6将会逐渐替换IPv4,但在一段相当长的时间内,IPv4还会大量地存在。若需要扫描IPv6地址,则需要在语句的IPv6目标地址前面加上-6选项。

如:nmap -6 fe80::20c:29ff:;fee0:2e76

路由跟踪

选项 解释
–traceroute 路由跟踪

采用–traceroute选项即可进行路由跟踪,它可以帮助用户了解网路偶的同行情况,通过此选项可以轻松地查出从本地计算机到目标之间所经过的网络节点,并可以看到通过各个节点的时间。

如:nmap --traceroute www.baidu.com

后面内容请见Nmap渗透测试详解(二)。

Nmap渗透测试详解(一)相关推荐

  1. 《Kali Linux高级渗透测试原书第2版》网络渗透测试技术书 无线网络渗透测试详解 黑客攻击与防范实战从入门到精通书

    内容简介: KaliLinux面向专业的渗透测试和审计,集成了大量挑选的检测工具.本书在KaliLinux平台上从一个攻击者的角度来审视网络框架,详细介绍了攻击者"杀链"采取的具体 ...

  2. 《Nmap渗透测试指南》目录—导读

    内容提要 Nmap渗透测试指南 本书专门介绍Nmap渗透测试的有关内容,全书共分12章,从最基础的Nmap下载.安装开始介绍,由浅入深地对Nmap的功能作了完整详细的说明.同时书中还包括了大量的实践案 ...

  3. 《Nmap渗透测试指南》—第6章6.4节IP欺骗

    本节书摘来自异步社区<Nmap渗透测试指南>一书中的第6章6.4节IP欺骗,作者 商广明,更多章节内容可以访问云栖社区"异步社区"公众号查看. 6.4 IP欺骗 表6. ...

  4. 《Nmap渗透测试指南》—第1章1.2节Windows下安装Nmap

    本节书摘来自异步社区<Nmap渗透测试指南>一书中的第1章1.2节Windows下安装Nmap,作者 商广明,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1. ...

  5. mysql ssd 性能测试 写入_MySQL服务器的SSD性能问题分析和测试详解

    [问题] 我们有台HP的服务器,SSD在写IOPS约5000时,%util达到80%以上,那么这块SSD的性能究竟有没有问题,为解决这个问题做了下面测试. [工具] blktrace是linux下用来 ...

  6. batchnorm2d参数 torch_pytorch方法测试详解——归一化(BatchNorm2d)

    测试代码: import torch import torch.nn as nn m = nn.BatchNorm2d(2,affine=True) #权重w和偏重将被使用 input = torch ...

  7. 《Nmap渗透测试指南》—第2章2.2节使用Zenmap进行扫描

    本节书摘来自异步社区<Nmap渗透测试指南>一书中的第2章2.2节使用Zenmap进行扫描,作者 商广明,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 ...

  8. nmap常用参数详解

    nmap常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 借用英雄联盟的一个英雄赵信的一句话:"即使敌众我寡,末将亦能万军丛中取敌将首级!".三国关羽 ...

  9. 《Nmap渗透测试指南》—第7章7.8节后台打印机服务漏洞

    本节书摘来自异步社区<Nmap渗透测试指南>一书中的第7章7.8节后台打印机服务漏洞,作者 商广明,更多章节内容可以访问云栖社区"异步社区"公众号查看. 7.8 后台打 ...

最新文章

  1. Ubuntu下添加新分区并设置挂载点
  2. 滑坡泥石流的防御措施_滑坡泥石流防御
  3. c语言更改编译时字体,c习题编译时出现空的字符常量,怎么修改?
  4. Blazor编辑表单状态控件
  5. 渗透工具—反制爬虫之Burp Suite RCE
  6. node+读写文件_python高级:2.文件读写part2
  7. app 怎么实现后端对前端的通知功能_app测试流程
  8. java正则表达式的语法详解及常用方法
  9. 环境猫室内监测仪——您的空气智能管家
  10. 利用Python开发一个微信定时发送器
  11. 校园转转二手市场源码/Java二手交易市场整站源码
  12. 浅析GIS行业地图绘制基本要求
  13. Spring入门自学
  14. 关于React18控制台报错:ReactDOM.render is no longer supported in React 18 Use createRoot instead. Until.....
  15. 【CNN】理解卷积神经网络中的通道 channel
  16. 【数据结构】测试7 图
  17. 转载-详解功率MOS管参数
  18. shell脚本一键安装LNMP(liunx+nginx+mysql+php)环境
  19. subroutine的参数传递
  20. 黑科技 —— OTG 线

热门文章

  1. 在淘宝,我们是这样衡量代码质量的
  2. 阿里主管通知我试用期延期……
  3. 它是真实的“盗梦空间”?在这里,一切都可能是数据
  4. 阿里开发者招聘节 | 面试题01:如何实现一个高效的单向链表逆序输出?
  5. 开发跨平台app推荐React Native还是flutter?
  6. 开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起!
  7. 阿里云推出“磐久”云原生服务器系列 能效和交付效率大幅提升
  8. Nutanix企业云助力嘉里大通提升核心竞争力
  9. SDN精华问答 | 使用SDN的一个例子
  10. 为什么公司宁愿花25K重新招人,也不愿花20K留住老员工?