买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明公布】基于虚拟机自省的Linux恶意代码检测方法与系统_北京大学_202311759593.5 

申请/专利权人:北京大学

申请日:2023-12-20

公开(公告)日:2024-03-19

公开(公告)号:CN117725583A

主分类号:G06F21/56

分类号:G06F21/56;G06F9/455

优先权:

专利状态码:在审-实质审查的生效

法律状态:2024.04.05#实质审查的生效;2024.03.19#公开

摘要:本发明公布了一种基于虚拟机自省的Linux恶意代码检测方法与系统,包括虚拟机管理层子系统、监控虚拟机子系统、恶意代码执行虚拟机子系统;通过内联钩子和内存隐藏技术拦截并分析恶意代码进程调用的内核函数行为,通过扩展页表钩子技术拦截并分析恶意代码对关键的内核内存的敏感读写行为,从而获取恶意代码执行的具体流程和敏感内存操作信息。本发明实现恶意代码无感知且正常运行情况下,在操作系统外层的虚拟机管理层监控恶意代码执行流程,不需要在操作系统内部运行单独的监控进程,使得恶意代码难以检测和对抗监控系统,有效减少监控系统的攻击,提高监控透明性,并可对复杂的Linux内核Rootkit等恶意代码进行准确检测。

主权项:1.一种基于虚拟机自省的Linux恶意代码检测方法,其特征是,通过内联钩子技术和内存隐藏技术拦截并分析恶意代码进程调用的内核函数行为,通过虚拟机管理层面的扩展页表钩子技术拦截并分析恶意代码对关键的内核内存的敏感读写行为,从而准确透明地获取恶意代码执行的具体流程和敏感内存操作信息;主要包括:确定检测规则阶段、恶意代码透明注入阶段、拦截恶意代码函数调用阶段、拦截恶意代码内存读写阶段、行为分析和判定阶段;其中:确定检测规则阶段执行如下步骤:步骤1,获取恶意代码暴露的恶意行为信息,包括恶意代码对Linux系统的内核函数的调用和对敏感内存读写行为;步骤2,将待检测的恶意代码行为形式化为具体的检测规则,检测规则包含:执行敏感系统调用对应的内核函数,对敏感内核内存进行读取、对敏感内核内存进行修改;恶意代码透明注入阶段执行如下步骤:步骤3,在恶意代码执行虚拟机的外层即操作系统的底层,将恶意代码程序的字节写入到执行虚拟机运行的Linux系统内核中,并模拟Linux创建线程过程启动恶意代码进程,从而透明无感知地将恶意代码注入到执行虚拟机中;包括:31通过监控虚拟机定位恶意代码执行虚拟机的Linux内核系统调用处理例程地址,在处理例程地址处写入INT3指令,并在监控虚拟机中开启INT3事件回调;32通过监控虚拟机在恶意代码执行虚拟机内部的Linux系统中分配一段内核空间,将注入代理程序的程序字节写入到分配的空间中;33当恶意代码执行虚拟机内部的Linux系统执行任意系统调用,执行到INT3指令时,通过虚拟机管理程序捕获INT3事件,产生虚拟机退出事件,控制流转移到监控虚拟机中;34通过监控虚拟机将真正要注入的恶意代码字节写入到恶意代码执行虚拟机内部的Linux系统内核空间中,调用操作系统内核函数从系统内核态创建一个用户线程,即恶意代码进程对应的内核线程;拦截恶意代码函数调用阶段执行如下步骤:步骤4,在对应内核函数位置处通过内联hook技术埋下拦截点,同时通过内存隐藏技术将内联hook修改的内存数据进行隐藏,在进程触发拦截点时无感知地进行记录;包括:41根据内核函数名称查找恶意代码执行虚拟机中Linux系统内核符号表,确定内核函数地址;42解析内核函数指令信息,在指令位置处修改内核函数指令为跳转指令,跳转目标为预先设置的蹦床指令序列;当恶意代码执行虚拟机中Linux系统执行到拦截点时,触发蹦床指令序列中的vmcall指令,产生虚拟机退出事件,从而控制流通过虚拟机管理层转移到监控虚拟机中;此过程当有指令涉及到内存寻址时,则进行重定位操作;43通过监控虚拟机记录修改的指令位置地址,在该地址处设置扩展页表读拦截,当恶意代码执行虚拟机中有进程读取此地址内存信息时,返回原有的修改前的内存数据,从而实现内存隐藏,使得恶意代码无法感知到自己处于修改的监控系统中;拦截恶意代码内存读写阶段执行如下步骤:步骤5,使用扩展页表hook技术,在对应的内存页面设置内存读拦截或者内存写拦截,使得在进程读写敏感内存时无感知地记录下来;包括:51根据敏感内存区域,首先根据恶意代码执行虚拟机中Linux内核加载地址和内核符号表定位内核代码段起始虚拟地址和结束虚拟地址,并通过页表翻译获取虚拟地址对应的物理地址;52获取物理地址页对应的EPTEntry;当当前EPTEntry支持子页面权限时,后续操作力度为更细粒度的子页面;53当设置内存读拦截时,将EPT页表的读标志位设为无效;当设置内存写拦截时,将EPT页表的写标志位设为无效;由此当恶意代码执行虚拟机进行访存时,页面标志无效,触发EPTViolation,产生虚拟机退出事件,控制流通过虚拟机管理层转移到监控虚拟机中;54通过监控虚拟机处理EPTViolation事件,解析恶意代码执行虚拟机中访存信息并记录;行为分析和判定阶段执行如下步骤:步骤6,恶意代码进程在执行过程中,识别筛选恶意代码及其子进程相关的函数调用行为和内存读写行为,并进行记录和拦截,放行不在监控范围内的进程;步骤7,根据步骤6拦截到的函数调用行为,解析函数调用信息;根据步骤6拦截到的内存读写行为,解析内存段属性、内存读写内容信息;步骤8,将步骤7解析出的信息与步骤2形式化的检测规则进行比对,判定恶意代码行为是否与已知的恶意行为相匹配;步骤9,将判定结果进行输出;通过上述步骤即可实现基于虚拟机自省的Linux恶意代码检测。

全文数据:

权利要求:

百度查询: 北京大学 基于虚拟机自省的Linux恶意代码检测方法与系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。