转:网络监听原理

网络监听是指利用计算机的网络接口截获目的地为第三方计算机的数据报文的一种技术。利用这种技术可以监听网络的当前流量状况;网络程序的运行以及非法窃取网络中传输的机密信息。

在共享式以太网中,所有的通讯都是广播的,也就是说通常在同一网段的所有网络接口都可以访问在物理媒体上传输的所有数据,使用ARP和RARP协议进行相互转换。在正常的情况下,一个网络接口应该只响应两种数据帧:与自己硬件地址相匹配的数据帧和发向所有机器的广播数据帧。在一个实际的系统中,数据的收发由网卡来完成。每个以太网卡拥有一个全球难一的以太网地址。以太网地址是一个48位的二进制数。在以太网卡中内建有一个数据报过滤器。该数据包过滤器的作用是保留以本身网卡的MAC地址为通讯目的的数据包和广播数据包,丢弃所有其它无关的数据包,以免除CPU对无关的数据包做无谓的处理。这是以太网卡在一般情况下的工作方式。在这种方式下,以太网卡只将接收到的数据包中与本机有关部分向上传递。然而数据包过滤器是可以通过编程禁用的。禁用数据包过滤器后,网卡将把接收到的所有的数据包向上传递,上一层软件因此可以监听以太网中其它计算机之间的通讯。我们称这种工作模式为“混杂模式”。多数网卡支持“混杂模式”,而该模式还是微软公司的“pC99”规范中对网卡的一个要求。网卡的“混杂模式”使得采用普通网卡作为网络探针,实现网络的侦听变得非常容易。一方面方便了网络管理,另一方面,普通用户也能轻易地侦听网络通讯,对用户的数据通讯保密是一个很大的威胁。在进行此种方式的数据监听时,是在网络的节点处设置网络设备为混杂模式,进行数据监听管理网络;黑客则是利用ARP侦探网络上出于混杂模式的网络节点并将黑客软件放置在节点处进行窃听的。

还有一种窃听方式是利用ARP欺骗达到的。ARP欺骗又被称为ARP重定向技术,ARP地址解析协议虽然是一个高效的数据链路层协议,但是作为一个局域网的协议,它是建立在各主机之间互相信任基础之上的,因此存在一定的安全问题:

(1)主机地址映射表是基于高速缓存动态更新的,这是ARP协议的特色,也是安全问题之一。由于正常的主机间MAC地址刷新都是有时限的,这样假冒者如果在下次更新之前成功的修改了被攻击机器上的地址缓存,就可以进行假冒。

(2)ARP请求以广播方式进行。这个问题是不可避免的,因为正是由于主机不知道通信方的MAC地址,才需要进行ARP广播请求。这样攻击老就可以伪装ARP应答,与广播者真正要通信的机器进行竞争。还可以确定子网内机器什么时候会刷新MAC地址缓存,以确定最大时间限度的进行假冒。

(3)可以随意发送

ARP应答包。由于ARP协议是无状态的,任何主机即使在没有请求的时候也可

以做出应答,只要应答有效,接收到应答包的主机就无条件的根据应答包的内容更新本机高速缓存。

(4)ARP应答无需认证。由于ARP协议是一个局域网协议,设计之初,出于传输效率的考虑,在数据链路层就没有作安全上的防范。在使用ARP协议交换MAC

地址时无需认证,只要收到来自局城网内的ARP应答包,就将其中的MAC/IP对刷新到本主机的高速缓存中。ARP重定向的实施办法是根据以上ARP地址解析协议的安全漏洞,进行网络信息包
的截获以及包的转发攻击活动,步骤如下:

(1)    把实施攻击的主机的网卡设置为混杂模式。

(2)   
在实施攻击的主机上保持一个局域网内各个IP/MkC包的对应列表,并根据截获的IP包或者ARP包的原IP域进行更新。

(3)收到一个IP包之后,分析包头,根据IP包头里的IP目的地址,找到相应的MAC地址。

(4)将本机的MAC地址设成原MAC地址,将第二步查到的MAC地址作为目的MAC地址,将收到的IP包发送出去。通过以上的重定向,攻击者使网络数据包在经过攻击者本身的主机后,转发到数据包应该真正到达的目的主机去,从而具有很强的欺骗性。

