1引言
移动存储设备具有体积小、便于携带、使用方便等优势,因此移动存储设备使用较为普遍,同时也存在着随时随地使用、公私信息共用、加密信息与一般信息共用、随意拷贝文件和数据,甚至出现将移动存储设备借给他人或丢失的情况,致使重要数据泄露等问题,带来数据风险。当设备接触到不同环境下的计算机系统,难免会遭受到计算机病毒的侵害,一旦设备遭到病毒的攻击,就会使设备中的重要文件遭到毁坏和泄露,使移动存储设备成为了传播计算机病毒的载体,给人们的工作带来极大的不便。本文设计了一个移动存储设备的安全保护系统,能够很好地保护移动存储设备。
2文件访问控制
2.1文件访问控制的方案设计
在本设计中,移动存储设备归属于管理员,即移动存储设备持有者。当管理员将移动存储设备借出且被非管理员权限的人员所操作,此时会将管理员与非管理员区分开,实现不同权限的管理,以维护文件访问的控制。管理员拥有超级权限,可以对移动存储设备上的文件及数据进行增、删、改、查等操作。非管理员使用时,限制其权限,使其只能对某些特定文件以读操作进行访问。对于用户的区分,简单的可以用验证码(密码)实现,验证码正确则被认为是管理员;不正确或者未进行验证,则被认为是非管理员,也就是普通用户所拥有的权限。当调用系统API进行文件的增删改操作时,我们试图更改系统调用方向。使调用进入自定义的方法中去,完成对移动存储设备文件操作的过滤,使对移动存储设备的操作无效或达到我们预想的效果。通过这个过程完成对移动存储设备文件的权限管理。文件访问控制的流程图如图2所示。
2.2文件访问控制的逻辑设计
在软件运行之前,自定义API生成的DLL被进程加载。用GetProcAddress函数获得进程中kernel32.dll、user32.dll等模块的中的主要文件操作API函数的入口地址。在系统API函数入口地址位置加入一条跳转指令,让它先跳转到自定义的函数中运行。跳转指令可以用0xE9来表示(0xE9是汇编语言中jmp指令的机器码),后面还有4个字节的自定义API函数地址,总共要修改系统API函数前5个字节,这5个字节由1个字节的跳转指令和4个字节的地址组成。当程序调用到此函数的时候,将会跳转到自定义API函数去执行。这4个字节的地址是偏移地址,而偏移地址=我们函数的地址-原API函数的地址-5(这条指令的长度)。要保存修改地址前的系统API地址,以防随后调用系统API时找不到地址,无法再次完成跳转。此过程为HOOK流程,如图3所示。本设计是以Win7下文件基本操作的接口设计的逻辑,当文件操作调用API时会转调此函数,所以控制策略就在此函数中。在函数中添加对当前文件的路径判断,来控制对移动存储设备中文件的访问,从而达到访问控制的功能。本程序使用mhook库来协助完成函数地址的跳转。Mhook_SetHook函数的第一个参数ppSystemFunction是系统函数地址,第二个参数pHookFunction是自定义函数地址。函数要实现的功能就是将ppSystemFunction地址跳转到pHookFunction的地址,从而完成自定义代码的调用,完成功能。当一个sethook请求到来时,TrampolineAlloc分配一个跳板存储域让指针数组的元素指向这个存储域。后续工作是将sethook是的有用数据保存在跳板buffer中,方便unhook时候,修改回系统API的地址。VirtualProtectEx函数可以改变在特定进程中内存区域的保护属性。用来设置跳板存储域的访问权限为PAGE_EXECUTE_READWRITE。将系统API的地址保存在跳板存储域的codeTrampoline当中,紧接着之后添加一个jump指令。此处是对系统API的存储及处理。EmitJump函数功能就是实现从pdCode处添加代码,完成跳转到pdJumpTo。
3病毒查杀
3.1病毒查杀的方案设计
本设计主要对移动存储设备中的文件进行病毒的查杀。在对文件查杀的过程首先对文件进行过滤,过滤出移动存储设备中所有的PE,在对这些PE文件进行病毒扫描,然后对扫描过的文件进行处理,包括对病毒文件进行删除和疑似文件隔离到指定的区域。病毒扫描采用的是病毒特征码的方式,从病毒特征码库取出每一条特征码来分别对文件进行匹配,若发现被匹配的文件中有该特征码的话,直接将文件删除。病毒特征码是从已有的病毒文件中进行提取,并将这些特征码进行归类和存储即存入到指定的病毒特征码库中。病毒查杀在设计的过程中可分为病毒扫描器设计和病毒文件的删除或隔离设计。病毒扫描器的设计方案是采用多线程技术来提高效率,而病毒文件的处理部分直接调用系统的API将文件删除和隔离,如图4所示。
3.2病毒查杀的逻辑设计
病毒查杀是为了防止病毒文件进入移动存储设备,并对移动存储设备中的文件进行破坏。因此需要对刚进入移动存储设备的文件,即新建的文件进行病毒查杀。当用户登录该系统后,可以点击系统主界面上的杀毒按钮对移动存储设备中的所有文件进行病毒的查杀。通过病毒扫描器、病毒文件隔离,可以防止病毒对移动存储设备中的文件进行侵害。具体的实现过程包括病毒扫描器的实现、病毒文件删除模块的实现以及病毒文件隔离区的实现。病毒扫描器的实现部分是采用多线程同时对多个文件进行病毒扫描,其中病毒的扫描方式是病毒特征码匹配的方式,从病毒特征码库中取出每一条特征码来对文件进行匹配,若发现那个文件是病毒文件,则对该文件进行删除或者隔离。其中主要使用的系统API有CreateThread、WaitForSingleObject、ResumeThread、Sus-pendThread、GetExitCodeThread,这几个是病毒扫描中与多线程相关的系统API,包括线程的创建、线程的启动、线程的挂起、线程的唤醒和线程的退出等,控制了线程的生命周期。下面为关键的程序代码的说明,主要是病毒特征码与文件的匹配过程。病毒文件隔离区的实现部分主要是在移动存储设备中建立一个隔离区,实际上这个隔离区就是一个目录,用于存放病毒文件,这个目录具有高度访问权限控制,保证其中的病毒文件不会对其他文件造成伤害,以达到类似于隔离区的功能。具体实现就是新建一个目录,并将目录的访问权限修改到最高,防止一切的危险访问。接着就是对该区域的使用,将病毒扫描器扫描出来的病毒文件移动到该区域中,由管理员对该区域中的文件进行管理。
4文件误删恢复
4.1文件误删恢复方案设计
本设计将涉及到对误删文件的恢复。分析可知,为以后恢复某个已经删除的文件,需要在某个文件被删除的时候要对该文件进行备份,此时就需要有一个存储这些删除文件的空间,而且必须对备份的文件进行压缩,这是考虑到不要占用移动存储设备太大容量。建立这样一个用于存储备份文件的空间需要对它进行保护,可以考虑通过文件访问控制来完成这种需求,从而有效保证恢复文件的安全性和准确性。还要考虑一下这样一个存储区的大小问题,如果太大的话,那么会占用大量的硬件存储资,使有效的活动存储资源减少了;如果太小的话,那么会使有些文件因控件太小而无法备份,只能选择放弃备份或者直接删除文件,这样做不符合数据安全的要求。解决方案就是根据移动存储设备总的有效存储空间,按照该空间的百分比进行划分,并可以在对文件进行备份的时候,非常大的文件由用户选择直接删除或者存储到其它大容量设备中,如图5所示。
4.2文件误删恢复实现业务流程
以回收站的形式实现,对删除的数据进行压缩,管理员对数据进行恢复,实现流程与访问控制中的HOOK流程一致。具体实现。在自定义的Deletefile函数内,进行文件过滤,如果属于移动存储设备的文件,则将其移动到一个特定的目录里面,即将回收站中的文件移动到原来的位置,从而到达文件恢复的目的。
5测试结果
(1)文件访问控制测试结果。普通用户没有对文件(文档草稿.txt)新建、拷贝、修改及删除的操作权限,比如删除文件。由于权限的原因,删除操作是不能够成功的。(2)病毒的查杀测试结果。通过点击主界面上的病毒查杀按钮,系统会对移动存储设备中的文件进行病毒查杀,并对结果进行统计后详细列出,用户可以对这些病毒文件进行查看病毒详情、隔离以及删除的操作,比如可以查看病毒的详情。操作结果如图6所示。(3)文件误删恢复测试结果。文件误删恢复是对回收站(用于存放误删的文件)中的文件进行恢复,它可以恢复文件到删除前的位置,这里以文件11.cpp为例,进行删除恢复操作,成功将11.cpp从回收站恢复到删除前文件所在文件夹。
作者:王亚文 李刚 邹长明 单位:西安工业大学计算机科学与工程学院
相关专题:有线电视 服装企业税收征管浅析