[发明专利]一种Linux平台下的恶意代码分析方法及系统有效
申请号: | 201310123502.9 | 申请日: | 2013-04-10 |
公开(公告)号: | CN104102878B | 公开(公告)日: | 2017-02-08 |
发明(设计)人: | 何振学;田昕晖;孙毓忠 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F21/56 | 分类号: | G06F21/56 |
代理公司: | 北京律诚同业知识产权代理有限公司11006 | 代理人: | 祁建国,梁挥 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 linux 平台 恶意代码 分析 方法 系统 | ||
技术领域
本发明涉及Linux平台下的恶意代码分析领域,尤其涉及一种Linux平台下的恶意代码分析方法及系统。
背景技术
互联网在给人们的生活带来便利和高效的同时,安全威胁事件逐年上升。网络上大量的病毒和木马对人们的财产,社会生产安全和国家信息安全造成了严重的危害。在各种危害之中,其中可执行恶意代码造成的损失和危害尤为突出。恶意代码的盛行,唤醒了人们的安全意识,促使人们从各个方面对恶意代码进行研究。随着恶意代码的不断发展进步,各种各样的恶意代码呈出不穷、变幻莫测,传统的恶意代码调试器调试检测方法和样本分析技术早已不能适应新型恶意代码的分析。由此可知,开发有针对性和高效性的恶意代码分析平台已迫在眉睫。
恶意代码分析是恶意代码应急响应和计算机取证的基础,通过对恶意代码行为,功能分析,可以为损失评估和系统恢复提供有用的信息。其中基于系统调用行为监控的恶意代码分析认为:不管攻击者来自何方,用何种行为,对目标系统所实施的入侵、控制或破坏,最终都要借助于目标系统的系统调用来执行。Linux和UNIX系统设计的哲学之一是“一切皆是文件”,恶意代码对目标系统进行的各种恶意行为操作最终都可以归结为对文件的操作。恶意代码执行过程中所调用的系统调用和最终所要操作的文件与恶意代码攻击行为和功能有着直接的联系。因此,对恶意代码所调用的系统调用进行截获,监控恶意代码进程对文件的操作,就可以达到恶意代码分析的目的。
现有的基于Linux的恶意代码分析方法中,所涉及的系统调用截获技术,传统上都是利用中断向量表获得中断处理例程的地址,再在中断服务例程的内存地址中搜索特征指令获取系统调用表的地址。或是通过读取dev/kmem,System.map,kallsyms来得到系统调用表的地址。然后将系统调用表中需要截获的系统调用服务例程入口地址保存,再将原来系统调用服务例程入口地址修改成自定义处理函数的地址,使其跳转到监控程序。基于传统系统调用截获技术的恶意代码分析方法存在以下一些问题:
(1)Linux2.6以后版本的内核,基于安全考虑,系统调用表不再作为符号导出,需通过查找特征指令的方式来获得。此方法的前提是应用程序请求需通过INT 0x80指令陷入内核,但对于SYSENTER或SYSCALL指令,该方法就会失效。
(2)对于通过读/dev/kmem设备文件得到系统调用表的地址,来实现系统调用截获的方法,存在着潜在的安全隐患。
(3)传统的恶意代码分析方法所涉及的系统调用的截获是处于系统调用层,位于VFS层之上,不能得到更多更具体的与恶意代码相关的信息。
(4)修改系统调用表会造成安全隐患,在多线程的环境下健壮性不好。
发明内容
为解决上述问题,本发明提供了一种Linux平台下的恶意代码分析方法及系统,以避免传统修改系统调用表方法所带来的安全隐患,避免系统较大的性能损失,提供更加准确有用的监控信息,提高通信传输的数据量以及系统的易用性、灵活性和高效性,更好的满足用户对恶意代码分析的要求。
为实现上述发明目的,本发明提供了一种Linux平台下的恶意代码分析方法,该方法包括:
步骤1,设置需要监控的关键文件信息,并将其以界面形式展示,其中所述关键文件信息包括:文件名、文件所属用户、用户组,文件访问权限;
步骤2,加载并执行需要分析的恶意代码,同时根据界面展示的进程信息设置需要被监控进程;
步骤3,将所述关键文件信息和被监控进程信息传递给内核空间的监控模块,所述监控模块根据所述关键文件信息和所述监控进程信息同步生成关键文件列表和被监控进程信息列表;
步骤4,所述监控模块实时监控所述被监控进程对关键文件的访问,并依据所述关键文件和被监控进程的访问权限,拒绝或允许所述被监控进程对关键文件的操作;
步骤5,所述监控模块记录所述被监控进程对关键文件的操作,并将被监控进程对关键文件的操作信息保存到日志队列中;
步骤6,将所述日志队列中的日志信息传递给用户模块的日志处理例程,并以界面的形式将所述日志信息展示。
进一步的,所述步骤2包括:
步骤21,依次进入/proc文件系统以数字命名的目录,分别对所述目录中的status文件执行read()操作,获取进程信息,该进程信息包括:可执行文件名、进程号、父进程号、有效用户EUID、有效组EGID和内存映象;
步骤22,将所述进程信息存放在struct process_info结构中,并将其链接到链表中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310123502.9/2.html,转载请声明来源钻瓜专利网。