본문 바로가기
포렌식/기초부터 따라하는 디지털 포렌식

Volatility Cridex 풀이

by SH_L 2022. 7. 12.
반응형

[Volatility]

 

Volatility는 오픈소스 기반으로 CLI 인터페이스로 제공되는 메모리 포렌식 도구이다. Volatility를 통해 메모리 관련 데이터를 수집할 수 있다. 버전 3까지 공개되어 있으나, 아직까지는 버전 2를 많이 사용한다.

 

https://www.volatilityfoundation.org/26

 

Volatility 2.6 Release

Volatility 2.6 - an advanced memory forensics framework

www.volatilityfoundation.org

 

위 링크에서 Volatility를 다운받을 수 있다.

 

 

Volatility를 다운받은 후에 어떤 경로에서든 접근할 수 있도록 환경 변수 설정을 해준다.

 

 

 

[Volatility 명령어 정리]

 

1. 운영체제 식별

imageinfo: 메모리 덤프의 운영체제를 식별

 

2. 프로세스 검색

pslist: 시간 순서대로 보여줌

psscan: 숨겨진 프로세스 출력 가능

pstree: PiD, PPiD 기준으로 구조화하여 트리 형태로 보여줌

psxview: pslist, psscan을 포함한 도구들의 결과를 한 눈에 볼 수 있음

 

3. 네트워크 분석

connections: 현재 연결된 TCP 통신에 대한 정보를 확인할 수 있음

sockets: 현재 Listenning 상태에 있는 모든 프로토콜에 대한 socket 정보를 확인할 수 있음

netscan: TCP, UDP, Ipv4, Ipv6 및 포트 상태 (Listening, Established, Closed)를 확인할 수 있음

* Windows 7 이상의 환경에서는 connections이나 sockets 대신에 netscan 명령어를 사용한다.

 

4. CMD 분석

cmdline: 프로세스가 실행될 떄의 인자 값을 확인할 수 있음

cmdscan: 콘솔에 입력한 값을 볼 수 있음

consoles: 콘솔에 입력 및 출력한 값을 볼 수 있음

 

5. 파일 분석 및 덤프

filescan: 메모리 내에 존재하는 모든 파일들의 리스트 출력

dumpfiles: 파일을 덤프, 옵션으로 메모리 주소 및 프로세스를 줄 수 있음

 

6. 프로세스 세부 분석

memdump: 특정 프로세스의 메모리 영역을 덤프, strings를 사용하여 쓰레기 값을 줄임

procdump: 프로세스의 실행 파일을 추출

 

 

 

[Volatility Wiki Memory Samples Download]

 

https://github.com/volatilityfoundation/volatility/wiki/Memory-Samples

 

GitHub - volatilityfoundation/volatility: An advanced memory forensics framework

An advanced memory forensics framework. Contribute to volatilityfoundation/volatility development by creating an account on GitHub.

github.com

 

Volatility Cridex 문제를 다운로드한다.

 

 

문제를 다운로드 한 다음에 cridex 폴더 안에 저장한다.

 

 

 

[운영체제 식별]

 

 

메모리의 운영체제를 식별한다. imageinfo에서 확인한 Suggested Profiles 중 하나를 선택하여 명령어 뒤에 덧붙여서 사용한다. 해당 실습에서는 WinXPSP2x86를 사용한다.

 

 

 

[프로세스 검색]

 

Volatility에서 프로세스를 볼 수 있는 명령어로는 pslist, psscan, pstree, psxview가 있다. 각각의 명령어를 실행해본다. 분석하고자 하는 메모리 안에서 실행되고 있던 프로세스 리스트를 보여준다.

 

 

pslist 명령어를 사용하여 프로세스 리스트를 시간 순서대로 출력한다. 하지만 위와 같이 Windows PowerShell에서 파일 전체를 보기가 어렵기 때문에 "> 파일명.log" 명령어를 덧붙여 출력 값을 파일로 저장한다.

 

 

차례대로 pslist, psscan, pstree, psxview 명령어를 실행하여 출력 값을 파일로 저장한다.

 

 

pslist 명령어를 사용하여 프로세스 리스트를 시간 순서대로 출력한다.

 

 

psscan 명령어를 사용하여 프로세스 리스트를 offset 순서대로 출력한다. offset은 메모리 덤프 파일의 어떤 위치에 존재하는지를 알려준다. pslist와 다른 점은 숨겨진 프로세스를 볼 수 있다는 것이다.

 

 

