메뉴 닫기

메모리 포렌식 (Memory Forensics)

안녕하세요. CloudV사업부 김현구 입니다.

메모리 포렌식 (Memory Forensics) 에 대해 알아보고자 합니다.

 

1. 개요


메모리 포렌식(memory forensic)은 컴퓨터의 메모리 덤프에 있는 휘발성 데이터를 분석하는 것을 말합니다. 흔적을 남기지 않는 공격이나 악의적인 행동을 조사하고 식별합니다.

대상 시스템에서 덤핑된 메모리 이미지 파일 만으로 네트워크 정보, 실행 프로세스, API Hook커널 로딩 모듈, Bash history 등 여러 가지 정보를 획득 합니다.

 

1-1. 휘발성 데이터란?


휘발성 데이터는 실행 중인 컴퓨터의 임시 메모리에 저장된 데이터입니다. 시스템 전원이 끊기게 되면 휘발성 데이터가 소실하게 됩니다.

컴퓨터의 단기 메모리 저장소에 검색 기록, 대화 메시지 및 클립보드 내용과 같은 데이터를 저장 합니다.

 

2. 메모리 덤프(Memory Dump)

[그림 1]메모리 세그먼트 출처: https://www.0x0ff.info

 

시스템의 물리 메모리를 파일 형태로 저장하는 방법으로, 해당 파일 의 구조는 실제 물리 메모리 구조와 동일합니다.

침해사고 분석 시 침해 시스템에 실시간 분석을 수행하면 해당 명령어로 인해 메모리 의 상태 및 데이터가 변경됩니다.

 

2-1. 메모리 덤프(Memory Dump) 수집 방식


① H/W를 이용한 덤프

  • FireWire를 이용한 메모리 덤프, PCI 슬롯에 덤프할 Hardware 덤프

② S/W를 이용한 덤프

  • DD, MDD, Winen, Dumpit 등 사용

③ 크래시 덤프

  • 시스템 유지에 치명적인 영향을 주는 문제 발생시 원인 찾기 위해 윈도우 스스로 만드는 메모리 덤프 BSOD(Blue Screen Of Death)발생 시 생성되는 크래시 덤프

④ 절전모드 덤프

  • 하이버네이션 파일(hiberfil.sys) 덤프

⑤ 가상화 시스템 덤프

  • VM에서 세션 정지될 경우 물리 메모리 내용은 .vmem확장자 파일에 포함, 이 때, .vmem파일은 로우 포맷과 매우 유사하므로 다른 메모리 분석도구를 통해 분석 가능

⑥ 콜드 부트

  • PC가 꺼질 때 메모리가 지워지기 전에 램을 급속냉각시켜 데이터 날아가지 않게 하는 기술

 

3. 메모리 포렌식 (Volatility 실습)


 

명령어 설명
imageinfo 메모리 덤프 파일의 프로파일 정보를 출력합니다.
–info 플러그인 정보 확인이 가능합니다.
pstree 프로세스 트리 출력
pslist 프로세스 리스트 출력, 리스트 워킹(가상 주소)
psscan 프로세스 리스트 출력, 패턴 매칭(물리적 주소)
psxview 프로세스 은닉을 탐지하기 위해 다양한 방식으로 프로세스 등을 조회
netscan tcp, udp, raw 소켓 등을 출력합니다. (윈도우 서버 2008버전 이상에서 사용 가능)
dlllist 특정 프로세스에서 로드 한 DLL 정보 분석
procdump 프로세스 실행파일 추출
memdump 윈도우 가상 메모리를 파일로 추출합니다.. -p옵션을 사용하면 특정 프로세스만 대상으로 가상 메모리 주소를 추출합니다.
mftparser 메모리에 로드 된 디코딩 된 자료들 분석. pc 부팅 시 pc가 on/off 되는데 변경되는 데이터들의 기록이 남습니다.
filescan 메모리상에 로드 된 모든 파일. grep, findstr 사용 가능
hivelist 메모리상의 파일 오브젝트 전체검색(패턴 매칭)
cmdscan cmd에서 실행한 명령어 확인

[표1] Volatility 명령어 모음

[그림2] Volatility 메모리 분석 6단계

 

 

실습 자료 : 보안프로젝트 카페

분석 툴 : Volatility2.6

 

[그림 3] 메모리에 저장된 윈도우 정보

 

1
.\volatility_2.6.exe -f .\memory02.raw imageinfo
cs

