
2026/07/05 2:37
BareMetal RAM Dumpa — フロントエンドの x86 ツールです。コールドブート攻撃の実験に使用されます。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
この x86 ベアメタルアセンブリツールは、レガシーBIOS/CSM を介して USB ドライブから直接起動し、コールドブート攻撃の実験のために設計されています:ノート PC の RAM をフリーズさせた後に再起動することで、暗号化キーなどの揮発性内容物が劣化する前にそれらをダンプできます。これは BIOS インタープライントを活用しており、1 MB 以上のメモリにアクセスするためにアンリアルモードに入り、INT 0x15 E820 を使用して有効な RAM リージョンをマッピングし、LBA 64 から始まる INT 0x13 AH=0x43 で生データを記述します。ブートローダーは、LBA 1 からメモリ上の 0x8000 にセカンドステージを読み込む 512 バイトのステージ 1 と、EDD サポートを照会し、最大 RAM を計算し、32 KB チャンク単位で RAM をループして進捗を表示するステージ 2 で構成されています。ツールはブートメディア上のデータを書き換えるため、セクター 64 以降から書き始める専用空の USB ドライブが必要です。コンパイルするには NASM をインストールし、
nasm -f bin で stage1.asm と stage2.asm を実行してそれらを結合して boot.bin にします。そして boot.bin をターゲットの USB ドライブに書き込み(例:sudo dd if=boot.bin of=/dev/sdX bs=512)、CSM が有効化されたレガシーBIOSマシンを起動します。本文
x86 バース・メタルツール:RAM の直接ダンプについて
はじめに
簡易的な x86 バース・メタル ツール です。このツールは、ディスクまたは USB ドライブからブートし、システム上の RAM を直接ブート媒体にダンプします。
- BIOS インター럽トを利用してブートおよびディスク操作を処理します。
- 1 MB 以上のメモリ領域へのアクセスのために、リアルモードからアンリアルモードへと移行します。
背景:コールドブーツ攻撃 ❄️
本ツールは当初、コールドブーツ攻撃の実験目的で開発され、成功裏にテストされました。
- ラップトップの RAM を冷凍庫(約 -60°C)で凍結します。
- このツールの入った USB ドライブから直ちに再起動します。
- データの劣化が始まる前に、凍結されたメモリ内容をディスク上にダンプします。
- これにより、暗号鍵などの機密情報を抽出することが可能です。
主な特徴
- カスタムブートローダー: BIOS(レガシー CSM)から直接ブート可能です。OS は不要です。
- アンリアルモード: 一時的にアンリアルモードへ切り替えることで、32 ビット物理メモリアドレスへのアクセス・読み出しを行います。
- メモリマップの解析: BIOS INT 0x15 E820を利用して、有効な RAM リージョンを検出します。これにより予約済み領域やメモリマップト I/O がダンプ対象から除外されます。
- 直書きディスク操作: BIOS INT 0x13 AH=0x43(拡張書込み)を利用して、メモリの内容を直接ブートドライブに書き戻し、開始位置を LBA 64 に設定します。
動作原理
Stage 1 (stage1.asm
)
stage1.asm512 バイトのブートセクタで以下の処理を行います:
- セグメントレジスタを初期化します。
- スタックを設定します。
- 拡張読み込み(INT 0x13 AH=0x42)を使用して、LBA 1 のステージ 2 をメモリ上の
へロードし、そこにジャンプします。0x8000
Stage 2 (stage2.asm
)
stage2.asmメインロジックを実行します:
- BIOS に EDD(Enhanced Disk Drive)サポートの有無を照会します。
- INT 0x15 E820を用いてメモリマップを取得します。
- 最大 RAM サイズを計算します。
- RAM を 32 KB のチャンク単位で巡回処理します。
- 各チャンクについて、アンリアルモードへ切り替えを行い、高アドレス領域のデータを低地址バッファ(
)にコピーします。0x90000 - コピーされた 32 KB チャンクを拡張書込み機能によりディスクに書き込みます(開始位置 LBA 64)。
- スクリーン上に進行状況(%)を表示します。
⚠️ 注意事項
本ツールは、セクタ 64 から直ちにブートドライブの生データを上書きして書き込みます!
- 重要なデータが保存された USB ドライブに適用すると、RAM ダンプによる操作でLBA 64 以降の内容が破損する可能性があります。
- 必ず専用の空フラッシュメモリーを使用してください。
ビルド方法
本プロジェクトをコンパイルするには、NASM がインストールされている必要があります。
Windows
Provided のビルドスクリプトを実行してください。
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 -
を USB ドライブに書き込みます。boot.bin- Linux/macOS:
コマンドを使用。dd - Windows: Rufus または Win32DiskImager を使用。
注意: USB ドライブにはシステム全体の RAM 容量分以上の空き領域が必要です。
例(Linux):
sudo dd if=boot.bin of=/dev/sdX bs=512 - Linux/macOS:
-
ターゲット PC を USB ドライブからブートします。
- レガシー BIOS / CSM ブートが有効になっていることを確認してください。
-
ダンプが完了するまで待機します(進行状況として 100% が表示されます)。