[Linux] 메모리 덤프(Memory Dump)#01
[Memory Dump 란?]
메모리 덤프란 시스템의 물리 메모리(휘발성 메모리) 내용을 파일로 저장하는 작업을 말합니다. 이 파일은 실제 메모리 구조와 동일하게 저장되어, 침해사고 분석이나 악성코드 분석, 디지털 포렌식 등 다양한 분야에서 핵심적인 단서를 제공합니다.
이번 글에서는 리눅스 환경에서 메모리 덤프를 안전하게 획득하는 방법으로 AVML(Acquire Volatile Memory for Linux)에 대해 자세히 알아보겠습니다.
1. 왜 메모리 덤프가 중요한가?
시스템이 침해된 시점의 메모리에는 다음과 같은 중요한 정보가 남아있습니다.
- 실행 중인 악성코드의 흔적
- 네트워크 연결 정보
- 암호화되지 않은 계정 정보
- 각종 민감 데이터
실시간 분석을 하면 메모리 상태가 변할 수 있기 때문에, 최대한 원본 그대로의 메모리 이미지를 확보하는 것이 중요합니다.
2. 리눅스에서의 메모리 덤프 방법
과거 방식: /dev/mem, /dev/kmem
- 리눅스는 모든 리소스를 파일로 다루기 때문에, 예전에는 /dev/mem이나 /dev/kmem을 통해 메모리에 접근할 수 있었습니다. 하지만 보안상의 이유로 최신 커널에서는 이 접근이 제한되거나 아예 제거되었습니다.
현재 방식: 커널 모듈(LKM) 활용
- 그래서 등장한 것이 fmem, LiME, AVML 등과 같은 커널 모듈 기반 메모리 덤프 도구입니다. 이들은 커널 모듈(LKM, Loadable Kernel Module)로 동작하여, 시스템의 동작을 방해하지 않으면서 메모리 덤프를 수행할 수 있습니다.
3. AVML(Acquire Volatile Memory for Linux)란?
LiME와 유사한 메모리 덤프 도구로, Microsoft에서 개발한 오픈소스 휘발성 메모리 획득 도구입니다. 번거로운 커널 모듈 빌드 과정 없이, 단일 실행 파일만으로 다양한 환경에서 메모리 덤프를 안전하게 획득할 수 있습니다. LiME보다 더 다양한 배포판 지원, 실행파일 제공, 최신 커널 호환성 등에서 장점이 있습니다.
AVML 공식 GitHub
4. AVML의 장점
- 커널 버전 무관: LiME와 달리, 커널 모듈을 빌드하거나 커널 버전에 맞출 필요가 없습니다. 단일 바이너리로 바로 실행할 수 있습니다.
- 간편한 배포: 실행 파일 하나만 복사하면 되기 때문에, 수십~수백 대의 서버에서도 빠르게 배포 및 사용이 가능합니다.
- 루트 권한만 있으면 OK: root 권한으로 실행하면, /proc/kcore 등 시스템 인터페이스를 활용해 메모리를 추출합니다.
- 대규모 환경에 적합: 커스텀 커널이 많은 대규모 환경에서도 별도 준비 없이 바로 사용할 수 있습니다.
[사용방법]
AVML을 다운로드 합니다.
[root@vmtest ~]# mkdir avml; cd avml [root@vmtest ~]# wget https://github.com/microsoft/avml/releases/latest/download/avml [root@vmtest ~]# chmod +x avml [root@vmtest ~]# ./avml /tmp/mem.raw [root@vmtest ~]# ls -alh /tmp/mem.raw -rw------- 1 root root 4.0G May 21 21:24 /tmp/mem.raw |
Memory Dump 분석 전 복사본을 생성하여 분석작업을 진행하도록 합니다. 이때 빠지지않고 해야되는 중요한 것은 해시값을 계산하는 것입니다. md5sum 이나 shasum 을 사용해서 해시값을 계산하면 됩니다.
[root@vmtest ~]# md5sum mem.img db5fd6e1dabb055f8bc77fd67d95b588 mem.raw [root@vmtest ~]# sha1sum mem.img 0a67af1d5fdc59bf42f4ae93d97580135786fe3c mem.raw [root@vmtest ~]# sha256sum mem.raw 63e5814134a140691b452ac6e353bab73458263709da4cebd2fd6484d33b8954 mem.img |
이렇게 얻은 Memory Dump 파일은 Volatility 등의 분석툴을 사용하여 분석할 수 있습니다.
[AVML vs LiME 간단 비교]
항목 | AVML | LiME |
설치/배포 | 단일 실행 파일, 배포 간편 | 커널 모듈 빌드 필요, 배포 번거로움 |
커널 의존성 | 없음 | 커널 버전별 빌드 필요 |
지원 환경 | x86_64, aarch64 등 다양한 배포판 | 리눅스/안드로이드, 다양한 커널 |
권한 | root 필요 | root 필요 |
한계 | /proc/kcore 접근 제한 시 미동작 가능 | 모듈 로딩 제한 시 미동작 가능 |
'DFIR > Memory Dump' 카테고리의 다른 글
[Windows] 메모리 덤프#03 (0) | 2023.09.16 |
---|---|
[Windows] 메모리 덤프#02 (0) | 2023.09.14 |
[Windows] 메모리 덤프#01 (1) | 2023.09.14 |
[Windows] 메모리 덤프 형식(Memory Dump Format) (0) | 2023.09.10 |
[VMware] 메모리 덤프 파일 생성 (0) | 2017.04.05 |