Memory Analysis[3]





        본 포스팅에서는 메모리 분석에 대해서 다룹니다.

        (윈도우의 기본 사용법등과 같은 기초 지식은 본 포스팅에서 다루지 않습니다.)










이번 포스팅에서는 이어서 Volatility에서 지원하는 유용한 옵션에 대해서 알아 보겠습니다.



1. mftparser

mftparser는 메모리 덤프 당시의 mft파일을 추출 해줍니다.

(MFT는 NTFS 파일 시스템에서 파일의 메타데이터를 저장 하는 파일입니다.)


커맨드 사용형태는 아래와 같습니다.


>vol.py -f [메모리파일] --profile=[운영체제] mftparser

(MFT의 내용이 많기 때문에 리다이렉션을 통해 파일로 저장합니다.

ex : mftparser >>mft.csv)


[그림-1 mftparser]



[그림-2 mftparser 출력 결과 csv파일 열람 화면]



[그림-2]와 같이 파일로 저장된 csv파일을 열람시 파일에 대한 메타데이터를 확인 할 수 있습니다,

파일경로, 시간정보등을 확인 가능합니다.




2. cmdscan

cmdscan은 cmd를 통해 입력하였던 명령어를 확인 할 수 있는 커맨드 입니다.


커맨드 사용형태는 아래와 같습니다.


>vol.py -f [메모리파일] --profile=[운영체제] cmdscan


[그림-3 cmdscan]


[그림-3]은 cmdscan의 결과 화면입니다. cmd창을 통해 'cd ..~ 0? ~ /r' 까지의 명령어가 입력된것을 알 수 있습니다.




3. filescan

filescan은 메모리에서 추출 가능한 파일을 찾아 메모리 주소화 함께 출력 해주는 커맨드입니다.


커맨드 사용형태는 아래와 같습니다.


>vol.py -f [메모리파일] --profile=[운영체제] filescan

(특정 확장자 또는 파일을 검색 시에는 파이프와 findstr(윈도우)/grep(리눅스) 와 조합 하여 검색 합니다.

ex : ~ filescan | findstr ".jpg"   //확장자가 jpg인것만 출력합니다.(윈도우에서의 vol.py사용시)

      ~ filescan | grep ".jpg"   //확장자가 jpg인것만 출력합니다.(리눅스에서 vol.py 사용시))



[그림-4 filescan]



[그림-5 filescan | findstr을 이용한 특정 확장자 검색]


[그림-5]와 같이 findstr을 같이 쓰면 분석자가 필요한 파일만을 확인 할 수 있습니다,




4. dumpfiles

dumpfiles는 filescan을 통해 나온 파일을 메모리 파일로부터 실제 데이터 파일로 추출할 때 사용하는 커맨드입니다. filescan을 통해 나온 파일의 메모리주소를 통해 파일을 추출 할 수 있습니다.


커맨드 사용형태는 아래와 같습니다.


>vol.py -f [메모리파일] --profile=[운영체제] dumpfiles -Q [메모리주소] -D ./

(-Q 옵션을 통해 메모리주소를 맵핑 해주고, -D 옵션을 통해 저장할 디렉토리를 지정합니다. './' 는 현재 디렉토리를 의미합니다)


[그림-6 dumpfiles]


[그림-6]과 같이 dumpfiles를 통해 정상적으로 myungham.jpg가 추출 된것을 확인 가능합니다.


[그림-7 복구된 myungham.jpg]


5. iehistory

iehistory는 메모리상에 저장된 ie기록을 출력해줍니다.


커맨드 사용형태는 아래와 같습니다.


>vol.py -f [메모리파일] --profile=[운영체제] iehistory

(내용이 많을경우 리다이렉션(>)을 통해 파일로 저장합니다.

ex : ~ iehistory >> iehistory.txt))


[그림-8 iehistory]


[그림-8]과 같이 iehistory는 쿠키와 history, 캐시정보를 토대로 정보를 출력해줍니다.




6. memdump

memdump는 특정 프로세스에 대한 덤프 파일을 생성시 사용하는 커맨드 입니다. 해당 커맨드를 사용 하는 이유는 해당 프로세스가 돌아가면서 참조하는 dll이나 사용자가 입력한 스트링을 확인하기 위함입니다. 


커맨드 사용형태는 아래와 같습니다.


>vol.py -f [메모리파일] --profile=[운영체제] memdump -p [PID] -D ./

(-p 옵션을 통해 덤프할 프로세스의 PID를 지정해줍니다.)



[그림-9 memdump]


[그림-9]와 같이 memdump를 하면 dmp파일이 생성됩니다. 해당 dmp는 일반적인 형태로는 볼 수가 없기 때문에 strings라는 도구를 이용하여 dmp파일안에 있는 텍스트를 추출하여야 합니다.


아래는 strings도구를 이용하여 텍스트를 추출 하는 과정입니다.


[그림-10 string 추출]


추출된 스트링은 텍스트를 볼 수 있는 프로그램을 이용하여 확이 가능합니다.


[그림-11 string 확인]


[그림-11]과 같이 내용을 확인하면 해당 프로그램이 설치된 경로등 유용한 스트링들을 확인 할 수 있습니다.





지금까지 Volatility를 이용한 메모리 포렌식에 대해서 알아 보았습니다.

소개해준 기능외에도 많은 기능이 있으니 꼭 -h옵션을 주어 확인 해보시길 바랍니다.



다음 포스팅에는 네트워크 패킷 포렌식으로 포스팅을 이어가도록 하겠습니다.




'Digital Forensic > Memmory-Forensic' 카테고리의 다른 글

Memory Analysis[2]  (0) 2018.01.22
Memroy Analysis[1]  (0) 2018.01.08

이 글을 공유하기

댓글