基于Windows系统的软件程序异常行为分析方法

文档序号:9249418阅读:1071来源:国知局
基于Windows系统的软件程序异常行为分析方法
【技术领域】
[0001]本发明涉及一种基于Windows系统的软件程序异常行为分析方法。
【背景技术】
[0002]随着网络安全风险的日益增长,安全问题的复杂性日益加大,经过综合FBI和CSI对484家企业的调查及中国国家计算机网络应急协调中心CNCERT/CC的调查结果显示:大约76%的网络安全威胁来自于内部,由此可知其危害程度是远远超过黑客攻击及病毒造成的损失,而这些威胁绝大部分与内部各种网络访问行为有关;因此,迫切需要一种安全手段对上述问题进行有效的监控和管理。系统程序行为监测正是在这样的背景下产生的,系统异常行为分析程序可通过分析系统中各进程的行为,智能判定是否有病毒、木马异常或者危险操作。计算机信息系统安全需求和体系结构的共性,其构成要素是安全手段、系统单元及国际标准化组织(ISO)制定的开放系统互连参考模型(OSI)。本地系统对网络系统中的安全设备和网络设备、应用系统和运行状况进行全面的监测、分析、评估是保障网络安全的重要手段。目前,国内企业的信息系统大多还是Windows系统,包括一些IDC企业的很大一部分服务器系统也是Windows Server,所以对于Windows系统下的监测更是重中之重。

【发明内容】

[0003]本发明要解决的技术问题,在于提供一种基于Windows系统的软件程序异常行为分析方法。
[0004]本发明是这样实现的:一种基于Windows系统的软件程序异常行为分析方法,包括如下步骤:
[0005]步骤1、用户选定一软件程序,对该软件程序的软件行为信息进行捕获;
[0006]步骤2、建立白名单库、黑名单库及危险行为库;
[0007]步骤3、根据白名单库、黑名单库及危险行为库,将捕获到的软件行为信息通过遗传算法进行分析,得到分析结果;
[0008]步骤4、将分析结果进行显示。
[0009]进一步地,所述步骤I进一步具体为:用户选定一软件程序,在Windows系统中建立钩子程序,通过钩子程序对该软件程序的软件行为信息进行捕获。
[0010]进一步地,所述步骤I中,将捕获的软件行为信息进行存储。
[0011]进一步地,所述软件行为信息包括进线程行为、注册表行为、文件行为、网络行为和驱动行为。
[0012]进一步地,所述步骤4进一步具体为:将分析结果进行显示,并将分析结果存储至对应的库中。
[0013]本发明具有如下优点:本发明一种基于Windows系统的软件程序异常行为分析方法,大大降低了由于内部引起的网络安全隐患。
【附图说明】
[0014]下面参照附图结合实施例对本发明作进一步的说明。
[0015]图1为本发明方法执行流程图。
【具体实施方式】
[0016]本发明基于Windows系统的软件程序异常行为分析方法,包括如下步骤:
[0017]步骤1、用户选定一软件程序,在Windows系统中建立钩子程序,通过钩子程序对该软件程序的软件行为信息进行捕获,将捕获的软件行为信息进行存储,所述软件行为信息包括进线程行为、注册表行为、文件行为、网络行为和驱动行为;
[0018]步骤2、建立白名单库、黑名单库及危险行为库;
[0019]步骤3、根据白名单库、黑名单库及危险行为库,将捕获到的软件行为信息通过遗传算法进行分析,得到分析结果;
[0020]步骤4、将分析结果进行显示,并将分析结果存储至对应的库中。
[0021]本发明一种【具体实施方式】如下:
[0022]一、系统构架:系统由一个可执行程序、规则库(本地或云端)、日志文件、被分析软件等组成。
[0023]系统组成功能:
[0024]1、整体系统的构建:
[0025](I)、驱动监测模块;
[0026]a.在SSDT表中,HOOK要用到的函数;
[0027]b.与控制层的数据实现交换。
[0028](2)、数据传输控制模块(DLL)
[0029]a.在ring3H00K网络功能函数;
[0030]b.与驱动层交互;
[0031 ] c.接收用户界面层的输入数据信息,并发送数据返回界面层。
[0032](3)、用户功能模块
[0033]a.监测程序行为;
[0034]b.显示被监测程序的行为过程;
[0035]c.生成日志,并记录到access数据库;
[0036]d.产生报告(报告经过筛选和判断);
[0037]e.自定义程序安全行为(黑白名单的维护)。
[0038](4)、使用遗传算法来学习和定义规则模块。
[0039]程序可以自行总结一些规则,并根据这些规则自动判断软件行为是否危险。
[0040]二、驱动监测
[0041]驱动程序负责监测系统程序的行为。具体实现流程如下:
[0042]驱动层(ringO):驱动安装后,会执行InitDataO,此函数功能就是获取该程序需要hook的系统服务函数(即存放于SSDT的函数)的地址,使用自定义的函数替换。
[0043]在驱动控制函数包含了两个控制码:
[0044]0CTRL_PR0CESS_M0NIT0R_0N 和 10CTRL_PR0CESS_M0NIT0R_0FF,分别用来实现开启hook和关闭hook。同时为了实现和ring3层程序的数据和控制交互,ring3层程序在发送开启hook控制码是同时发送了在该层申请的缓冲区,ringO程序通过映射
[0045]Il获取用户层传送过来的缓冲区地址
[0046]dwBuffAddress = *(DWORD*)p1Buffer ;
[0047]//根据虚拟地址获取物理地址
[0048]pPhysicalAddr = MmGetPhysicalAddress((PVOID)dwBuffAddress);
[0049]//把物理地址映射到虚拟地址
[0050]g_pMyBuff = (PMY_BUFF)MmMap1Space
[0051](pPhysicalAddr, sizeof(MY_BUFF), (MEM0RY_CACHING_TYPE)0);
[0052]然后在ringO层可以“直接”访问该缓冲区,从而实现了 ringO和ring3的交互。本程序采用内核层Η00Κ技术。
[0053]三、数据传输控制
[0054]DLL(控制)层:该层首先以服务的形式安装驱动程序,加载驱动,建立设备连接然后开启网络功能Η00Κ (使用的是消息Η00Κ中的全局Η00Κ,基于一个hook模板库)
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1