Volafunx
소개[편집]
Volafunx는 Volafox와 마찬가지로 n0fate가 만든 CLI기반 메모리 분석 도구이며 Mac OS 환경이 아닌 FreeBSD x86 7버전과 8 버전의 환경에서 실행 가능하다. Volafunx는 Volafox와 마찬가지로 오픈소스로써 다음의 웹페이지 (https://code.google.com/p/volafox/downloads/list) 에서 다운받을 수 있다. Volafunx의 주 기능으로는 커널 내부의 모듈을 목록화하여 볼 수 있도록 하고, 시스템 후킹 탐지 및 프로세스 목록화, 네트워크 정보 또한 알 수 있다. 아래의 [그림 1]는 Volafunx의 실행화면이다.
사용법[편집]
Volafunx를 사용하기 위해서는 FreeBSD의 메모리 이미지와 커널 이미지가 필요하다. FreeBSD의 메모리 이미징은 dd를 이용하여 /dev/mem을 덤프할 수 있으며 커널 이미지는 /boot/kernel/kernel을 추출함으로써 얻을 수 있다. [표 1]는 Volafunx의 기본 명령어 형식이다.
명령어 |
---|
python ./volafunx.py –i [이미지경로] -s [커널이미지] [-omxv [옵션]] |
Volafunx의 디폴트 옵션으로 –i 옵션과 –s 옵션이 존재한다. -i 옵션은 메모리 이미지의 경로를 뜻하며 –s 옵션은 커널이미지의 경로를 뜻한다. -omxv는 선택적 옵션이다. [표 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를 수사에 활용해야 한다.
주석[편집]
- ↑ 커널 해시 테이블: 각 프로세스와 네트워크 구조체의 커널 주소 영역에 빠르게 접근하기 위해 주소 값을 따로 정리한 테이블