본문 바로가기

WarGame/Forensics

xcz.kr - Memoryyyyy Dumpppppp Prob24

   

Title

Memoryyyyy Dumpppppp

   

Description

Korean

어느날 나는 커피집에서 노트북을 놓고 잠시 자리를 비웠다.

그리고 다시 와서 작업을 하다가 작업프로그램이 갑자기 꺼졌고, 작업파일들이 모두 다 삭제되었다.

원인을 찾기위해 나는 서둘러 메모리 덤프를 만들었다.

이 메모리 덤프파일을 분석하여 다음 정보를 알아내자.

   

키 형식 : (Process Name_PID_Port_Process Execute Time(Day of the week-Month-Day-Hour:Min:Sec-Years)

ex (explorer.exe_1234_7777_Mon-Jan-01-12:00:00-2012)

   

   

파일이 2개가 주어진다.

압축파일이므로 압축을 풀면

파일이 하나 나온다.

   

문제에서 메모리를 덤프 파일이라고 하므로

우리는 이걸 분석하면 것이다.

   

   

우선 메모리덤프를 분석하기 위해 Volatility 이용해보겠다.

나도 처음 포렌식을 공부하는 거라 툴을 처음 써본다.

   

일단 설치를 하고 사용법에 대해 공부했다.

   

1) 운영체제 분석

메모리 덤프 파일을 생성한 운영체제가 어떠한 버전의 운영체제인지 확인하는 과정을 거치게 된다. 이 단계에서 확인한 운영체제 버전에 따라 향후 이루어지는 메모리 분석의 방향과 분석에 적용될 볼라틸리티의 명령어가 다르게 사용될 수 있다.

ü imageinfo - 생성한 메모리 덤프 파일의 운영체제, 서비스 (Service Pack) 하드웨어 정보 나열

   

2) 프로세스 분석

윈도 시스템에서 동작하는 악성코드는 다른 일반적인 윈도우 프로그램과 유사한 구조를 가지고 있으므로, 악성코드 역시 자신의 코드를 메모리에 적재한 후에 자신의 프로세스와 쓰레드를 생성하여야만 실행이 가능하다. 그러므로 확보한 메모리 덤프 파일에서 실행 중이거나 은폐된 프로세스 및 그와 관련된 정보를 분석한다.

ü pslist - 실행 중인 프로세스 정보 나열

ü psscan - 실행 중인 프로세스 정보와 함께 이미 종료된 프로세스 정보 나열

ü psxview  pslist psscan에서 확인한 프로세스 정보를 비교하여 나열함으로써, 은폐된 프로세스 정보 획득

ü pstree - pslist 유사한 정보를 보여주나 부모(Parent) 프로세스와 자식(Child Process) 프로세스 간의 상관 관계 나열

ü procexedump  프로세스의 메모리 영역에서 공간(Slack space) 포함하지 않고 바이너리(Binary) 형태로 추출

ü volshell  메모리 덤프 파일 분석 시에 Windbg 유사한 명령 형식으로 분석

   

3) 네트워크 정보

최근 발견되는 대부분의 악성코드는 감염된 윈도 시스템에서 외부 네트워크와 접속을 시도한다. 특히 침해 사고에서 많이 발견되는 원격 제어 형태의 악성코드는 메모리 덤프 파일 내부에서 공격자가 접속한 원격 시스템을 확인할 수 있는 다양한 정보가 포함되어 있다.

ü connections 활성화 상태의 네트워크 연결 정보 나열 (Windows XP, Windows 2003 Server 사용 가능

ü connscan - 활성화 상태의 네트워크 연결 정보와 함께 이미 종료된 네트워크 연결 정보도 나열 (Windows XP, Windows 2003 Server 사용 가능)

ü netscan  활성화 상태의 네트워크 연결 정보를 보여주나 윈도 비스타와 7 그리고 윈도 2008 서버에서만 사용 가능

   

4) DLL 및 쓰레드 분석

일부 악성코드의 경우에는 특정 프로세스에 자신이 생성한 DLL 파일을 인젝션(Injection) 하거나 특정 시스템 프로세스의 특정 메모리 쓰레드 영역에 자신의 코드를 삽입하는 경우가 있다.

   

ü dlllist - 특정 프로세스에서 로드 DLL 정보 분석

ü ldrmodules - 특정 프로세스나 DLL 의해 은폐된 DLL 정보 분석

ü dlldump - 특정 프로세스에서 로드한 DLL 바이너리 형태로 추출

ü Malfind  사용자 모드 형태로 은폐되어 있거나 인젝션된 코드 또는 DLL 정보 분석

ü apihooks  사용자 커널 모드에서 API 후킹 정보 분석

   

5) String 분석

악성코드에 감염된 것으로 추정되는 시스템에서 생성한 메모리 덤프 파일에 존재하는 특정 프로세스의 메모리 영역 전체 또는 인젝션된 DLL 및 쓰레드 영역을 바이너리 형태로 추출한다. 그 이후 바이너리 형태로 추출해 낸 파일에서 악성코드와 관련된 문자열 및 관련 IP 주소 등을 검색 할 수 있다.

ü yarascan - YARA 이용하여, 사용자 커널 모드 메모리 영역에 포함된 바이트(Byte) 순서, ANSI 유니코드 (Unicode) 문자열 검색

ü string  문자열 검색을 위해 백트랙에 기본적으로 포함된 프로그램

   

6) 레지스트리 분석

일반적으로 악성코드는 감염된 윈도 시스템이 재부팅 되더라도 자동으로 재시작하기 위해 윈도 레지스트리(Windows Registry) 영역에 특정 키(Key)를 생성하거나 특정 값(Value) 등을 변경한다. 그러므로 메모리 덤프 파일 내부에 남아 있는 레지스트리 관련 데이터의 분석을 통해 악성코드로 의심되는 파일을 추출할 수 있다.

ü printkey - 특정 레지스트리 키에 포함되어 있는 하위 (Subkeys) 값과 데이터를 검색하여 나열

ü userassist  메모리 덤프 파일에서 UserAssist 관련 레지스트리 정보 추출

   

출처 <http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?seq=22109>

   

메모리덤프를 파일을 volatility imageinfo 실행해 보았다.

   

운영체제를 알았으니 이제 psscan pslist 명령이 조합된 psxview명령을 이용하여 메모리덤프파일을 생성한 윈도우에서 은폐기능으로 동작하는 프로세스가 동작하는지 확인할 수 있다. psscan pslist 결과 하나라도 FALSE 나온다면 숨겨진 프로세스라고 의심할 있다.

이걸 보니 무언가가 느낌이 온다.

nc.exe 숨겨져서 실행이 것이다.

   

이제 psscan명령어를 이용하여 덤프 파일을 생성할 당시에 감염된 윈도 시스템에서 동작 중인 프로세스의 생성 시간과 이미 종료된 프로세스의 종료 시간 정보를 획득 할 있다.

   

   

pstree 명령어를 이용하여 실행 중인 프로세스의 상관 관계 정보를 획득할 있다.

역시 nc.exe 실행이 것을 있다.

   

connections 명령어를 이용하면 네트워크 접속 관련 정보들을 얻을 있다.

   

이제 대충 의심스러운 부분들을 파악할 있다.

메모리덤프를 시간에 nc.exe 실행되었고, Pid 1124 (nc.exe) 의해 IP 1.226.182.38 포트는 59495 접속중인 상태이다.

   

   

이제 문제에 대한 답을 있을 것이다.

키 형식 : (Process Name_PID_Port_Process Execute Time(Day of the week-Month-Day-Hour:Min:Sec-Years)

ex (explorer.exe_1234_7777_Mon-Jan-01-12:00:00-2012)

   

nc.exe_1124_80_Fri-Nov-02-09:06:48-2012

   

   

   

   

참고

http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=2&seq=22227