디지털포렌식

MS AVML (Acquire Volatile Memory for Linux)을 이용한 리눅스 메모리 추출

마이크로소프트에서 리눅스용 메모리 덤프 도구를 공개했다. 이름은 avml인데 Acquire Volatile Memory for Linux 의 약자이다. (https://github.com/microsoft/avml)

기존에 lime을 활용한 방법이 대표적이었는데, 이 도구에서도 lime format을 지원하는데다가 압축 등 옵션을 추가로 지원한다. 속도도 lime 보다 빠른 것 같다. 

실제 테스트 과정을 남겨둔다.


1. 설치하기

우선 이 포스팅은 Ubuntu 16.04에서 수행했음을 밝힌다. 기본적으로 공식 github의 가이드를 따랐지만 가이드가 불친절한 부분이 있어 내가 몇가지 과정을 추가하였다.

avml은 RUST 프로그래밍 언어로 구현이 되었는데, rust를 처음 접하다보니 관련한 빌드를 어떻게 수행하는지부터 시작해야 한다.

우선 rust 관련 작업을 원활하게 수행하기 위해 musl 을 다운로드한다.

관련 패키지의 설치가 완료되었다면 다음 명령어를 통해 rust를 설치하고 해당 쉘 환경 설정을 마무리한다.

이제 Microsoft의 공식 github에서 avml 을 clone 하고 해당 디렉토리로 이동한다.

avml 프로젝트를 빌드한다.

빌드가 완료된 위치로 이동하면 avml 바이너리가 생성되어 있다.


2. 메모리 덤프하기

avml 의 사용방법은 아래와 같다.

마이크로소프트의 Azure 클라우드와 연동하여 활용할 수 있는 방법이 있는 것 같은데 나는 아직 그쪽 경험이 없으므로.. 우선 local pc에서만 테스트 해보았음을 밝힌다.


아래의 방법으로 메모리 덤프를 수행한다. 기본적으로 compress 즉 압축 옵션이 제공된다.

8G RAM 이 탑재된 노트북에서 수행했는데 압축 옵션을 적용하니 2.6G로 파일이 떨어졌고, 덤핑 속도가 어마어마하게 빠른 것으로 체감된다. 압축은 추후에 avml-convert 도구로 압축/해제가 가능하다.


볼라틸리티 분석을 위해서는 압축을 안한 상태로 해야할 것이므로 --compress 옵션 없이 수행하면 된다.


이렇게 생성된 *.lime 형식의 메모리 덤프 파일은 volatility 나 rekall 등을 통해 분석이 가능할 것으로 예상된다. 다만 리눅스 메모리 포렌식을 위해서는 해당 운영체제에 알맞은 프로파일 생성이 필요함을 참고하라. 

추출한 lime 파일을 volatility 로 (프로파일 맞춰준 후) 성공적으로 분석이 되는 것을 확인했다.


Software Security Engineer

CPUU 님의 창작활동을 응원하고 싶으세요?

CPUU의 Daydreamin'
CPUU의 Daydreamin'
구독자 214

0개의 댓글

SNS 계정으로 간편하게 로그인하고 댓글을 남겨주세요.
새로운 알림이 없습니다.