网络嗅探之一 --- 原理篇

简介:
    不管你有没有意识到,网络嗅探需要经过几个阶段:ARP 欺骗 -> 数据包截取 -> 数据包分析 -> 记录和/或显示感兴趣的信息。如果我们想真实地体会一下这个过程,那么建议用最原始的方法,手工执行上述过程:用 ARP 欺骗软件,比如 arp-tools 发送 ARP 欺骗包,让其它两台机器之间的数据流通过我们的机器。注意,需要开启我们机器的路由功能;接下来,用抓包工具抓取那两台机器之间的数据包;然后用我们的眼睛查看(分析)抓取到的数据包;最后,如果看到了我们感兴趣的信息,记录下来。当然,手工的过程很麻烦,我们一般选择用嗅探软件,比如 Windows 平台下的 Cain,Linux 平台下的 Ettercap 等。然而,即使用嗅探软件,那么仍然需要经历这个过程,仍然需要做这些工作,只不过嗅探软件帮我们做了这些工作而已。
    在本系列文章的第一部分,我们来探讨 ARP 欺骗,主要探讨三个问题:
        1)为什么要进行 ARP 欺骗?
        2)为什么能够进行 ARP 欺骗?
        3)怎样进行 ARP 欺骗?
 
一. 为什么要进行 ARP 欺骗?
        所谓网络嗅探,其实就是对大量网络数据流进行分析,从中分离出我们感兴趣的东西并记录下来和/或显示出来。既然要对网络数据流进行分析,那么当然需要让这些网络数据流流经我们的机器,我们才有机会对其进行分析。接下来的问题当然就是:怎样才能让网络数据流流经我们的电脑呢?哪些技术可以帮我们达到这个目的呢?记得我曾经在《我谈网络扫描之三》讲过,SPAN 和 RSPAN 可以让特定交换机特定端口的网络数据流到达我们的入侵检测系统,那么这种技术能不能用来实现让网络数据流流经我们进行嗅探的电脑的目的呢?答案是肯定的。问题是,SPAN 和 RSPAN 需要在交换机上配置,需要我们首先搞定人家的交换机,不容易呀。而且,即使有幸搞定了人家的交换机,别忘了 SPAN 和 RSPAN 很容易导致网络流量异常,只要人家配置了流量监控,比如配置了 Cacti,就很容易被发现了。所以,这种技术虽然可行,但是实现难度太大,风险太高,我们不用。那么,可行而又方便的技术有没有呢?答案同样是肯定的,那就是“臭名昭著”的 ARP 欺骗。ARP 欺骗实现起来很容易,因为一般的网络嗅探软件都会根据我们机器的IP地址和网关设置,自动向外发送 ARP 欺骗包,进行 ARP 欺骗。而且,ARP 欺骗不容易被发现,隐蔽性较好。
    
二. 为什么能够进行 ARP 欺骗?
        TCP/IP 协议族有比较多的“瑕疵”,作为 TCP/IP 协议族的成员之一,ARP 协议也不例外。ARP 欺骗正是利用了 ARP 协议的“瑕疵”,来达到目的。我们都知道,一台机器要想把数据包准确发送给自己期望的目标机器,必须保证发出去的数据包的目标 IP 地址正确,封装这些数据包的数据帧的目标 MAC 地址正确。保证发出去的数据包的目标 IP 地址正确并不困难,因为这个地址通常由我们手工指定的(如果指定 DNS 域名的话,就可能被 DNS 欺骗,导致使用错误的IP 地址),只要我们指定正确的 IP 地址即可。但是,要保证封装这些数据包的数据帧的目标 MAC 地址正确,就不是那么容易的事情了。因为 MAC 地址不是我们手工指定,而是我们的机器自动通过 ARP 协议获得的,并且,我们的机器并不能保证自己通过 ARP 协议获得准确的 MAC 地址。所以,一旦获得了错误的 MAC 地址(被 ARP 欺骗了,呵呵),那么就会导致发出去的数据帧的目标 MAC 地址不正确。最终,数据帧就会被发送到其它的机器,而不是我们期望的目标机器。当我们的机器需要使用目标机器的 MAC 地址来封装数据帧时,它会发送 ARP 广播,请求目标机器告诉自己其 MAC 地址。既然是广播,那么同一个 VLAN 里的所有机器都能够收到,目标主机可以发送 ARP 响应,告诉我们的机器其 MAC 地址,其它机器也可以发送恶意 ARP 响应,告诉我们的机器目标主机的 MAC  地址是它的 MAC 地址,并且,我们机器的 ARP 协议“很傻很天真”,没有任何方法来辨别真伪,从而就有可能导致我们的机器使用错误的 MAC 地址。更进一步说,即使我们的机器根本有没有向外发送 ARP 请求,恶意机器也可以发送虚假的 ARP 响应或 ARP 请求(Gratuitous ARP)给我们的机器,并且,我们机器的 ARP 协议仍然“很傻很天真”,信以为真,把这些错误的信息保存起来,供以后使用。正是 ARP 协议的这种傻和天真,ARP 欺骗才得以横行霸道。
 
