Volafox

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

소개

[그림 1] Volafox 실행화면

Volafox는 n0fate가 만든 CLI기반 메모리 분석 도구이며 Mac OS 10.6 ~ 10.9의 환경에서 실행 가능하고 오픈소스로써 다음의 웹페이지 (https://code.google.com/p/volafox/downloads/list) 에서 다운받을 수 있다. 2012년 이후 부터는 별다른 업데이트가 없었으며, 주요 기능으로는 메모리 정보 수집과 루트킷, 멀웨어 탐지, 마운트 된 파일 시스템 정보 확인이 있으며 프로세스와 네트워크 정보 또한 확인할 수 있다. 그 외 비디오 메모리영역을 보거나 EFI의 정보를 볼 수도 있고, 키체인을 메모리 이미지로부터 추출할 수 도 있다. 아래의 [그림 1]은 Volafox의 실행 화면이다.

사용법

Volafox의 압축을 해제하면 파일명이 “vol.py”인 파일이 존재한다. [표 1]은 vol.py를 이용한 Volafox의 기본 명령어 형식이다.

[표 1] Volafox 기본 명령어 형식
명령어
python ./vol.py –i [이미지경로] -o [플러그인 –vpx]

Volafunx의 디폴트 옵션인 –i 옵션은 메모리 이미지의 경로를 뜻한다. –o 옵션은 사용자가 플러그인 명을 입력하여 해당 플러그인에 해당하는 작업을 수행할 때 사용한다. -vpx는 선택적 옵션으로 –o 옵션과 함께 사용한다. 만약 Volafox를 사용하여 int형 변환 에러가 발생했을 경우 volafox/plugins 디렉터리에 위치한 imageinfo.py의 소스를 수정해야 한다. imageinfo.py의 128번째 라인인 os_version = int(build[:2])를 os_version = ord(build[0]) os_version += ord(build[1]) 2줄로 변경하면 정상 동작한다. [표 2]는 Volafox의 기본 옵션에 관한 표이다.

[표 2] Volafox의 기본 옵션
옵션 설명
-i 메모리 이미지 덤프의 경로를 지정한다.
-o [plugin] system_profiler 커널버전, CPU, 메모리 정보를 출력한다.
mount 마운트된 파일시스템 목록을 출력한다.
kextstat KEXT[1] 목록을 출력한다.
kextscan KEXT를 스캔한다.
ps 프로세스 목록을 출력한다.
tasks 작업 목록을 출력한다. 프로세스 은닉 여부를 확인하여 링크가 안 된 작업을 출력한다.
ps 프로세스 목록을 출력한다.
machdump Mach-O 파일을 덤프한다.
systab 시스템 콜 테이블을 출력한다. 후킹 탐지를 할 수 있다.
mtt Mach Trap Table 목록을 출력한다. 후킹 탐지를 한다.
netstat 해시 테이블 기반의 네트워크 정보를 출력한다.
lsof 각 프로세스가 오픈한 파일 목록을 출력한다.
pestate 시스템 부팅 시 설정되는 정보를 제공한다. 비디오 메모리, 부팅 인자 등을 출력.
efiinfo EFI[2] 정보를 출력한다.
keychaindump 키체인을 덤프한다. 10.7 ~ 10.9 버전에서 가능하다.
dmesg 부팅 시 디버그 메시지를 출력한다.
uname uname(시스템 정보)을 출력한다.
hostname 호스트 이름을 출력한다.
trustedbsd TrustedBSD MAC Framework[3]를 출력한다.
bash_history 배쉬 프로세스의 히스토리를 출력한다.
-x [pid/kid/tid] 각 id에 해당하는 프로세스나 커널 모듈을 덤프한다.
-v 커널에 대하여 자세히 출력한다.

kextstat 플러그인은 뒤에 –x KID 옵션을 주어 프로세스나 KEXT를 추출할 수 있다. ps 플러그인 또한 뒤에 –x PID 형식의 옵션을 주어 PID에 해당하는 프로세스를 추출할 수 있다.

도구기능

Volafox는 의 모든 시간은 GMT+00:00으로 표현이 되며 –o 옵션의 system_profiler 플러그인은 하드웨어 및 커널 버전 정보 외에 시스템의 최근 부팅시간, 슬립 시간, 깨어난 시간 정보를 추가로 제공한다. 그 중 부팅시간은 특정 심볼이 존재하는 경우에만 분석이 가능하다. 부팅 시간 정보 출력은 Mac OS 라이언 10.7.3에서만 제공이 된다. 시간 정보는 한 번도 수행된 적이 없다면 애플의 기본 시간인 1970년 1월 1일 00시 00분으로 출력된다. kextscan 플러그인은 64비트 메모리 이미지에서만 제한적인 KEXT 목록을 추출할 수 있으며 정확도가 높지만 매우 느린 속도이다. kextstat, ps, systab, bash_history 플러그인은 동작 시 에러가 나지 않지만 아무 결과를 보여주지 못했다. machdump, keychaindump 플러그인은 동작 시 파이썬 코드상의 에러를 출력하며 정상 작동하지 않는다. mtt 플러그인은 Mach Trap Table을 출력하며 HOOK_FINDER 컬럼의 값이 TRUE이면 정상이고 후킹이 탐지되었을 때 FALSE 값을 보여준다. lsof 플러그인은 x64나 Darwin 99.x의 프로세스 타입이 없다는 메시지를 출력하며 동작하지 않는다.

제한사항

OSXPmem을 사용하여 메모리 이미징을 했을 경우 Volafox가 정상 동작하지 않았으며, vmem파일을 사용했을 때 정상 동작하였다. 다수의 플러그인이 불안전하며 정상 작동되지 않을 수 있다. keychaindump 플러그인의 경우 Mac OS 10.7 ~ 10.9 버전만 지원하며, kextscan 플러그인은 굉장히 느린 속도로 스캔이 진행된다. imageinfo.py에서 형 변환 에러가 발생하면 소스코드를 수정하여 사용하여야 한다. 지원 가능한 메모리 이미지 포맷으로 vmem, mmr(Mac Memory Reader 메모리 포맷), flattened x86, IA-32e가 있다. 안정성을 위해 가능한 Mac Memory Reader를 이용하여 메모리를 이미징하여 분석해야 한다.

수사 활용 방안

Volafox는 Mac OS 메모리 이미지를 분석할 수 있지만 Mac Memory Reader로 덤프한 이미지가 아니면 도구의 안정성이 떨어지므로 mmr포맷의 메모리 이미지가 있을 때 Volafox를 사용하는 것이 좋다. Volafox의 python 코드의 에러가 많아 수사에 원활한 활용이 어렵다.

주석

  1. KEXT: Mac OS의 커널 모듈의 확장자로써 장치 드라이버와 같은 역할을 한다.
  2. Extensible Firmware Interface(EFI): 하드웨어와 가장 낮은 수준에서 입출력을 담당하는 바이오스의 상위 버전으로 GUI 및 64비트 주소체계 등이 적용된 인터페이스이다.
  3. TrustedBSD Mandatory Access Control Framework: 신뢰할 수 있는 운영체제를 만들기 위한 프로젝트로써 접근 제어를 위한 보안 프레임 워크이다.