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
发起讨论 只看当前版本


暂无话题~