2012/09/25

Volatility 2.2 RC2 - Linux Profile 생성


몇일전 Volatility 2.2 RC2부터 Linux 메모리 덤프를 지원한다는 글을 접하게 되었습니다.

http://www.infosecisland.com/blogview/22406-Analyzing-the-Average-Coder-Rootkit-Bash-History-and-Elevated-Processes-with-Volatility.html

2.2 RC2부터 지원하는 내용은 아래 링크에서 확인하실 수 있으며

http://code.google.com/p/volatility/wiki/Release22

Linux 메모리 덤프를 분석하기 위해서는 profile을 만들어줘야 합니다.
(무식하게 첫번째 링크를 그냥 따라해 봤지만 역시나 안되더군요...혹시나 하는 마음에 -_-;;)

http://code.google.com/p/volatility/wiki/LinuxMemoryForensics


1. 필요한 패키지 설치

- dwarfdump
  Debian/Ubuntu 계열에서 dwarfdump를 설치하시면 되고
  OpenSuSE, Fedora 그리고 그 외 배포판에서는 libdwarf-tools를 설치하시면 됩니다.
- GCC/make
  대부분 설치되어 있으실 것이고 Debian/Ubuntu 계열에서는 build-essential을 설치하시면 됩니다.
  (build-essential을 꼭 설치해야 하는지 확인 안했습니다.)
- kernel-devel
  커널 모듈 빌드를 위한 헤더 파일들이 필요합니다.


2. Volatility Source 다운로드

http://code.google.com/p/volatility/downloads/list

다운로드 하시면 됩니다. 또는 svn으로 받으셔도 됩니다.

# svn checkout http://volatility.googlecode.com/svn/trunk/ volatility-read-only


3. profile 생성

리눅스용 프로파일은 커널 데이터 구조와 디버그 심볼로 이루어진 압축 파일 형태로 만들면 됩니다.
이는 Volatility가 커널 데이터 구조와 디버그 심볼을 통해 필요한 정보를 찾고 해석하기 때문입니다.
앞으로 대부분의 리눅스 커널에 대한 프로파일을 제공한다고 하는데요...일단은 필요한거 만들어서 쓰랍니다.

- vtypes 생성


# cd volatility-2.2-rc2/tools/linux
# make
# head module.dwarf


vtypes 생성은 위 명령만 실행하면 됩니다만...
약간의 에러가 발생할 수 있으니 에러 메시지 잘 보시고 필요한 헤더 파일을 필요한 위치에 복사하시거나 링크를 걸면 됩니다.

테스트는 Ubuntu 11.10에서 했습니다.

- Symbols 가져오기

심볼은 System.map 파일 안에 있으며 /boot 디렉토리에 있습니다.

- profile 만들기


# cd volatility-2.2-rc2
# zip volatility/plugins/overlays/linux/LinuxUbuntu1110.zip tools/linux/module.dwarf /boot/System.map-3.0.0-20-generic
  adding: tools/linux/module.dwarf (deflated 89%)
  adding: boot/System.map-3.0.0-20-generic (deflated 74%)


리눅스용 프로파일은 make시 생성된 dwarf 파일과 심볼 정보를 가지고 있는 System.map 파일을 zip 파일 형태로 압축하면 됩니다.


root@LUCKYSTRIKE:/data/forensics/volatility-2.2-rc2# ls -l volatility/plugins/overlays/
total 732
-rw-r--r-- 1 demantos demantos   8527 2012-09-05 02:29 basic.py
-rw-r--r-- 1 root     root      11703 2012-09-24 13:40 basic.pyc
-rw-r--r-- 1 demantos demantos      0 2012-06-04 03:04 __init__.py
-rw-r--r-- 1 root     root        161 2012-09-24 13:40 __init__.pyc
drwxr-xr-x 2 demantos demantos   4096 2012-09-24 13:40 linux
-rw-r--r-- 1 demantos demantos    838 2012-09-05 02:19 native_types.py
-rw-r--r-- 1 root     root        769 2012-09-24 13:40 native_types.pyc
-rw-r--r-- 1 root     root     702084 2012-09-24 17:41 Ubuntu1110.zip
drwxr-xr-x 2 demantos demantos   4096 2012-09-24 13:40 windows



프로파일 생성 및 사용 가능 여부는 --info 옵션을 통해서 확인 가능합니다.



리눅스용 플러그인은 다음과 같이 linux_ 라는 명칭으로 시작되게끔 명명되어 있습니다.



덤프된 이미지를 통해 확인해 보았습니다. 덤프 이미지는 fmem을 통해 덤프한 이미지를 이용했습니다.



아직 많은 플러그인들을 지원하진 않지만 필요한 경우 유용하게 사용할 수 있지 않을까 생각됩니다.
1차적인 테스트는 끝났으니 실제 루트킷 설치나 침해서버를 만든 후 이미지 덤프해서 분석 해봐야겠습니다.



댓글 없음:

댓글 쓰기