OSXPmem

Digital Forensic Wikipedia
DFRC (토론 | 기여)님의 2015년 1월 25일 (일) 17:17 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 가기 검색하러 가기

소개

OSXPmem은 Michael Cohen의 오픈소스 메모리 획득 도구로써 Mac OS 10.7 이상, 10.9.2 이하에서 실행 가능하다. x86, x64 두 시스템의 환경에서 모두 정상 작동을 하며 유저모드 획득 도구인 OSXPmem을 이용하여 유저모드에서 접근 가능한 물리 메모리 섹션을 디스크에 저장할 수 있고, pmem.kert를 이용하여 물리메모리 전체를 얻을 수 있다. 다운로드는 WinPmem과 마찬가지로 웹페이지(https://github.com/google/rekall/releases)에서 rekall 전체의 소스코드를 다운로드 할 수 있으며 tools/osx에서는 Mac OS 환경의 OSXPmem의 소스코드를 확인할 수 있다.

사용법

OSXPmem의 압축을 푼 다음 pmem.kext 파일의 소유자와 그룹을 root:wheel로 변경해야 한다. 소유자와 그룹을 변경하기 위해 “sudo chown –R root:wheel pmem.kext”를 입력한다. -R 옵션은 대상의 모든 하위 디렉터리와 파일의 소유자, 그룹을 변경을 하는 옵션이다. [그림 1]은 pmem.kext의 소유자와 그룹을 변경하는 그림이다.



[그림 1] OSXPmem pmem.kext 소유자와 그룹 변경



소유자와 그룹을 변경 후 [표 1] 형식의 명령어를 사용하여 메모리를 이미징 할 수 있다. 실행을 위해서 root 권한의 쉘이 필요하다.



[표 1] OSXPmem 이미징 명령어 형식
명령어 비고
./osxpmem [옵션] [파일명] 루트 권한의 쉘에서 실행



OSXPmem의 옵션은 [표 2]와 같다.



[표 2] OSXPmem의 옵션
옵션 설명 비고
-h 도움말을 출력한다.
-v 프로그램의 진행 과정을 콘솔화면으로 출력한다.
-l 드라이버를 로드하여 /dev/pmem을 생성하고 종료한다.
-u /dev/pmem을 언로드하고 종료한다.
-d 메모리 맵을 출력한다.
-m iokit IO 메모리 디스크립터의createMappingInTask() 함수를 사용하여 이미징을 한다. 안정적이지만 루트킷에 취약하다. 디폴트 값이다.
pte 페이지 테이블 엔트리에 직접적으로 접근하여 이미징 한다. 루트킷에 강하지만 시스템 충돌 가능성이 있다.
-f elf ELF 포맷의 이미지를 생성한다.
mach Mach-O 포맷의 이미지를 생성한다.
raw RAW 포맷 이미지를 생성한다.



OSXPmem은 -m 옵션으로 메모리 매핑 방법을 설정할 수 있고 -f 옵션으로 원하는 이미지 포맷의 타입을 결정할 수 있다. [그림 2]은 OSXPmem의 실행화면이다.



[그림 1] OSXPmem의 실행화면



도구기능

-m 옵션의 iokit 모드는 커널 API를 사용하여 안정적이지만 루트킷 및 후킹에 취약하다. 반대로 –m 옵션의 pte 모드는 페이지 테이블 엔트리 페이지 테이블 엔트리 : 4KB 단위로 각 페이지의 시작 주소가 들어있다. 를 처음부터 끝까지 참조하여 메모리를 덤프하는 방식으로 시스템 충돌의 위험이 있지만 루트킷에는 상대적으로 강하다. 이외 모든 옵션이 정상 작동한다.

제한사항

메모리 맵핑 옵션 중 pte 옵션이 직접적인 메모리 접근으로 시스템과 동시에 접근하게 될 때 다른 디바이스와 충돌의 위험이 있어 시스템이 다운될 수 있다. VMware상의 Mac OS가 다른 OS에 비하여 느린 편이므로 기능 분석결과가 다른 OS에 비하여 다소 느릴 수 있다.

수사 활용 방법

OSXPmem은 필요한 기능만 간단하게 가지고 있어 사용법이 어렵지 않다. 그러므로 메모리를 처음 접하는 수사관도 현장에서 메모리 이미지를 획득하기 용이하다. 또한 Mach OS에서 얻을 수 있는 모든 이미지 포맷을 지원하므로 활용성이 높다.