《网络攻防技术(第2版)》 —2.3 网络扫描

举报
华章计算机 发表于 2019/12/15 21:46:50 2019/12/15
【摘要】 本节书摘来自华章计算机《网络攻防技术(第2版)》 一书中第2章,第2.3.1节,作者是朱俊虎,奚 琪 张连成 周天阳 曹 琰 颜学雄 彭建山 邱 菡 胡雪丽 尹中旭 秦艳锋 王清贤 主审。

2.3 网络扫描

上述各种利用公开服务所进行的信息收集,多数是攻击者在目标网络的“周边”或者“外围”进行的刺探。在对目标的周边环境有了大体的了解之后,攻击者就会直接对目标开展行动,常用的方法就是扫描。

扫描的基本思想是探测尽可能多的接听者,并通过对方的反馈找到符合要求的对象。比如,广告就是我们在日常生活中接触得最多的一种“扫描”,无论你是否是某种商品的客户,都有可能看到或听到这种商品的广告。如果你对它感兴趣,则可能对广告做出反应。广告商通过“扫描”发掘出商品潜在的客户。扫描方法在网络攻击或渗透测试中大致分为两类:一类是主动扫描,它通过向目标发送探测数据包获得的回应来获得目标的信息;另一类是被动扫描,它不主动向外发送数据包,只是通过捕获网络内传输的数据包来获得目标的信息。这两类方法都可应用于攻击前期和攻击过程中的信息扫描,包括主机扫描、端口扫描和系统类型扫描。被动扫描通过嗅探等方式实现,嗅探技术将在第7章详细描述,本节重点对主动扫描技术进行介绍。

根据扫描的对象,可以将主动扫描分为主机扫描、端口扫描和系统类型扫描。

主机扫描:查看目标网络中有哪些主机是存活的。

端口扫描:查看存活的主机运行了哪些服务,比如WWW、FTP、Telnet、Email等。服务的信息对于攻击者而言有着重要的意义,因为一个服务即一个潜在的入侵通道。

系统类型扫描:查看目标主机运行的操作系统类型及版本,如Windows、Linux、Mac OS、iOS、Android等。

下面将对这些扫描技术进行详细讨论。

2.3.1 主机扫描

1. 使用ICMP扫描

对于主机状态,首先要了解的就是该主机是否连接到了网络上,能否和该主机正常通信。常用的网络实用工具Ping可以完成这一任务。Ping是很多操作系统都会携带的一个网络诊断的实用工具,它主要用来查看网络上的一台主机是否存活。比如,要在Windows上运行Ping程序判断本机是否能和10.0.0.20连通,可以使用如下命令:

C:\>ping 10.0.0.20

Pinging 10.0.0.20 with 32 bytes of data:

Reply from 10.0.0.20: bytes=32 time<10ms TTL=128

Reply from 10.0.0.20: bytes=32 time<10ms TTL=128

Reply from 10.0.0.20: bytes=32 time<10ms TTL=128

Reply from 10.0.0.20: bytes=32 time<10ms TTL=128

Ping statistics for 10.0.0.20:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 0ms, Maximum =  0ms, Average =  0ms

利用Ping可以很直观地了解与目标主机的连通信息。但如果想对一个网络进行扫描,判断在网络中有多少台主机可以连接,仅仅用Ping无法满足需要。当然,可以使用脚本通过反复地调用Ping程序来完成任务,但是效率会很低。为了更好地完成这样的任务,首先要了解一下Ping的基本原理。

Ping使用ICMP(Internet Control Message Protocol,因特网控制报文协议)协议进行工作,ICMP是IP层的一个部分,它主要有两大功能,分别是网络信息查询和IP传送时的差错报告与控制。

在ICMP包头中,使用类型域和代码域指明ICMP报文的种类,每种报文完成不同的功能。表2-1列出了常见的ICMP报文类型。

表2-1 常见的ICMP报文类型

image.png

 

ICMP Destination Unreachable(ICMP目标不可达)报文的类型值为3,其功能是报告主机不可达信息,再由代码域的值指定不可达的原因,如网络不可达、主机不可达或端口不可达等。原因不同,负责发送ICMP目标不可达报文的主体也不一样。如果是主机不可达,通常会由目标网络的网关发出报文;如果是主机的某个端口不可达,则由主机发出报文。

ICMP Source Quench(ICMP源抑制)报文的类型值为4,其功能是完成数据流速率控

制,当路由或目标主机发现数据源信息流过快时会发出这样的报文。

