Volafunx

Digital Forensic Wikipedia
둘러보기로 가기 검색하러 가기

소개

[그림 1] Volafunx 실행화면

Volafunx는 Volafox와 마찬가지로 n0fate가 만든 CLI기반 메모리 분석 도구이며 Mac OS 환경이 아닌 FreeBSD x86 7버전과 8 버전의 환경에서 실행 가능하다. Volafunx는 Volafox와 마찬가지로 오픈소스로써 다음의 웹페이지 (https://code.google.com/p/volafox/downloads/list) 에서 다운받을 수 있다. Volafunx의 주 기능으로는 커널 내부의 모듈을 목록화하여 볼 수 있도록 하고, 시스템 후킹 탐지 및 프로세스 목록화, 네트워크 정보 또한 알 수 있다. 아래의 [그림 1]는 Volafunx의 실행화면이다.

사용법

[그림 2] Volafunx kld-info 결과화면
[그림 3] Volafunx 모듈 덤프 결과화면

Volafunx를 사용하기 위해서는 FreeBSD의 메모리 이미지와 커널 이미지가 필요하다. FreeBSD의 메모리 이미징은 dd를 이용하여 /dev/mem을 덤프할 수 있으며 커널 이미지는 /boot/kernel/kernel을 추출함으로써 얻을 수 있다. [표 1]는 Volafunx의 기본 명령어 형식이다.

[표 1] Volafunx 기본 명령어 형식
명령어
python ./volafunx.py –i [이미지경로] -s [커널이미지] [-omxv [옵션]]

Volafunx의 디폴트 옵션으로 –i 옵션과 –s 옵션이 존재한다. -i 옵션은 메모리 이미지의 경로를 뜻하며 –s 옵션은 커널이미지의 경로를 뜻한다. -omxv는 선택적 옵션이다. [표 2]은 Volafunx의 기본 옵션에 관한 표이다.

[표 2] Volafunx의 기본 옵션
옵션 설명
-i 메모리 이미지 덤프의 경로를 지정한다.
-s 커널 이미지 파일의 경로를 지정한다.
-o [option] proc_info 프로세스 목록을 출력한다.
proc_info_hash 커널 해시 테이블[1]을 이용하여 프로세스 목록을 출력한다.
syscall_info 시스템 콜 목록과 후킹 여부를 출력한다.
kld_info 커널 모듈을 출력한다.
net_info 네트워크 정보를 출력한다.
net_info_hash 커널 해시 테이블을 이용하여 네트워크 정보를 출력한다.
-m [mid] mid에 해당하는 모듈을 덤프한다.
-x [pid] pid에 해당하는 프로세스를 덤프한다.
-v [0 or 1] 커널 모듈을 더 자세히 출력한다.

-o 옵션은 메모리 이미지에서 얻을 수 있는 기본 정보를 출력하는 옵션이며 –m과 –x 옵션은 모듈과 프로세스를 파일로 덤프하는 옵션이다. -v 옵션은 –o 옵션의 kld_info와 결합하여 사용할 수 있으며 0이나 1을 입력하여 커널의 세부정보를 확인할 수 있다. 다음은 –o 옵션의 kld_info와 –m 옵션으로 커널 모듈을 확인하고 커널 모듈을 파일로 덤프하는 예제이다. [그림 2]은 –o 옵션의 kld_info를 이용하여 커널 모듈을 출력한 결과 화면이다. kld_info 결과 id 값이 1인 /boot/kernel/kernel을 확인할 수 있다. [그림 3]은 커널 모듈의 id 값을 이용하여 커널 모듈을 파일로 덤프한 결과 화면이다. 파일로 덤프결과 파일명은 “[파일명]-[시작 주소값]-[사이즈]”의 형식으로 저장이 된다.

도구기능

Volafunx의 기능을 이용하여 프로세스 목록, 네트워크 정보, 커널 모듈, 시스템 콜 목록 출력 결과 모든 기능이 정상적으로 동작하였다. 프로세스와 외부 커널 모듈의 덤프기능 또한 정상 동작하였다. Volafunx의 기능 중 커널 해시 테이블을 사용하는 –o 옵션의 net_info_hash의 경우 시스템 콜 후킹을 하지 않았다는 전제하에 네트워크 정보의 무결성을 보장할 수 있는 기능이며. proc_info_hash는 완벽하게 모든 은닉 프로세스를 탐지할 수는 없지만 어느정도 낮은 수준의 은닉 프로세스는 탐지해낼 수 있다.

제한사항

Volafunx의 메모리를 직접 dd를 이용하여 덤프하여 사용했을 경우 정상 동작하지 않았으며, vmem 파일을 사용했을 경우에 정상 동작하였다. Volafunx는 64 비트의 FreeBSD 운영체제는 지원하지 않고 FreeBSD 7버전과 8버전에 한하여 정상작동하기 때문에 그 외의 버전에서는 기능이 부분적으로 작동하거나 모든 기능이 작동하지 않는다. 2012년 7월 이후로 업데이트가 존재하지 않아 9버전 이상의 업데이트 또한 기대하기 어렵다. 커널 이미지가 별도로 필요하기 때문에 번거로운 점이 있으며 net_info_hash의 경우 net_info와 대조하여 분석가가 직접 대조하여 은닉 프로세스를 찾아야 하므로 불편한 점이 있다.

수사 활용 방안

Volafunx는 극히 적은 FreeBSD 버전만 지원하고 간소한 기능만 제공하기 때문에 수사에 활용하기에 어려움이 있는 도구이다. 하지만 FreeBSD 운영체제의 경우 메모리 분석 도구를 찾기 힘들기 때문에 FreeBSD 7.x와 8.x 시스템을 분석해야 할 상황에 한해서 Volafunx를 수사에 활용해야 한다.

주석

  1. 커널 해시 테이블: 각 프로세스와 네트워크 구조체의 커널 주소 영역에 빠르게 접근하기 위해 주소 값을 따로 정리한 테이블