您的位置:首页 > 理论基础 > 计算机网络

深度剖析WinPcap之(二)——网络分析与嗅探的基础知识(3)

2009-09-06 20:28 435 查看
1.3网络分析与嗅探是如何工作的?

本节主要提供嗅探如何发生的简要基础,并给出关于网络和协议如何工作的背景信息。当然还有许多其它优秀的资源可以用,比如Richard Stevens的“TCP/IP详解,卷1–3.”就是其中之一。

1.3.1 以太网简介(Explaining Ethernet)
以太网是用来使计算机能够通信的最常用的协议标准。一个协议就像说一个特定的语言。以太网基于共享媒体的原则构建,在局域网段内所有的计算机共享相同的网络流量。

它就是众所周知的一个广播协议,因为在同网段内将发送数据到所有的其它计算机上。这信息被分成易管理的数据块,称之为数据包,而且每个数据有一个头包含目的计算机与源计算机的地址。即使该信息发送到一个网段上所有的计算机,也只有与目标地址匹配的计算机会产生回应。网络上的其它所有计算机仍然可收到该数据包,但是如果不是它们想接收的就丢弃数据包,除非一台计算机上正在运行一个嗅探器。

当运行一个嗅探器的时候,数据包捕获驱动器把计算机NIC设置为混杂模式。这意味着,嗅探的计算机能在该网段上见到所有的网络流量,而不管数据包发送给谁。通常计算机运行在非混杂模式,只能监听指派给自己的信息。然而,当一个NIC在混杂模式下时,就能见到它全部邻居的会话。

以太网网址,也就是媒体访问控制(MAC)地址与硬件地址。因为许多计算机可能共享一个以太网段,每个一定要有唯一的一个标识符并硬件编码到 NIC之上。一个MAC地址是一个48位的数,也被规定为12个十六进制的数。该数值被分为两部分,第一部分的24位标识以太网卡的厂商,第二部分的24位由厂商分配的一个序列号组成。在Windows NT, Windows 2000, Windows XP与 Windows 2003 操作系统中都可在命令行下输入ipconfig /all查看MAC地址,MAC地址将会列在“Physical Address”字段中。

1.3.2 理解开放系统互联(OSI)模型
国际标准组织(ISO)在80年代早期开发的开放系统互联(OSI)模型,描述了网络协议和组件在一起如何工作。OSI把网络功能分为七层,每个层表现一群相关的规格、功能和活动(见图2-4)。虽然是很复杂,但这些术语被广泛地用在网络、系统和开发社区中。

图2-4显示了OSI模型的七层。





图2-3 OSI模型的七层.

在下面的各小节中分别简要描述了OSI模型的七个层。

1.3.2.1 第一层 物理层


OSI模型的第一层为物理层,该层规范了传输数据比特的传输媒体(如网线)的电气与机械特性。它包括发送与接收载体上的数据流,无论载体使用电的(网线)、光的(光纤)、无线的、红外的、或激光(无限)的信号。物理层的规范包括:

Ø 电压变化

Ø The timing of voltage changes

Ø 数据率

Ø 最大传输距离

Ø 连接传输媒体的物理连接器(插头)

Ø 网络的拓扑与部署

许多复杂的问题在物理层讨论,包括数字的与模拟的信号,基带与宽带信号,无论数据同步或异步传输,与信号如何被分配到信道上(多路复用)。

物理层上的设备有NIC上的收发器、中继器、basic hubs、与连接器等。物理层的数据由0与1的比特组成,其通过光脉冲或电压变化脉冲的状态(通常on代表1,off代表0)表示。这些比特位如何安排与管理,是OSI模型第二层数据链路层的功能。

1.3.2.2 第二层:数据链路层
OSI模型的第二层为数据链路层,该层负责维护两台电脑之间的数据链接,典型的叫法为主机或节点。它也定义与管理接收与发送的数据包中比特的顺序。

帧包含通过一个有组织的方式所安排的数据,其提供一个顺序与一致的方法在媒体间发送数据比特。如果没有这样的控制,数据将会以随机大小与配置发送,这样的数据在另一端(接收端)是无法解码的。

数据链路层管理物理地址与数据包的同步。也对物理层的流量控制与错误提示负责。流量控制是管理发送与接收数据的时间,以至于不超过物理连接的容量(速度、内存等等)。

既然物理层只负责物理的搬运数据到或离开网络媒体,数据链路层也接收与管理与数据包物理递送相关的错误信息。

