
물리적 RAM을 디스크로 직접 덤프하는 베어 메탈 x86 유틸리티입니다. 냉동 메모리에 대한 콜드 부트 공격 실험을 위해 구축 및 테스트되었습니다.
디스크/USB로 부팅하여 시스템의 RAM을 부팅 매체에 직접 덤프하도록 설계된 간단한 x86 베어메탈 도구입니다. BIOS 인터럽트를 사용하여 부팅 및 디스크 작업을 수행하고, 1MB 장벽 위의 메모리에 접근하기 위해 언리얼 모드(unreal mode)로 전환합니다.
이 도구는 원래 콜드 부트 공격 실험을 위해 개발되어 성공적으로 테스트되었습니다. 노트북의 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이 설치되어 있어야 합니다.
On Windows, run the provided build script:
build.bat
On Linux, you can run:
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