技术领域
[0001] 本
发明涉及涉及信息安全领域,尤其涉及一种保密单位的审计应用领域。
背景技术
[0002] 目前使用调试器动态分析、反汇编器静态查看软件行为,流程复杂,消耗时间长,效率低下,由于应用层调试器的
缺陷,有的行为无法查看,有的行为参数无法查看,而且对使用者要求具有一定的逆向技术要求,当需要分析的样本量大时,使用手工的方法分析,消耗人
力物力。使用方法简单,自动化、实时的获取软件行为,获取的软件行为细节较为准确,自动生成行为报告,可批量操作,节约人力成本。
发明内容
[0003] 鉴于
现有技术的缺陷,本发明创造提出一种基于windows驱动的软件行为收集方法 ,来解决原技术获取行为的过程比较繁琐,获取行为不够准确,要解决的技术问题是提高便利性和准确性,提出了使用驱动的方式来解决,解决了获取行为繁琐、获取信息不准确的问题。本方法由驱动模
块和应用模块组成,驱动模块分为注册表、文件、
进程、网络4个部分,分别获取操作进程、进程ID、操作类型、路径、详细参数等信息发送到应用层,应用层根据过滤规则生成行为报告。
[0004] 采用的技术解决方案如下:一种基于windows驱动的软件行为收集方法,由驱动模块和应用模块组成,所述的驱动模块分为注册表、文件、进程、网络4个部分,其工作步骤如下:
步骤1:分别获取操作进程、进程ID、操作类型、路径、详细参数等信息发送到应用层;
步骤2:应用层根据过滤规则生成行为报告。
[0005] 有益效果:与现有技术相比,本发明创造的优点在于:
优点1:自动化收集行为;
优点2:实时收集行为;
优点3:收集行为信息准确、全面。
[0006]
附图说明:图1为本发明创造的
流程图;
图2为本发明创造的文件过滤原理图;
图3为本发明创造的注册表过滤原理图;
图4为本发明创造的进程过滤原理图;
图5为本发明创造的网络过滤原理图。
[0007] 具体实施方式:下面结合附图1,对本发明创造做进一步阐述:
一种基于windows驱动的软件行为收集方法,其具体
实施例如下:
1.1填写FLT_OPERATION_REGISTRATION数组,填写PreCreate、PreWrite、PreClose函数。
[0008] 1 .2 在PreCreate、PreWrite、PreClose函数内部 ,使用FltGetFileNameInformation函数获取到被操作文件的路径,其中获取的路径为Device路径,使用IoQueryFileDosDeviceName将其转化为Dos路径。
[0009] 1.3 使用PsGetProcessId函数获取到操作进程id。
[0010] 1.4 使用PsGetProcessPeb函数获取进程peb结构,从peb结构中读取进程命令行参数。
[0011] 1.5 使用PsGetProcessInheritedFromUniqueProcessId函数获取
父进程id。
[0012] 1.6 注册minifilter过滤驱动文件回调,使用FltRegisterFilter函数和FLT_OPERATION_REGISTRATION数组。
[0013] 1.7 使用FltStartFiltering函数,启动文件驱动过滤。
[0014] 2.1 使用CmRegisterCallback函数,注册注册表过滤驱动。
[0015] 2.2 分别在操作类型RegNtPreCreateKeyEx、RegNtPreDeleteKey、RegNtPreSetValueKey、RegNtPreDeleteValueKey类型中,获取对应的行为。
[0016] 2.3 使用obQueryObjectName函数解析根目录句柄,获取操作注册表路径。
[0017] 1.1 使用PsSetCreateProcessNotifyRoutine函数,注册进程过滤驱动。在回调函数参数中,获取父进程id,进程id等参数。
[0018] 1.2 使用PsSetLoadImageNotifyRoutine函数,注册进程镜像加载过滤驱动。在回调函数参数中,获取进程id,进程路径等参数。
[0019] 4.1 使用IoAttachDevice函数,附加"\\Device\\Tcp"、"\\Device\\Udp"、"\\Device\\RawIp"设备。
[0020] 4.2 设置设备驱动对象自定义派遣函数,在派遣函数里面处理IRP_MJ_INTERNAL_DEVICE_CONTROL的irp
请求,对应处理tcp/udp send/receive行为。
[0021] 5 .1 驱动层使用FltBuildDefaultSecurityDescriptor、FltCreateCommunicationPort函数创建ipc通信端口,使用FltSendMessage函数发送消息给应用层。
[0022] 5.2 应用层使用FilterGetMessage函数获取从驱动层发送过来的消息。
[0023] 6. 匹配用户设置的过滤策略。
[0024] 7. 行为信息展示。