数据捕获与数据控制(精选10篇)
数据捕获与数据控制 篇1
1 概述
近年来, 网络安全形势日益严峻, 平均每20秒就发生一次入侵计算机网络的事件。网络攻击方与防御方存在着不对称的技术博弈问题[1], 攻击方只要在任何时间找到目标的一个漏洞就能攻破系统, 而防御方必须确保系统不存在任何可被攻击者利用的漏洞, 并拥有全天候的监控机制, 才能确保系统的安全。
为了解决这个问题, 蜜网项目组[2] (the Honeynet Project) 提出了诱骗的概念, 即在一个可控的网络环境中, 诱骗入侵者进行入侵, 在入侵者没有察觉的情况下对入侵行为进行捕获, 分析入侵者的意图, 并让入侵者一无所获, 从而避免损失。
2 相关工作
利用sebek在蜜网中实现数据捕获是蜜网项目组提出的一种关键的数据捕获方案, sebek是由蜜网项目组 (the Honeynet Project) 在2001年至2003年间开发的用于数据捕获的内核模块, 该模块常被用于蜜网中实现数据捕获功能, 也可以单独使用, 国内对其研究较少, 大多数是针对蜜网的研究, 如由北京大学诸葛建伟博士主持的狩猎女神项目组[3], 多年来一直专注于蜜网技术及其应用研究, 取得了很多成果, 但是针对sebek的特点、工作原理和实现机制研究较少。
本文详细分析了sebek的特点、工作原理和实现机制, 进而通过调试发现了源码中的缺陷并给出解决方法, 然后进行验证, 在此基础上, 实现了利用sebek在蜜网中进行数据捕获的解决方案并进行了测试。
3 sebek关键技术分析
sebek是运行在内核空间的一段代码, 它能记录系统用户存取的一些或者全部数据, 具体包括:记录加密会话中的击键, 恢复使用SCP拷贝的文件, 捕获远程系统被记录的口令, 恢复使用Burneye保护的二进制程序的口令等。
3.1 数据封包模块
sebek体系结构如图1所示, 客户端部署在蜜网体系结构的蜜罐中, 服务端部署在蜜网网关上, 数据捕获并且封装成数据包是在客户端实现的, 当外部入侵者通过internet连接入侵了装有sebek客户端的蜜罐A主机时, 蜜罐A主机中的sebek会在入侵者没有察觉的情况下捕获外部入侵行为, 然后把捕获的入侵数据封装成数据包通过局域网传给蜜网网关, 在蜜网网关中装有sebek的服务端程序, 它截获客户端发来的数据包并对外部入侵行为进行分析。
通过分析发现, sebek重定向了系统调用, 把原有的系统调用函数替换成自定义的函数, 这个新的函数再来调用原有的系统调用函数, 并把原有系统调用函数读取的数据记录下来, 然后在Write Packet函数中实现数据的封包, 图2为sebek数据包的包头结构[4], 关键字段的数据类型和功能如表1所示。
sebek数据包的包头部分除了上述结构以外还要再添加上IP/UDP头, 因为传输的过程中采用的是无连接的udp传输, 包头的后面跟的是捕获的入侵行为数据, 数据包的捕获的实现方法采用的是经典的hook技术, 它修改了系统的函数调用入口点, 把函数调用地址替换成自己的函数地址, 从而使系统执行自定义的函数, 完成数据捕获的功能。
3.2 数据包的传输
在捕获入侵行为数据后, 还要以隐蔽的方式把数据传输到服务器端以供分析使用, sebek没有采用套接字传输, 因为套接字传输是在应用层实现的, 很容易被外部入侵者察觉, 它采用的是协议驱动的形式实现传输的, 图3为windows网络架构图, 从下到上依次为网卡硬件、总线、NDIS (网络驱动接口标准) 、protocol drivers (协议驱动) 、Tdi clients (传输驱动接口客服端) 、Network application (网络应用层) 。
图3中NDIS[5]为1989年由Microsoft和3Com联合开发的网络驱动接口标准, 使得协议驱动程序可以以一种与设备无关的方式来跟网络适配器驱动程序进行通信, 极大地方便了网络驱动程序的编写, 遵从NDIS的网络适配器驱动程序称为NDIS minport driver, NDIS支持三种类型的网络驱动程序:
网卡驱动程序 (NIC drivers) :网卡驱动程序是网卡与上层驱动程序通信的接口, 它负责接收来自上层的数据包, 或将数据包发送到上层相应的驱动程序, 同时它还完成处理中断等工作。
中间驱动程序 (Intermediate protocol dirvers) :中间驱动程位于网卡驱动程序和协议驱动程序之间, 它向上提供小端口 (Miniport) 函数集, 向下提供协议 (protocol) 函数集, 因此对于上层驱动程序而言, 它是小端口驱动程序。对于底层的驱动程序, 它是协议驱动程序。
协议驱动程序 (Upper level protocol drivers) :协议驱动程序执行具体的网络协议, 如IPX/SPX、TCP/IP等。协议驱动程序为应用层客户程序提供服务, 接收来自网卡或中间驱动的信息。
sebek的数据传输采用的就是协议驱动的形式, 这种传输是在内核层实现的, 因而相对于socket传输而言, 隐蔽性和安全性更好。通过分析还可以发现, 在数据传输前, sebek要判断数据包的长度是否超过最大数据传输单元 (MTU) , 如果超过了就自动进行截断处理, 每一部分再加上包头, 分别进行传输, 所有的准备工作就绪后, 调用Ndis Send Packets函数实现数据包的发送。
3.3 服务端数据接收
当把数据包传到局域网中以后, 为了实现更好的隐蔽性, sebek采用一种机制使得同一蜜网体系中其它装有sebek蜜罐的主机不能检测到该数据包, 只有服务器端能检测到, 而且数据包的传输只能是单向的, 即只能从客服端传输到服务器端, 反之则不能传输, 实现这一机制的方法是sebek定义了一个通用的协议, 客户端和服务端的通信通道是单向的, 这个通道使用udp协议, 每个数据包除包含udp头以外还有一个sebek头部数据, 在sebek头中定义了一个Magic成员, 具体的数据包传输过程中的算法为:
while (蜜罐A的sebek数据包传输到蜜罐B时)
if (蜜罐B的Magic值=数据包中的Magic值)
蜜罐B主机丢弃该数据包
while (蜜罐A的sebek数据包传输到蜜网网关时)
if (数据包中端口号=网关预定义的端口号&&数据包中的Magic值=预定义的
Magic值)
蜜网网关接收数据包并处理
采用这种机制的好处是即使外部入侵者攻陷蜜网后, 企图利用攻陷的蜜罐主机来截获另一个蜜罐主机发送的数据包也不能实现, 并且由于除了端口号以外, 又引入了Magic成员, 提高了暴力检测的难度。
当蜜罐主机发送的数据包到达蜜网网关处时, 装有sebek服务端的蜜网网关可以直接从网卡捕获该数据包, 此外还可以从tcpdump日志文件中获取, 该日志文件是系统捕获的所有网络数据文件。
3.4 抗检测性
sebek一个重要的特点就是在外部入侵行为不知不觉的情况下捕获入侵行为, 如果外部入侵行为攻陷了蜜罐主机后发现了它的存在, 就会终止入侵行为从而使数据捕获不能继续, 所以抗检测性是它非常重要的功能, 为了实现这个功能, 采取了如下措施:
1) 采用了诸如Adore等基于LKM的rootkit的技术, 使自身更难于被发现。
2) 通过安装cleaner模块来隐藏sebek, 该模块把sebek从安装链表中删除, 删除以后蜜罐主机中不再显示安装有sebek, 并且不能删除, 提高了抗检测性。
4 调试
为了验证sebek的功能, 我们对其进行调试运行, sebek是运行在内核空间的一段代码, 最初是在linux上运行的, 后来被移植到windows等其它的操作系统中, 我们以在windows上运行的版本为例, 由于其是以驱动的形式存在的, 编译驱动有两种方式, 一种是通过集成开发环境诸如VC或visual studio和ddk配合来编译, 一种是直接通过ddk[6]来编译, 前者通过集成开发环境编译, 优点是便于修改和发现错误, 符合大多数习惯集成开发环境的人们, 缺点是需要一系列的配置。后者优点是不用安装集成开发环境且不需要配置, 可以直接编译, 缺点是脱离了集成环境后不便于调试。
这里采用的是直接使用ddk来编译的方式, ddk有windows2000 ddk, windows xp ddk和windows 2003 ddk, 这里我们采用的是windows xp ddk。此外为了加载编译好的驱动文件并显示该驱动程序在内核空间的行为, 还需要借助一些工具才能实现, 因为驱动程序和普通的程序区别就是它是在内核空间运行, 这里我们采用的工具是Kmd Manager[7]和Dbgview[8], Kmd Manager是一个免费的加载驱动程序的小工具, 而Dbgview能够捕获内核空间的行为并且可以把捕获的数据保存到一个日志文件中, 通过对该日志文件的分析, 我们可以清楚地查看到驱动程序在内核空间的运行情况。
4.1 实验过程
使用ddk编译sebek客户端程序, 会生成一个sebek.sys文件, 接下来, 为了加载该驱动文件并查看运行后该程序在内核空间的行为, 我们使用Kmd Manager来进行加载, 使用Dbgview捕获内核空间行为, 实验如图4所示和图5所示, 图4显示了被加载和运行的过程, 图5显示了加载后该驱动在内核空间的行为。
4.2 对蓝屏的解决方法
在对sebek客服端程序进行调试的过程中发现启动程序以后总是蓝屏, 经过调试发现问题在于抗检测模块Antidetection.c模块中Find Ps Module List函数的问题, 文献[9]中给出了一种方法, 但是并没有彻底解决问题, 客服端端程序仍不能运行, 本文在此基础上进一步完善, 消除了蓝屏现象, 具体算法为:
5 系统需求分析
要设计一个支持sebek进行数据捕获的应用系统, 通过该系统可以捕获蜜罐主机上的击键信息, 进而分析击键行为, 验证sebek的功能, 从而实现利用sebek在蜜网中进行数据捕获的解决方案。
其次, 由于sebek是在不断的完善过程中, 最新版本为se⁃bek 2, 以后还会进一步完善, 因此设计的系统要具有良好的可扩展性和可维护性, Sebek的实现包括客服端和服务端, 因此我们首先要搭建一个蜜网体系结构, 然后在该体系结构中部署sebek, 并测试sebek的功能。
基于以上分析, 提出一种采用基于vmware的虚拟蜜网的体系结构来部署sebek并进行测试的方案, 如图6所示, 利用vmware虚拟了三个系统, 利用虚拟的windows 2000系统作为攻击方, 虚拟的windows xp作为蜜罐主机, 虚拟的linux系统作为网管。
6 系统设计
sebek是蜜网体系结构中核心的数据采集模块, 因此我们把它部署在蜜网中来检测其功能, Honeynet Project (蜜网项目组) 提供了一些关于部署Gen III (第三代蜜网) 的一般性文件, 对任何想使用honeywall Roo和VMware构建虚拟蜜网的个人或组织提供了一个可参考的模板。
此外, 北京大学诸葛建伟[10]等人提出了基于第三代蜜网的VNet网络攻防实验环境构建, 本文实验参考了该方案, 实验是在一台三星笔记本电脑上完成的, 该设备只有一个网卡, 可以利用VMware再虚拟出另外两个网卡以供使用。虚拟环境搭建好以后, 首先要配置蜜网网关, 由于篇幅关系, 本文不再详述, 读者可以参考相关资料, 蜜网网关[11]配置好以后, 还要在蜜罐主机上安装sebek客服端程序代码, 由于蜜网网关上已经装有sebek服务器端的程序, 因此不需要再单独安装服务器端程序。
实验结果如图7和图8所示, 记录了sebek服务端捕获的蜜罐主机上的活动信息, 首先, 图7中上部红线框内捕获的数据含义为在IP地址为192.168.200.124的蜜罐主机上, 点击开始菜单, 在运行对话框里输入了cmd.exe命令, 并且记录该命令的版本号, 其次, 中间红线框内的数据含义为在同一IP地址蜜罐主机上向IP地址为192.168.200.2的主机发起了ping连接, 最后一个红线框内的数据含义为IP地址为192.168.200.2的主机向IP地址为192.168.200.124的蜜罐回复了连接信息, 表示两者之间的网络是联通的, 此外从捕获的数据中还可以看出蜜罐上每一个活动的时间信息。
图8中红线框内的数据含义为在测试了连通性以后, sebek服务端捕获了在蜜罐主机上通过dir命令搜索本地文件信息的记录, 具体为首先通过cmd.exe命令打开命令行窗口, 然后通过DIR命令扫描C盘文件信息, 具体扫描到的文件和文件夹分别为ASFRoot、Inetpub和ftpdir、Documents and Settings、Microsoft UAM、Program Files及WINNT, 同样服务端也捕获到了具体的时间信息。
由此可见, 通过部署sebek这一重要的数据捕获工具, 在蜜网网关上收集到了蜜罐主机上的入侵信息, 从而为数据分析提供了依据。
7 总结
本文在分析sebek特点、工作原理和实现机制的基础上, 设计并实现了利用sebek在蜜网中进行数据捕获的改进方案, 针对sebek客服端程序在windows系统上运行时暴露出的缺陷, 采取方法加以完善, 使其能更好的运行在windows系统上, 实验结果表明, 该方案能够有效的捕获蜜网中的入侵行为, 从而为在蜜网中进行数据分析提供了依据。
摘要:近年来, 网络安全问题日益严重, 针对网络攻击方与防御方存在着不对称的技术博弈问题, 提出一种利用sebek技术实现数据捕获的改进方案。该文首先详细分析了sebek的特点、工作原理和实现机制, 通过调试发现运行中的缺陷并给出解决方法, 然后进行验证, 对sebek在windows下的运行流畅性进一步优化, 在此基础上, 实现了利用sebek在蜜网中进行数据捕获的方案。实验结果表明, 该方案能够有效的捕获网络中的入侵行为, 实现了数据捕获功能, 为下一步的数据分析提供依据。
关键词:sebek,数据捕获,蜜罐,入侵检测,网络安全
参考文献
[1]诸葛建伟, 唐勇, 韩心慧, 等.蜜罐技术研究与应用进展[J].软件学报, 2013, 24 (4) :825-826.
[2]The Honeynet Project[EB/OL]. (2014-02-02) .http://www.hon-eynet.org.
[3]诸葛建伟.狩猎女神的前世今生[EB/OL]. (2014-02-02) .http://netsec.ccert.edu.cn/zhugejw/2011.
[4]lance.spitzner.Know Your Enemy:Sebek[EB/OL]. (2008-12-08) .http://www.honeynet.org/papers/sebek.
[5]网络驱动接口规范baodi_z.网络驱动程序接口规NDIS[EB/OL]. (2008-02-21) .http://blog.csdn.net/baodi_z/article/details/2110917.
[6]speedingboy.DDK开发介绍[EB/OL]. (2013-09-17) .http://blog.csdn.net/speedingboy/article/details/3035131.
[7]灰狐.Windows驱动学习笔记[EB/OL]. (2013-03-12) .http://wenku.baidu.com/view/fbcd721cfad6195f312ba63e.html.
[8]Bactq.关于Dbgview的使用[EB/OL]. (2007-03-28) .http://blog.sina.com.cn/s/blog_7359f2100100onth.html.
[9]East Coke.Sebek源码修正档[EB/OL]. (2011-05-31) .http://blog.csdn.net/eastcoke/article/details/6456012.
[10]诸葛建伟解决方案.网络攻防环境搭建[EB/OL]. (2012-06-24) .http://www.docin.com/html.
[11]吴智发, 张芳芳.第三代蜜网网关Roo介绍[EB/OL]. (2010-05-18) .http://wenku.baidu.com/view/76859cf3f90f76c661371a55.html.
数据捕获与数据控制 篇2
关键词:数据采集与监控系统 应用分析
0 引言
本市作为沿海旅游城市,对于城市环境要求较高。天然气是一种无毒、清洁的能源,它的引进非常有利于改善我市的空气质量。我市现有燃气管网是高中低压三级管网,管网约1500km,居民供气达20万户,年供天然气约2.5亿Nm3,城市气化率约为90%,极大的方便了城市居民的生活。本市市区地理位置的特点是沿渤海带状发展,市区之间需要城市高压管网连接,各区内发展局部的区内管网,形成了高中低压三级管网结构,随着气化区域的增大,管网的复杂程度也随着增加,这就要求一个先进的系统来管理日益增大的管网和燃气经营市场。
1 燃气数据采集与监控系统简介
城市要更好的利用天然气资源,对其输配管网的安全性、高效性都有很高的要求。目前随着科学技术的不断发展,计算机网络的广泛应用,工业自动化控制水平的不断提高,对现在复杂的城市多级管网的监控、管理就需要智能化的系统。对于管网运行时的各项参数能够及时、准确的采集到系统中,系统能够自动处理所监测到的数据,并对管网运行中出现的不正常的情况发出警告,做出自动控制,避免事故的发生。管网运行数据全部存储到计算机中,以便查询。
2 针对本市的天然气多级管网系统,SCADA系统结构和系统功能
2.1 系统结构 以管理中心为核心,依托各站点的站控系统,采用星形的结构,把原有监控网络、门站、储配站、调压站、加气站、工业用户、办公局域网连成一套系统。把全市的管网和设备设施数据统一管理。
2.2 系统功能简介 ①门站。门站是天然气进入城市的第一关,完成天然气的计量和调节进入城市高压管网的压力等一些关键性的工作。对于门站调压器的控制可确保城市高压管网的压力稳定性。②液化天然气储配站。储配站是调节城市用气波动的关键设施,为保障城市用气的稳定,其拥有液化天然气低温储罐等储气设施来调节用气高峰时的波动。对各种设备的压力、温度、开关等的监控需要精密、及时、准确的完成。③调压站。调压站是调节城市多级管网压力平衡的重要设备。通过调节各调压站的压力可保障不同级别的管网压力的稳定。通过对各中高压、中中压调压站的压力、门开关等数据的监控,可以有效的保障管网的安全、稳定的运行。它通过站点内RTU采集到数据信息,用无线传送的方式传送给管理中心,管理中心可以远程监控各调压站。④各工业用户。根据我市市场调查的情况,工业用户用气量将占总用气量的80-90%,工业用户用气量很大,所以对每个工业用户的专用管线的监控和管理也是十分重要的。这些大用户通过系统监控管理。可实现远程计量、远程控制、泄漏报警、故障报警等一些功能,提高经营管理的水平,同时可提供安全的监控服务,保证供气安全,可以对故障及时、准确的排除。⑤加气站。加气站是本市天然气汽车加气的重要设施。目前,本市天然气汽车主要是公共交通系统使用。加气站的稳定运行保障着全市公共交通系统的稳定运行。通过数据采集及监控系统,把各个加气站站内站控系统数据进行统一管理,及时掌握和调度各加气站的运行。⑥管理中心。管理中心是对整个管网的监控中心,所以的重要设备都进行实时监控,对所以数据进行备份管理。调度站可根据获得的各项数据调度整个管网的稳定运行。图档工作站可以提供城市管网图像信息,为更加直观的了解整个管网。服务站可提供各种经过整理的信息,供各个单位查询。工程师站管理整个计算机网络的稳定运行。管理中心具有各种数据查询、统计分析、业务报表、系统维护等功能。公司各办公单位可通过办公网络查询管理中心提供的各种信息,信息的共享可以提高各部门的工作效率,提高公司的管理水平。
3 数据采集及监控系统的应用
本系统为燃气管网和生产监控及管理系统。本系统主要完成全市管网及设施的监控管理,对天然气高中低压三级管网、燃气调压设施、加气站等设备进行监控管理。并实现整个公司的客户服务管理、生产调度管理、决策支持管理、设备档案管理、查询统计等功能。
3.1 系统设计原则 该系统具有高可靠性、稳定性、和灵活性,以保证生产安全可靠的运行。
系统采用的硬件、软件和网络应具有世界先进技术水平,并且经过实践考验证明其安全、实用的产品。
站控系统的硬件和软件的可利用率达到99.99%。系统同时完成打印、编程、画面显示时,实时采集系统不能被中断。
站控系统中重要的部位为冗余设置。当发生故障时,能够自动进行切换,为运行管理提供可靠的保障,以保证系统正常、可靠、平稳的运行工作。
3.2 系统描述 本系统包括以下组成部分:
采用BB公司ControlWave 系列控制器用于门站、储配站、调压站、加气站系统过程控制单元PLC对站内生产装置的数据和运行参数进行采集、存储与处理。
系统过程控制单元PLC选用BristolBabcock公司的ControlWave系列控制器。实时采集现场设备的数据和重要的工艺参数并将所采集到的数据储存在机架上的处理器中。
BristolBabcock公司的ControlWave控制器组态软件ControlWave Designer工作在基于32位的Windows系统,软件编程支持复制、粘贴、自定义工具栏、快捷方式、I/O仿真、程序离线测试、程序打印等操作,同时软件编辑器提供各种操作的向导帮助,可以使操作者容易的完成如:I/O的组态、函数和功能块的添加删除、关键字的添加、变量和数据类型的定义等工作。
以下是生产监控及管理系统主要设备的介绍:
①PLC-ControlWave Micro。CW系列中的ControlWave Micro是集成了PLC,RTU和PAC 的优点与一体的可编程混合控制器,从小规模、中等规模的应用到大规模的应用场合都能使控制系统性能达到最大化。具有强大的通信能力:支持拨号、以太网、无线、专线、卫星、光纤等通讯方式,支持包括Modbus RTU、Modbus ASCII、Modbus TCP/IP、DNP3 、OPC等通讯协议,方便连接第三方智能设备。控制器支持对内存模块、I/O模块、CPU模块、通信模块、电源模块等进行诊断,将有故障单元的信息发送至调度控制中心。
②PLC/RTU组态工具。OpenBSI (Open Bristol System Interface) 是用于BB产品(NETWORK3000、CONTROLWAVE、流量计算机)的网络通讯维护及实用工具软件包。这些介于通讯层的应用软件统称为OpenBSI实用软件包(OpenBSI UTILITIES)。
OpenBSI实用软件包主要完成网络设置、通讯诊断、数据采集、远程监控等功能。
第三方软件可以通过OpenBSI实用软件包实现与Bristol产品的通讯。
③OpenBSI实用软件包。LocalView、NetView、下载工具、DataView、OpenBSI Monitor、Signal Extractor、Data Array Save/Restore、SigWrite、Alarm Router、OpenBSI DDE Server工具、OPC Server、Harvester、WebBSI。
ControlWave Designer带ACCOL III功能块库
为了减少工程和开发时间,软件采用了PLC编程的国际标准IEC61131-3。ControlWave Designer是完全满足IEC61131-3编程环境的ControlWave系列产品编程组态软件。除了基本的功能块及函数外,ControlWave Designer还集成了基于二十多年SCADA及过程控制经验不断完善的ACCOL III功能块库。ACCOL III功能块库包括60多个用于石油天然气、水及污水、过程计量及控制应用场合的功能块,同时将来还会集成更多实用有意义的功能块。
除此之外,可以利用ControlWave Designer软件编程组态实现带时间标签的报警及历史数据在控制器中的存储,当设备与外界通讯中断恢复后,实现数据的回填。
通过智能的管网监控管系统,可以提高公司的工作效率、服务水平,该监控管系统利用计算机网络、先进的有线、无线通信手段、工业自动化控制、标准管理软件,对于以后的升级、扩容、维护是非常方便、快捷的,能够满足现阶段各种需要。这种系统有着各种标准的接口,能够通过基础的开发语言对其功能进一步的开发和完善。
这是笔者对燃气输配管网的监控和管理的一点见解,燃气输配管网的监控和管理是非常复杂的,随着科学技术的不断发展,燃气输配管网的监控和管理会有更深入、广泛的发展。
参考文献:
[1]范素芳,邱晓国,吴云,李大帅.多级环境自动监测监控系统的设计与实现[J].价值工程,2012(13).
[2]张豪.燃气管网数据采集与监视控制系统的开发[J].自动化博览,2008-02-15.
数据捕获与数据控制 篇3
随着计算机网络的迅速发展, 人们迫切希望网络上的信息不被泄露、更改和破坏, 网络服务不被中断。网络数据包捕获和分析技术是网络安全维护的基础技术和核心手段, 因此, 深入研究网络数据包的捕获和分析技术尤为必要。本文提出了一种可行的捕获网络数据包的设计流程, 并实现了对捕获的数据包的实时分析和存储功能。
1基于Winpcap数据包的捕获技术
1.1网络通信模型及常规通信编程方法
计算机网络通信采用OSI七层模型标准, 只要遵循这个标准就可以和位于世界任何地方、同样也遵循OSI标准的其它任何系统进行连接。但实际上完全符合各层协议的商用产品很少, 随着Internet在全世界的飞速发展, TCP/IP已经成为事实上的国际标准, 它们的对比参考模型如图1所示。
对Windows系统, 数据包捕获用到的主要方法有原始套接字、调用NDIS库函数、使用他人编写的中间层驱动、使用第三方组织提供的捕获组件或者库 (如Winpcap) 共4种。本文采用第4种, 具体介绍如下:
1.2 Winpcap技术简介
Winpcap是UNIX下的libpcap移植到Windows下的产物, 它是一个开源项目。Winpcap工作于驱动 (Driver) 层, 所以能以很高的效率进行网络操作。Winpcap提供了以下强大功能[1]:1获取网卡列表及信息;2捕获原始的数据包;3设置filter, 只捕获自己感兴趣的数据包;4方便地把捕获的数据包输出到文件和从文件输入;5发送原始的数据包;6统计网络流量。
本文使用MFC应用程序的界面设计编写程序, 核心开发主要使用Winpcap完成。Winpcap的组成部分如图2所示, 使用其提供的函数主要完成网络数据包的捕获等功能。
Winpcap为Win32应用程序提供访问网络底层的能力, 底层是基于WINPCAP包进行开发。主要用到的函数包括[2]:
(1) int pcap_findalldevs () ;用于返回所找到的适配器列表。
(2) pcap_t* pcap_open () ;用于打开一个网络接口进行数据包捕获。
(3) void pcap_dump () ;用于将包内容输出到由pcap_ dump_open () 打开的文件中。
(4) int pcap_compile () ;用于将过滤规则字符串编译成一个BPF内核过滤程序。
(5) int pcap_setfilter () ;功能是设置BPF过滤规则。
(6) int pcap_datalink () ;功能是获取数据链路层类型, 如10M以太网、SLIP、IEEE802.3等。
1.3数据捕获原理
以太网 (Ethernet) 是一种总线型网络, 具有共享介质的特征, 当网络适配器设置为监听模式 (混杂模式, Pro- miscuous) 时, 由于采用以太网广播信道争用的方式, 使得监听系统与正常通道的网络能够并联连接, 并可以捕获任何一个在同一冲突域上传输的数据包, 运用这一原理就能监听所需要的信息。
1.4原始数据包捕获的实现
捕获流程按先后顺序如下:1捕获设备可用的接口列表;2选择接口并将其设为混杂模式捕捉;3将捕捉的数据包保存进数据库以便读取和分析;4读取数据库保存的数据包并进行分析;5释放接口。
本软件建立在Winpcap结构的第三层模块Winpcap. dll之上, 并用VC++6.0多线程技术实现。主线程用于查找和显示网络设备、设置过滤器、分析数据包。子线程用于打开选择网络接口、捕获数据包并实时存入数据库中。
1.5体系结构设计总框架
Winpcap提供了数据包的捕获功能, 在不同的应用中需要设计不同的协议分析模块。针对不同的协议, 设计相应的协议分析功能, 是基于Winpcap应用的关键所在。本文使用Winpcap捕获和分析网络数据包的框架如图3所示。
2具体设计与实现过程
2.1 Winpcap安装与配置
由于本程序采用Winpcap抓取数据包, 所以需要Winpcap软件包以及相应开发包的支持。主要配置包括头文件目录和库文件目录, 增加与Winpcap有关的预处理定义、pcap.h头文件以及添加静态链接库, 然后编译并测试代码。本程序采用的开发环境是Winpcap4.1.3以及对应的开发包[3]。
2.2初始化
这部分主要做的工作就是VC、MFC框架以及相关控件的初始化, 包括列名称、列宽度等相关属性, 网络设备信息包括设备的唯一识别名称及其可读的描述内容, 然后将其显示在一个下拉列表中供用户选择。
2.3 ADO技术及连接数据库
2.3.1 ADO技术简介
ADO是一组由微软提供的COM组件, 基于面向对象思想的编程接口。它建立在COM体系结构之上, 其所有接口都是自动化接口, 因此在C++、VisualBasic、Del- phi等支持COM的开发语言中通过接口都可以访问到ADO。ADO对象模型非常精炼, 由3个主要对象Connec- tion、Command、Recordset和几个辅助对象组成。
2.3.2连接数据库代码设计
首先, 使用ADO前必须在工程的StdAfx.h头文件里直接引用符号#import, 以此引入ADO库文件, 使编译器能正确编译;其次, 定义ADO连接、命令、记录集指针, 这些指针为整个应用程序所共享。如在对话框头文件中定义:_ConnectionPtr m_pConnection;_CommandPtr m_ pCommand;_RecordsetPtr m_pRecordset;再次, 需要初始化OLE/COM库环境。在MFC应用程序里, 一个比较好的方法是在应用程序主类的InitInstance成员函数里初始化OLE/COM库环境。通常在ADO操作中语句要常用try....catch () 来捕获错误信息, 此时通过链接字符串与相应的数据库连接[4]。代码如下:
最后, 通过引用类中的theApp获取库连接指针, 同样采用try...catch () 来捕获错误信息。程序代码如下:
至此, 与ADO相关的代码都已经添加完成。
2.4功能相关的代码设计及程序编写
2.4.1程序开发流程
本程序具体流程:主程序 → 数据包捕获子线程函数ThreadProc→数据包实时显示以及实时存入SQL数据库。在多线程应用中, 子线程函数ThreadProc主要用来抓取数据包, 代码设计如下:
具体流程如图4和图5所示。
2.4.2软件运行结果
本软件需确保安装在本机上的Winpcap安装包, 运行结果如图6所示。
3结语
本文利用VC++6.0开发工具和Winpcap开发包, 实现了监听局域网内所有主机的数据包, 并分析了每个包的协议、源/目的IP地址、数据包长度等, 可检测网络入侵亦可学习网络协议知识, 但分析还不够完善, 有待进一步提高。
摘要:利用Winpcap网络开发包使应用程序绕过协议栈捕获并传送网络数据包, 实现了数据包的循环捕获。基于Windows平台, 用VC++6.0实现界面设计, 并运用ADO技术与数据库连接, 实现了数据包实时分析和数据的存储功能。
关键词:Winpcap,数据包,协议分析,数据库
参考文献
[1]吕雪峰.网络分析技术揭秘[M].北京:机械工业出版社, 2012.
[2]王月辉.基于Winpcap的网络数据包捕获和分析系统的研究与实现[D].沈阳:沈阳工业大学, 2007.
[3]黄培花.基于Winpcap的网络数据包捕获系统设计与实现[J].滨州学院学报, 2012, 28 (6) .
控制数据流 确保云安全 篇4
云计算是一种基于互联网使用或交付服务的技术或商业模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云计算一经推出,就受到了业界极大推崇,并推出了一系列基于云计算平台的服务。然而在云计算服务中安全问题一直令人担忧,云计算特有的数据和服务外包、虚拟化、多租户和跨域共享等特点,给安全带来了前所未有的挑战。本文在考虑云计算技术、云计算模型与体系架构等方面对云安全的影响之外,从数据流的角度来探讨云计算平台下的安全问题。
云平台下数据流向的分类
从云平台数据流的方向来看,大致可分为以下几类(如图1所示)。
1.外部访问虚拟机实例。外部用户访问虚拟机上发布的业务,流量走向为:互联网进入 -> 云平台核心区 -> 云平台接入区 -> 物理机网卡 -> 虚拟机实例。
2.虚拟机实例访问外部。由虚拟机访问互联网,流量走向与上一种情况相反,虚拟机实例 -> 物理机网卡 -> 平台接入区 -> 云平台核心区 -> 互联网。
3.跨物理机的虚拟机实例之间访问。虚拟机实例1->物理机1网卡->接入交换机1->核心交换->接入交换机2->物理机2网卡->虚拟机实例3。
4.同一物理机上的各虚拟机实例之间互相访问(隐蔽信道)。流量路线为:物理机1上的虚拟机实例1访问虚拟机实例 2。
5.物理机和虚拟机实例之间的访问(虚拟机逃逸)。为物理机和虚拟机实例之间的双向流量,物理机与虚拟机实例互相访问。
不同数据流向适用不同防护方法
针对外部访问虚拟机实例的情形,此种情况下与传统IDC的防护思路一样,不同之处在于部分串联设备部署方式需要考虑调整。一是因为云平台扁平化是趋势,能少串一个设备是一个设备;二来设备吞吐向来也不是云计算的优势,云平台下数十G的链路串上去也载荷过大,可以考虑旁路部署按需防护。
针对虚拟机实例访问外部的情形,通常云平台虚拟机实例用来对外提供服务的情况和案例比较多,较少有主动访问互联网的情况。不过有一种较为常见的场景就是虚拟机被攻击者控制后用作跳板,往外进行大流量的分布式拒绝服务攻击。在这种情形下一方面会消耗服务器的CPU资源,另一方面也会消耗云平台的大量带宽。因此有必要对由内往外的流量进行监测,这里就可以使用NTA,将进行分布式拒绝服务攻击的虚拟机实例路由直接丢弃。
针对跨物理机的虚拟机实例之间访问的情形,由于跨物理机的虚拟机实例访问会经过传统的交换机,因此该场景下可采用传统的安全措施来进行防护,如访问控制列表、入侵检测系统、入侵防御系统等。如果没有这类需求,可直接通过划分VLAN的方式隔离。
针对同一物理机和虚拟机之间的访问(虚拟机逃逸)的情形,由于Hypervisor存在一些已知的漏洞,这就为攻击者从已控制的虚拟机利用 Hypervisor的漏洞渗透到Hypervisor 提供了可能。虽然利用这种方式的技术难度相对较高,但是由于所有的VM都由Hypervisor来控制(启动、停止、暂停、重启虚拟机,监控和配置虚拟机资源等),因此危害相当大。要解决这个问题必须得修复Hypervisor的漏洞,这一方面依赖于能否发现这些已知漏洞(可采用漏洞扫描工具或渗透测试服务),另一方面依赖于虚拟化厂商提供的补丁。同时,笔者认为可以采用VEPA或者类似VEPA之类的技术,将VM到Hypervisor的双向流量引出到外部的交换机转发,这样就为监测这类攻击提供了可能。
同一物理机上的不同虚拟之间互访
针对同一物理机上的虚拟机实例之间访问(隐蔽信道)的情形,常见的虚拟化软件缺省采用VEB(即vSwitch)来完成同一个物理机上的虚拟机实例之间通信。由于多数 vSwitch 只进行二层转发,导致虚拟机实例互访流量不可见,固而是云平台下的一大安全隐患。
vSwitch的转发过程为:正常情况下,vSwitch处理过程与传统交换机类似,如果从物理网卡收到报文,查询MAC表转发。如果从虚拟机实例收到报文,目的MAC在外部则从物理网卡转发,在内部则查询MAC表转发。
目前的思路有两种:一种是通过 vSwitch来解决。vSwitch在二层转发基础上还可实现其他功能,根据VMware公布的资料,至少包括VLAN、安全功能、流量管理、甚至负载均衡等功能,但是由于实现这些功能需要消耗大量服务器的CPU资源,使用效果有待考验。
另一种解决办法是采用IEEE标准组织提出的802.1Qbg EVB(边缘虚拟桥技术)和802.1Qbh BPE(桥接口扩展标准技术)两条标准。这里主要探讨应用范围更广的802.1Qbg EVB,其包含了传统的vSwitch功能的VEB模式、VEPA 和通道技术。VEB上面已经说过了,简单说一下另外两种处理方式。
一种是VEPA。VEPA组件从虚拟机实例1接收到数据后,先转发到物理网卡,物理网卡首先转发出去到接入交换机,再由接入交换机根据MAC表原端口转回,VEPA收到从接入交换机来的报文才查表进行内部转发,最终数据到达虚拟机实例2和虚拟机实例3(如图2)。
通过这种方式可以将所有虚拟机实例之间的交互数据通过接入交换机上进行转发,因此可以在交换机上实施访问控制策略,隔离不相关的业务,对流量进行分析实现入侵检测和审计等功能。
另一种是通道技术,多通道技术方案将交换机端口或网卡划分为多个逻辑通道,并且各通道间逻辑隔离。每个逻辑通道可由用户根据需要定义成VEB、VEPA或Dircetor IO的任何一种。每个逻辑通道作为一个独立的到外部网络的通道进行处理。多通道技术借用了 802.1ad S-TAG 标准,通过一个附加的S-TAG和VLAN-ID来区分网卡或交换机端口上划分的不同逻辑通道。如图4所示,多个VEB或VEPA共享同一个物理网卡。
从理论上来说,虚拟机之间可以套用安全域划分的概念,依靠多通道技术进行合理地虚拟安全域划分,同一个虚拟安全域内采用 VEB 技术,域内虚拟机互访不受限制,保证了足够的交换性能;虚拟安全域之间采用VEPA技术,将流量引到交换机上,部署访问控制与流量监控策略等;对于单独的安全域,尤其是独立业务的虚拟机,采用 Dircetor IO,与其他虚拟机流量隔离,直接转发到外部,在外部交换机上监控其流量。
以上从数据流走向的视角介绍了5种不同访问情形下各自不同的防护方法,来为云安全提供一定支撑。实际上,想要妥善地解决云安全的问题,通过单一的手段是远远不够的,需要建立一个完备的体系,这涉及多个层面,需要从法律、技术、监管三个层面同时进行。
网络数据捕获机制研究 篇5
网络数据捕获就是将某个网络设备看到的数据报文完整的收集起来,不管这些报文是发往哪个地址,哪个端口[2]。然后对其进行分析、过滤等处理,送往上层作进一步的处理。网络数据捕获是网络安全监测的基础。通常网络数据包的捕获是使用传统的网络数据捕获方式来获取的。系统对网络数据包的处理流程图如图1所示。
从网卡的工作方式分析,使用的是动态内存分配,对每一个数据包的接收都是采用动态内存临时申请、释放,在大流量网络下,将是一个较大的系统开销。从网卡通常的工作模式分析,是每包一个中断,而进出中断带来的进程场景切换必将消耗大量的系统资源,而且容易出现活锁。从收包的过程分析,一个数据包从进入网卡到到达上层应用程序的过程中,发生了多次内存拷贝和系统调用,其中最致命的一次是将数据从内核区拷贝到用户区。而系统调用要进行安全性检查和上下文切换,这是一个很耗费资源的操作。下面我将对各个因素逐一阐述。
1 系统调用
操作系统的主要目标[3]就是将应用进程与I/O等外部世界隔离开来,给它们二者提供一个交互的接口,并将内存、CPU等资源共享给不同的应用程序。用户程序要与I/O设备打交道必须通过系统调用,经由操作系统来完成。而系统调用由于要进行安全性检查和上下文的切换,会耗费大量的资源和时间,是一个沉重的负担。
2 用户态和内核态之间的数据包拷贝
在数据包从网卡经过协议栈,最终到达用户态的过程中要经过数次内存拷贝。在高速网络下,将数据包进行一次拷贝和不拷贝由应用程序直接送到网络有明显的性能差别,做内存拷贝,就像数据包做了一次存储转发一样,会成为网络数据包处理的瓶颈之一。
另外数据包经过从内核态到用户态的拷贝,这是最耗费CPU的一个操作,大约占一个数据包从进入网卡到进入应用程序总时间的50%。而且,应用程序的内存空间和物理内存空间之间要进行映射,因为用户空间使用虚地址,一段连续的用户空间在物理内存上可能分开很远,所以通常用户缓冲区不是一段连续的物理内存空间,而内核缓冲区,却强制使用连续的物理内存空间以实现DMA等操作,这就需要进行地址映射。
3 网卡动态内存分配方式
网卡驱动为每个数据分组动态地分配内存,内存的分配和释放占用时间较多。以1Gbps线路为例,每秒到达的包的数量能够达到几十万,如此频繁分配内存的资源消耗是非常大的。
4 计算校验和
网络数据在用户态和核心态之间的拷贝过程中,内核还需要计算整个缓冲区内容的校验和。这个校验和存储在协议头部中,用于数据包接收者检查数据是否正确。即使不作这次拷贝,内核仍需遍历缓冲区内容以计算校验和,因为内存带宽是一个最重要的性能因素,这个过程几乎要和内存拷贝消耗同样的时间。
5 网卡的每包中断方式
系统在每次中断操作都需要保护现场,切换上下文等操作。在千兆网络环境下,每秒会有几万甚至几十万个包,如果每个分组到达都产生中断,中断之间的时间间隔可能只有几微秒,当前计算机系统很难达到这个处理能力。即使计算机系统能够应付频繁的中断,也将极大地浪费系统资源。而且由于中断具有较高的优先级,在高速环境下,频繁的中断势必将长时间占据系统资源,导致系统没有时间对捕获得数据进行处理,进而导致无法接收新来的数据包,最终出现接收活锁。
6 填充协议头和分片重组
填充协议头必须由内核来做。发包时内核协议栈的各个协议层需要将数据包封装,收包时又需要将各分片重组,这两个过程都需要内存拷贝。
综上所述,可以看出,基于传统的网络数据捕获技术,在一个数据包的收取或者发送过程中,会发生多次内存拷贝和系统调用,加上频繁的中断处理,这些将耗费大部分的CPU时间。
很明显,要想提高系统的捕发包效率,需要下面两方面的改进:
a.减少内存拷贝的次数,节省大部分的CPU时间。
b.改进中断方式,减少不必要的CPU周期。
网络流量和带宽依然在飞速发展,新的网络应用不断涌现,对网络的性能、实时控制和合理调度的需求依然迫切。就目前来讲,对于一般的网络出口的流量已经达到1G以上了,所以随着千兆网络的普及和网络带宽、流量的增加,必然使网络内容分析、监控,网络安全和网络流量分析等方面应用对网络流量的测量与监控提出更高的要求。
摘要:近年来,随着网络技术的迅速发展,人类对互联网依赖程度的日益增强,网络流量和带宽迅速增长,在网络流量监控的各种应用(如防火墙、入侵检测系统等)中对海量数据进行捕获和分析至关重要。主要对数据捕获机制的现状进行分析,提出数据捕获机制及其改进思路。
关键词:网络数据捕获,内存分配,系统调用
参考文献
[1]J.Michael,H.Braun and I.Graham,Stor-age and bandwidth requirements For passive.Internet header traces,Proc.of the Workshopon Network-Related Data Management 2001,Santa Barbara,California,USA,May 2001.
[2]Packet Capture With libpcap and otherLow Level Network Tricks.http://www.cse.nau.e-du/~mc8/Socket/Tutorials/section1.html
网络数据捕获技术的探究 篇6
随着互联网在教育、科技、医疗、军事等各个领域的普及, 为我们提供了各种各样的服务。但是, 随着互联网的快速发展, 我们在享受互联网带来的丰富信息和巨大便利的同时, 也面临着网络安全的严重威胁。
因此, 如何对网络应用进行有效管理, 对网络信息的内容进行有效监控和过滤, 抑制有害信息的传播已经成为净化网络空间、维护社会安定和国家稳定的重要问题。网络监控是保障网络安全的基本措施之一。在网络拓扑中的关键位置对数据报文进行捕获、分析和监控, 可以减少和杜绝由互联网技术所带来的网络内容安全问题。
2 数据捕获技术的研究
2.1 数据捕获的概念和基本原理
计算机将数据在网络上传输时, 为了保证所有网络共享资源的公平性和快速性, 通常把传输数据分割成若干个小块。我们称这样被分割的传输单位为包, 或“数据包”。当前从网络中对数据包进行捕获的方法有以下两种, 其一是用专用硬件进行捕获, 这种方法性能好但是价格昂贵;其二是用通用硬件——普通计算机与网络连接的网络适配器, 即网卡, 采用软件的方法来实现数据包的捕获。软件捕获方法虽然没有专用硬件捕获性能好, 但采用软件捕获的方法却以其实现成本相对较低、可修改、可重用等优点, 得到了认可和广泛的使用。
从网络中捕获数据包是网络安全解决方案的基础。而要想捕获到网络上流经的所有数据包, 就需要先研究网络上数据包的传送方式。局域网的通信一般都采用广播方式, 网络上的每个站点共享信道, 一个站点发出的数据包, 其他站点均能收到, 也就是说, 任一台计算机都可以接收到网络中同一个共享域的所有的数据通讯。
2.2 数据包捕获机制
包捕获技术就是从网络上捕获全部或特定的网络数据包提供给其它系统使用。本文是利用局域网的广播通信方式来完成数据包的捕获工作。
在每张通讯的网卡上都有一个全球唯一的物理地址, 即MAC地址。MAC地址是一个48位的二进制数。在以太网卡中实现对广播地址进行过滤的是数据包过滤器。它的工作原理是:保留通讯目的地址是本身网卡MAC地址的数据包和广播数据包, 丢弃无关的数据包, 避免浪费CPU资源。这是以太网卡在正常情况下的工作方式。因此网络接口应该只对以下两种数据包进行处理:
(1) 本地网络接口的硬件地址和数据包的目标地址相匹配。
(2) 将“广播地址”作为数据包的目标地址, 它代表所有的接口地址, 格式为“FFFFFFFFFFFF”。
在以上两种情况下, 网卡通过CPU产生中断, 操作系统进行中断处理, 将帧中的数据传送给上层系统进行处理。其他情况下操作系统不作处理, 数据帧将被丢弃。
因此要想捕获流经网卡而目标地址不是本机网络接口地址的数据, 必须改变系统正常的工作模式。当网卡的工作状态设为“混杂” (promiscuous) 模式时, 该网卡就具备了“广播地址”, 会接收到经过该网卡的每一个数据包, 并通过硬件中断的方式来提醒CPU进行中断处理, 因此就可以实现捕获流经本机网卡的任意数据包。数据包的捕获工作, 分为以下几个部实现分:
1) 获取网络设备接口表单;
2) 将网卡工作状态设置为“混杂模式”;
3) 判断是不是10MB的以太网;
4) 设置、编译过滤规则;
5) 过滤规则与网卡进行绑定;
6) 捕获数据包以及判断是否要继续循环捕获;
7) 释放网络设备接口表单。
3 访问数据链路层方法
数据链路层处于协议栈的第2层, 基于物理层之上。所有的上层协议都要直接或间接使用数据链路层协议提供的服务。在大多数情况下, 访问数据链路层协议所提供的服务是内核中的一些高层协议实现的。但在某些情况下, 应用程序不经过高层协议, 需要直接访问数据链路层所提供的服务, 捕获技术就是应用程序获取数据链路层的报文。当前几乎所有的操作系统都支持应用程序直接访问数据链路层, 其中, 应用最广泛的报文捕获函数库是基于BPF过滤机制的Libpcap库。下面我们来介绍基于BPF过滤机制的捕获方法和Libpcap分组捕获函数库。
3.1 BSD分组过滤器BPF
BSD分组过滤器BPF (Berkeley Packet Filter) , 即伯克利数据包过滤器, 它是洛仓兹伯克利试验室的研究人员Steven Mc Canne和Van Jacobson研究的一种用于Unix内核的数据包过滤体制, 是实现访问数据链路层服务的接口。BPF不仅能够捕获经过数据链路层的所有分组, 最重要的是它还提供分组过滤功能, 即捕获应用进程想要的分组信息。通过ined命令, 可以配置BPF设备属性, 如装入过滤器, 设备读超时、缓存大小、打开混杂模式等等。设置完成后, 就可以读写BPF设备了。把安装好过滤程序的BPF与网络接口相关连, 就可以实现对输入的分组选择性地接收。BPF还采用了以下三种技术来减少开销:
1) BPF过滤器运行在内核中, 从而减少了从BPF到应用进程之间数据量的拷贝。
2) BPF传递给应用进程的是满足条件分组中的部分数据, 这被称为捕获长度 (capture length) 。因为大部分应用进程需要的是分组头部, 而非分组的全部数据。这同样减少了从内核到用户空间数据量的拷贝。
3) BPF采用双缓存技术 (double buffering) , 将要传送给应用进程的分组数据先存入缓存, 当缓存已填满或者读超时时才将分组数据传送给应用进程。缓存的存在减少了系统调用次数, 即降低了系统开销。在每个应用进程中BPF都设置了两个缓冲区, 当一个缓冲区给应用进程传送数据时, 启用另一个缓冲区来填装数据, 这就是典型的双缓冲技术。
3.2 分组捕获函数库Libpcap
Libpcap (Libaray for Packet Capture) , 即分组捕获函数库, 是由劳伦斯鉻伯克利国家实验室开发的一个在用户级进行实时分组捕获的接口, 其特点是独立于操作系统, 成为开发跨平台的分组捕获和网络监视软件的首选工具。Libpcap for Win32将Libpcap移植到了微软的Windows系列操作系统上, 一个最常用的实例就是Win Pcap。它是一个基于Libpcap模型, 在Win32平台上实现分组捕获和网络分析的体系结构。
4 结束语
网络数据捕获技术是网络安全监控的基础, 本文通过对网络数据捕获技术的研究, 简要介绍了数据捕获的概念、基本原理和捕获机制, 为网络安全解决方案提供了理论依据。
摘要:网络监控是保障网络安全的基本措施之一。在网络拓扑中的关键位置对数据报文进行捕获、分析和监控。本文着重分析了数据捕获的概念和基本原理、数据包捕获机制, 以及捕获数据包的方法。
关键词:网络安全,数据捕获,捕获机制
参考文献
[1]郑挺.高速网络安全监控系统的研究与实现, 国防科学技术大学, 2003。
[2]李爱平, 郝英.网络监控系统中数据包捕获分析模块的实现, 网络安全, 2007。
SIP通信数据包捕获和研究 篇7
1.1数据包捕获的机制
数据包捕获就是对数据包的完整收集, 系统搜集某一网络设备所接收的数据包, 不论此数据包发送至哪个端口或地址。收集数据包以后, 再进行还原以及审计等处理, 发送到上一层进而对其实行应用处理。可以通过专用的数据采集卡对网络实行相应采集, 也可根据以太网卡的混杂模式通过其广播特性或者交换机监测口对数据报文进行监听。
数据包的捕获通常有3个阶段:首先, 设置网卡为“混杂”的工作模式;其次, 捕获链路层的数据帧;最后, 提取数据包的首部, 便于分析和处理。
1.2数据包捕获的意义
网络不仅仅为人们带来越来越多的方便与快捷, 也给人们带来诸如网络病毒、机密泄漏、黑客入侵等安全问题, 信息安全成为我们关注的一大焦点。数据包捕获是信息保护的一种重要方法, 因此对其技术的研究有着重要意义。
1.3特点
数据包捕获是关乎网络与财产安全的一项重要措施, 该技术有较高的要求, 因此有以下特点:1.响应快。对于许多安全应用, 在数据报文上需要很快的响应速度, 以便于迅速捕获以及即时反应, 同时不允许误判或丢包。2.适应能力强。数据包捕获针对流经此网络的所有数据报文, 其类型和源目的地址都不统一, 即数据包的种类繁多且来源复杂, 因此该技术对各种数据包应有较强的适应能力。3.直接由上层处理。数据包的处理能够不经操作系统协议栈, 直接通过上一层的应用实行处理。4.不需严格校验。大部分数据报的处理是通过应用程序操作的, 在该应用中能够实行部分校验;数据报在某些网卡中的硬件芯片上进行了固化的校验, 因此在捕获过程中可以略去一些严格校验。
二、SIP通信
2.1 SIP协议所支持的功能
SIP作为信令协议, 可提供多媒体通信的5项功能。
2.2 SIP网络系统
SIP协议的网络系统结构包括用户代理 (UA) 和网络服务器 (NS) 。应用代理是SIP的终端, 用于和用户之间的交互, 可发送呼叫请求和响应呼叫请求。
网络服务器主要解析地址以及定位用户, 分为3种:代理服务器, 用于路由选择, 将用户请求及响应发送至下一跳;重定向服务器, 用于地址解析, 类似于DNS, 把目的地址映射成为0个或者多个新地址;注册服务器, 接收来自终端的注册请求, 并记录其地址。因此, 基于SIP协议, 有直接呼叫、代理服务以及重定向服务等3种通信方式。
2.3 SIP协议的特点
SIP协议参照了其它的Internet标准, 有其简练、兼容以及可扩展的作风。SIP协议是基于文本, 其词法、语法都较为简单;SIP在会话请求时, 同时实行媒体协商, 因此建立呼叫所需时间大大缩短;SIP只要对头域做简单地扩展便可进行补充、智能等业务;SIP协议能够分布式多播。
三、SIP通信数据包捕获
数据包的捕获系统包含硬件与软件, 硬件主要是对数据包进行捕获以及过滤, 软件主要对数据包进行分析与处理。因此捕获系统需满足实时、灵活、扩展方便和数据包无遗漏等性能。
3.1 SIP通信捕获思想
SIP通信捕获包含通信消息及其媒体数据2个部分的捕获。通信消息的捕获能够获得呼叫方和被呼叫方的通信状态——通信步骤与通信状态, 通信媒体参数的信息;依据通信的状态判断获取数据的开始或停止, 依据参数信息筛选及还原双方数据。
1.捕获流程
一个完整SIP通信应包含的消息有INVITE, 180Ringing, 200OK, ACK, BYE, 200OK等, 双方的媒体参数信息能够在INVITE及其响应的200OK获得, 由此可设计以下捕获流程:INVITE消息获取, 从SDP的o字段获取源IP地址, 并将该SDP部分的媒体参数作为邀请端 (A) 的媒体信息;从INVITE的起始行获得被邀请端 (B) 的IP地址。等待180Ringing, 若B至A的180Ringing消息得以捕获, 系统会将该信息显现出。等待200OK响应消息的捕获, 若判断为B到A的INVITE响应, 将该SDP的通信媒体信息获取并作为B的媒体信息。等待A至B的ACK消息的捕获。ACK不经过代理、重定向服务器, 而是直接通过双方接收、发送, 因此能够通过ACK的源地址和目的地址判断会话双方是即将通信双方与否。根据ACK确定双方IP地址, 捕获双向数据, 同时筛选、还原双方通信媒体信息。BYE消息捕获, 一方发送至另一方时便停止捕获。200OK响应消息捕获, 判断为BYE的响应消息时终止通信。
2.捕获改进
上述流程是必备的, 因SIP的复杂性, 数据包捕获可能出现乱序, 所以需做改进:
SIP通信除了上述消息外, 还有其他请求、响应消息, 某会话的其他SIP消息, 可选用的处理方式为收到便显示。
因网络上的数据有着庞大的传输量, 需要建立合理、有效的筛选机制, 可依据IP地址对双方信令、数据进行筛选。
因数据在网络上传输不稳定, 捕获完整SIP通信较为困难, 所以可将捕获流程缩减为4步:处理INVITE消息;处理对INVITE响应的200OK消息;依据媒体参数信息, 对数据捕获、还原与确认;依据BYE或对BYE响应200OK消息终止。
3.2媒体数据还原
SIP通信通过RTP数据包进行媒体数据传输, 还原方案是基于RTP协议展开的。对实时通信与离线数据设计以下两种不同方案:
1.实时通信的还原。
根据请求消息进行分析, 获得媒体的源地址、目的地址和载荷、端口等信息, 然后经过滤器对数据实行捕捉。具体步骤如图1所示。将通信信令捕获, 同时对相关数据流的信息进行记录;依据发送、接收双方的通信信令对RTP数据包进行捕获;判断捕获是否结束, 可根据SIP通信中BYE或对BYE响应的200OK确认停止;重组RTP数据, 同时解压缩以获取原始数据。
2.离线数据的还原。
首先储存捕获到的所有数据包, 进而还原数据流, 再通过流信息获取媒体的参数信息, 后通过此信息将原始数据还原。具体流程如图2所示。打开网卡, 将IP数据包完整捕获并储存;依据RTP流判别的原则, 在上述所储存的数据中将所有的RTP流信息提取出来;根据RTP包中Sequence Number字段, 重组并还原RTP数据;依照双方IP地址获得通信消息, 并得知其编码信息, 若流的信令不全, 可以用RTP默认类型的方式进行处理;最后解压缩获取原始的数据。
四、总结与展望
数据包捕获是对数据包的完整收集, SIP是不断完善且应用广泛的信令协议, SIP通信的数据包捕获是双方通信信息的获取, 基于SIP协议做了数据包捕获及还原的流程设计, 在今后的工作中, 应不断改进与完善此机制, 使捕获能够更加清晰、有条理。
参考文献
[1]钟诚, 等.SIP通信数据包捕获与分析[J].电脑知识与技术, 2010, 6 (34) :9739-9740, 9743
数据捕获与数据控制 篇8
关键词:Linux,Rootkit,内核,加密,数据捕获
0 引言
数据捕获是监控和记录攻击者在系统内部的所有活动,从中分析出攻击者使用的工具、策略以及动机。为了有效地捕获数据,不应单单依赖于某一个手段,而应该利用各种可能的方法,在各个层次上捕获数据,且不被攻击者所察觉。一般认为,数据捕获主要有3个重要来源:防火墙日志、网络通信和系统活动。
从安全者的角度,以Linux为平台,提出一种基于内核捕获数据的方法。它利用可加载内核模块的技术,通过截获系统调用、内核关键函数或数据结构来记录攻击者加密会话的通讯信息。
1 Rootkit技术分析
1.1 Rootkit综述
Root在英语中是根,扎根的意思,kit是包的意思。Rootkit可以把它理解成一个利用很多技术来潜伏在系统中获得管理员权限的一个后门,并且包含了一个功能比较多的程序包。它采用多种技术来隐藏自己,确保不易被发现。
近年,Rootkit发展了新的将代码注入内核的方式,有的Rootkit在已有的模块或系统内核映象中安装自己。Rootkit技术发展非常迅速,应用越来越广泛,大量存在于windows、unix、linux等操作系统中。
1.2 LKM方式的Rootkit技术
在Linux系统中,Rootkit是攻击者用来隐藏踪迹和保留Root访问权限的工具集。在这些工具当中,基于LKM(可加载内核模块)的Rootkit尤其受到关注。它是当前最主要、最成熟的内核级别的Rootkit技术。其本质是截获系统调用、内核关键函数或数据结构,在系统正常处理之前或之后进行判断。如果符合特定条件,就进行相应处理,否则返回正常的系统调用。
Linux操作系统内核是单一体系结构(monolithic kernel)的,也就是说,整个内核是一个单独的非常大的程序,采用模块技术本来是Linux系统用于扩展它的系统功能的。使用LKM的优点是使得内核更加紧凑和灵活,模块可以被动态的加载,修改内核时不需要重新编译内核。它常常用来开发特殊的设备(或者文件系统)。
2 内核数据捕获技术
2.1 工作机理
基于内核的数据捕获技术是利用内核Rootkit技术的原理,通过替换系统调用sys_read,sys_write,sys_open,sys_socketcall等来捕获数据,然后把捕获到的数据记录到一个隐藏文件,或直接通过网络驱动模拟成其它如NetBIOS等UDP数据包或ICMP数据包把它传输出去。
2.2 结构组成
为了捕获到的数据不易被发现,必须使数据隐蔽的存于本地或发送到其它机器。相比之下,将数据发送到其它远程机器的隐蔽性更高。本机(客户端)用于在内核空间捕获数据并秘密将数据发送到远程机器(服务端),服务端用于接收数据并分析数据,如图1所示。为便于数据分析,所有发送的数据都采用一个统一的标准格式。
2.3 数据捕获技术
数据捕获由内核模块来完成。使用模块加载技术可获得内核空间的访问,通过替换系统调用表中的read,write,socket等函数,能捕获所有Read()、Write()、Socket相关函数等数据。替换后的新函数调用老函数,并把内容拷贝到一个数据包缓存,然后加上一个自定义的协议头,再把这个数据包发送到服务端。替换原来的函数就是改变系统调用表的函数指针。
当用户空间的进程调用标准的read()、write()、socket相关函数的时候会产生系统调用。这个调用映射到系统调用表数组的索引偏移。因为把read、write、socket索引的函数指针修改成指向它自己的函数,所以当执行到内核的read、write、socket实现时就会执行修改后的调用,通过截获这些系统调用,能捕获到所有访问的数据,如图2所示。
数据在使用的时候一般都是解密的。这个动作一般会产生一个系统调用,在内核空间收集数据,就能截获这个系统调用访问进程解密后但还没有处理的数据,通过这种方法就可以在加密环境捕获击键、文件传输、Burneye的口令等。
2.4 数据包产生发送技术
客户端捕获的数据需要在入侵者没有察觉的情况下发送到服务端。一般情况下,使用UDP协议或ICMP协议来发送数据。通过修改内核,自动生成数据包,直接使用网络设备驱动发送数据,如图3所示。
每个read、write、socket调用都会产生一个或多个日志数据包。每个数据包都包含了关于这个调用内容的信息和这个调用访问的数据,还包含了一个特定的协议头,用于记录产生调用的进程描述、调用产生的时间和记录数据的大小。这些数据包由内核数据捕获模块自动产生,而不是使用TCP/IP协议栈,当数据包创建好的时候就直接通过设备驱动发送,所以系统用户无法使用IPTABLES来阻断数据包,也无法用网络嗅探器来监视这些数据包。因为嗅探器是基于libpcap的,而libpcap是使用原始套接字接口来收集数据包,这样就绕过了原始套接字代码和包过滤代码。另外,数据包发送时直接使用目标MAC地址,而不是通过ARP协议来获取目标IP地址对应的MAC地址,所以对ARP欺骗有自然免疫能力。
2.5 通信协议
为便于数据分析,可定义一个特定的通信协议,该协议规定每个数据包由一个固定长度的头结构和不定长度的数据组成。头结构在UDP头或ICMP头之后,用于记录与该数据有关的进程描述符、文件描述符、产生的时间等。
如果数据的长度大于局域网的MTU,内核数据捕获模块会把读到的数据分成多个分片以适应局域网的传输,且每个分片都包含了完整的头结构。
2.6 数据分析
服务端接收数据后,需经过一系列的数据分析方可明白所捕获数据的含义。数据分析就是对捕获到的数据进行整理和融合,以辅助安全专家从中分析出这些数据背后蕴涵的攻击工具、方法、技术和动机。目前,Linux系统下可利用perl、shell等强大的脚本解释语言,将数据分析工具写成的脚本文件的形式,利用头结构中的相关信息,分析出所捕获数据的含义,如入侵者的击键命令。
2.7 模块隐藏技术
为使数据捕获更加隐蔽,需要对数据捕获模块进行隐藏。在Linux系统中,所有的LKMs都是由一个单向链表进行连接,因此可以利用struct module数据结构的特点,将模块从链表module_list上摘除,从而增强整体的隐蔽性。下面是模块隐藏的常用方法。
(1)两次加载法。每个模块在内核中都有一个module结构与之相对应,各个模块之间用next构成单向链表。每次模块加载都放在链表的首部。因此,可以采用两次模块加载的方法来完成隐藏工作。第一次加载要被隐藏的模块,由第二次要加载的模块负责对上一模块进行隐藏。主要利用insmod会在module中加入__this_module符号的特点,得到本模块的地址,然后将上一个模块从module_list链表中删除。
(2)找module_list法。上面的方法需要加载两次module,虽然可以完成功能,但是毕竟多一个步骤。通过分析Linux内核源码可知,一个新加载的module位于链表的头,如果得到module_list的地址就可以删除这个module。
(3)删除前模块法。不将自己从module_list删除,而是将前一个正常module删除,然后将自己的名字改成前一摸快的名字。
(4)截获sys_query_module法。查看module信息的命令行是lsmod,此命令的实现是调用一个关于module的系统调用sys_query_module,从module_list中顺序取得相应module的信息。如果想隐藏一个module,可以截获sys_query_module系统调用。
3 局限性及改进
3.1 局限性
内核数据捕获的隐蔽性关键在于能否躲避Rootkit检测工具的检测。如果入侵者检测到系统调用的改变,就会采取对应措施,恢复原系统调用。这样,将无法捕获到入侵者的敏感数据。
/dev/kmem[8]是一个字符设备,是计算机主存的映像。通过它可以直接对内存进行读写。因此,它功能强大且使Linux内核变得非常灵活,入侵者用它来检测内核数据捕获模块并修改内核,使系统无法捕获数据。
数据发送到服务端时,可在同网段的其它主机上看到这些数据包,因此有被入侵者捕获到的可能,这些UDP包ICMP包还有可能被防火墙过滤掉。
3.2 改进措施
当今对内核级Rootkit的检测技术主要有:(1)校验和检验。Rootkit安装前后的系统不可能完全一样;(2)检查加载的LKM模块是否正常;(3)检查系统调用表。linux kernel中的一个重要的全局变量sys_call_table。此表中存储了255(没有全用)系统调用的入口地址,从module的功能上说其一般都会对一些重要的系统调用进行替代;(4)检查系统idr表。中断向量表中的入口地址是否改变;(5)除了对内核数据段数据的检测,对系统代码段也可以进行检查,利用静态的内核映像文件和内存空间的代码段进行判断。
因此,要隐蔽地捕获内核数据,内核数据捕获模块需躲避上述检测方法。然而,Rootkit检测也有一定的局限性,要检查内核方方面面是不现实的。全局变量sys_call_table是首先检查目标。通过修改旧的系统调用代码,加一个跳转指针指向新的地址,而不改变sys_call_table表或在虚拟文件系统层实现数据截获,就可以逃避常用Rootkit的检测。
/dev/kmem技术既可被入侵者用来检测内核数据捕获模块,也可用来捕获数据。它是内核不支持LKM时的内核数据捕获的有效方式。但是,它针对的是正在运行的Linux系统。如果系统重启,则需要重新再加载自己的模块,同时其中的module本身也是单独存放的,还需要对其进行另外的隐藏。针对上述的问题,又出现了一种新的技术--静态内核补丁。通过将一个通用意义上的module添加到静态内核映像中避免了module文件被发现的可能性,同时也不用考虑系统重启的问题。因为每次系统启动都要加载内核映像,所以该技术成为现今最好的技术。
针对数据包有被过滤的可能,可向UDP的常用端口发送数据。系统一般认为是一个路由探测包,防火墙不会过滤。至于ICMP报文,一般防火墙会进行过滤,但ICMP_ECHOREPLY报文却往往不会在过滤规则中出现。
4 结束语
基于Rootkit的内核数据捕获技术能监视系统的所有动作,特别是捕获入侵者加密会话的一个有效途径,是今后研究数据捕获的重要方向。虽然本文主要是针对Linux系统论述的,Windows系统的内核结构与Linux有着本质的不同,但是该技术的基本思想对Windows系统也是适用的。通过分析Windows内核,该技术能较好地移植到Windows系统。
参考文献
[1]李善平.边干边学—linux内核指导[M].杭州:浙江大学出版社,2002.
煤质检验数据精确度的控制分析 篇9
关键词:煤质分析;检验数据;精确度;控制
中图分类号:TQ533 文献标识码:A 文章编号:1006-8937(2014)35-0176-01
在煤质的相关检测工作当中,对其起到决定性的有两大环节:第一是样本的采集,第二就是实际的化验工作。实际的检测数据是判定煤矿质量标准的重要根据,所以,检测数据的精准程度必须具备可靠性和准确性。
相关的检测工作人员依据煤矿生产和出售的不同需求,相应的对各种层次的煤炭进行不同的检测和化验工作,从而提供出科学准确的检测报告。在煤质检测的实际工作中,检测数据的精准度是检测工作首要的内容。
1 检测工作人员专业素质的培养
煤炭的质检工作是煤矿生产领域的主要工作环节,同时也是质量检测工作中的重点内容之一。所以说,相关工作人员必须要以仔细严谨的工作态度去对待煤质检测方面的工作。煤炭质量层次的高低会直接影响到人们在实际使用过程中的效果和安全性,同时它也对我们国家的社会主义经济体制建设有一定的影响。
对此,相关的煤质检测工作人员须时刻持有一个科学认真的工作观念、优良的工作风尚、细致严谨的工作态度,最大程度地提升煤质检测工作的有效性。
2 煤炭资源的取样和制备环节要依据有关标准实施
煤矿作为是一种多种物质混合型的物质,在对煤矿进行采集和制备的环节上,必须要做到符合国家相关的采集和制备的标准,并且要经过合理有效的方式进行实施。
采集样品的科学合理化,才可以准确的对煤炭整体质量进行准确有效的判定,才能使样品的质量最大程度地接近煤炭的整体质量。假如所采集的煤炭样品任何一个环节出现了差错,那么相关的检测工作就变成了空谈,得出的检验数据也并不具有实质性的说服力。
因此,煤炭样品的采集工作是煤质检测工作准确与否的直接决定因素。那么在实际的采集样本的环节上,如何做到科学有效的实施煤炭样本的采集,首先需要对采集样本的具体位置以及对应的采集量进行科学的定位和分析,而且要控制煤炭样本在制备的环节上的质量和粒度二者的之间的相互关系以及接下来进行的粉碎、混合、分样以及空气平衡等基础操作,以此为最终送往检测机构的样品达到国家相关的检测要求提供有力保障。
3 降低在样品检测和分析环节中的误差
3.1 改进或完善实验室的检测设备和仪器
相关检测实验室主要的检测形式和方法主要是以物理分析法和化学分析发为主,实验室当中各种各样的仪器设备、各种检测试剂是构成实验室的基本条件和结构,它们是检测工作的基本工具。因此,相关的实验室检测机构必须对相应的仪器仪表进行周期性的维护,确保在实际检测工作中的科学性和准确性。另外,在实验室相关设备都正常的条件下,在针对不同的检测对象实施检验的过程中,必须依据国家的相关检测机制进行工作,对不同的样品采用不同的检测手段,这样才会使最终的检测数据更具备科学性和有效性。
3.2 对实验室的仪器仪表进行周期性的维护
对样本检测实验室的先关检测设备实施周期性的维护和检查,是对最终检测数据科学性和有效性的基本保障。具体来说,就是利用相关的样本周期性对仪器设备进行校正,比如在检测相关煤炭样本中硫的含量过程中,所使用的仪器就是自动化测硫仪。为了保证实验室检测工作的正常运行,定期对四组铂金电极实施维护、清理以及相关的调整,对检测仪器的密闭性要进行重点的检查,随时随地做好相关的准备和解决措施。在检测工作进行之前,检测人员首先需要将仪器电解液当中的电极点位调整到相关标准的数值,之后再具体对煤炭样本的硫含量进行检测,以此防止实际检测数据低于正常数值。其次,在具体的检测实验环节中,要随时随地对电解液对应的PH值进行观察和记录,要是电解液的PH值低于1的时候,就必须要对其进行换新。针对零点是否有移动、对应的仪器设备是否产生漏气的状况,应该每隔4~5 d利用样本实施校检。在煤矿样本的挥发检测工作中,温度的控制对最终检测出来的数据会起到至关重要的作用。因此,相关的实验室需要周期性的对发热电阻、控温等设备实施的精准度进行检验,以此防止由于温度设备的因素造成检测数据上的误差。
3.3 遵循科学准确的实验标准进行检测
在煤炭样本的挥发检测过程中,如果对样本燃烧的时间长短以及温度回升时间点的控制存在误差,就会对最终的实验数据的精确程度造成严重的影响。
因此,相关的工作人员需要在检测的过程中,严格按照相关规定的步骤和标准进行检测和实验,最大程度地避免由于人为的原因引起的数据偏差,以此为样本的检测数据提供有力的保障。
4 改进样本检测手段
伴随我国科学技术以及经济体制的不断发展和完善,在实验室的检测行业领域中,大量的先进的高科技仪器和设备投入其中,通过对高新技术和仪器的运用,实验室的相关检测数据更加的精准和具有说服力。例如,在以往对煤炭燃烧时所散发的热量进行检测的过程中,最开始是利用人工测量的形式进行实施,但是由于人为操作不可避免的会出现一些疏忽和意外状况,会出现不同的工作人员通过实验所得出的检测数据有一定的差异性。自从全自动热量仪的引进和具体运用之后,其检测的数据逐渐发展到了科学、精准的轨道,很大程度上避免了人为操作所导致的误差。所以,随着高科技仪器的不断开发和运用,使得相关的检测工作更加具有效率、更加精确,样品检测实验室得到了飞速的发展。
对检测机构的质量进行强化同样是一个非常重要的内容。相关的煤炭检测部门首先要对其内部的管理方面和审核方面进行加强,保证实验室的每一项检测的数据都具备科学性和精确性,最大程度上做到精确、科学、可靠。检测机构需要对每一项的管理制度进行优化和完善。设立出一套完备的实验检测流程以及对应的规章制度,针对较为重要的仪器设备则需要更仔细和更规范的操作流程,所有的重要设备和仪器都要进行备案和建档,并且记录其详细的使用信息,派以专业的工作人员进行负责和看管。对实验室的员工素质方面也要加以系统性的培训,使相关工作人员尽快地学习和熟悉最新技术的设备和仪器,从而为实验室的正常工作提供绝对的保障。
5 结 语
本文主要是对煤质检测相关数据的精准度的控制方面进行分析和探讨,在煤质的相关检测工作当中起到决定性的有两大环节,第一是样本的采集,第二就是实际的化验工作。实际的检测数据是判定煤矿质量标准的重要根据,所以检测数据的精准程度必须要具备十分的可靠性和准确性。相关检测工作人员应依据煤矿生产和出售的不同需求,对各种层次的煤炭进行不同的检测和化验工作,从而提供科学准确的检测报告。在煤质检测的实际工作中,检测数据的精准度是检测工作最重要的任务之一,所以只有切实保证了煤质检测数据的准确度,才能对煤矿产业的发展起到保障性的作用。
参考文献:
[1] 王兴无,李春艳.煤质检测实验室质量控制[J].煤质技术,2011,(3):14-16.
[2] 王林红.集团精细管理促煤质实验室认可工作[J].煤质技术,2012,(5):16-18.
[3] 辛晓艳.煤炭实验室管理系统的开发与应用[J].煤质技术,2011,(4):4-6.
数据捕获与数据控制 篇10
运动捕获系统通常包括感知和处理两个部分。感知又包括主动感知和被动感知。基于主动感知的运动捕获系统对环境控制要求较高,主要应用于体育运动性能分析和人机接口等领域。被动感知基于自然信号源,不需要导线,主要用于智能监控和人机接口控制等领域。至今,已经出现了如下3类运动捕获系统:
(1)机械系统。该类系统由测量人体关节点位置和方向的电位计组成,其缺点是所捕获的运动的真实性在很大程度上仍依赖于动画制作者的能力和毅力。
(2)电磁系统。这是目前比较流行的一种运动捕获系统。它采用能测量电磁场的传感器来捕获模特关节点的位置数据和角度数据。其缺陷主要包括:对捕获场景中的金属物非常敏感;限制了运动的种类;运动数据采样率低,难以满足快速的体育运动分析需求,并且价格昂贵。
(3)光学系统。该类系统将markers贴在模特身上,首先利用特殊的摄像机拍摄具有高对比度的视频,然后从视频中提取模特的运动。这种技术可提供很高的运动数据采样率,但是捕获3D运动数据需要采用计算机视觉中的特征跟踪和三维重建等技术进行后处理。这类系统非常复杂且价格昂贵。
2 基于约束的运动编辑技术
随着运动捕获系统的广泛应用,如何对运动数据进行编辑和提高运动数据的重用性,构成了基于运动捕获数据的计算机动画研究的主要内容。现有的技术主要可以分为两类。一是基于约束的运动编辑技术,二是运动信号处理技术。
基于约束的运动编辑算法最重要的特点是在编辑过程中,把被处理的运动数据的某些特征及用户的要求作为约束,在处理过程中加以保留。可行的基于约束的运动编辑技术引入了逆向运动学。逆向运动学方法最早用于机械和机器人领域,通过指定运动角色末端关节的位置,由计算机自动计算出各中间关节的参数。这些约束可以分为两类:空域约束和时域约束。根据对时域约束处理的不同,可以把已有的基于约束的运动编辑技术分为6类。
2.1 关键帧编辑
该技术对运动数据中的关键帧施加约束,然后独立求解,获得满足要求的关键帧姿势,最后通过插值算法求得其它帧。这类技术的处理效果取决于关键帧的选取。其代表是Bindingavale,首先自动选取运动数据的极值处作为关键帧,然后利用逆向运动学求解各个关键姿势,最后通过插值获得其它帧表示的姿势。
2.2 运动变形
与关键帧编辑技术对关键帧进行插值不同,该技术对目标运动和原始运动间的差异进行插值。一个典型的运动变形系统的工作流程可分为两个步骤:首先利用逆向运动学进行关键帧约束优化求解,然后对关键帧在求解前后的差异进行插值并求得其它帧的变化量。这类编辑技术的优点在于关键帧可以定位在任何适于编辑的地方。但存在两个缺点:对非关键帧缺乏姿势控制能力,对时域约束的控制能力反相缺乏对空域约束的控制能力。
2.3 按帧运动编辑
该技术对以高采样率均匀选取的运动数据进行编辑。其一重要应用是实时运动编辑,例如计算机木偶现场表演。另一应用是计算机游戏和虚拟现实。这类技术的一个典型代表是实时运动重定向系统。在每一帧,对逆向运动学约束进行线性化处理。在欠约束情况下,系统尽量使原运动数据满足对末端关节点位置施加的约束。这样生成的新运动就能够按照表演者规定的路径进行,同时也就保证了运动在时域上的流畅性。
2.4 基于滤波的按帧运动编辑
在对编辑结果进行全局处理以解决或者缓和编辑结果中的诸如毛刺、不流畅等问题时均通过低通滤波完成。首个公开发表的技术是层次化运动编辑技术,其中采用B样条拟和来实现低通滤波。这类技术可以分成以下两个过程:首先利用逆向运动学原理,同时调整各运动参数以满足空域约束,然后利用信号处理技术满足时域约束。在空域约束求解阶段,每次处理一个时间点上的所有运动参数,在时域约束求解阶段,每次处理一个运动参数在整个时域跨度上的值。
2.5 基于时空约束的运动编辑
与前文介绍的运动编辑技术中的逆向运动学算子每次独立地处理一帧不同,时空约束求解算子计算整段运动或者这段运动中的一个子段。Gleicher对上述标准的时空约束方法进行了一系列的改进。其中之一是基于时空约束的运动变换技术,另一项极具应用价值的技术是运动重定向。
2.6 基于物理属性的运动编辑
对于某些运动,动力学约束是极其关键的。在这种情况下,Popovi′c and witkin提出了一种基于物理属性的运动编辑技术。与Gleicher通过牺牲运动的物理特性来保证约束优化问题的可解性不同,这种技术通过简化角色的拓扑结构来简化问题。
3 运动信号处理技术
在1995年,Bruderlin and Williams首先提出运动信号处理概念。与通过约束和目标方程来获得所需的运动不同,Bruderlin and Williams把信号处理和图像处理领域中的技术引入到基于运动捕获数据的计算机动画中。
Unuma et al.提出了一系列的利用傅立叶原理处理运动捕获数据的方法。对原始运动数据的傅立叶展开级数进行内插和外插,可以生成大量的新运动。从一个运动中提取情绪等抽象特征,然后通过叠加到另一个运动来赋予其所提取的情绪。通过对步长、步速等运动的语义进行建模来进行控制。后来Rose et al.对该方法进行了改进,通过采用基函数在多个类似但体现不同情绪的运动间进行插值,生成一系列体现不同情绪的新运动。
近些年,Brand and Herzmann提出从已有的不同风格的运动中学习运动风格,然后利用“风格机器”生成带有所需风格的运动。Pullen and Bregler利用核函数描述运动数据中各个角参数在不同频带上的概率分布,然后根据这些统计特性合成新的运动。Molina-Tanco and Hilton提出了一项具有开创性意义的基于运动捕获数据的动画技术。首先利用已有的运动数据库训练一个统计模型,然后通过用户指定新运动的首帧和末帧,由系统自动根据已得到的统计模型在原始运动中采样,形成新运动。Arikan and Forsyth从已有的运动数据库中构造了一个层次图,然后以用户的交互指定为约束,采用随机搜索算法从该图上选择一个运动段序列,最后连接这些运动段,形成新运动。
最近,Dontcheva et al.提出了一个基于动作指导的动画制作算法。在动画制作过程中,动画师在摄像机或其它感知器前表演所要的动作,系统提取动画师所做的动作的特征,对已有的运动捕获数据进行实时调整后反馈给动画师,不断重复这一过程,直到满足要求。Arikan et al.提出了一种采用用户标注交互控制运动合成的技术。首先动画师确定带有标注的时间线,然后系统根据时间线上的标注,从运动数据库中选取合适的运动帧合成新的运动。Kim提出了一项新颖的基于运动节拍分析的运动节奏合成技术。首先通过分析运动节拍,从已有的运动数据库中提取运动基及其之间连接关系,然后根据这些数据构造运动转移图来表示运动数据库,最后根据给定的一段旋律遍历运动转移图,生成既满足运动学约束又符合旋律的新运动。
参考文献
[1]Michael Gleicher.Animation from observation:Motion capture and motion editing.Computer Graphics[J].Special Issue on Applications of computer Vision to computer Graphics,1994(4).
[2]A.Witkin and Z.Popovi'c.Motion warping[A].In proceedings:SIGGRAPH95[C].1995.
[3]A.Bruderlin and L.Williams.Motion signal processing[A].In proceedings:SIGGRAPH95[C].1995.
[4]Miry Dontcheva,Gary Yngve and Zoran Popovic[A].Layered acting for character animation[J].ACM Transactions on Graphics,2003(3).
[5]Okan Arikan,David A.Forsyth and James F.O'Brien.Motion synthesis from annotations[J].ACM Transactions on Graphics,2003(3).
[6]Tae-boon Kim,Sang II Park and Sung Yong Shin.Rythmic-motion synthesis based on motion-beat analysis[J].ACM Transactions on Graphics,2003(3).