Note3:nmap扫描基础 – 作者:redsnow

1.基础概念

  1. 计算机网络体系结构

图片[1]-Note3:nmap扫描基础 – 作者:redsnow-安全小百科

     b.ICMP(Internet Control Message Protocol) 网络控制消息协议。网络层中IPv4协议簇中的一个子协议,用于在IP主机、路由之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络消息,ICMP依靠IP协议来完成其任务,所以其报文头部要封装IP头部。形象地来说,ICMP是IP协议的一个小弟,他负责帮大哥IP协议探路,常用的Ping和tracert都是基于ICMP这位小弟来完成的。

    c.TCP数据段格式。TCP通过数据段的交互来建立连接、传输数据、发出确认、进行差错控制、流量控制及关闭连接。采用大多数报文的封装方式:“数据段头”+“数据”的结构,数据段头用来控制tcp信息。了解数据段头的各个字段含义,重点确认号,ACK和SYN。

图片[2]-Note3:nmap扫描基础 – 作者:redsnow-安全小百科

 

        d.ARP(Address Resolution Protocol,地址解析协议) 网络层的协议,将Ip地址解析为物理地址的协议,了解ARP地址解析原理。

2.主机扫描

给出实例:

nmap 192.168.10.2    扫描192.168.10.2的主机

nmap 192.168.10.0/24  扫描192.168.10.0 和192.168.10.255 之间的256台主机

nmap 192.168.10.1-254  扫描并略过在该范围内以.0和.255结束的地址

nmap 192.168.10.2,www.freebuf.com,192.168.10.0/24 Nmap命令行接受多个主机说明,它们不必是相同类型。

其实主机扫描也叫ping扫描,但它并不单单是利用ICMP来ping主机,用户可以通过使用列表扫描(-sL)或者 通过关闭ping (-P0)跳过ping的步骤,也可以使用多个端口把TPC SYN/ACK,UDP和ICMP 任意组合起来玩一玩。给上面的扫描实例加上下面的参数,实现不一样的扫描机制,对于网上众多的防火墙,nmap需要用到不同的扫描方式来绕开。

-sL (列表扫描):仅仅列出指定网络上的每台主机, 不发送任何报文到目标主机。

-sP (Ping扫描):系统管理员往往也很喜欢这个选项。 它可以很方便地得出 网络上有多少机器正在运行或者监视服务器是否正常运行。常常有人称它为 地毯式ping,它比ping广播地址更可靠,因为许多主机对广播请求不响应。-sP选项在默认情况下, 发送一个ICMP回声请求和一个TCP报文到80端口。如果非特权用户执行,就发送一个SYN报文 (用connect()系统调用)到目标机的80端口。

-P0 (无ping):和列表扫描一样,跳过正常的主机发现,但不是打印一个目标列表, 而是继续执行所要求的功能,就好像每个IP都是活动的。

-PS+端口号:该选项发送一个设置了SYN标志位的空TCP报文。 SYN标志位告诉对方您正试图建立一个连接。 通常目标端口是关闭的,一个RST (复位) 包会发回来。Nmap并不关心端口开放还是关闭,无论RST还是SYN/ACK响应都告诉Nmap该主机正在运行(流氓行为)

-PA+端口号:该选项发送一个设置了ACK标志位的空TCP报文。

-PU+端口号 (UDP Ping):它发送一个空的UDP报文到给定的端口。如果目标机器的端口是关闭的,UDP探测应该马上得到一个ICMP端口无法到达的回应报文。 这对于Nmap意味着该机器正在运行。 所以它默认使用了31338这样一个 极不可能被使用的端口。

-PE; -PP; -PM 标准的ICMP ping查询:对于网络探索者而言,不幸的是,许多主机和 防火墙现在封锁这些报文,而不是按期望的那样响应。因此,仅仅ICMP扫描对于互联网上的目标通常是不够的。 但对于系统管理员监视一个内部网络,它们可能是实际有效的途径。

-n (不用域名解析):告诉Nmap 永不对它发现的活动IP地址进行反向域名解析。 既然DNS一般比较慢,这可以让事情更快些。

