没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
网络流量监控
组长:李天翼
组员:
网络流量监控:主要实现了在局域网中,使用路由器上网,能够把整个局域网的计算机的据
包,截获然后转发,根据截获的数据包,来进行流量的监控。进一步能够实
现对流量的控制。
在 java 程序中要实现数据包截获,转发等操作必须了解一下 JPCAP。
JPCAP:
1.Jpcap 类库介绍
1.1 Jpcap 的使用
Jpcap 是 2003 年日本开发的一套能够捕获、发送网络数据包的 java 类库。因为核心 Java
API 不能访问底层的网络数据,但 Jpcap 是一种提供在 Windows 或 UNIX 系统上进行这种访
问的 Java API。Jpcap 不是一种纯粹的 Java 解决方案,它依赖本地库的使用。在 Windows 或
UNIX 上,你必须有必要的第三方库,分别是 WinPcap 或 libpcap。要在 java 中使用 Jpcap
类库需要安装 Jpcap 的运行和开发环境。
1.2 Jpcap 介绍
Jpcap 类库的基本结构如下图:
Jpcap 类库结构
1.2.1 Packet 基类及其子类
Packet 这个类是所有被捕获的数据包的基类,可以提供被捕获数据包的长度,被捕获数
据包的时间标记等基本信息。
ARPPacket 和 IPPacket 是继承 Packet 的子类,它们将被捕获包分成两类。ARPPacket
JpcapHandler
IPAddress
IPv6Option
Jpcap
JpcapWriter
JpcapSender
DatalinkPacket
EthemetPacket
Packet
ARPPacket
IPPacket
ICMPPacket
UDPPacket
TCPPacket
jpcap
本页已使用福昕阅读器进行编辑。
福昕软件(C)2005-2010,版权所有,
仅供试用。
按照 ARP 数据报的内容,将其各数据段的数据取出。IPPacket 则被分得更细。这两个类主
要与是与数据链路层密切相关的,其与 MAC 地址相关的信息在 EthemetPacket 类中表示出
来。EthemetPacket 是从 DatalinkPacket 继承而来的。
IPPacket 下有三个子类,分别是 ICMPPacket、TCPPacket、UDPPacket。这三个类分别
表示的是被存储在 IP 数据报的报文中发送的 ICMP、TCP、UDP 报文。
1.2.2 Jpcap 的主要功能
Jpcap 提供了十分方便的数据包捕获方法。Jpcap 使用一个事件模型来处理包。首先,
必须创建一个执行接口 jpcap.JpcapHandler 的类。
public class Jpcaphandler implements JpcapHandler {
public void handlePacket(Packet packet){
System.out.println(packet);
}
}
为 了 捕 获 包 , 需 要 让 Jpcap 知 道 要 用 哪 个 网 络 设 备 来 监 听 。 API 提供了
jpcap.Jpcap.getDeviceList()方法以满足这一目的。这个方法返回一列字符串,可以按一下方
法如下使用它:
String[] devices = Jpcap.getDeviceList();
一旦有了一个设备名称的目录,只要从其中选取一个用来监听:
String deviceName = devices[0];
选择一个设备之后,通过 Jpcap.openDevice()方法打开它。openDevice()方法需要四个参数:
即将打开的设备名,从设备上一次读取的最大字节数,说明是否将设备设为混杂模式的
Boolean 值,和以后调用 processPacket()方法要使用到的超时值。
Jpcapjpcap = Jpcap.openDevice(deviceName, 1024, false, 10000);
openDevice()方法将一个参数返回到用以捕获的 Jpcap 对象。既然有了 Jpcap 实例,你可以调
用 processPacket() 或 loopPacket()开始监听了。这两种方式都带有两个参数:捕获的最大包
数可以是-1(说明没有限制);执行 JpcapHandler 的一个类的实例。
如果你调用 processPacket(),那么 Jpcap 将一直捕获包,直到超过 openDevice 中规定的时限
或达到了规定的最大包数。loopPacket()则将一直捕获包,直到达到最大包数,如果没有最
大数限制,它将永远运行下去。就像下面这样调用:
jpcap.loopPacket(-1, new Jpcaphandler());
对于捕获的数据包,可以利用 Jpcap 中的 Packet 及其子类进行分类分析,获得数据包的
详细信息。
Jpcap 还有进行数据包过滤的函数 setFilter(java.lang.String condition, boolean optimize)。
其中 condition 是过滤条件。在进行数据包捕获前设置过滤条件,可以将不感兴趣的数据包
剔除。
jpcap.setFilter("host 210.212.147.149",true);
因为 Jpcap 对数据包进行了分类,而数据包中的关键字段也有接口调用,所以在设置过滤条
件时也可以在利用这些条件进行更细致的分类。这将在后面的章节中介绍。
Jpcap还提供了用来发送数据包的一个类 JpcapSender,可以用来发送 IPPacket及其子类,
包括 IPPacket、ICMPPacket、TCPPacket、UDPPacket。定义好一个相应的包后,就可以利
用 sendPacket 函数发送数据包。
JpcapSender sender=JpcapSender.openDevice(Jpcap.getDeviceList()[0]);
sender.sendPacket(p); //send a packet
上面是对 JPCAP 的基本介绍。这是这个程序的基础。
2.数据包监听原理
网络监听是指利用计算机的网络接口截获目的地为第三方计算机的数据报文的一种技
术。利用这种技术可以监听网络的当前流量状况;网络程序的运行以及非法窃取网络中传输
的机密信息。
在共享式以太网中,所有的通讯都是广播的,也就是说通常在同一网段的所有网络接口
都可以访问在物理媒体上传输的所有数据,使用ARP和RARP协议进行相互转换。在正常的
情况下,一个网络接口应该只响应两种数据帧:与自己硬件地址相匹配的数据帧和发向所有
机器的广播数据帧。在一个实际的系统中,数据的收发由网卡来完成。每个以太网卡拥有一
个全球难一的以太网地址。以太网地址是一个48位的二进制数。在以太网卡中内建有一个数
据报过滤器。该数据报过滤器的作用是保留以本身网卡的MkC地址为通讯目的的数据报和
广播数据报,丢弃所有其它无关的数据报,以免除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包发送出去。通过以上的重定向,攻击者使网络数据包
在经过攻击者本身的主机后,转发到数据包应该真正到达的目的主机去,从而具有很强的欺
骗性。
本文中采用的是第二种方法,即在共享以太网中通过ARP欺骗,监听整个以太网的数据
包。
ARP 欺骗的详细原理:
局域网监听利用的是所谓的“ARP 欺骗”技术。在以前曾经一段阶段,局域网的
布局是使用总线式(或集线式)结构,要到达监听只需要将网卡设定为混杂模式
即可,但现在的局域网络普遍采用的是交换式网络,所以单纯靠混杂模式来达到
监听的方法已经不可行了。所以为了达到监听的目的,我们需要“欺骗”路由器、
“欺骗”交换机,即“ARP 欺骗”技术。
假设本机为 A,监听目标为 B。
首先,伪造一个 ARP REPLY 包,数据链路层头及 ARP 内容部分的源 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,
然后将这个包发给网关,网关接收到这个伪造的 ARP REPLY 包后,由于源 IP 为
B 的 IP,于是在它的 ARP 缓存表里刷新了一项,将(B 的 IP,B 的 MAC)刷新成
(B 的 IP,A 的 MAC)。这时候外部传给 B 的数据包经过网关时,就通通转发给
A。
这样还只是拦截了 B 的数据包而已,B 并不能上网——解决方法是将接收到
的包,除了目的地址部分稍做修改,其它原封不动的再转发出去,这样就达到了
监听的目的——在 B 不知不觉中浏览了 B 所有的对外数据包。
剩余27页未读,继续阅读
资源评论
- zhangzhengmin2014-10-27东西还是有用的,可以值得参考和学习
- jjchenwty992013-12-05这个和我现在的项目相关,参考一下了。
- brucehzh2014-05-11跟我现在做的设计先关,值得参考
cl1_1_1_1
- 粉丝: 3
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 农村信用社联合社计算机信息系统投产与变更管理办.docx
- 农村信用社联合社计算机信息系统数据管理办法.docx
- 利用SPSS作临床效度分析线上计算网站介绍-医学研究部统计谘.(医学PPT课件).ppt
- 利用Zabbix监控mysqldump定时备份数据库状态.docx
- 利用计算机解决问题的基本过程.doc
- 化工铁路通信工程总结.doc
- 北京大学网络教育软件工程作业.docx
- 医药公司(连锁店)计算机操作规程未新系统的自行按照旧制修改-新系统过制的编号加修模版.doc
- 医药公司(连锁店)计算机系统操作规程模版.doc
- 医药连锁门店计算机系统的操作和管理程序未新系统的自行按照旧制修改-新系统过制的编号加修模版.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功