
가상 머신 내부 조사, 추적 및 디버깅
Icebox는 가상 머신 인트로스펙션(Virtual Machine Introspection) 솔루션으로, 커널 또는 사용자 프로세스를 은밀하게 추적하고 디버깅할 수 있게 해줍니다. Winbagility 프로젝트를 기반으로 합니다.
도움이 될 만한 파일들:
전체 시작 가이드는 여기에 작성되어 있습니다.
그 외에는 샘플 폴더를 확인하세요. 요구 사항을 설치한 후, 이 지침에 따라 샘플을 빌드할 수 있습니다.
Windows 게스트를 사용하는 경우, 환경 변수 _NT_SYMBOL_PATH 를 게스트의 pdb 파일이 포함된 폴더로 설정하는 것이 좋습니다. icebox 설정은 게스트 커널의 pdb 파일을 찾지 못하면 실패합니다.
vm_resume:
vm_resume은 VM을 일시 중지한 후 다시 시작합니다.
cd icebox/bin/$ARCH/
./vm_resume <vm_name>
nt_writefile:
nt_writefile은 프로세스가 ntdll!NtWriteFile을 호출할 때 중단하고, 호스트의 현재 디렉터리에 기록된 내용을 파일로 덤프합니다.
cd icebox/bin/$ARCH/
./nt_writefile <vm_name> <process_name>
heapsan:
heapsan은 프로세스의 ntdll 메모리 할당을 중단하고 모든 포인터 앞뒤에 패딩을 추가합니다. 아직 완전하지 않으며 검사는 수행하지 않습니다.
cd icebox/bin/$ARCH/
./heapsan <vm_name> <process_name>
wireshark:
wireshark는 ndis 드라이버가 네트워크 패킷을 읽거나 보낼 때 중단하고 wireshark 트레이스(.pcapng)를 생성합니다. 전송된 각 패킷은 필요에 따라 커널 영역에서 사용자 영역까지의 콜스택과 연결됩니다.
cd icebox/bin/$ARCH/
./wireshark <name> <path_to_capture_file>