-R (为所有目标解析域名):告诉Nmap 永远 对目标IP地址作反向域名解析。 一般只有当发现机器正在运行时才进行这项操作。

3.端口扫描

       a.nmap端口扫描的基础

许多传统的端口扫描器只列出所有端口是开放还是关闭的, Nmap的信息粒度比它们要细得多。 它把端口分成六个状态: 

open(开放的)

应用程序正在该端口接收TCP 连接或者UDP报文。

closed(关闭的)

关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听。

filtered(被过滤的)

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

unfiltered(未被过滤的)

未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。 只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。

open|filtered(开放或者被过滤的)

当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。

closed|filtered(关闭或者被过滤的)

该状态用于Nmap不能确定端口是关闭的还是被过滤的。

         b.端口扫描参数

-sS (TCP SYN扫描):SYN扫描作为默认的也是最受欢迎的扫描选项,是有充分理由的。 它执行得很快,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个 端口。 SYN扫描相对来说不张扬,不易被注意到,因为它从来不完成TCP连接。 它还可以明确可靠地区分open(开放的), closed(关闭的),和filtered(被过滤的) 状态

-sT (TCP connect()扫描):当SYN扫描不能用时,CP Connect()扫描就是默认的TCP扫描。退而求其次的选择。

-sU (UDP扫描):UDP扫描一般较慢,比TCP更困难,UDP扫描用-sU选项激活。它可以和TCP扫描如 SYN扫描 (-sS)结合使用来同时检查两种协议。

-sA (TCP ACK扫描):ACK扫描探测报文只设置ACK标志位(除非您使用 –scanflags)。当扫描未被过滤的系统时, open(开放的)和closed(关闭的) 端口 都会返回RST报文。Nmap把它们标记为 unfiltered(未被过滤的),意思是 ACK报文不能到达,但至于它们是open(开放的)或者 closed(关闭的) 无法确定。不响应的端口 或者发送特定的ICMP错误消息(类型3,代号1,2,3,9,10, 或者13)的端口,标记为 filtered(被过滤的)。

-sW (TCP窗口扫描):该扫描依赖于互联网上少数系统的实现细节, 因此您不能永远相信它。

-sM (TCP Maimon扫描):探测报文是FIN/ACK。

–scanflags (定制的TCP扫描):

–scanflags选项允许您通过指定任意TCP标志位来设计您自己的扫描。 让您的创造力流动,躲开那些仅靠本手册添加规则的入侵检测系统!

–scanflags选项可以是一个数字标记值如9 (PSH和FIN), 但使用字符名更容易些。 只要是URG, ACK,PSH, RST,SYN,and FIN的任何组合就行。例如,–scanflags URGACKPSHRSTSYNFIN设置了所有标志位,但是这对扫描没有太大用处。 标志位的顺序不重要。

除了设置需要的标志位,您也可以设置 TCP扫描类型(如-sA或者-sF)。 那个基本类型告诉Nmap怎样解释响应。例如, SYN扫描认为没有响应意味着 filtered端口,而FIN扫描则认为是 open|filtered。 除了使用您指定的TCP标记位,Nmap会和基本扫描类型一样工作。 如果您不指定基本类型,就使用SYN扫描。

4.指定端口扫描顺序

-p <port ranges> (只扫描指定的端口):比如-p U:53,111,137,T:21-25,80,139,8080 扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。注意,要既扫描 UDP又扫描TCP,您必须指定 -sU ,以及至少一个TCP扫描类型(如 -sS,-sF,或者 -sT)。

-F (快速 (有限的端口) 扫描)

-r (不要按随机顺序扫描端口)

默认情况下,Nmap按随机顺序扫描端口 (除了出于效率的考虑,常用的端口前移)。这种随机化通常都是受欢迎的, 但您也可以指定-r来顺序端口扫描。

5.端口运行的服务和版本扫描

-sV (版本探测):打开版本探测。 您也可以用-A同时打开操作系统探测和版本探测。

6.相关工具和下载链接:无

未完,后面会继续更新,有关nmap的其它扫描参数和实际应用截图~

 

 

 

 

来源:freebuf.com 2020-08-01 23:22:08 by: redsnow

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论