주 기억장치(메모리)에 존재하는 휘발성 데이터를 덤프 분석하는 과정을 의미한다.
최근의 공격들은 매우 은밀하게 이뤄져 흔적을 찾기 힘들다. 하지만 악성코드가 실행되기 위해서는 메모리로 로드되어야 해 메모리는 악성코드를 가지고 있을 가능성이 높다. 피해 시스템의 RAM은 악의적인 코드가 할당한 자원과 악성코드 관련 증거들을 포함하고 있어 분석 시 유용한 흔적을 찾을 수 있다.
하드 디스크와 네트워크 패킷을 분석해 얻은 증거는 완전 재구성을 가능하게 하는 RAM의 콘텐츠나 악성 코드에 의한 감염 혹은 침해사고 발생 전후 어떤 일들이 발생했는가를 판단하는데 필요한 퍼즐 조각의 일부이다.
하지만 메모리에서 찾은 단서들을 공통점이 없는 것처럼 보였던 포렌식 흔적들과 연결 지어 인식하지 못한 증거들을 알 수 있다.
만약 유출된 데이터가 네트워크를 통해 암호화되어 있다면 패킷 포렌식은 어떤 민감한 정보가 유출되는지 알 수 없다.
그러나 메모리 포렌식은 종종 암호화 키와 패스워드, 심지어 암호화 되기 전 일반 텍스트를 복구할 수 있어 결론을 도출하고 공격을 파악할 수 있도록 도와준다.
휘발성 데이터로 전원 차단 시 데이터가 사라
지며 온전한 데이터 수집이 어렵다.
RAM에 존재하는 모든 데이터를 덤프해 분석가능한 파일 형태로 변환하는 작업
하드웨어를 이용한 덤프 : FireWire Attack(IEEE 1394)를 이용한 메모리 덤프, Tribble를 PCI 장치를 이용해 덤프
소프트웨어를 이용한 덤프 방식
DD, MDD, Winen, WIN32/64dd & Dumplt, Memorize ProDiscovery, HBGary, FastDumpPro, 크래시 덤프, 절전 덤프 등
- 장점
- 추가 장치가 필요없다.
- 오픈소스 및 프리웨어 도구가 다양함
- 단점
- 커널 루트킷에 취약하다.
- OS 제약을 받는다.
- 수집하는 메모리쪽에 흔적이 남는다.
Virtual Machine Imaging
절전모드 덤프(Hibernation)
전력 관리를 보다 효율적으로 하기 위해 절전 상태에 돌입되면 하드 드라이브에 메모리 데이터를 기록한 다음 전력을 차단해 버리는 기능이다.
윈도우는 절전모드로 들어갈 경우 물리메모리 내용을 압축해 C:hiberfil.sys파일로 저장한다.
부팅 과정에서 hiberfil.sys가 설정되어 있으면 NTLDR에 의해서 메모리로 로드 된 후에 이전 상태로 돌아간다.
메모리 분석을 위한 대표적인 프레임워크 도구
위키 페이지 : https://github.com/volatilityfoundation
볼라틸리티 기본 명령어, 플러그인 예제 활용 사례, 샘플을 제공한다.
32비트/64비트 윈도우즈XP, 윈도우즈 2003, 윈도우즈 비스타(Vista), 윈도우즈 7, 10 계열 등 모든 메모리 분석이 지원 되며, 리눅스, 안드로이드, MAC OS 환경 프로파일도 포함
imageinfo : 덤프 파일의 이미지 정보 분석
python vol.py -f [덤프 파일] imageinfo
# vol.py : 볼라틸리티 실행 파일
psscan : 실행 중인 프로세스/종료된 프로세스 정보 분석
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 psscan
psxview : pslist, psscan 등 여러 가지 방법으로 확인한 프로세스 정보 비교
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 psxview
pstree : 프로세스의 부모/자식관계 분석
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 pstree
connections : 활성화 상태의 네트워크 연결 정보(윈도우 xp/Vista)
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 connections
connscan : 활성화 상태의 네트워크 연결 정보/ 이미 종료된 네트워크 연결 정보
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 connscan
netscan : 활성화 상태의 네트워크 연결 정보(윈도우7 이상)
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 netscan
dlllist : 특정 프로세스에서 로드 한 DLL의 정보 분석
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 dlllist -p [PID]
ldrmodules : 은폐된 DLL 정보 분석
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 ldrmodules
dlldump : 특정 프로세스에서 로드 한 DLL 추출(바이너리 형태)
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 dlldump -p [PID] -D ./
malfind : 사용자 모드 형태로 은폐되어 있거나 인젝션 된 코드 또는 DLL 정보 분석
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 malfind -p [PID]
filescan : 메모리에 로드 된 파일정보 스캔, 특정 확장자 및 파일 정보 찾기
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 filescan | findstr ".jpg"
dumpfiles : 메모리에서 검색한 파일 복구
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 dumpfiles -Q [복구 파일의 메모리 주소] -D ./
# -D ./
은 현재 디렉토리에 파일을 덤프하겠다는 의미로 덤프관련 플러그인은 필수 옵션이다.
memdump : 메모리에 존재하는 프로세스 복구
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 memdump -p [PID] -D ./
cmdscan : 명령 프롬프트로 실행된 정보 분석
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 cmdscan
consoles : 콘솔로 실행된 정보 분석
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 consoles
iehistory : 인터넷접속 기록 분석
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 iehistory
userassist : 메모리에 저장된 레지스트리 정보를 바탕으로 실행되었던 응용프로그램에 대한
정보를 분석
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 userassist
mftparser : NTFS 파일시스템에서 파일의 메타데이터를 관리하는 $MFT의 정보를 분석
python vol.py -f [덤프 파일] --profile=WinXPSP2x86 mftparser >> mft.txt