해당 명령어를 입력하여 해당 메모리 덤프의 윈도우 프로파일 정보를 확인 할 수 있었습니다.

  • 운영체제 정보 : Windows7 SP1x86_23418

 

[그림4] Notepad.exe 프로세스 이상 감지

 

1
.\volatility_2.6.exe -f .\memory02.raw –profile=Win7SP1x86 pstree
cs

 

프로세스 트리”pstree”를 검색하여 분석 하던 도중 notepad.exe 이상 프로세스를 감지 하였습니다.

이상 프로세스

  • PID : 3708 // notepad.exe
  • PID : 3680 // notepad.exe

 

PID PID(Process ID)는 운영체제에서 프로세스를 식별하기 위해 프로세스에 부여하는 번호를 의미한다.
PPID

PPID(Parent Process ID)는 부모 프로세스의 PID를 의미한다.

만일 부모 프로세스가 자식 프로세스보다 일찍 종료되는 경우 자식 프로세스는 고아 프로세스가 되어 PPID로 init process의 PID(1)를 가지게 된다.

 

 

[그림5] 특정 프로세스에서 로드한 DLL

 

1
.\volatility_2.6.exe -f .\memory02.raw –profile=Win7SP1x86 dlllist
cs

각 프로그램에서 DLL 파일을 로드한 것을 확인하여 분석 합니다.

 

 

[그림6] notepad.exe 프로세스 이상 dll 감지

 

두 개의 Notepad.exe 로드된 DLL 파일이 다른 것을 관찰 할 수 있었고

PID : 3680 에서 C:\Program Files\Internet Explorer\ieproxy.dll , C:\Windows\system32\actxprxy.dll 를 로드한 사실을 확인 할 수 있었습니다.

 

ieproxy.dll 파일을 조사한 결과 Internet Explorer에서 ActiveX Interface Marshaling 라이브러리 인점을 확인 하였습니다.

Actxprxy.dll 파일은 ActiveX Interface Marshaling 라이브러리로 Windows ActiveX를 시작하면 actxprxy.dll에 포함된 명령이 PC에서 실행하게 됩니다.

 

 

Notepad.exe에선 불필요한 라이브러리를 호출하기에 악성 프로그램임을 확인 하였습니다.

 

[그림7] PID 3680 // notepad.exe 에 대한 dmp 메모리 덤프 추출

 

1
2
3
4
5
.\volatility_2.6.exe -f .\memory02.raw –profile=Win7SP1x86 memdump -p 3680 -D ./
 
 
## https://learn.microsoft.com/en-us/sysinternals/downloads/strings 에서 dmp -> txt 변환 
.\strings.exe .\3680.dmp > 3680.txt
cs

notepad.exe 에 대한 dmp 메모리 덤프 추출하고 strings를 변환합니다.

 

[그림8] PID 3680 dmp → txt 변환 후 이상 행위 발견(1)

 

덤프 분석 한 결과 세션 핸들, 메모리 부족 등 으로 인해 실패하여 해당 컴퓨터의 자료 탈취에 실패 한 것으로 알 수 있었습니다.

 

[그림9] PID 3680 dmp → txt 변환 후 이상 행위 발견(2)

덤프파일에서 발견된 사이트를 조사한 결과 서버와 암호화 수단으로 사용하기 위해 발견된 것을 알 수 있었습니다.

 

4. 예방 방법


  1. 백신 실시간 기능 활성화
    ▶ 서버 및 PC에 백신을 설치하고 실시간 감시 기능 실행 및 자동 업데이트 설정

  2. 시스템 상에 이상 행위를 방지를 위한 권한 설정

    ▶ 계정별 획득 할 수 있는 권한 부여

  3. 출처를 알 수 없는 프로그램 실행 금지

 

 

Reference


https://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?seq=22109

https://themalhunt.wordpress.com/2020/07/21/introduction-to-volatility-for-hunting-malware-in-memory-dumps/

https://www.volatilityfoundation.org/

https://rninche01.tistory.com/entry/4-메모리-수집분석

https://velog.io/@jjewqm/메모리-포렌식

https://dazemonkey.tistory.com/54

https://lastcard.tistory.com/68

https://leeyh0216.github.io/posts/sid_pid_ppid_pgid/

https://cafe.naver.com/boanproject/29042

https://learn.microsoft.com/en-us/sysinternals/downloads/strings

https://jmoon.co.kr/76

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x