1、第三章 网络嗅探3.1 嗅探器概述 n嗅探器(Sniffer)是一种在网络上常用的收集有用信息的软件,可以用来监视网络的状态、数据流动情况以及网络上传输的信息。n当信息以明文的形式在网络上传输时,便可以使用网络嗅探的方式来进行攻击,分析出用户敏感的数据,例如用户的账号、密码,或者是一些商用机密数据等。n我们经常使用的FTP、Telent、SMTP、POP协议等都采用明文来传输数据。n嗅探器攻击也是在网络环境中非常普遍的攻击类型之一。3.1 嗅探器概述n嗅探器的定义nSniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。n一部电话上的窃听装置,可以用来窃听双方通话的内容
2、,而嗅探器则可以窃听计算机程序在网络上发送和接收到的数据。n后者的目的就是为了破环信息安全中的保密性,即越是不想让我知道的内容我就一定要知道。计算机直接传送的数据,事实上是大量的二进制数据。那么,嗅探器是怎样能够听到在网络线路上边传送的二进制数据信号呢?可不可以在一台普通的PC机上边就可以很好的运作起来完成嗅探任务呢?3.1 嗅探器概述n嗅探器必须也使用特定的网络协议来分析嗅探到的数据,也就是说嗅探器必须能够识别出哪个协议对应于这个数据片断,只有这样才能够进行正确的解码。n其次,嗅探器能够捕获的通信数据量与网络以及网络设备的工作方式是密切相关的。3.1 嗅探器概述n局域网介质访问控制方法 n共
3、享式局域网n共享式局域网的典型设备是集线器(Hub)n该设备把一个端口接收的信号向所有其它端口分发出去。Hub连接形成连接形成LAN 经过3个Hub串联形成的局域网,当主机A需要与主机E通信时,A所发送的数据报通过Hub的时候就会向所有与之相连的端口转发。在一般情况下,不仅主机E可以收到数据报,其余的主机也都能够收到该数据包 3.1 嗅探器概述n交换式局域网n典型设备是交换机(Switch)n该设备引入了交换的概念,是对共享式的一个升级,能够通过检查数据包中的目标物理地址来选择目标端口,从而将数据只转发到与该目标端口相连的主机或设备中。n上页描述的网络,如转发设备都采用Switch,那么只有主
4、机E会正常收到主机A发送的数据,而其余的主机都不能接收到。3.1 嗅探器概述n共享式局域网存在的主要问题是每个用户的实际可用带宽随网络用户数的增加而递减。这是因为所有的用户都通过一条共同的通道讲话,如果两个用户同时说话必然会造成相互的干扰,数据产生碰撞而出错。n而在交换式局域网中,交换机供给每个用户专用的信息通道,除非两个源端口企图将信息同时发往同一目的端口,否则各个源端口与各自的目的端口之间可同时进行通信而不发生冲突。n对于两种结构的网络,前者相对来说易于窃听,而后者需要用更为复杂的技术才能实现。n嗅探器只能抓取一个物理网段内的包,就是说,你和监听的目标中间不能有路由或其他屏蔽广播包的设备。
5、因此,对一般拨号上网的用户来说,是不可能利用嗅探器来窃听到其他人的通信内容的。3.1 嗅探器概述n嗅探器分为软件和硬件两种n软件的嗅探器:NetXray、Packetboy、Net monitor等,n优点是物美价廉,易于学习使用,同时也易于交流n缺点是无法抓取网络上所有的传输,某些情况下也就无法真正了解网络的故障和运行情况n硬件的Sniffer通常称为协议分析仪n一般都是商业性的,价格也比较贵n目前主要使用的嗅探器是软件的。3.1 嗅探器概述nMAC地址n48bitn固化在网卡EPROM中的,且应该保证在全网是唯一的nIEEE注册委员会为每一个生产厂商分配物理地址的前三字节,即公司标识n后面
6、三字节由厂商自行分配,即一个厂商获得一个前三字节的地址可以生产的网卡数量是16777216块 3.1 嗅探器概述n正常模式n当网卡处于正常的工作模式时,主机A收到一帧数据后,网卡会直接将自己的地址与接收帧目的地址比较,以决定是否接收。n如果匹配成功接收,网卡通过CPU产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理;如果匹配不成功则抛弃。也就是说,即使是共享式的网络,虽然所有网络上的主机都能够“听到”全部通过的流量,但如果不是发给本机的数据,我会主动的抛弃,而不会响应。n就是利用这个原理,可以保证在局域网范围内可以有序的接收和发送数据。n通常,一个合法的网
7、络接口应该可以响应两种数据帧n帧的目标物理地址和本地网卡相同n帧的目标区域为广播地址(48bit全部为1,即FF-FF-FF-FF-FF-FF)。3.1 嗅探器概述n混杂模式nSniffer通过将网卡的工作模式由正常改变为混杂(promiscuous),就可以对所有听到的数据帧都产生一个硬件中断以提交给主机进行处理。n如前所述,网络硬件和TCP/IP堆栈不支持接收或者发送与本地计算机无关的数据包。所以,为了绕过标准的TCP/IP堆栈,网卡就必须设置为混杂模式。n一般情况下,要激活这种方式,内核必须需要root权限来运行这种程序,所以sniffer需要root身份安装,如果只是以本地用户的身份进
8、入了系统,那么不可能嗅探到root的密码。n目前,绝大多数的网卡都可以被设置成混杂的工作方式nsniffer是极其安静的,它是一种被动的安全攻击。3.2 交换式网络上的嗅探 n交换式网络中,理论上只有目的主机能够收到该数据包,无关的主机是收不到的,无法进行传统的嗅探n如果采用一些专用的手段,在交换式网络环境下实现嗅探也是可能的 nARP欺骗n交换机MAC地址表溢出 nMAC地址伪造nICMP重定向攻击3.2 交换式网络上的嗅探nARP欺骗nARP是一种将IP地址转化成物理MAC地址的协议,通过查找ARP缓存表来实现转化 n计算机中维护着一个ARP高速缓存,并且这个ARP高速缓存是随着计算机不断
9、的发出ARP请求和收到ARP响应而不断的更新 n在每张ARP高速缓存表中,都包含了所在局域网上的各主机和路由器的IP地址到硬件地址的映射,这些都是该主机目前知道的一些地址 n在Windows中要查看或者修改ARP缓存中的信息,可以命令提示符窗口中键入“arp-a”命令查看ARP缓存表的内容3.2 交换式网络上的嗅探nARP协议工作过程nARP(Address Resolution Protocol):是根据IP地址获取物理地址的一个TCP/IP协议n主机A在本局域网上广播发送一个ARP请求分组,想知道IP地址是IPX的主机的物理地址;n在本局域网上的所有主机都会收到此ARP请求分组;n主机X在
10、ARP请求分组中看到了自己的IP地址,就向主机A发送ARP响应分组,并写入自己的物理地址;n主机A从收到的主机X的ARP响应分组中,就在其ARP高速缓存中写入主机X的硬件地址。3.2 交换式网络上的嗅探n假设网络中存在A、B、C、D四台主机,利用交换机连接。nA主机的IP地址和MAC地址分别为IPA和MACAnB主机的IP地址和MAC地址分别为IPB和MACBnC主机的IP地址和MAC地址分别为IPC和MACCn在没有进行ARP欺骗前,A和B正在通信,则主机A的ARP缓存表如表所示。3.2 交换式网络上的嗅探n恶意主机C试图获得A与B之间的通信,采用ARP欺骗攻击。n首先,C向A发送一个ARP
11、响应分组,含义是IPB对应的主机的MAC地址是MACC(即修改了源IP地址,未修改MAC地址,所以A 收到的数据包其来源为C 的MAC 地址),A不会验证此包的正确性,于是A 更新其ARP 缓存表所示。3.2 交换式网络上的嗅探n这时,A向B发送的消息全部发给了C。n如果C 同时用同样的方法欺骗B,使其ARP表项关于A 对应的MAC 地址更新为MACC,并且在C上做好数据包的转发,使得A和B借助C仍然能互相通信,不过速度会变慢。n这样,在C上监听A和B之间的通信将轻而易举,而主机A和B根本不知道主机C窃听了他们之间的通信。n如果欺骗的是整个网络,只需要发送ARP-Echo的广播包,伪造包的目的
12、MAC地址改为FF:FF:FF:FF:FF:FF(广播地址);目的IP地址改为FF:FF:FFLFF(广播地址);源IP地址改为网关的IP,源MAC地址仍为本机地址。n类似地,同时欺骗网关,并做好数据包的转发,就能实现对整个网络的监听。3.2 交换式网络上的嗅探n交换机MAC地址表溢出 n交换机之所以能够由数据包中目的MAC地址判断出他应该把数据包发送到那一个端口上,是根据他本身维护的一张地址表转发表。n交换机有个致命的弱点,地址表的大小是有上限的,可以通过发送大量错误的地址信息而使SWITCH维护的地址表“溢出”。n当交换机被错误的转发表填满后,不能进行正常的数据包的端到端转发,交换机为了不
13、漏掉数据包,会采取广播的方式将所有的数据包转发出去。n此时相当于集线器的功能,网络也变成了共享式,在任一台计算机上都可以监听到整个网络的数据包。3.2 交换式网络上的嗅探nMAC地址伪造 n基于网络内的Switch是动态更新其转发表,和ARP欺骗有些类似,只不过现在想要Switch相信你,而不是要机器A相信你。nSwitch是动态更新其转发表的,要做的事情就是告诉Switch你是机器C。n例如有三台主机A、B、C,其中MACA对应端口P1,其中MACB对应端口P2,其中MACC应端口P3。n现在恶意主机C向A发送数据帧,并更改源地址为MACB。这样,Switch收到数据帧后,就会发现从来自MA
14、CB的数据是从端口P3转发的,与原先对应的P2矛盾。nSwitch更新转发表采用牛奶策略,即新来的包比原先的包重要,因而将MACB与端口P3对应起来。这样,所有发往MACB的数据是就都会从端口P3转发至主机C了。n此时如果主机B向外发送数据就会使 Switch更新转发表。要达到一直欺骗的效果,主机C 要不停地向Switch发送伪造数据包来阻止其更新表项,这将造成主机B不能向外通信。3.2 交换式网络上的嗅探nICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控
15、制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用3.2 交换式网络上的嗅探nICMP重定向攻击 n告诉机器向另一个不同的路由发送他的数据包n假设A与B两台机器分别位于同一个物理网段内的两个逻辑子网内,而A和B都不知道这一点,只有路由器知道。n当A发送给B的数据到达路由器的时候,路由器会向A送一个ICMP重定向包,告诉A直接送到B那里就可以了。除了路由器,主机必须服从ICMP重定向。n设想一下,一个攻击者完全可以利用这一点,向网络中的另一台机器发送了一个ICMP重定向消息,这就可能引起其他机器具有一张无效的路
16、由表。n如果一台机器伪装成路由器截获所有到某些目标网络或全部目标网络的IP数据包,就可以形成了窃听。n目前基于ICMP重定向的技术都是停留在理论上的论述,没有相关的具体攻击实例和源程序。3.3 简易网络嗅探器的实现 3.4 嗅探器的检测与防范 nARP广播地址探测 n正常情况下,就是说不在混乱模式,网卡检测是不是广播地址要比较收到的目的以太网址是否等于FF-FF-FF-FF-FF-FF,是则认为是广播地址。n在混乱模式时,网卡检测是不是广播地址只看收到包的目的以太网址的第一个八位组值,是0 xFF则认为是广播地址。n只要发一个目的地址是FF-00-00-00-00-00的ARP包,如果某台主机
17、以自己的MAC地址回应这个包,那么它运行在混杂模式下。3.4 嗅探器的检测与防范nPING方法 n假设可疑主机的 IP 地址为 192.168.10.10.,MAC地址是AA-BB-CC-DD-EE-EE,检测者和可疑主机位于同一网段。n稍微改动可疑主机的 MAC 地址,假设改成AA-BB-CC-DD-EE-EF。n向可疑主机发送一个 PING包,包含它的 IP和改动后的MAC地址。n没有运行嗅探器的主机将忽略该帧,不产生回应。如果看到回应,那么说明可疑主机确实在运行嗅探器程序。3.4 嗅探器的检测与防范nDNS方法 n检测者需要监听DNS服务器接收到的反向域名查询数据。n只要 PING网内所
18、有并不存在的主机,那么对这些地址进行反向查询的机器就是在查询包中所包含的 IP 地址,也就是说在运行嗅探器程序 n源路径方法 n设A为可疑主机,B 为检测主机,C 为同一网段的另一台主机,C不具有转发功能。nB发送数据给A,设置为必须经过C。n如果能接收到数据的响应信息,那么查看TTL值域,如果不变,说明A运行嗅探器程序。分析B发给A的数据事实上发给C,由于 C不具有转发功能,所以数据不能到达 A。但是由于A运行了嗅探器程序,所以才能接收到数据。3.4 嗅探器的检测与防范n诱骗方法n在网络上建立一个客户端和一个服务端。n客户端运行一个脚本程序,使用 Telnet,POP,IMAP或其他协议登录
19、到服务器。n服务器配置一些没有实际权限的帐户,或者就是完全虚拟的。n一旦黑客窃取口令,他将试图用这些信息登录。那么标准的入侵检测系统或审计程序将记录这些信息,从而发出警告。n网络带宽出现反常n通过某些带宽控制器,可以实时看到目前网络带宽的分布情况,如果某台机器长时间的占用了较大的带宽,这台机器就有可能在监听。应该也可以察觉出网络通讯速度的变化。3.4 嗅探器的检测与防范n网络通讯丢包率高n通过一些网管软件,可以看到信息包传送情况,最简单是PING命令。它会告诉你掉了百分之多少的包。n如果网络结构正常,而又有20%-30%数据包丢失以致数据包无法顺畅的流到目的地,就有可能有人在监听,这是由于嗅探器拦截数据包导致的。n等待时间方法n在网络中发送大量数据,这对设置在非混杂模式的机器没有影响,但是对运行嗅探器程序的机器有影响,特别是用于口令的语法分析应用层协议。n只要在未发送数据之前以及发送数据之后 PING主机,对比两次的响应时间差别就可以检测。这种方法很有效,不过可能明显降低网络性能。3.4 嗅探器的检测与防范n被动的防御措施 n安全的拓扑结构 n会话加密 n用静态的ARP或者IPMAC对应表代替动态的ARP或者IPMAC对应表 n重视重点区域的安全防范 3.5 常用嗅探工具 nTcpdump nLibpcap nSniffer Pro nWireShark