'PEB'에 해당되는 글 1건

  1. 2011.10.20 [Malware Analyze] imm32.dll 패치형 악성코드 변형 (2)

최근 유포되고 있는 imm32.dll 패치 형태의 악성코드의 경우 패치된 imm32.dll은 크기가 변하지 않으며 [그림 1]과 같이 파일 정보상으로도 구별이 어렵다. 패치된 부분을 찾기 위해 분석한 사항을 정리하고자 한다.

[그림 1]

패치된 imm32.dll의 목적은 [그림 2]와 같이 LoadLibrary를 이용하여 감염 과정에서 생성한 %system%dnetcom32.dll 로드하는 것이다.

[그림 2]

imm32.dll의 패치된 형태는 다음과 같다. 원본 imm32.dll 파일을 보면 imm32.dll 로드 후 DllMain을 실행하는 과정에서 ImmInitializeGlobals 함수를 호출한다.

[그림 3] original imm32.dll

패치된 imm32.dll 파일은 [그림 4]의 0x762E2388 주소의 ImmInitializeGlobals를 호출하는 부분을 패치하여 악의적인 목적의 함수를 호출한다.

[그림 4] infected imm32.dll

호출되어진 함수는 [그림 5]의 0x762F5AE4 주소의 서브루틴에서 kernel32.dll DLL의 based address를 얻어온다. 이 후 0x762F5AF4 주소의 서브루틴에서 LoadLibraryA 함수의 주소를 얻어온 뒤 dnetcom32.dll 파일을 로드한다.

[그림 5]

kernel32.dll의 base address를 얻어오는 과정은 [그림 6]과 같다. 먼저 FS 레지스터를 이용하여 현재 프로세스의 PEB(Process Environment Block)의 주소를 얻어온다.

[그림 6]

이 후 0x885B1D에서 0xC 만큼 포인터를 이동하는 것을 볼 수 있다. PEB 구조체를 확인해 보면 [그림 7]과 같이 0xC 주소에는 _PEB_LDR_DATA가 존재하는 것을 확인할 수 있다. _PEB_LDR_DATA 구조체에는 현재 프로세스에 로드되어 있는 모듈에 대한 정보가 저장되어 있다.

[그림 7]

이어서 0x885B21 주소에서 _PEB_LDR_DATA 구조체에서 0x1C에 떨어진 값을 읽어오는 것을 확인할 수 있다. [그림 8]의 _PEB_LDR_DATA 구조체를 확인해보면 +0x1C 위치에는 InInitializationOrderModuleList값이 저장되어 있는 것을 확인할 수 있다.

[그림 8]

InInitializationOrderModuleList에는 초기화된 모듈의 순서가 저장되어 있으며 [그림 9]와 같이 이중 링크드 리스트 형태로 구성되어 있다. 항상 첫번째에는 ntdll.dll의 주소가 두번째에는 kernel32.dll의 주소가 저장되어 있다. 따라서 [그림 6]의 0x885B26 주소처럼 +0x8만큼 이동하면 kernel32.dll의 주소를 얻을 수 있다.

[그림 9]

참고로 원본 imm32.dll 파일은 [그림 6]과 같이 %temp% 경로에 [랜덤5자리].tmp 형태로 저장된다.

[그림 10]

온라인게임 계정 탈취를 목적으로 하는 악성코드도 나날이 감염 방법을 변경하고 있으며 진단 회피 및 치료를 어렵게하기 위해 진화(?)하고 있다.


                                                                                                    +---------------------------------+
                                                                                                    | Infinite Flow..                              |
                                                                                                    | mail : reverseinsight@gmail.com    |
                                                                                                    | Blog : http://sinun.tistory.com       |
                                                                                                    | twitter : @unpacker                      |
                                                                                                    | CISSP, SIS1급                             |
                                                                                                    +----------------------------------+

신고
Posted by By. PHR34K