
物理RAMを直接ディスクにダンプするためのベアメタルx86ユーティリティ。凍結メモリに対するコールドブート攻撃実験のために構築・テスト済み。
ディスク/USBから起動し、システムのRAMを直接起動メディアにダンプするように設計されたシンプルなx86ベアメタルツールです。起動とディスク操作にBIOS割り込みを利用し、1MBバリア以上のメモリにアクセスするためにアンリアルモードに移行します。
このツールはもともとコールドブート攻撃の実験のために開発され、正常にテストされました。ラップトップのRAMを(-60°Cまで)凍結し、このツールを含むUSBドライブから素早く再起動することで、データが消失する前に凍結したメモリ内容をディスクにダンプし、暗号化キーなどの機密情報を抽出することが可能になります。
INT 0x15 E820 を使用して有効なRAM領域を検出し、予約済みメモリやメモリマップドI/Oのダンプを回避します。INT 0x13 AH=0x43(拡張書き込み)を使用して、メモリ内容をLBA 64からブートドライブに直接書き込みます。stage1.asm は512バイトのブートセクタです。セグメントレジスタを初期化し、スタックを設定し、拡張読み取り(INT 0x13 AH=0x42)を使用してLBA 1からstage2をメモリ0x8000にロードします。その後、stage2にジャンプします。stage2.asm はメインロジックを実行します:
INT 0x15 E820を使用してメモリマップを取得します。0x90000)にデータをコピーします。このツールは、セクタ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を使用)。
sudo dd if=boot.bin of=/dev/sdX bs=512