该层所涉及的网络设备有两层交换机与网桥。一个两层交换机通过只发送数据到与目标计算机相关的端口来降低网络拥塞,而不是发送到交换机的所有端口。网桥提供一种方式把网络划分为两部分并过滤流量,通过建立一个定义哪台计算机在网桥的哪一边的表,基于它们的MAC地址。

数据链路层分为两个子层:逻辑链接控制(LLC)子层与MAC子层。

1.3.2.2.1 MAC子层

MAC子层提供对访问传输媒体的控制。它负责把数据包从一个NIC移动到另一个,在一个共享传送媒体诸如以太网线或光纤线之间。物理地址是MAC子层的地址。每一个NIC有一个唯一的MAC地址(也叫物理地址),其标识网络上特定的NIC。

一个NIC的MAC地址通常烧录到一个只读内存(ROM)芯片中。每一个网卡的制造商提供一个唯一的MAC地址集,所以从理论上说,每个被制造的NIC具

有唯一的MAC地址。为了避免混乱,MAC地址被永久的烧录到NIC的内存中。

注意 在以太网的NIC中,物理或MAC地址(也叫硬件地址)被表示为12个十六进制的数字,每两个一组用:分隔开(比如12:3A:4D:66:3A:1C)。开始的三组为制造商

编号,后三组代表该制造商制造的唯一NIC的编号。

一些方法使用MAC,用来分配网络访问的计算机,防止它们在同一时间传输并导致数据冲突。通常的MAC方法包括以太网所使用的载波监听多点接入/冲突检测(CSMA/CD)方法,AppleTalk网络使用的载波监听多点接入/冲突避免(CSMA/CA)方法,令牌环网与光纤分布式数据接口(FDDI)网络使用的令牌传递。

1.3.2.2.2 逻辑链接控制(LLC)子层

LLC子层为数据链路层提供逻辑;这样它控制数据链路层的同步、流量控制与错误检查功能。

该层管理面向连接的传输,然而,该层也能提供非连接的服务。非连接的操作众所周知的I类LLC,而II类LLC既能操作非连接的操作也能与操纵面向连接的操作。

面向连接的通信,每一个LLC帧发送都被确认。LLC子层在接收结束时跟上它接收的LLC帧(也叫作协议数据单元,PDU)。因此,如果它检测到一个帧在传输时丢失了,它能够给发送的计算机发送一个请求重新开始该传输,从没有到达的PDU开始。

LLC子层位于MAC子层的上面,在上层与在MAC子层的协议(如以太网、令牌环等等)之间扮演着一个联络人的角色。

1.3.2.3 第三层:网络层
接下来的一层为网络层,在这儿数据包被顺序化,同时赋予逻辑地址。逻辑地址不是永久的,是通过软件赋予的地址。TCP/IP协议在互联网上使用的IP地址,就是逻辑地址的使用实例。

网络层也负责在点或节点之间创建一个虚拟链路(比如,一个逻辑连接,不是一个物理连接)。一个节点是一个具有MAC地址的设备,典型的包含计算机、打印机或路由器。

这一层也负责路由,三层交换机,与推进(forwarding)数据包。路由是指从一个网络或子网推进数据包到另外一个。如果没有路由器,计算机只能与同一网段中的计算机通信。路由对互联网是一个关键,同时是网络层的最重要的责任。

最后网络层提供另外的流量控制与差错控制层。与前面提及的一样,从这儿开始实现OSI模型架构的基本方法与软件密切关联而不再是硬件。

在该层操作的设备是路由器与三层交换机。

1.3.2.4 第四层:运输层
OSI模型的第四层为运输层,负责从一个节点传输数据到另一个节点。它在节点间提供透明的数据传输,并管理端到端的流量控制、错误检测与错误恢复。

传输层协议在不同计算机的特定端口之间发起联系,并设置虚拟的链路。每个主机的传输协议确认 应用程序发送的数据是被授权访问该网络与两个端点都准备好开始数据传输了。当该同步完成之后 ,数据被发送。当数据正在被传送时,每个主机上的传输协议监控数据流并监视传输错误。如果传输检测到错误,传输协议提供错误恢复。

对网络通信而言,传输层提供的功能非常重要。正像数据链路层提供的底层可靠性与面向连接或非连接的通信,传输层作了同样的事情,只不过是在更高的层次上。

面向连接的传输控制协议(TCP) 与面向非连接的用户数据包协议(UDP),这两种最常见的协议都属于传输层。

传输层也管理端口的逻辑地址。一台计算机上可能同时运行几个网络应用程序。决定所接收的数据属于哪个应用程序的机制就是端口的功能。