三. 怎样进行 ARP 欺骗?
        ARP 欺骗的过程比较简单,假如我们想嗅探 A 机跟 B 机之间的数据流,我们同时向 A 机和 B 机发送虚假的 ARP 响应或请求(Gratuitous ARP),让 A 机认为 B 机的 MAC 地址是我们机器的 MAC 地址,从而使它用我们机器的 MAC 地址来填充发给 B 机的数据帧,于是,这些数据帧就理所当然地发给了我们的机器。同样地,让 B 机把它本来想发送给 A 机的数据帧发送给我们的机器。另外,我们将自己机器的网卡置于杂凑模式,并且开启路由中转(一般的网络嗅探软件都能够路由和中转数据包,所以不一定需要开启 OS 的路由功能),以便接收并转发这些数据包。这样,我们就可以静悄悄地隐藏在角落,嗅探 A 机跟 B 机之间的数据通信了。下面以图形表示 ARP 欺骗:


本文转自zkjian517 51CTO博客,原文链接:http://blog.51cto.com/zoukejian/62628

相关文章
|
27天前
|
机器学习/深度学习 存储 算法
神经网络分类算法原理详解
神经网络分类算法原理详解
49 0
|
18天前
|
运维 Kubernetes Cloud Native
探索Kubernetes的大二层网络:原理、优势与挑战🚀
在云原生领域,Kubernetes (K8s) 已经成为容器编排的事实标准☁️📦。为了支撑其灵活的服务发现和负载均衡🔍🔄,K8s采用了大二层网络的设计理念🕸️。本文将深入探讨大二层网络的工作原理、带来的好处✨,以及面临的挑战和解决方案❗🛠️。
探索Kubernetes的大二层网络:原理、优势与挑战🚀
|
6天前
|
安全 数据建模 网络安全
深入理解SSL数字证书:定义、工作原理与网络安全的重要性
本文阐述了SSL数字证书在网络安全中的关键作用,定义了其作为验证服务器身份的数字凭证,基于PKI体系保障数据传输安全。文章介绍了三种类型的证书,包括DV、OV和EV,适用于不同安全需求的网站。获取和安装证书涉及向证书颁发机构申请并部署到服务器。在网络安全挑战下,正确使用和管理SSL证书对于保护用户数据和提升信任度至关重要。
|
13天前
|
安全 网络协议 网络安全
网络原理(5)--HTTPS是如何进行加密的
网络原理(5)--HTTPS是如何进行加密的
11 0
|
13天前
|
存储 JSON 前端开发
网络原理(4)HTTP协议(下)
网络原理(4)HTTP协议
25 0
|
16天前
|
传感器 监控 安全
|
27天前
|
缓存 网络协议 数据库连接
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
23 0
|
1月前
|
存储 安全 网络安全
网络技术基础(20)——AAA原理与配置
【3月更文挑战第6天】华为设备的AAA框架实现网络安全管理,包括认证、授权、计费三要素,常使用RADIUS协议。用户、NAS(Network Access Server)和AAA服务器构成基本架构。认证方式有不认证、本地认证和远端认证,授权方式包括不授权、本地授权和远端授权,计费则为不计费和远端计费。RADIUS作为分布式协议,处理认证、计费和授权。常见应用场景如SSH登录,配置涉及创建认证方案、用户及服务类型。实验配置示例展示了SSH登录的AAA验证过程。
|
1月前
|
安全 网络性能优化 调度
SD-WAN 网络编排原理
【2月更文挑战第29天】网络编排是解决传统WAN部署复杂、耗时问题的关键技术,它通过策略驱动自动化协调硬件和软件资源。
|
1月前
|
机器学习/深度学习 人工智能 算法
详细介绍卷积神经网络(CNN)的原理 !!
详细介绍卷积神经网络(CNN)的原理 !!
76 0