본문 바로가기

Information Security/Digital Forensic

[Digital Forensic] Windows Memory Forensic

반응형

- 혹시나 디지털 포렌식 전문가 2급 시험을 준비하는 사람들은 아래 게시물도 추가로 참조하길 바란다
https://isc9511.tistory.com/182

- 추가적으로 Linux OS 계통 Memory Forensic의 정보가 필요하신 분들은 아래 글을 참조하길 바란다
(Kernel로 인해 윈도우처럼 쉽게 메모리 덤프를 분석하기가 불가능한 구조)
https://isc9511.tistory.com/178

* Windows Memory Forensic
- 메모리는 우선 휘발성 정보 저장소라고 보면된다. (입출력 장치의 빠른 데이터 교환을 위한 장치)
- 즉, 활성 상태에서 메모리 덤프를 확보할 수 있어야 전원이 종료되더라도 분석할 메모리의 정보를 추출해서 확인할 수 있다
- 대표적인 활성 정보로, 포렌식 영역에서 확보 및 분석 우선 순위가 높은 편
(단, 포렌식 시험에서는 나온적은 없다. 하지만 제공 툴에 지속적으로 언급이 되어 향후에 한번은 나올 수 있는 점 유의 바란다)

 

 

 

* Forensic Dump 도구
- 윈도우는 정말 Memory Forensic 과정이 간단하고 오류가 날 일이 거의 없다
- Dumpit라는 툴로 단순히 프로그램 실행 후, 메모리 덤프가 가능하다

DumpIt는 실행 후 y만 입력하면 덤프가 가능하다 (확장자 .raw)

- 또는 FTK Imager에서 메모리 덤프 하는 기능이 있기 때문에 어려운 부분은 없다

FTK Imager도 클릭 후 별거 없다 (확장자 .mem)

- 이외 .dmg(MacOS), .vmem(Virtual Machine), .img(Disk Dump 포함) 등의 확장자가 있으나 분석 자체에는 큰 차이가 없어 Windows 환경에서는 필수적으로 알아야 할 부분은 아니다
- 다만, 최근 가상화 기기 사용이 많아졌기 때문에 .vmem 정도는 추가로 알면 좋으며 해당 파일은 가상 머신 구동을 일시 정지 한 상태에서, 해당 OS가 설치된 폴더(Vmware 기준 .vmdk)로 가보면 .vmem 파일이 생성되어 있는 것을 확인할 수 있다

 

 

 

* Volatility 2.x
- 사실 최근 3 버전이 잘 사용되는 상황에서 굳이 2.x 버전을 사용해야 하는가 의문이긴 하다
- 시험에서는 2.x 버전만 허용되는 도구이며, 사실 '프로파일' 확인 과정의 유/무만 차이 날 뿐이지 거의 차이가 없긴 하다
- 플러그인 조회 구문도 2.x와 3.x 다르지만 핵심 조회 내용은 동일하니 둘중 하나만 잘 쓸줄 알아도 거의 똑같다고 보면 된다
- 명령어 형식은 vol.exe -f [분석 대상 파일 이름] [플러그인 이름]

명령어 설명
imageinfo * OS 등 기본 정보(프로파일) 확인 명령어
- 특히 Volatility 2.x 버전에서는 필수 선행 명령어이다



- Image Info로 확인된 Profile은 매번 다른 플러그인 조회시에도 명령어에 적용이 필요함
pslist * 해당 메모리 캡처 순산까지 작동중이던 모든 프로세스 리스트를 시간 순으로 출력

- offset : offset 번호
- Name : 프로세스 이름
- PID : ProcessID
- PPID : Parent ProcessID
pstree * pslist 명령어를 트리 형태로 출력

- 마침표(.)의 갯수로 트리 구성 식별이 가능
psxview * 여러 플러그인과 결과를 비교하여, 숨겨진 프로세스 식별에 사용되는 명령어

- pslist 값이 False인데, psscan값이 True인 경우, 숨겨진 프로세스일 가능성이 존재
netscan * 네트워크 연결 정보를 확인

- Win7 이전 버전의 메모리 덤프 분석에서는 Connections와 Conscan으로 지정해야 netscan 결과값을 볼 수 있음(거의 확인할 일은 드물다고 생각함)
envars * 프로세스 환경 변수 확인

- CPU 수
- 하드웨어 아키텍처
- 프로세스 현재 디렉토리
- 임시 디렉토리
- 세션 이름
- 컴퓨터 이름
- 유저 이름 등
cmdline * 프로세스 실행 시, 인자값 확인

- 인자값(Argument) : 커맨드가 작동할 대상을 지정할 때 사용
/ 옵션값 : 커맨드가 구체적으로 어떤 방식으로 동작할지 지시할 때 사용
dllist -p [PID] * 특정 프로세스가 사용하는 dll 리스트 확인
procdump * 특정 프로세스의 실행 파일을, 파일로써 추출
- D 옵션 : 덤프할 파일의 저장 위치 지정
memdump * 특정 프로세스의 메모리 영역을 파일로 추출 

- 위의 각각의 명령어는 보통 커맨드 라인에서 결과값의 가독성이 떨어지기 때문에, 별도 파일로 추출하여 다른 뷰어 툴에서 확인한다(Notepad++ 등)
- 각 플러그인의 결과값에 대해 특정 문자열을 타겟팅 하는 경우면 명령어 최후미에 "| findstr 찾을문자열"을 입력해서 확인
- 이외는 어떤 정보를 찾으며 증거물의 범위를 순차적으로 좁혀갈 지, 고민하면서 사용하면 큰 어려움은 없는 영역이다

 

 

 

반응형