pstree 명령어를 사용하여 프로세스 리스트를 PiDPPiD 기반으로 구조화해서 트리 형태로 출력한다.

 

 

psxview 명령어를 사용하여 pslistpsscan을 한 눈에 볼 수 있다. 이때, pslistpsscan의 값이 다를 경우 공격자가 의도적으로 숨긴 프로세스라고 추측할 수 있다.

 

pslist, psscan, pstree, psxview를 활용하여 의심스러운 프로세스들의 목록을 만드는 것을 목표로 한다. pstree.log를 살펴보면 reader_sl.exe가 의심스러운 프로세스로 보인다. reader_sl.exeAdobe Acrobat 소프트웨어 구성요소이다.

 

 

 

[네트워크 분석]

 

 

Connections 명령어를 사용하여 연결된 TCP 통신 목록을 출력한다.

 

 

1484 프로세스에서 Local AddressRemote Adderss 간에 통신하고 있음을 확인할 수 있다.

 

 

 

[CMD 분석]

 

 

cmdscan, consoles 명령어를 사용하여 콘솔에 입력한 값을 확인할 수 있다. cmdline 명령어를 사용하여 프로세스가 실행될 때의 인자 값을 확인할 수 있다.

 

 

cmdscan.log나 consoles.log에서는 별다른 정보가 존재하지 않는다. cmdline.log에서 reader_sl.exe를 확인해보았지만 현재 경로 말고는 별다른 정보를 확인할 수 없다.

 

 

 

[파일 분석 및 덤프]

 

 

filescan 명령어를 사용하여 메모리 내에 존재하는 모든 파일에 대한 정보를 출력한다.

 

 

Ctrl+f를 눌러 reader_sl.exe를 검색한다.

 

 

dumpfiles 명령어를 사용하여 메모리 내에 존재하는 reader_sl.exe를 추출하여 파일 형태로 저장한다. 이때, filescan.log에서 reader_sl.exe가 위치하는 offset을 가져온다.

 

 

dumpfiles 명령어 수행 결과 디스크 이미지 파일과 DAT 파일이 만들어졌다. 디스크 이미지는 이미지 섹션 오브젝트에서 데이터를 추출하고, DAT는 데이터 섹션 오브젝트에서 데이터를 추출해온다. 추출 방식에서의 차이가 존재한다.

 

 

생성한 파일을 Virustotal에서 분석해보면 68개의 백신 중에서 4개의 백신이 이를 악성코드로 판단하고 있다. 소수의 백신만이 악성코드로 판단했기에 확실한 증거로 보기에는 어렵다. 주로 Virustotal를 사용하지만 Windows Defender도 정확한 편이다.

 

 

 

[프로세스 세부 분석]

 

 

reader_sl.exe에 대해 메모리 덤프를 진행한다. 이때, pstree.log에서 reader_sl.exe에 해당하 PiD를 가져온다.

 

 

memdump 명령어를 사용하여 메모리 덤프를 실행한다. 프로세스가 사용한 전체 메모리 영역을 덤프해서 가져온다.

 

 

덤프된 파일에는 쓰레기 값들이 많이 존재한다. 따라서 쓰레기 값을 어느정도 제거한 다음에 파일을 살펴보기 위해 strings를 사용한다. 1640.dmp 파일을 strings를 사용해 strings_1640.log 파일로 추출한다.

 

 

strings_1640.log 파일에서 Remote Address41.168.5.140:8080를 검색한다. 검색 결과, 원격 URL인 http://41.168.5.140:8080/zb/v_01_a/in/를 확인할 수 있다. 

 

 

원격 URL뿐만 아니라 다른 수상한 URL들도 확인할 수 있다. reader_sl.exe의 취약점에서 원격 URL에 접속했을 것이라 추측할 수 있다.

 

 

인터넷 접속 흔적도 살펴볼 수 있다.

 

 

bank라는 단어가 빈번하게 등장하는 것으로 보아 은행 관련 피싱을 하는 악성코드로 추측된다.

 

 

procdump 명령어를 사용하여 reader_sl.exe 프로세스의 exe 파일을 추출한다.

 

 

생성한 파일을 Virustotal에서 분석해보면  68개의 백신 중에서 31개의  백신이 이를 악성코드로 판단하고 있다. 다수의 백신이 악성코드로 판단했기에 확실한 증거로 볼 수 있다.

반응형