01. 개요 : 상용 프로그램 혹은 악성코드 역시 한번에 한가지 동작을 하기 보다는 Multi Process 혹은 Multi Thread 를 이용하여
한번에 두 가지 이상의 동작을 병행 수행합니다.
이에 우선 Multi Thread 방식으로 짜여진 간단한 프로그램을 분석해보도록 하겠습니다.
02. 실습 환경
Tools |
Version |
Host PC |
Windows 7 |
Guest PC |
Windows xp sp3 |
Compiler |
Visual Stdio 2008 |
Debugging Tools |
Ollydbg v1.10 |
03. 실습 코드 작성
<그림 1>
04 컴파일 후 실행
<그림 2>
: 컴파일 후 실행해보면 <그림 2>와 같이 hello를 시간대별로 출력함과 동시에 문자열을 입력받아서 입력받은 문자열을 출력하고 있음을 확인할 수 있습니다.
05 Ollydbg를 이용한 코드 분석
MultiThread는 각각이 하나의 작은 Process와 같기 때문에 일반적으로 분석하는 방식과는 조금 다르게 해야합니다.
<그림 3>
: <그림 3>의 붉은 박스 부분을 살펴보면 현재 Main Thread 환경에서 분석하고 있음을 알 수 있습니다.
1) 일단 Main 함수를 찾고 분석을 시작하도록 하겠습니다.
<그림 4>
: <그림 4>에서 보면 작성한 코드에서 사용한 함수인 CreateThread와 WaitForSingleObject를 확인할 수 있으므로 이 부분이 Main 함수임을 알 수 있습니다.
2) 계속 진행하다가 WaitForSingleObject 함수를 호출하는 부분에서 Step Into(F7)하여 들어가보도록 하겠습니다.
따라가다 보면 <그림 5>와 같이 hello() 로 이동하는데 Thread를 확인해보면 이전과는 다른 Thread를 사용하는 것을 알 수 있습니다.
<그림 5>
3) 이후를 또 진행해보면 <그림 6>과 같이 또 다른 Thread가 실행되어 진행됨을 알 수 있습니다.
<그림 6>
4) 이제 View - Thread 와 Process explorer를 통해 현재 돌고 있는 Thread를 비교해보도록 하겠습니다.
<그림 7>
: 총 3개의 Thread 즉 Main, Hello, Input가 돌고 있음을 확인할 수 있습니다.
5) 악성코드의 경우 Multi-Thread로 돌고 있는 경우가 종종 있는데, 각각의 Thread는 위에서 잠시 언급한 것과 같이 각기 서로 다른 하나의 작은 Memory와 같기 때문에 각각 사용하는 VAS가 다릅니다.
이 때문에 각각의 Thread를 다 살펴야 합니다.
'Security > RCE' 카테고리의 다른 글
(Manual Unpacking 01) UPX Unpacking (0) | 2013.08.14 |
---|---|
(이론 02) EFLAGS (0) | 2013.08.13 |
(분석 01) WinSock 기초 분석 (0) | 2013.06.14 |
01 WinSock Basic (0) | 2013.06.11 |
(이론 01) VAS Basic (0) | 2013.05.16 |