最后,传输层处理域名解析,诸如DNS就时处理该问题的一种方法。

1.3.2.5 第五层:会话层
在传输层建立一个虚拟连接后,在两个不同计算机上的进程之间建立一个通信会话。会话层(第五层)负责建立、监视与终止会话,使用传输层建立的虚拟链路。

会话层也负责给数据包添加协议头信息,指明一个消息的起点与终点。一旦该头信息添加到数据包上,会话层在发送者会话层与接收着会话层之间执行同步。利用ACK帮助协调会话层的数据传输。

会话层的另一个重要功能是控制在一个会话中的通信是否采用全双工或半双工通讯方式。

传输层在两台机器之间建立一个连接,而会话层在两个进程之间建立一个连接。一个应用程序可同时运行多个进程来完成应用的工作。

传输层在两台机器之间建立连接后,会话层在一台计算机上的一个进程与另一台计算机上的一个进程之间设立连接。

1.3.2.6 第六层:表示层
数据传输是表示层(第六层)的基本活动。当数据从发送者到接收者时,它在表示层上转换(比如,发送者的应用程序把数据向下传送到表示层,在那儿数据转换为一种通用格式)。当数据在另一端接收时,表示层把它从通用格式转回到应用程序使用的格式。协议转换在此处发生。

表示层也是网关服务操作的地方。网关是使用不同平台或应用的网络之间的连接点。网关通常通过软件实现。软件重定向器也在该层操作。

这儿也是数据压缩发生的地方,其最小化网络媒体所需传送到接收器的比特数量。数据加密与解密也在表示层进行。

1.3.2.7 第七层:应用层
应用层是用户应用程序与网络交互的位置。不要把网络模型与应用程序本身混淆了。应用程序的进程是在一个用户应用程序中开始的。接着进程所创建的数据被递交给网络软件的应用层。

在该层所发生的所有事情都是特定于应用的。

OSI模型是通用的,可被用来解释所有的网络协议。为此目的,各种协议簇经常被映射到OSI模型上。对OSI模型深入的理解可帮助网络分析、比较与问题解答。然而,重要的是记住并不是所有的协议都能很好的映射到OSI模型上的(比如TCP/IP被设计为映射到美国国防部(DoD)模型)。

TCP/IP协议簇在OSI模型之前就已经开发了。因此TCP/IP协议簇的层次无法与OSI模型准确的对应。TCP/IP协议簇由5层组成:物理层、数据链路层、网络层、运输层和应用层。前四层与OSI模型的前四层对应,提供物理标准、网络接口、网际互连、以及传输功能。然而OSI模型的最高三层在TCP/IP中则用叫做应用层的来表示。

1.3.3 CSMA/CD
以太网使用载波监听多点接入/冲突检测(CSMA/CD)协议,为了设备在网络上家交换数据。多点接入这个术语指 许多网络设备连接到同一个网段有发送的机会。

每个设备赋予等同的发送机会;没有任何设备优先于其它设备。载波监听描述了一个网络设备的以太网接口在传送之前如何监听网线。网络接口确保没有其它信号在网线上,在它传送之前,并且在传送的时候监听确保在同一时刻没有其它网络设备传送数据。当两个网络设备在同一时刻传送时,一个冲突发生。因为以太网接口在它们正在传送时监听媒体,通过冲突检测它们能够标识其它传送的出现。如果一个冲突发生了,正在传送的设备在重新传送之前等待一个小的,随机的时间量。该功能就是随机XX(random backoff)。

传统地,以太网操作是半双工的,其意味着一个接口只能传送或接收数据,但是并不是同时。如果一个网段中多于一个的网络接口试图在同一时刻传送,一个冲突发生每个载波监听多点接入/冲突检测。当一个交叉的网线用来连接两个设备,或者一个单个设备连接一个交换机端口,在该网段中仅仅两个接口需要传送或接收,没有冲突发生。这是因为设备A的传送连接到设备B的接收,设备B的接收连接到设备A的传送。冲突检测的方法不再是必需的,因此,接口能够工作于全双工模式,其允许网络设备在同一时刻传送与接收,从而提高性能。

1.3.4 主要的协议:IP、TCP、UDP与ICMP协议
下列IP、TCP、UDP与ICMP四个协议是现今互联网工作的核心。

IP(网际互连协议)

IP是一个非连接协议,管理寻址数据从一个点到另一个点,把大数据包分割成小的、能传输的数据包。IP数据的主要组成如下:

