Skip to main content

Command Palette

Search for a command to run...

#virtualization

Articles tagged with #virtualization

  1. 记一次Introcore 内核级 Bug 调试记录:从 PUSH 指令到页表模拟崩溃

    在虚拟机内省(VMI)的底层开发中,稳定性往往比功能更难攻克。最近在对 Windows 7 进行监控实验时,Bitdefender 的 HVMI (Introcore) 引擎频繁触发致命崩溃。错误指向了页表写入模拟逻辑。 通过对 hvmid 进程进行深度的 GDB 挂载调试,我还原了一个关于指令建模、地址不匹配以及异常处理机制的完整 Bug 链路。 1. 现象:内省引擎的“自杀” 在监控环境下,Introcore 抛出两类致命日志并导致守护进程崩溃: [ERROR] Access at 79c...

    Jan 26, 20263 min read32
  2. 记一次从零设计 Vmi 代码注入引擎:劫持、执行、清理

    0.摘要 在虚拟化安全的研究中,如何在尽量不修改 Guest 内核的前提下执行自定义代码,一直是一个有趣且充满挑战的话题。本文尝试分享一套基于 Hypervisor 的完整代码注入思路,涵盖了从劫持 Guest 执行流、基于 EPT 的透明注入、双向通信协议到生命周期管理的全过程。 仓库位置:[mini-int3-injector].(https://github.com/ania0-art/mini-int3-injector). 1. 引言:一点背景与思考 1.1 传统方案遇到的一些挑战 ...

    Jan 25, 20264 min read36
  3. 记一次虚拟化下的detour框架实现

    1.Detour机制基础 1.1 什么是Detour? 在虚拟化安全监控领域,我们经常需要监控Guest OS内部的关键操作——进程创建、权限提升、内存映射变化等。传统的EPT(Extended Page Table)监控虽然可以捕获内存访问,但存在明显的局限性: 语义鸿沟:从"某个地址被写入"推断"进程被创建"需要复杂的分析 性能开销:细粒度的内存监控会产生大量VM-Exit 覆盖盲区:纯寄存器操作、链表修改等无法通过内存监控捕获 因此,我们需要一种更直接的方法:在关键函数的入口和出...

    Jan 17, 20266 min read21
  4. 记一次基于页表级联监控(pts/ptm)的 Ept 内存内省实践

    0.前期准备 我们知道在x86架构下的linux操作系统中,地址变化一直是一个头痛(?)的问题,虚拟地址到物理地址的映射离不开段页式管理,而在早期的内核版本中分段式管理占据主要地位,分页式管理作为可选机制(CR0.PG = 1)。而在现代版本中,段式管理极度弱化,只剩下页式管理。 在虚拟化的环境下,外部如何实现对一块内存进行监控会遇到三个问题: 1.EPT修改权限只能按照gpa修改,然而我们面对的是gva/gla(由于分段式弱化,这俩个可以看成是一个东西),比如说某个对象的某个字段/某个模块的某...

    Jan 10, 20264 min read18
  5. 记一次从物理内存中获取内核符号表

    0.准备工作 为了从物理内存二进制视图中准确的重构出内核符号表,我们需要获取 1.msr寄存器中syscall入口地址,记为S 2.内核代码段第一页签名,记为T 通过启发式扫描、特征匹配和复杂的数据结构解析,重构出 Linux 内核的完整内存拓扑。 msr中syscall入口地址 从vmcs数据结构中读取IA32_LSTAR_MSR(0XC0000082)存储有syscall入口地址 内核代码段第一页签名 使用gdb反汇编vmlinux内核调试包获取第一页签名。具体操作十分简单不过多赘述。 1....

    Jan 7, 20266 min read36
    记一次从物理内存中获取内核符号表