本文中采用的是第一种方法,即在共享以太网中通过网卡在混杂模式工作,监听整个以太网的数据包。

时间: 2024-10-07 16:11:06

转:网络监听原理的相关文章

网络监听原理(局域网数据窃听)

在网络中,当信息进行传播的时候,可以利用工具,将网络接口设置在监听的模式,便可将网络中正在传播的信息截获或者捕获到,从而进行攻击.网络监听在网络中的任何一个位置模式下都可实施进行.而黑客一般都是利用网络监听来截取用户口令.比如当有人占领了一台主机之后,那么他要再想将战果扩大到这个主机所在的整个局域网话,监听往往是他们选择的捷径.很多时候我在各类安全论坛上看到一些初学的爱好者,在他们认为如果占领了某主机之后那么想进入它的内部网应该是很简单的.其实非也,进入了某主机再想转入它的内部网络里的其它机器也

ThinkAndroid框架 网络状态监听原理

ThinkAndroid框架 网络状态监听原理,有需要的朋友可以参考下. 现在用到网络监听的地方越来越广泛,这里提供下ThinkAndroid里的实现方法,还是根据功能原理倒着给出代码: 1.网络状态会发出广播,监听网络状态肯定通过广播接收者实现,广播接受者: /** * @Title NetworkStateReceiver * @Package com.ta.util.netstate * @Description 是一个检测网络状态改变的,需要配置 <receiver * android:

IOS开发—网络监听

网络监听用到的类为Reachability.h,这个Xcode项目里面是不自带的,需要从github上面下载,在使用的时候记着导入SystemConfiguration.framework. 首先是在AppDelegate.m中设置网络监听 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotifica

高大上的“网络监听”,其实你也能做!

出来工作一年了,回忆大学那时,我所在专业里有一位大神级人物,他每天都和我们聊一下很“美丽”的事物.他最经常喜欢所得一句话,“一切事物都可以用01表示出来”.那时的他,很喜欢分享,很喜欢去研究一些高大上的问题,数学是他的强项.那时,我们桂林高校的五子棋大赛,他拿了冠军,证明了自己,并不是一个只会说不会做的人.其实我对他还是很有好感的,不过由于各种原因吧,我们交往并不算太深.还记得的那些夜晚,学习和生活上遇到很多困惑,经常很他一起聊到11点半,讨论各种奇怪的事情.从那开始,我就渐渐地更喜欢写程序啦.

iOS:Reachability网络监听

iOS利用Reachability确认网络环境3G/WIFI 开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息.如果没有处理它们,是不会通过Apple的审查的. Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法.在你的程序中使用 Reachability 只须将该例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中.如下图: 我们来看看Reachability.h文件中的具体内容: #import <Found

iOS手机信号网络监听

//设置网络监听 - (void)monitorNetworking { //监听网络状态 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; //显然是枚举值 /* typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { AFNetworkReachabilityStatusUnknown = -1,//未识别的网络

HTML5 键盘监听原理实现的抓怪兽游戏+代码

HTML5小游戏抓怪兽,应用Canvas等超多的HTML5技巧编写而成,下面来向大家汇报实现步骤: 1.创建游戏画布: .代码   var canvas = document.createElement("canvas"); var ctx = canvas.getContext("2d"); canvas.width = 512; canvas.height = 480; document.body.appendChild(canvas); 我们需要做的第一件事是

java实现网络监听

Java实现网络监听 import java.net.*; import java.io.*; public class tcpServer { public static void main(String args[]) { int port; ServerSocket server_socket; BufferedReader input; try { port = Integer.parseInt(args[0]); } catch (Exception e) { System.out.p

oracle网络 监听

这里讲解一下我对oracle网络的理解(静态监听): 监听的工作原理: 监听说白了,就是个套接字+PROTOCOL(协议) 套接字是通信的基石,是支持TCP/IP协议网络通信的基本单元.可以将套接字看作不同主机 之间的进程双向通信的端点. 一个完整的网络通讯必须具备协议.本地地址.本地端口.远程地址.远程端口和协议这5个基本要素,在创建套接字时确定了协议类型,而在绑定套接字确定了本地地址和本地端口,远程地址和远程端口.套接字即就是ip+port . 1.数据库启动起来之后(数据文件.控制文件.日