Ø IP标识(IPID)试图唯一标识IP数据报

Ø 协议 描述使用IP层服务的高层协议

Ø 生存时间(TTL)数据报在通过互联网是必须具有的受限的寿命。当 TTL为0时,数据报被丢弃

Ø IP地址源点的IP地址,数据报被创建的地方

Ø 目的IP地址 终点的IP地址,数据报应该送到的地方

ICMP(网际控制报文协议)

网际控制报文协议(ICMP)管理网络之间在IP上出现的错误。下面是ICMP常用的报文:

Ø 回送请求/回答 为诊断目的而设计,可以用来确定在IP这级能否正常通信。例如ping程序使用回送请求与回答报文来计算两个节点之间的网络延时。

Ø 终点不可达网络不可达与端口不可达。该报文发送给数据报的源IP地址,当一个网络或端口不可达时。这发生在当一个防火墙拒绝了一个数据报或存在网络问题时。终点不可达报文有一些子类型,有助于诊断通信问题。

Ø 超时在一个数据包的TTL为0时发生

TCP(传输控制协议)

TCP是面向连接的协议,通常用来传输数据。TCP面向连接的特性使得选用它进行源IP地址欺骗可能性不大。

TCP握手 TCP的一个重要观念是握手。任何数据在两个主机之间能被交换之前,它们必须同意进行通信。主机A发送一个带SYN标志的数据包到主机B。如果主机B愿意并能通信,它返回SYN数据包并添加ACK标志。主机A开始发送数据,并向主机B指明它也接收到了ACK。当主机间的通信结束时,发送一个带FIN(完成)标识的数据包,接下来是一个类似确认的过程。

TCP序列 TCP另一个重要的组成是序列标识,每个发送的数据包都是一个序列的一部分。通过这些序号,TCP能控制复杂的任务,诸如重发、确认与排序。

UDP(用户数据报)

相对于TCP, UDP数据包是非连接的,并具有多种用途,用于DNS就是一个重要的应用。

1.3.5 硬件:网线探针、集线器、交换机
网线探针(Cable Taps)

网线探针是帮助连接到网线的硬件设备(Cable taps are hardware devices that assist in connecting to a network cable.)。使用Tap设备可以访问计算机、集线器、交换机、路由器与其它设备之间的网线的任意点。Tap可用于全双工或半双工的10、100与1000Mbps以太网链接。They are also available in various multi-port sizes.下列是一些流行的网线探头产品列表。

Ø Net Optics carries several types of network taps for copper and fiber cables, and is available at www.netoptics.com.

Ø The Finisar Tap family offers a variety of taps for copper and fiber cables, and is available at www.finisar.com/nt/taps.php.

集线器(Hubs)

集线器的英文名称就是我们通常见到的“HUB”,英文“HUB”是“中心”意思,集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI参考模型第二层,即“数据链路层”。

集线器是一个在一个共享媒体(比如以太网)上把多个主机连接起来的设备。当一台计算机发送信息后,该信息行走到该集线器,集线器接着把该信息推向所有与之连接的计算机。

该信息的目标计算机,将会在数据包的头部识别它自己的MAC地址,并接受该数据。集线器推进所有信息的区域,叫做一个冲突域(也叫广播域)。

一个集线器对所有共享的网络流量只有一个冲突域。图2-4显示了一个带有集线器冲突域的网络架构。大量的冲突使得嗅探更容易,并导致性能问题,诸如集线器的带宽XX(bandwidth hogging)或过流(excessive traffic)。





图2-4 Hub冲突域

交换机(Switch)

一个交换机也用于在共享媒体上把计算机连接在一起;然而,当一个交换机接收信息,它不会盲目的发送给所有其它计算机。它查找数据包的头部来定位目标MAC地址,并维护一个连接到交换机上计算机的所有MAC地址与对应端口的列表。

接着把数据包推进数据包到特定端口。这把冲突域缩小为一个单独的端口(如图2-5所示)。该类型的冲突域也为每个连接提供了一个明确的带宽量,而不是集线器的一个共享量。

因为交换机的价格在最近几年中急剧下降,没有原因不采用交换机替换集线器,或者在选购新设备时选择交换机。一些价格更贵的交换机包括更好的技术使得对嗅探攻击更具抵挡能力。





图 2-5 交换机冲突域

就像从图中所见到的一样,集线器使得嗅探更容易,而交换机使得嗅探更困难。然而,交换机也能被欺骗。

端口映射

