本发明涉及涉及信息安全领域,尤其涉及一种保密单位的审计应用领域。
背景技术:
目前使用调试器动态分析、反汇编器静态查看软件行为,流程复杂,消耗时间长,效率低下,由于应用层调试器的缺陷,有的行为无法查看,有的行为参数无法查看,而且对使用者要求具有一定的逆向技术要求,当需要分析的样本量大时,使用手工的方法分析,消耗人力物力。使用方法简单,自动化、实时的获取软件行为,获取的软件行为细节较为准确,自动生成行为报告,可批量操作,节约人力成本。
技术实现要素:
鉴于现有技术的缺陷,本发明创造提出一种基于windows驱动的软件行为收集方法,来解决原技术获取行为的过程比较繁琐,获取行为不够准确,要解决的技术问题是提高便利性和准确性,提出了使用驱动的方式来解决,解决了获取行为繁琐、获取信息不准确的问题。本方法由驱动模块和应用模块组成,驱动模块分为注册表、文件、进程、网络4个部分,分别获取操作进程、进程id、操作类型、路径、详细参数等信息发送到应用层,应用层根据过滤规则生成行为报告。
采用的技术解决方案如下:
一种基于windows驱动的软件行为收集方法,由驱动模块和应用模块组成,所述的驱动模块分为注册表、文件、进程、网络4个部分,其工作步骤如下:
步骤1:分别获取操作进程、进程id、操作类型、路径、详细参数等信息发送到应用层;
步骤2:应用层根据过滤规则生成行为报告。
有益效果:
与现有技术相比,本发明创造的优点在于:
优点1:自动化收集行为;
优点2:实时收集行为;
优点3:收集行为信息准确、全面。
附图说明:
图1为本发明创造的流程图;
图2为本发明创造的文件过滤原理图;
图3为本发明创造的注册表过滤原理图;
图4为本发明创造的进程过滤原理图;
图5为本发明创造的网络过滤原理图。
具体实施方式:
下面结合附图1,对本发明创造做进一步阐述:
一种基于windows驱动的软件行为收集方法,其具体实施例如下:
1.1填写flt_operation_registration数组,填写precreate、prewrite、preclose函数。
1.2在precreate、prewrite、preclose函数内部,使用fltgetfilenameinformation函数获取到被操作文件的路径,其中获取的路径为device路径,使用ioqueryfiledosdevicename将其转化为dos路径。
1.3使用psgetprocessid函数获取到操作进程id。
1.4使用psgetprocesspeb函数获取进程peb结构,从peb结构中读取进程命令行参数。
1.5使用psgetprocessinheritedfromuniqueprocessid函数获取父进程id。
1.6注册minifilter过滤驱动文件回调,使用fltregisterfilter函数和flt_operation_registration数组。
1.7使用fltstartfiltering函数,启动文件驱动过滤。
2.1使用cmregistercallback函数,注册注册表过滤驱动。
2.2分别在操作类型regntprecreatekeyex、regntpredeletekey、regntpresetvaluekey、regntpredeletevaluekey类型中,获取对应的行为。
2.3使用obqueryobjectname函数解析根目录句柄,获取操作注册表路径。
1.1使用pssetcreateprocessnotifyroutine函数,注册进程过滤驱动。在回调函数参数中,获取父进程id,进程id等参数。
1.2使用pssetloadimagenotifyroutine函数,注册进程镜像加载过滤驱动。在回调函数参数中,获取进程id,进程路径等参数。
4.1使用ioattachdevice函数,附加"\\device\\tcp"、"\\device\\udp"、"\\device\\rawip"设备。
4.2设置设备驱动对象自定义派遣函数,在派遣函数里面处理irp_mj_internal_device_control的irp请求,对应处理tcp/udpsend/receive行为。
5.1驱动层使用fltbuilddefaultsecuritydescriptor、fltcreatecommunicationport函数创建ipc通信端口,使用fltsendmessage函数发送消息给应用层。
5.2应用层使用filtergetmessage函数获取从驱动层发送过来的消息。
6.匹配用户设置的过滤策略。
7.行为信息展示。