ICMP Redirection(ICMP重定向)报文的类型值为5,其功能是实现路由重定向,此功能只适合同一个局域网内有两台以上路由器的情况。ICMP重定向报文在假消息攻击中有一定的应用,第7章将会对此进行进一步解释。

ICMP Address Mask Request/Reply(ICMP子网掩码请求/应答)报文的类型值分别为17和18,其功能是查询目标主机的子网掩码信息。

ICMP Timestamp Request/Reply(ICMP时间戳请求/应答)报文的类型值分别为13和14,其功能是查看目标的时间信息。Internet是一个全球性网络,网络上的主机往往处于不同的时区,而时间戳请求和应答为我们提供了一种查询目标主机时间的方法。

ICMP Echo Request/Reply(ICMP响应请求/应答)报文的类型值分别为8和0,其功能是检查目标主机是否开机并正常运行IP。

Windows系统中的Ping程序命令使用的正是ICMP Echo Request/Reply报文。Ping程序会向目标主机连续发送四个ICMP Echo Request报文,如果目标主机正常连接网络,没有防火墙阻塞ICMP Echo报文,目标主机就会回送ICMP Echo Reply报文。Ping程序通过是否接收到Reply报文来判断是否能与目标主机正常通信。

各操作系统平台下都有Ping扫描工具,比如,UNIX操作系统平台下的Fping、Windows操作系统平台下由Rhino9小组编写的Pinger等。

深入分析ICMP的目的并不是实现Ping扫描工具,对于多数网络安全问题来说,如果从数据包的收发角度考察,就可以找到其直接和本质上的根源。从协议的角度理解网络安全问题是常见同时也是重要的思路和方法。在后面的章节中,我们会经常从协议的角度讨论安全问题。

从上面对ICMP的讨论,可以很自然地想到利用ICMP收集更多的有关目标主机的信息。比如,利用ICMP Address Mask Request/Reply查询目标主机的子网掩码信息,利用ICMP Timestamp Request/Reply查看目标的时间信息。

可以完成上述ICMP查询的工具包括Dave Anderson 编写的Icmpquery、Hispahack编写的Icmpush以及Simple Nomad编写的Icmpenum等。

需要注意的是,尽管根据RFC(Request for Comment,Internet标准草案)的定义,TCP/IP协议栈应该支持各种类型的ICMP报文,但事实上,在各个操作系统实现TCP/IP时可能并没有完全遵循RFC的标准。这意味着,某些操作系统不一定会对ICMP子网掩码请求或是ICMP时间戳请求做出应答。

2. 其他类型的主机扫描

在很多高安全性的网络环境中,都安装了网络防火墙。防火墙能够对一般的主机扫描报文进行阻止和过滤,这给攻击者造成了一些障碍。然而,利用一些特别的技术手段,仍然可能探测到存活主机。

(1)构造异常的IP包头

向目标主机发送包头错误的IP包,如果目标主机存活,则会反馈ICMP Parameter Problem Error报文。常见的伪造错误字段为Header Length和IP Options。不同厂家的路由器和操作系统对这些错误的处理方式不同,返回的结果也不同。

(2)在IP头中设置无效的字段值

在向目标主机发送的IP包中填充错误的字段值时,如果目标主机存活,则会反馈ICMP Destination Unreachable信息,报文中代码域的值指明了错误的类型。

(3)构造错误的数据分片

当目标主机接收到错误的数据分片(如某些分片丢失),并且在规定的时间间隔内得不到更正时,将丢弃这些错误数据包,并向发送主机反馈ICMP Fragment Reassembly Time Exceeded报文,攻击者接收到这些报文,就会知道目标主机存活。

(4)通过超长包探测内部路由器

若构造的数据包长度超过目标系统所在路由器的PMTU(Path Maximum Transmission Unit,路径最大传输单元)且设置禁止分片标志, 该路由器会反馈 Fragmentation Needed and Don’t Fragment Bit was Set差错报文。攻击者通过这些信息,就可以探测到目标网络中的内部路由器。

(5)反向映射探测

该方法用于探测被过滤设备或防火墙保护的网络和主机,通过构造可能的内部IP地址列表,并向这些地址发送数据包。当目标网络路由器接收到这些数据包时,会进行IP识别并路由,对不在其服务范围的IP包发送ICMP Host Unreachable或ICMP Time Exceeded错误报文,没有接收到相应错误报文的IP地址可被认为在该网络中。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。