[发明专利]基于IPT与虚拟机自省的API调用监控方法及系统在审
申请号: | 202110378538.6 | 申请日: | 2021-04-08 |
公开(公告)号: | CN113138835A | 公开(公告)日: | 2021-07-20 |
发明(设计)人: | 丁振全;郝志宇;程丰;屈天恒;刘永继;蒋建华 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F11/30 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 司立彬 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 ipt 虚拟机 自省 api 调用 监控 方法 系统 | ||
1.一种基于IPT与虚拟机自省的API调用监控方法,其步骤包括:
1)当创建虚拟机时,IPT配置模块根据收到的所创建虚拟机相关参数配置MSR寄存器启用追踪,当KVM进入虚拟机模式时,IPT开始进行追踪,执行步骤a)~b);当KVM退出虚拟机模式回到根模式的时候,IPT停止追踪;其中:a)获取虚拟机内部当前运行的进程,根据每一进程的进程结构体与进程页表的偏移,得到进程页目录基址CR3,然后遍历对应进程所有动态库,得到各进程对应动态库基地址,将所述动态库基地址与所监控的API偏移地址相加,得到所监控API的虚拟地址;b)将所监控API与API虚拟地址的对应关系写入第一哈希表中,将进程CR3的值与对应进程间的映射关系写入第二哈希表中,并且监听进程CR3的值的变化;当虚拟机中一进程结束后,删除第二哈希表中对应进程的哈希条目,当新的进程创建,向第二哈希表中插入新创建进程与进程CR3的对应关系;
2)数据解码模块对产生的IPT追踪数据进行解码,然后根据第一哈希表、第二哈希表从解码数据中获取进程的API序列调用;
3)行为管控模块将进程的API调用序列与设定高危进程的API序列进行匹配,根据匹配结果确定虚拟机的安全状态。
2.如权利要求1所述的方法,其特征在于,获取所监控API的虚拟地址的方法为:
a1)利用VMI技术遍历虚拟机内存,获取正在运行的进程,得到一进程列表;从该进程列表中查找需要监控的进程,若没有则与配置文件中的进程相匹配,如若需要监控的进程没有运行或配置文件中的进程未运行则返回,否则进行步骤a2);
a2)根据进程对于进程头的偏移,计算进程的基地址,根据进程的基地址和页目录基址的偏移,计算进程的页目录基址值,得到页目录基址与进程名的对应关系;
a3)继续根据进程的基地址找到动态库头的偏移量查找进程调用的动态库列表,找到该进程的进程结构体所属动态库链表,遍历所述动态库链表,获取动态库的基址,然后根据动态库函数导出表找到API相对于动态库基址的偏移,计算后得到对应API的虚拟地址。
3.如权利要求1所述的方法,其特征在于,步骤b)中,利用VMI技术结合KVM为PspInsertProcess以及PspProcessDelete两个函数下断点,实现动态监控虚拟机内部进程的创建和销毁。
4.如权利要求1所述的方法,其特征在于,所述虚拟机相关参数包括监控地址范围、页目录进程基址。
5.如权利要求1所述的方法,其特征在于,对产生的IPT追踪数据进行解码的方法为:首先读取数据包头,判断数据包的类型;如果是PIP数据包,则解析出PIP数据包记录的进程CR3值,根据第二哈希表判断出当前解析的进程并缓存进PIP包进程数据结构;如果是TNT数据包,则解析TNT数据包的分支个数,并将其存入TNT包缓存;如果是TIP数据包,则解压缩计算出指令的下一个跳转地址,记录下一个跳转的地址,若跳转地址为API入口地址,则将该API缓存进最近的PIP包记录的进程的相关数据结构;如果是其他类型数据包则不进行解析处理;追踪数据中的数据包解析完成后,遍历PIP包进程数据结构缓存,针对PIP包进程数据结构缓存中的每一进程,遍历该进程的TIP包缓存,如果TIP包为函数地址,则记录为该进程的API调用,遍历完毕后生成该进程的API调用序列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110378538.6/1.html,转载请声明来源钻瓜专利网。