OLD 2018 ~ 2021/MAJOR → Forensic

180105_Memory_Forensic

pogn 2018. 1. 10. 15:02
Concept
PE구조를 가진 Windows 실행파일이 실행되면, 메모리에 실행코드가 올라온다.

각 프로세스별로 이론상 32bit 기준으로 4GB의 연속된 가상메모리를 할당받게 되는데, (사실은 4GB를 모두 쓰는 프로세스는 없다고 한다.)
가상 메모리란 물리적 메모리의 용량과 관계없이 실존하지 않는 가상의 주소에 메모리가 올라가는 것을 말한다. 

실제 하나의 프로세스가 쓰는 하나의 가상메모리, 즉 실행 코드는 프로그램에서 필요한 핵심 부분은 RAM(물리 메모리) 
잘 활용되지 않는 그 외의 부분은 페이지 파일(하드디스크)로 저장된다.  

그렇게 여러 프로세스들의 가상메모리가 각각 RAM과 pagefile.sys에 나뉘어 저장되는 것이다.
가상 메모리 = 물리 메모리 + 페이지파일 )





Hands-on Practice
설치 방법 및 지원 운영체제는 https://github.com/volatilityfoundation/volatility/wiki/Command-Reference 여기에 아주 자세하게 나와있다. (windows, linux, android 모두 지원한다.)

Volatility 사용 환경 구축 

- 볼라틸리티를 통해서 Windows, Linux, Android 메모리 분석이 모두 가능하다.
- 플러그인 추가 하는 법에서 많이 헤맸던 기억이 있다. --> standalone 버전은 이미 패키지 및 라이브러리가 다 묶여서 컴파일된 실행파일이기 때문에 개인 플러그인 추가가 불가능하다.

  1. python 2와 3을 installer을 통해 설치하고, 환경변수 등록 - 각각 한 뒤,  안의 script 폴더에 있는 것도 등록( pip 쓸수있게 해두면 굳)
  2. $ git clone https://github.com/volatilityfoundation/volatility.git 통해 소스코드 다운로드
     3. python vol.py를 실행하여 의존성 패키지 설치
        windows버전은 소스코드 다운받지 말고, windows용 바이너리를 받아서 실행시키기만 하면 자동으로 레지스트리에 등록된 
        python에 설치해준다. 

        

           
           
         다 깔고나면, 깔린 패키지는 아래의 경로에서 찾아볼 수 있다.    // pil을 2.7로 깐것 같지만, 일단 진행한다.
         



         잘 실행된다.
        




Volatility Linux Profile 추가와 관련하여  

2012 HisChall Rootkit 문제를 푸는 중에 해당 파일이 linux 메모리 덤프파일이라는 것을 알게되었다. 
그러나, imageinfo 는 windows만 지원하므로, linux는 strings 명령어를 이용하여 추출한 리눅스 버전 정보를 직접 profile로 넣고 분석을 해야한다.
해당 이미지 파일은 linux 12.04 -커널 3.0.2 버전인데 아직 해당 프로파일을 입력하였을 때 linux-pslist가 잘 작동하지 않아서 이번주에 해당 문제를 해결해보고자 한다. 



Wargame.catsecurity.net - Memory Forensic 문제풀이 

- 문제



다운 받은 파일은 .vmss 파일로 vmware를 일시정지 시켰을 때 생성되는 메모리 덤프 파일이다. 

volatility에서 관련 플러그인을 찾아보았으나 'vmware-info' 라는 플러그인 밖에 찾아볼 수 없었다. 
// vmss를 raw 파일로 변환해주는 플러그인도 있었으나 아래의 방법을 먼저 써보기로 하였다. 

따라서, 문자열을 찾아주는 strings 명령어에 grep 이메일 정규표현식을 이용하여 접근하였다.

strings Target1-1dd8701f.vmss | grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" | sort -u

나온 100개 이하의 결과 값들 중 아래의 이메일이 유력해 보였고, 


해당 이메일이 flag임을 알 수 있었다. 



Reference 
- 쉽고 빠르게 시작하는 Volatility Plugin 개발 - 김동현

- 물리 메모리 포렌식

- volatilty 레퍼런스 wiki : 꿀팁이 많다.

- vmwareinfo 플러그인

- volatility linux profile 추가