[发明专利]一种基于虚拟机自省技术的API动态监控方法及系统有效
申请号: | 202110367511.7 | 申请日: | 2021-04-06 |
公开(公告)号: | CN113176926B | 公开(公告)日: | 2023-09-05 |
发明(设计)人: | 丁振全;郝志宇;屈天恒;程丰;刘永继;秦文雨 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F9/455 | 分类号: | G06F9/455 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 司立彬 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 虚拟机 自省 技术 api 动态 监控 方法 系统 | ||
1.一种基于虚拟机自省技术的API动态监控方法,其步骤包括:
1)策略加载模块读取并解析设定的监控策略配置文件,获取所需监控的API以及API所属的动态链接库DLL;其中,策略加载模块读取并解析设定的监控策略配置文件的方法为:
1-1)读取监控策略配置文件,获取所需监控的API及所属的动态链接库DLL;
1-2)初始化需监控API与其地址及状态的第一哈希表,初始化所需监控的API与其所属的动态链接库DLL的第二哈希表;
1-3)根据当前操作系统内核文件ntoskrnl.exe对应的程序数据库文件PDB,获取操作系统进程链的头节点地址,进程链的每个节点对应一个EPROCESS结构体,每个EPROCESS结构体对应操作系统中的一个进程,EPROCESS结构体内部包含进程的进程ID、进程页目录表基址、进程名和磁盘文件存储位置信息;
1-4)在EPROCESS结构体中根据被监控操作系统EPROCESS成员偏移查找该EPROCESS结构体对应进程的PEB结构体;
1-5)从进程的PEB结构体按照被监控操作系统PEB成员偏移找到进程的PEB_LDR_DATA结构体;
1-6)遍历PEB_LDR_DATA双向链表,取出已映射到当前进程中的各DLL的虚拟基址;
1-7)对已映射入操作系统内存的DLL,查询所述第二哈希表寻找所需监控的API函数,然后根据程序数据库文件PDB获取API函数相对于DLL基址的偏移;将此偏移加上API函数所属DLL的虚拟基址,得到所需监控API函数的虚拟地址并对该API函数进行监控;
1-8)若监控成功,则更新该API函数的状态与地址;若不成功则保持原有状态不变;
2)遍历已加载到系统内存的动态链接库,调用监控设置模块对已加载到内存中且需要监控的API进行监控;对未加载入系统内存的动态链接库进行监控,当其载入系统内后,动态监控模块将其交于策略加载模块进行判断,确认是否是需要监控的动态链接库,如果是,则调用监控设置模块对该动态链接库内需要监控的API函数进行监控;
3)当所需监控API函数被触发后,语义转换模块对当前操作系统内存进行解析,提取出当前进程、进程ID、当前线程、线程ID、当前进程名、所调用API、所属动态链接库信息,并写入日志。
2.如权利要求1所述的方法,其特征在于,监控设置模块对需要监控的API进行监控的方法为:
2-1)获取所需监控API函数的虚拟地址与当前进程的EPROCESS结构体地址;
2-2)从EPROCESS结构体地址中根据被监控操作系统EPROCESS成员偏移取出当前进程的页目录表基址;
2-3)根据进程的页目录表基址找到进程的页目录表,根据所述虚拟地址依次查询多级页表,寻找所述虚拟地址对应的物理地址;
2-4)如果未找到物理地址,则将CR2寄存器装入虚拟地址,触发系统换页机制,并将对应内存页重新换入内存;
2-5)重复步骤2-3),再次查询所述虚拟地址对应物理地址,找到所述虚拟地址对应的物理地址;
2-6)监控所述虚拟地址对应的物理地址,保存对应位置的机器码,生成一个中断事件并返回监控设置状态。
3.如权利要求2所述的方法,其特征在于,语义转换模块对当前操作系统内存进行解析的方法为:
3-1)取出一个中断事件,同时暂停被监控操作系统;
3-2)根据该中断事件中保存的触发事件的物理地址查找第一哈希表,确定对应的API;
3-3)获取该API的调用参数并对其进行还原,得到原始参数并保存到缓冲区;
3-4)对被监控操作系统内核模块的PDB文件进行解析,获取操作系统的KPCR结构体地址,找到对应KPRCB结构体,根据KPRCB结构体偏移从该KPRCB结构体中找到当前运行线程的KTHREAD结构体;然后从KTHREAD结构体与EPROCESS结构体中读取触发该中断事件的进程、线程相关信息;
3-5)将步骤3-3)、3-4)获取的信息写入数据库,并恢复虚拟机运行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110367511.7/1.html,转载请声明来源钻瓜专利网。