如果在使用交换机的网络上工作,并希望执行正当的网络分析,很幸运的是,大部分交换机与路由器提供了端口映射(port mirroring)机制。为了映射端口,必须配置交换机从一个希望映射的端口复制网络流量到所连接的端口。

配置交换机映射端口1的所有网络流量到端口5,网络分析器查看发送到计算机A与计算机A发送出去的所有网络流量。一些时候,管理员把交换机的上行端口进行映射,他们就能够查看出入交换机所有端口的网络流量。





图 2-6 端口映射

1.3.6 交换机欺骗
正如前面所提及的,在一个网络上使用交换机使得嗅探更困难。从理论上而言,连接到交换机的计算机应该只看见发给自己的网络流量,然而存在一些技术可绕过该技术限定。下面列举了攻溃交换机防守的几种方式:

Ø 交换洪泛(Switch Flooding)

一些交换机可以像一个集线器的方式运行,所有的数据包被广播给所有的计算机。这可以通过大量的假MAC地址使交换机地址表溢出来完成,这样移出所有安全防备。

通过一个叫macof的程序可产生Dsniff数据包,该程序被设计用来使交换机MAC地址洪泛。可以从www.monkey.org/~dugsong/dsniff下载该程序。

Ø ARP重定向(ARP Redirect)

当一台计算机需要其它计算机的MAC地址,它发送一个地址解析协议(ARP)请求。每台计算机也维护一个ARP表来存储与之会话的计算机的MAC地址。

ARP在一个交换机上广播,因此,所有在该交换机上的计算机都能看到该请求与回应。这儿有几种方法使用ARP来欺骗一个交换机发送网络流量给它不应该发送的地方。

首先,一个入侵者通过发送一个ARP声明能够搅乱一个交换机,使得入侵者扮演其它的角色。一个入侵者也能发送一个ARP声明,把入侵者的计算机作为一个路由器,在这种情况下,计算机将试图发送它们的数据包通过入侵者的计算机。或者,一个入侵者将仅给一个受害者发送一个ARP请求,声明自己为路由器,这样,受害者开始推进数据包给入侵者。

Ø ICMP重定向(ICMP Redirect)

一些时候计算机在同一个物理网段与交换机上,但是在不同的逻辑网段上。这意味着它们在不同的IP子网中。当计算机A想给计算机B会话时,它通过一个路由器发送它的请求。路由器知道它们在同一个物理网段上,因此它发送一个ICMP重定向给计算机A,使它知道可以直接发送数据包给计算机B。一个入侵者(计算机X)能发送一个假的ICMP重定向给计算机A,告诉它把发送给计算机B的数据包发给计算机X。

Ø ICMP路由广告(ICMP Router Advertisements)

这些广告告诉计算机使用哪一个路由器。入侵者发送一个广告声明,它就是那个路由器,从此计算机开始通过该入侵者推进所有的数据包。

Ø MAC地址欺骗(MAC Address Spoofing)

一个入侵者利用伪装计算机的MAC地址,能够伪装成使用一台不同的计算机。发送带有受害者源地址的数据包来欺骗交换机。交换机把该欺骗信息放进它的地址表中,并开始发送数据包给入侵者。但是受害者仍在交换机上,怎样处理发送的更新将会导致交换机把地址表改回来?这可以通过采用一些拒绝服务(DoS)类型的攻击使受害者离线,接着重定向交换机并继续通信。

一些交换机具有允许静态赋予每个端口一个MAC地址的防范措施。如果网络规模很大,这可能难以管理,但是这将减少MAC欺骗。其它交换机的配置,允许一个端口锁定它所遇到的第一个MAC,并在物理端口访问受限的环境中,提出一个在可维护性与安全性之间强制性的平衡。

为了在Linux或Solaris上欺骗你计算机的MAC地址,使用下列的ifconfig命令即可:

ifconfig eth0 down

ifconfig eth0 hw ether 00:02:b3:00:00:AA

ifconfig eth0 up

通过广播ping命令向各主机登记该MAC地址:

ping -c 1 –b 192.168.1.255.

现在你可以嗅探所有道拥有该MAC地址的计算机的网络流量。

Ø 重新配置交换机的端口映射

正如前面所提及的,交换机端口能被配置成为查看到其它端口的网络流量。一个入侵者能够通过Telnet或一些其它默认的后门连接到交换机来实现。一个入侵者也能够使用简单网络管理协议(SNMP),如果它是没有受保护的。

Ø 网线探针

正如前面所提及的,网线探针能够用来实现网线的物理窥探。在一个交换机的上行网线上布下探针可以显示所有出入交换机的网络流量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: