0. 준비 

준비물 :

실습 도구 - volatility 2.6.exe, Sysinternal suite

분석 파일 - cridex

 

다음은 메모리 포렌식 도구 volatility 2.6 win64 exe 입니다.

https://sourceforge.net/projects/forensiczone/files/PTFinder2018/volatility_2.6_win64_standalone.exe/download

 

다음은 스트링 값 추출을 위해 Sysinternal suite 설치 사이트입니다.

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

 

Sysinternals Suite - Sysinternals

The Windows Sysinternals troubleshooting Utilities have been rolled up into a single suite of tools.

learn.microsoft.com

다음은 분석할 파일입니다.

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

 

Memory Samples

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

github.com

strings 쓸때에는 반드시 strings 먼저 한번 입력해서 동의(agree) 해주어야 제대로 사용할 수 있다.. 이렇게 간단한 것 때문에 시간 뺏기지 말자 나처럼

 

작업하려는 폴더에서 간단하게 작업을 하기 위해 다음과 같이 volatility 를 시스템 환경 변수 설정을 해주면 좋습니다.

가상 환경에서 시스템 환경 변수 설정

 

 

 

기본적인 volatility 2.6 기본 명령어 및 사용법은 다음과 같습니다.

 

정석? 분석 순서

1. imageinfo 로 먼저 환경을 확인한다. -> --profile=환경

2. pstree, psscan, pslist, psxview 로 프로세스 정보 확인

3. cmdline, cmdscan, consoles로 커맨드 입력 확인

4. connections, netscan으로 네트워크 확인

5. filescan, dumfiles 로 오프셋값 찾아서 해당 파일 덤프

6. memdump, procdump 로 메모리 덤프와 프록 덤프로 해당 영역의 의미있는 값 추출, 파일 덤프

위와 같은 순서로 진행하겠다.

 

1. 시작

1.1우선 다음 사진과 같이 해당 메모리의 운영체제(환경)을 알기 위해 imageinfo 를 사용한다.

volatility_2.6_win64_standalone.exe -f .\cridex.vmem imageinfo

 

WinXPSP2x86, WinXPSP3x86이라는 것을 알아내었다. 이 두가지 중 WinXPSP2x86을 사용하겠다.

사용 방법은 간단하다 --profile=WinXPSP2x86을 해주고 그 뒤에 명령어를 입력하면 된다.

 

1.2이제 ps 프로세스 정보를 확인해볼 차례이다.

다음과 같이 명령어를 입력해서 프로세스 정보들을 확인해 볼 수 있다. 지금은 간단하게 나와 한번에 볼 수 있지만 여러 정보들을 보고 취합 및 정리 해보려면 커맨드 창에서 보기에는 무리가 있다

 

위처럼 커맨드 창에서 그냥 봐도 되지만 효율적으로 리다이렉션 > 을 이용해 해당 명령어를 입력한 정보들을 .log 파일에 옮겨줄 것이다.

다음과 같이 입력할 수 있다.

volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 psscan > psscan.log

필자는 notepad++를 사용하여 다음과 같이 확인해볼 수 있었다.

다른 명령어를 써보기 전에 해당 로그에 올라와있는 파일들이 얼마 되지 않음으로 해당 파일들 먼저 분석해보겠다.

 

- svchost.exe : 윈도우 NT 계열의 운영체제에서 서비스를 관할하기 위한 프로세스의 이름이며 관련 이미지이다.

- lsass.exe : 로컬 보안 기관 하위 시스템 서비스에서 사용하는 프로세스로 보안 정책을 강화를 위한 윈도우즈 프로세스이다.

- services.exe : 서비스 제어 관리자로 윈도우 서비스 프로세스와 시작과 정지 및 상호작용하는 특별한 시스템 프로세스이다.

- reader_sl.exe : 어도비 아크로뱃 스피드 런처 유형의 파일로 PDF뷰어 Adobe Reader의 빠른실행을 도와주는 프로그램이다.

- spoolsv.exe : 윈도 xp에서 인쇄와 관련된 일을 함 즉 프린트 스풀러 서비스를 위한 프로세스이다.(간단히 프린터 관련 프로세스)

- wuauclt.exe : 윈도우 업데이트를 확인, 업데이트를 다운로드 하고 설치하는 서비스이다.

- alg.exe : 윈도우 OS의 구성요소로 타사 방화벽, 인터넷 연결 공유를 사용하는 경우 필요합니다.(보안과 관련된 프로세스)

- explorer.exe : 파일 탐색기로 윈도우 환경에서 쉽게 볼 수 있는 GUI 셸이다.

- winlogon.exe : 윈도우 로그인 관리자로 로그인시 프로필 로드, 컴퓨터를 잠그는 역할을 하는 프로세스이다.

- csrss.exe : 클라이언트/서버 런타임 하위 시스템으로 통신을 담당하는 프로세스이다.

- smss.exe : 세션 관리자 하위 시스템으로 컴퓨터 세션에 관할하는 프로세스이다.

- System : 말그대로 시스템이다.

 

여기에서 의심스러운 것은 PDF를 이용한 악성코드일 수도 있는 reader_sl 파일이다. 일단 멀쩡한 프로세스일 수도 있으니 의심정도만 한다.

 

psscan.log에서 나타난 오프셋은 프로그램 시작 위치이고 Name은 해당 프로세스 이름을 나타낸다.

PID, PPID는 자식, 부모 프로세스를 뜻하는데 말 그대로 부모가 자식 프로세스를 낳는다고 표현하면 부모가 자식프로세스를 만든다라고 대충 이해하면 된다.

Time은 만들어진 시간 즉 해당 프로세스가 올라온 시각을 뜻한다. 시각별로 나타나있다.

 

이제 다른 psscan을 제외한 나머지 프로세스 명령어는 pstree, pslist, psxview임으로 한번에 입력하여 정보를 가져오겠다.

volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 pslist > pslist.log
volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 pstree > pstree.log
volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 psxview > psxview.log

각각 살펴보길 권장한다.

pslist는 프로세스를 시각을 기준으로 볼 수 있고

pstree는 트리 형태로 볼 수 있고

psxview는 숨겨진 프로세스와 pslist, psscan에 True인지 False인지 확인해볼 수 있다.

 

 

 

1.3 커맨드 입력

이제 cmdline, cmdscan, consoles를 확인해볼 차례이다.

다음과 같이 한번에 입력한 후 확인해본 결과이다.

volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 cmdline > cmdline.log
volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 cmdscan > cmdscan.log
volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 consoles > consoles.log

위 결과 cmdline을 제외한 나머지는 내용물이 아무것도 없었다.

그런데 이 부분에서는 딱히 의미있는 정보를 찾기는 잘 모르겠다. 그래서 다음으로 넘어간다.

 

1.4 네트워크 확인

이제 어떠한 네트워크 통신이 있었는지 확인해볼 것이다.

connections, netscan을 이용해서 찾아본다. 그런데 XP에서는 netscan이 지원하지 않는 모양이다.. 어쩔 수 없이 connections로 확인해본다.

volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 connections > connections.log

다음 사진으로 결과가 나왔는데 누가 봐도 이게 너무 수상하게 한 개만 통신(Local <-> Remote)이 되고 있고 PID또한 확인해볼 수 있었다.

위에서 보았던 프로세스 정보를 토대로 1484가 뭔지 찾아보면 파일탐색기로 이걸로 연게 reader_sl.exe 인것을 알 수 있었다.

그렇다면 의심스러워 했던 해당 파일을 제대로 확인해볼 때가 되었다.

reader_sl의 PID 는 1640이다.

 

1.5 reader_sl 오프셋 값 찾기

filescan, dumfiles로 reader_sl 의 정확한 오프셋 값을 알아보겠다.

volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 filescan > filescan.log

이렇게 다음 사진처럼 reader_sl 을 ctrl + f 로 해당 문자열을 찾았고 해당 위치의 정확한 offset 값인 0x00000000023ccf90을 알아내었다.

 

이제 reader_sl파일을 덤프해서 바이러스 토탈에서 바이러스인지 한번 판단해보자

 

1.6 reader_sl 파일 바이러스 체크

다음과 같이 dumpfiles로 -Q 옵션을 주고 offset값 그리고 -D 옵션 주고 files 디렉터리에(내가 추가로 만듬) -n 옵션을 주겠다라는 뜻이다.

volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 dumpfiles -Q 0x00000000023ccf90 -D .\files\ -n

 

이제 다음과 같이 두가지 파일 .img, .dat 파일이 존재하는데 둘다 똑같으니까 그냥 아무거나 바이러스 토탈에다가 넣어주도록 하겠다.

 

위 사진처럼 떴는데 이정도면 바이러스일만 하다고 추측이 가능하다. 하지만 더 확실하게 검증해주기 위해서 메모리 덤프도 진행해주고 최종적으로 확인해보도록 하겠다.

 

1.7 메모리 덤프 악성코드 파일 확인

memdump로 덤프 확인을 다음과 같이 진행하였다

volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 memdump -p 1640 -D .\dumps\

dumps는 내가 따로 디렉터리를 만들어 해당 공간에 저장해서 따로 볼려고 만든 것이다.

그냥 메모리 덤프한 것을 보면 쓰레기값이 상당하기에 strings를 이용해 문자열을 가져올 것이다.

 

다음과 같이 입력한다.

strings .\dumps\1640.dmp > strings_1640.log

시간이 꽤 걸릴 것이다. 만약 여기서 그냥 바로 나온다면 잘 안된 것이다. 바로 나올 때 해결 방법은 커맨드 입력을 strings 한번 입력해준다

strings

 

이후 어떤 창이 뜨는데 무슨 규칙? 법? 뭔지 모르겠지만 일단 agree해준다 그래야 정상 작동된다.

 

이제 확인해보니 이전에 확인해보았던 네트워크 통신에 있는 IP를 검색해주었더니 IP 흔적이 남아있었다.

또 다음과 같이 살펴보니 bank관련된 문자열이 굉장히 많이 있는 것으로 보아 bank관련된 악성파일인 것을 추측해볼 수 있었다.

 

1.8 진짜 바이러스 토탈 확인

이제 진짜 악성파일일 것 같기에 procdump로 확인해본다 다음과 같이 입력해준다.

volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 procdump -p
1640 -D .\dumps\

해당 파일을 바이러스 토탈에 올려보니 다음과 같은 결과가 나왔다.

이건 이제 바이러스가 확실하다. 이는 확실한 증거임으로

악성파일임이 증명이 되었다.

 

 

+ Recent posts