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의 기본 명령어 형식이다.
명령어 |
---|
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의 기본 옵션에 관한 표이다.
옵션 | 설명 | |
---|---|---|
-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 코드의 에러가 많아 수사에 원활한 활용이 어렵다.