裸金属 RAM 转储器 - 用于冷启动攻击实验的裸金属 x86 工具
这是一个简单的 x86 裸金属工具,旨在从磁盘/USB 启动并直接将系统的内存转储到启动介质上。它依赖 BIOS 中断进行启动和执行磁盘操作,并进入虚拟模式以访问超过 1MB 屏障的内存。 背景:冷启动攻击 ❄️ 这个工具最初是为实验冷启动攻击而开发并成功测试的。通过将笔记本电脑的 RAM 冻结(低至 -60°C),并从包含该工具的 USB 驱动器快速重新启动,可以在数据衰减之前将冻结的内存内容转储到磁盘,从而提取敏感信息,如加密密钥。 特性 自定义引导加载程序:直接从 BIOS 启动(传统 CSM)。不需要操作系统。 虚拟模式:临时切换到虚拟模式,以访问和读取 32 位物理内存地址。 内存映射解析:使用 BIOS INT 0x15 E820 检测有效的 RAM 区域,避免转储保留内存或内存映射的 I/O。 直接磁盘写入:使用 BIOS INT 0x13 AH=0x43(扩展写入)将内存内容直接写回到从 LBA 64 开始的启动驱动器上。 工作原理 stage1.asm 是一个 512 字节的引导扇区。它初始化段寄存器,设置堆栈,并使用扩展读取(INT 0x13 AH=0x42)将 stage2 从 LBA 1 加载到内存的 0x8000。然后跳转到 stage2。 stage2.asm 执行主要逻辑:查询 BIOS 以获取 EDD(增强型磁盘驱动)支持。使用 INT 0x15 E820 获取内存映射。计算最大 RAM 大小。以 32KB 的块循环遍历 RAM。对于每个块,它切换到虚拟模式以将数据从高内存复制到低内存缓冲区(0x90000)。使用扩展写入将 32KB 的块写入磁盘,从 LBA 64 开始。在屏幕上打印进度百分比。 警告 ⚠️ 该工具会直接在从扇区 64 开始的启动驱动器上写入原始数据!如果您将其写入包含重要数据的 USB 驱动器,则 RAM 转储将覆盖 LBA 64 及以后的所有内容。请使用专用的空白 USB 闪存驱动器进行此操作。 构建 您需要安装 NASM 以编译此项目。在 Windows 上,运行提供的构建脚本:build.bat。在 Linux 上,您可以运行: nasm -f bin stage1.asm -o stage1.bin nasm -f bin stage2.asm -o stage2.bin cat stage1.bin stage2.bin > boot.bin 使用 构建项目以生成 boot.bin。将 boot.bin 写入 USB 驱动器(例如在 Linux/macOS 上使用 dd,或在 Windows 上使用 Rufus / Win32DiskImager)。注意:确保您的 USB 驱动器有足够的空间来容纳系统的 RAM。 示例(Linux):sudo dd if=boot.bin of=/dev/sdX bs=512 从 USB 驱动器启动目标 PC(确保启用传统 BIOS / CSM 启动)。等待转储完成(它会显示 100%)。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