2022年网络流量监控 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年网络流量监控 .pdf》由会员分享,可在线阅读,更多相关《2022年网络流量监控 .pdf(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、网络流量监控组长 :李天翼组员 :网络流量监控:主要实现了在局域网中,使用路由器上网,能够把整个局域网的计算机的据包,截获然后转发, 根据截获的数据包,来进行流量的监控。进一步能够实现对流量的控制。在 java 程序中要实现数据包截获,转发等操作必须了解一下JPCAP。JPCAP:1.Jpcap类库介绍11 Jpcap的使用Jpcap 是 2003 年日本开发的一套能够捕获、发送网络数据包的java 类库。因为核心Java API 不能访问底层的网络数据,但 Jpcap是一种提供在Windows 或 UNIX 系统上进行这种访问的 Java API。Jpcap 不是一种纯粹的Java 解决方案
2、, 它依赖本地库的使用。在 Windows 或UNIX上,你必须有必要的第三方库,分别是WinPcap 或 libpcap。要在java 中使用Jpcap类库需要安装Jpcap的运行和开发环境。12 Jpcap介绍Jpcap 类库的基本结构如下图:Jpcap 类库结构1.2.1 Packet 基类及其子类Packet 这个类是所有被捕获的数据包的基类,可以提供被捕获数据包的长度,被捕获数据包的时间标记等基本信息。ARPPacket 和 IPPacket 是继承Packet 的子类,它们将被捕获包分成两类。ARPPacketJpcapHandler IPAddress IPv6Option Jp
3、cap JpcapWriter JpcapSender DatalinkPacket EthemetPacket Packet ARPPacket IPPacket ICMPPacket UDPPacket TCPPacket 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 28 页 - - - - - - - - - 按照 ARP 数据报的内容,将其各数据段的数据取出。IPPacket 则被分得更细。这两个类主要与是与数据链路层密切相关的,其与MAC 地址相关的信息在E
4、themetPacket 类中表示出来。 EthemetPacket 是从 DatalinkPacket 继承而来的。IPPacket 下有三个子类,分别是ICMPPacket、TCPPacket、UDPPacket。这三个类分别表示的是被存储在IP 数据报的报文中发送的ICMP 、TCP、UDP 报文。1.2.2 Jpcap 的主要功能Jpcap 提供了十分方便的数据包捕获方法。Jpcap 使用一个事件模型来处理包。首先,必须创建一个执行接口jpcap.JpcapHandler 的类。public class Jpcaphandler implements JpcapHandler publ
5、ic void handlePacket(Packet packet) System.out.println(packet); 为 了 捕 获 包 , 需 要 让Jpcap知 道 要 用 哪 个 网 络 设 备 来 监 听 。 API提 供 了jpcap.Jpcap.getDeviceList() 方法以满足这一目的。这个方法返回一列字符串,可以按一下方法如下使用它:String devices = Jpcap.getDeviceList(); 一旦有了一个设备名称的目录,只要从其中选取一个用来监听:String deviceName = devices0; 选择一个设备之后,通过Jpcap.
6、openDevice()方法打开它。 openDevice() 方法需要四个参数:即将打开的设备名,从设备上一次读取的最大字节数,说明是否将设备设为混杂模式的Boolean 值,和以后调用processPacket()方法要使用到的超时值。Jpcapjpcap = Jpcap.openDevice(deviceName, 1024, false, 10000); openDevice()方法将一个参数返回到用以捕获的Jpcap 对象。既然有了 Jpcap 实例,你可以调用 processPacket() 或 loopPacket() 开始监听了。这两种方式都带有两个参数:捕获的最大包数可以是
7、-1(说明没有限制) ;执行 JpcapHandler 的一个类的实例。如果你调用processPacket(),那么 Jpcap 将一直捕获包,直到超过openDevice 中规定的时限名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 28 页 - - - - - - - - - 或达到了规定的最大包数。loopPacket()则将一直捕获包,直到达到最大包数,如果没有最大数限制,它将永远运行下去。就像下面这样调用:jpcap.loopPacket(-1, new Jpc
8、aphandler(); 对于捕获的数据包,可以利用Jpcap 中的 Packet 及其子类进行分类分析,获得数据包的详细信息。Jpcap 还有进行数据包过滤的函数setFilter(java.lang.String condition, boolean optimize)。其中 condition 是过滤条件。在进行数据包捕获前设置过滤条件,可以将不感兴趣的数据包剔除。jpcap.setFilter(host 210.212.147.149,true); 因为 Jpcap对数据包进行了分类,而数据包中的关键字段也有接口调用,所以在设置过滤条件时也可以在利用这些条件进行更细致的分类。这将在后面
9、的章节中介绍。Jpcap还提供了用来发送数据包的一个类JpcapSender, 可以用来发送IPPacket 及其子类,包括IPPacket、ICMPPacket 、 TCPPacket、UDPPacket。定义好一个相应的包后,就可以利用 sendPacket函数发送数据包。JpcapSender sender=JpcapSender .openDevice(Jpcap.getDeviceList()0); sender .sendPacket(p); /send a packet 上面是对JPCAP 的基本介绍。这是这个程序的基础。2.数据包监听原理网络监听是指利用计算机的网络接口截获目的
10、地为第三方计算机的数据报文的一种技术。利用这种技术可以监听网络的当前流量状况;网络程序的运行以及非法窃取网络中传输的机密信息。在共享式以太网中,所有的通讯都是广播的,也就是说通常在同一网段的所有网络接口都可以访问在物理媒体上传输的所有数据,使用ARP和RARP协议进行相互转换。在正常的情况下, 一个网络接口应该只响应两种数据帧:与自己硬件地址相匹配的数据帧和发向所有机器的广播数据帧。在一个实际的系统中,数据的收发由网卡来完成。每个以太网卡拥有一个全球难一的以太网地址。以太网地址是一个48位的二进制数。 在以太网卡中内建有一个数名师资料总结 - - -精品资料欢迎下载 - - - - - - -
11、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 28 页 - - - - - - - - - 据报过滤器。该数据报过滤器的作用是保留以本身网卡的MkC地址为通讯目的的数据报和广播数据报, 丢弃所有其它无关的数据报,以免除 CPU对无关的数据报作无谓的处理。这是以太网卡在一般情况下的工作方式。在这种方式下, 以太网卡只将接收到的数据报中与本机有关部分向上传递。然而数据报过滤器是可以通过编程禁用的。禁用数据报过滤器后,网卡将把接收到的所有的数据报向上传递,上一层的软件因此可以监听以太网中其它计算机之间的通讯。我们称这种工作模式为“ 混杂模式
12、” 。多数网卡支持“ 混杂模式 ” ,而该模式还是微软公司的 “pC 99” 规范中对网卡的一个要求。网卡的 “ 混杂模式 ” 使得采用普通网卡作为网络探针,实现网络的侦听变得非常容易。一方面方便了网络管理,另一方面, 普通用户也能轻易地侦听网络通讯,对用户的数据通讯保密是一个很大的威胁。在进行此种方式的数据监听时,是在网络的节点处设置网络设备为混杂模式,进行数据监听管理网络; 黑客则是利用ARP侦探网络上出于混杂模式的网络节点并将黑客软件放置在节点处进行窃听的。还有一种窃听方式是利用ARP欺骗达到的。 ARP欺骗又被称为ARP重定向技术, ARP地址解析协议虽然是一个高效的数据链路层协议,但
13、是作为一个局域网的协议,它是建立在各主机之间互相信任基础之上的,因此存在一定的安全问题:(1)主机地址映射表是基于高速缓存动态更新的,这是ARP协议的特色,也是安全问题之一。由于正常的主机间MAC 地址刷新都是有时限的,这样假冒者如果在下次更新之前成功的修改了被攻击机器上的地址缓存,就可以进行假冒。(2)ARP请求以广播方式进行。这个问题是不可避免的,因为正是由于主机不知道通信对方的MAC 地址,才需要进行ARP广播请求。这样攻击老就可以伪装 ARP应答, 与广播者真正要通信的机器进行竞争。还可以确定子网内机器什么时候会刷新MAC 地址缓存,以确定最大时间限度的进行假冒。(3)可以随意发送AR
14、P应答包。由于ARP协议是无状态的,任何主机即使在没有请求的时候也可以做出应答,只要应答有效, 接收到应答包的主机就无条件的根据应答包的内容更新本机高速缓存。(4) ARP应答无需认证。由于 ARP协议是一个局域网协议,设计之初,出于传输效率的考虑,在数据链路层就没有作安全上的防范。在使用ARP协议交换 MAC 地址时无需认证,只要收到来自局城网内的ARP应答包,就将其中的MAC IP对刷新到本主机的高速缓存中。ARP重定向的实施办法是根据以上ARP地址解析协议的安全漏洞,进行网络信息包的截获以及包的转发攻击活动,步骤如下: (1)把实施攻击的主机的网卡设置为混杂模式。( 2)在实施攻击的主机
15、上保持一个局域网内各个IPMkC 包的对应列表, 并根据截获的IP包或者ARP包的原 IP域进行更新。 (3)收到一个 IP包之后, 分析包头, 根据IP包头里的 IP目的地址,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 28 页 - - - - - - - - - 找到相应的 MAC 地址。( 4)将本机的 MAC 地址设成原 MAC 地址,将第二步查到的MAC 地址作为目的 MAC 地址,将收到的IP包发送出去。通过以上的重定向,攻击者使网络数据包在经过攻击者本身
16、的主机后,转发到数据包应该真正到达的目的主机去,从而具有很强的欺骗性。本文中采用的是第二种方法,即在共享以太网中通过ARP欺骗,监听整个以太网的数据包。ARP 欺骗的详细原理:局域网监听利用的是所谓的“ARP欺骗”技术。在以前曾经一段阶段,局域网的布局是使用总线式 (或集线式) 结构,要到达监听只需要将网卡设定为混杂模式即可,但现在的局域网络普遍采用的是交换式网络,所以单纯靠混杂模式来达到监听的方法已经不可行了。 所以为了达到监听的目的, 我们需要“欺骗”路由器、“欺骗”交换机,即“ ARP欺骗”技术。假设本机为 A,监听目标为 B。首先,伪造一个 ARP REPLY 包,数据链路层头及ARP
17、内容部分的源 MAC 地址填入 A的 MAC 地址,而源 IP 部分填入网关 IP,目的地址填入 B的 MAC 、IP,然后将这个包发送给B,而 B接收到这个伪造的ARP REPLY 包后,由于源 IP 为网关 IP,于是在它的 ARP缓存表里刷新了一项,将(网关IP,网关 MAC )刷新成(网关 IP,A的 MAC )。而 B要访问外部的网都需要经过网关,这时候这些要经过网关的包就通通流到A的机器上来了。接着,再伪造一个ARP REPLY 包,数据链路层头及ARP 内容部分的源 MAC地址填入 A的 MAC 地址,而源 IP 部分填入 B的 IP,目的地址填入网关MAC 、IP,然后将这个包
18、发给网关,网关接收到这个伪造的ARP REPLY 包后,由于源 IP 为B的 IP,于是在它的 ARP缓存表里刷新了一项,将(B的 IP,B的 MAC )刷新成(B的 IP,A的 MAC )。这时候外部传给B的数据包经过网关时,就通通转发给A。这样还只是拦截了B的数据包而已, B并不能上网解决方法是将接收到的包,除了目的地址部分稍做修改,其它原封不动的再转发出去,这样就达到了监听的目的在B不知不觉中浏览了B所有的对外数据包。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共
19、28 页 - - - - - - - - - ARP 数据包解析单元: Byte Ethernet 头部ARP 数据部分6 6 2 2 2 2 2 4 6 4 6 目标MAC地址源地MAC地址类型号0 x0800:ip 0 x0806:ARP 局域网类型以太网0 x0001 网络协议类型IP 网络0 x0800 MAC/IP地址长度,恒为0 x06/04 ARP 包类型REPLY 0 x0002 ARP目标IP地址ARP目标MAC 地址ARP源IP地址ARP源MAC地址2用 JPCAP 实现监听就如上面说的,为了实现监听,我们必须做四件事:A发送 ARP包修改 B的 ARP缓存表;B发送 AR
20、P包修改路由 ARP缓存表;C转发 B发过来的数据包;D转发路由发过来的数据包3.程序详细设计这个程序主要就是发送ARP 数据包,欺骗路由器。1.要知道整个局域网内IP 地址范围。对于这个问题,我们首先要知道局域网的子网掩码,和网关地址,然后通过这两个部分获取整个局域网内能够设置的IP 地址。获取子网掩码,调用系统的ipconfig/all 命令就能够获取到子网掩码public String SubnetMask() String mask; exec =cmd /c ipconfig /all; /获取子网掩码Run(); try while( true) 名师资料总结 - - -精品资料欢
21、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 28 页 - - - - - - - - - String s; s=br .readLine(); if(s= null) break; if(s.contains(Subnet Mask) mask=s.substring(s.indexOf(: )+2); return mask; catch(IOException ex) ex.printStackTrace(); returnnull; 1.获取网关地址,调用熊的IPCONFIG/ALL命令就能够
22、获取网关IP。2.然后通过子网掩码,与上网关地址,就能够获取开始以及结束IP 地址了。2.获取存活的计算机。获取存活的IP 地址1.可以使用InetAddress 的 ISRESEARCH() 函数来判定这个IP 地址是否能够PING 通。但是有时候不能够准确的确定该IP 地址的存活。因此我没有使用这个函数来确定,是否存活。2.我调用了系统自带的PING 命令来判定该IP 地址是否存活。在这其中使用过了线程池来调用PING 命令来判断IP 地址存活。如果不使用多线程来PING ,程序速度将会很慢,因此我使用了多线程,要寻找出所有的IP 地址,就要使用多线程来PING ,否则速度很慢。线程池类为
23、 java.util.concurrent.ThreadPoolExecutor ,常用构造方法为:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, RejectedExecutionHandler handler) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 28 页 - - - -
24、 - - - - - corePoolSize : 线程池维护线程的最少数量maximumPoolSize :线程池维护线程的最大数量keepAliveTime : 线程池维护线程所允许的空闲时间unit : 线程池维护线程所允许的空闲时间的单位workQueue : 线程池所使用的缓冲队列handler : 线程池对拒绝任务的处理策略一个任务通过 execute(Runnable) 方法被添加到线程池,任务就是一个 Runnable 类型的对象,任务的执行方法就是 Runnable 类型对象的 run() 方法。当一个任务通过execute(Runnable) 方法欲添加到线程池时:l 如果
25、此时线程池中的数量小于corePoolSize ,即使线程池中的线程都处于空闲状态,也要创建新的线程来处理被添加的任务。l 如果此时线程池中的数量等于 corePoolSize ,但是缓冲队列 workQueue 未满,那么任务被放入缓冲队列。l 如果此时线程池中的数量大于corePoolSize ,缓冲队列 workQueue 满,并且线程池中的数量小于maximumPoolSize ,建新的线程来处理被添加的任务。l 如果此时线程池中的数量大于corePoolSize ,缓冲队列 workQueue 满,并且线程池中的数量等于maximumPoolSize ,那么通过 handler 所指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年网络流量监控 2022 网络流量 监控
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内