6.1. 扫描端口

未匹配的标注
  • ping扫描用于检查存活系统
  • 端口扫描是针对个体IP地址进行的扫描,该扫描试图识别某个特定系统上开启和关闭的端口,利用端口进行后续的测试
  • 漏洞扫描寻找环境中的弱点或问题,并基于扫描的结果生成报告
    上述每种扫描方法均可有效的单独使用,但只有结合运用时,才能真正令他们发挥各自的强大功能,每种扫描类型都是拼图的一个碎片,可将它们拼接在一起,获得整体目标的较清晰地视图,后续的攻击和行动就会更准确

    检查存活系统

      使用ping命令检查系统是否处于活动状态。(系统命令行操作)
    ping <目标IP> 或 ping<目标主机名(域名)>
      注:DNS可能关闭从而不允许主机按名称解析,但IP却仍然可以。
      ping当然是一个很棒的工具,对多个主机来说的话ping就略显笨拙,要快速方便地ping多个系统时可以借助两个工具Angrynmap
  • Angry IP Scanner
    记学习渗透测试之扫描和枚举
  • nmap可视化界面
    记学习渗透测试之扫描和枚举
  nmap通过命令行执行ping操作(nmap有图形化zenmap界面,但部分功能需要借助命令行)
Nmap -sP IP地址(例:192.168.0.1)或主机范围(例:192.168.0.1-255
  注:命令大小写敏感,需要严格按原样输出,该命令也可用于Linux、Unix以及Mac OS系统上。

执行端口扫描

  端口扫描之前我们来了解一下不同的TCP标志位

记学习渗透测试之扫描和枚举

  有131070个端口可供应用程序和服务使用,但实际上TCP和UDP各有65535个端口。TCP与UDP协议不在此赘述,有需要请自行百度

 全开扫描(端口扫描)

  使用全开连接的好处是,在扫描过程中能够立即获得该端口打开或者关闭状态的正反馈,但全开扫描有一个缺点,那就是易于被探测到。(使用namp命令行)
nmap -sT -v <目标IP地址>

 隐蔽扫描(半开扫描)

  • 全开扫描使用三次握手,而半开扫描仅进行前两步,最后一步只发送一个RST包,连接没有完全建立就关闭了。
  • 半开扫描的优点是降低了触发检测机制的可能性;缺点是与全开扫描相比可靠性略有不及,半开扫描另一个缺点是某些情况下会略慢,不过这一影响通常很小。
nmap -sS -v <目标IP地址>

 圣诞树扫描

   发送客户端的数据包同时设置了SYN、PSH、URG、FIN等标志位,扫描过程如图所示。

记学习渗透测试之扫描和枚举

nmap -sX -v <目标IP地址>

 FIN扫描

   这一行为的结果是,如果端口是关闭的,则目标系统不会返回响应,但如果端口是打开的,则会返回一个RST包。扫描过程如图所示。

记学习渗透测试之扫描和枚举

Nmap -sF <目标IP地址> 

 NULL扫描

   NULL扫描另一种有趣的扫描,它与圣诞树扫描正好相反。执行NULL扫描时,发送一个未设置任何标志的数据包,可根据返回结果判断端口是打开的还是关闭的。打开的端口将不会返回响应,关闭的端口将同样返回一个RST包。扫描过程如图所示。

记学习渗透测试之扫描和枚举

nmap -sN <目标IP地址>

 ACK扫描

   ACK扫描用于测试是否存在防火墙形势的过滤器。防火墙会对流量进行过滤。如果这个发给扫描目标的ACK请求没有返回响应,说明防火墙存在且正在进行过滤;而收到的扫描目标返回的RST包则说明没有进行过滤。扫描过程如图所示。

记学习渗透测试之扫描和枚举

nmap -sA <目标IP地址>

 分段扫描

   说到防火墙和其他防御机制,怎样才能避开或骗过这些设备呢?使用数据包分段即为方法之一。分段将一个数据包分解成多个片段,防止监测设备发现原始的未分段数据包的意图。可将其想象成一副大图画切分成许多小块的拼图玩具,如果预先不知道原始图画的模样,那就只是一堆碎片,必须重新做装起来才能看到图画。分段操作的示意图如图所示。

记学习渗透测试之扫描和枚举

   注:最大传输单元(MTU)是指将数据包分段之前所能达到的最大尺寸。以太网的MTU是150,当网络设备遇到大于MTU的数据包时,将可能有两种输出。
   如果该数据包设置了“不分段”标志位,设备将丢弃数据包并回复错误信息。
   如果该数据包未设置“不分段”标志位,设备将把数据包分成相同但较小的分段,以适应链路对MTU的要求。
   现在介绍如何获得主机间链路的MTU,此处以WEB站点为例。下面的示例中将测试到samus.com的MTU。要实现该目标,需要使用带-f和-l开关的ping命令,前者表示不分段,后者用于指定数据包大小。
   按照一般方式ping的话,将看到如下结果

记学习渗透测试之扫描和枚举

   以上是常规输出,如果想确定MTU该怎么做?在Windows命令提示符中,输入以下命令并按回车:
ping -f -l 1472 www.baidu.com
    通常,该操作会返回一条信息,表明数据包需要被分段。此时,将值1472减去一定值再进行操作,找到两个数据,一个不会返回需要拆分的值+1后另一个会返回需要拆分,那么这个不会返回需要拆分的值就是最大MTU

记学习渗透测试之扫描和枚举

   获取了该数值以后,将其加上28即为无需分段的最大MTU尺寸。如果在端口扫描时创建的数据包尺寸大于该值,就需要对该数据包分段。加上的28是TCP/IP协议在数据包中附加的28个字节,因此如果之前测得的值是1472,加上28后就将重现1500字节
   在nmap中,如果要对数据包分段,可使用-f开关,方法如下
nmap -sS -f <目标IP地址>

 UDP扫描

   之前的扫描均以TCP为例且仅适用TCP协议,UDP协议就需要改变思路和方法了,UDP在流量发送出去以后就假定他已被接收到。,由于UDP没有标志位和响应,UDP必须采用不同的方法
   端口打开->无响应
   端口关闭->返回ICMP端口不可访问消息

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~