揭示内核恶意软件行为的技术解析
1. Rkprofiler与QEMU的协作及问题处理
在QEMU运行时,虚拟机(VM)的每条指令都会被翻译成中间指令集。Rkprofiler在代码翻译阶段进行代码检查和分析。为提升性能,QEMU会缓存翻译后的翻译块(TB),以便主机CPU后续重新执行。然而,这种优化方式对Rkprofiler并不理想,因为指令在不同机器状态下的行为可能不同。例如,操作数为通用寄存器的CALL指令,可能会根据该寄存器的值跳转到不同的指令。
对于已缓存的恶意TB,Rkprofiler会强制QEMU始终进行代码翻译,但新生成的代码不会存储在缓存中,而是执行现有的缓存代码。此外,当一个TB包含多条指令时,会出现另一个问题。在QEMU中,TB翻译期间不会更新VM状态(寄存器和内存内容)。除第一条指令外,TB中其他指令的翻译可能会伴随着错误的VM状态,从而可能导致分析错误。Rkprofiler通过让每个恶意TB只包含一条指令,并禁用所有恶意TB的直接块链接来解决这个问题。
具体操作步骤:
- 当检测到恶意TB时,强制QEMU进行代码翻译。
- 不将新生成的代码存储在缓存中,执行现有缓存代码。
- 确保每个恶意TB只包含一条指令。
- 禁用所有恶意TB的直接块链接。
2. Rkprofiler的设计与实现
内核恶意软件可以以驱动程序的形式合法加载到内核中,也可以通过利用良性内核软件的漏洞注入到内核中。Rkprofiler旨在检测以这两种方式进入内核的恶意软件。
在恶意软件执行之前,Rkprofiler会查找内核
超级会员免费看
订阅专栏 解锁全文
11

被折叠的 条评论
为什么被折叠?



