최근들어 Flash player 취약점(CVE-2011-2110)을 이용한 악성코드가 다수 유포되고 있다. 해당 취약점은 2011년 6월 15일에 발표된 업데이트를 적용하지 않은 10.3.181.23 버젼 이하의 Flash player를 사용시 감염이 이루어진다.

해당 취약점을 이용하는 스크립트는 주로 아래와 같은 형태를 띄고 있다. 먼저 html 파일을 보면 [그림 1]과 같이 "main.swf?info=02E..." 구문을 통해 특정 swf 파일을 호출하는 것을 볼 수 있다.

[그림 1]

html 파일에 의해 호출되어진 swf 파일은 [그림 2]와 같이 CVE-2011-2110 취약점을 이용한 액션 스크립트가 삽입되어 있으며 shell code를 생성하는 듯한 구문을 확인할 수 있다.

[그림 2]

shell code를 직접 추출해 보지는 못했지만 특정 보안업체의 분석 정보에 의하면 해당 취약점은 heap spray를 이용하지 않고 stack pointer를 EAX 레지스터로 교체하는 ROP 방식으로 동작한다고 한다. 이 부분에 대해서는 좀더 연구가 필요할 듯 하다. 해당 취약점이 실행되면 악성코드가 다운로드 및 실행되게 되며 간략적인 동작 방식은 [그림 3]과 같다.

[그림 3]

○ Main Dropper 분석

취약점 실행 후 다운로드 되어 지는 Main Dropper 파일의 경우 [그림 4]와 같이 NSIS(Nullsoft Scriptable Install System)으로 구성된 파일임을 알 수 있다.

[그림 4]

7zip 등을 이용하여 압축 해제시 [그림 5]와 같이 Drop되는 파일들을 확인할 수 있다.

[그림 5]

Main Dropper 실행시 먼저 [그림 6]과 같이 "C:\Program Files\%NXU32YHysu3YDU3IDd46TGh%\6549302827346110393.exe" 파일을 생성하는 것을 볼 수 있다.

[그림 6]

이 후 [그림 7]과 같이 CreateProcess 함수를 이용하여 생성한 6549302827346110393.exe 파일을 실행한다. 6549302827346110393.exe 파일의 기능은 아래 다시 정리하도록 하겠다.

[그림 7]

이어서 [그림 8]과 같은 경로에 SelfDel.dll 파일을 생성한다.

[그림 8]

생성된 SelfDel.dll 파일을 LoadLibraryEx 함수를 이용하여 로딩하는 것을 볼 수 있다.

[그림 9]

SelfDel.dll 파일이 로딩되면 내부적으로 [그림 10]과 같이 CreateProcess 함수를 이용하여 explorer.exe 프로세스를 생성한다. 생성되어 지는 explorer.exe 프로세스 생성시 CreationFlags는 CREATE_SUSPENDED 상태임을 알 수 있다.

[그림 10]

이어서 [그림 11]과 같이 WriteProcessMemory를 이용하여 생성한 explorer.exe 프로세스에 code patch를 하는 것을 볼 수 있다.

[그림 11]

WriteProcessMemory를 마친 후에 RusumeThread를 호출하여 Suspend 상태였던 explorer.exe 프로세스를 실행을 재개한다.

[그림 12]

code patch된 explorer.exe 프로세스의 기능은 [그림 13], [그림 14]와 같이 1초 동안 sleep 하면서 반복적으로 Main Dropper를 삭제를 시도한다.

[그림 13]

[그림 14]

   

○ 549302827346110393.exe 파일 분석

549302827346110393.exe 파일은 알려지지 않은(알려졌지만 본인이 모를 수도..) 패커로 패킹이 되어 있으며 SEH(Structured Error Handle)를 변경해가면서 압축을 해제하는 것으로 보여진다. 먼저 [그림 15]와 같이 2번째 실행되는 SEH에서 .GkB7Hv4 섹션의 값을 메모리 상에서 변경하는 것을 확인할 수 있다.

[그림 15]

언패킹 과정을 정확히 분석을 하지는 못했지만 VirtualAlloc으로 할당한 메모리(0x3F0000)를 CallWindowProcA 호출하여 실행하는 것을 볼 수 있다. 이 후 OEP로 분기하는 것을 확인할 수 있다.

[그림 16]

[그림 17]은 언패킹 루틴이 모두 끝난 뒤 도착한 OEP(Original Entry Point)의 모습이다. 운이 좋게 OEP를 찾았다.

[그림 17]

OEP에서 dump를 떠서 IAT 복구를 해보면 [그림 18]과 같이 정상적으로 언패킹이 된 것을 확인할 수 있다.

[그림 18]

언패킹 한 파일은 크기가 무려 65MB가 되는 것을 확인 할 수 있으며, [그림 19]와 같이 리소스에 아래에서 생성할 ws2help.dll 파일을 갖고 있는 것을 확인할 수 있다.

[그림 19]

549302827346110393.exe가 실행되면 CreateMutex를 호출하여 __HHEXMUTEX__라는 뮤텍스를 생성한다.

[그림 20]

FindResourceA 함수를 이용하여 [그림 19]에 있는 GAME이라는 resource를 얻어온다.

[그림 21]

이 후 [그림 22]와 같이 CreateFileA 함수를 이용하여 %temp%에 ws2help.dll 파일을 생성한다.

[그림 22]

[그림 23]처럼 WriteFile을 호출하여 GAME 리소스를 %tmp%ws2help.dll 파일로 저장하는 것을 볼 수 있다.

[그림 23]

또한 [그림 24]와 같이 HKCU\Software\Microsoft\Internet Explorer\Main\TabProcGrowth 레지스트리 값을 0으로 변경하는 것을 볼 수 있다. 해당 값을 0으로 설정시 IE에서 실행되는 tab과 frame 들이 하나의 프로세스에서 실행되게 된다. 아무래도 IE를 통해서 로그인 과정에서 ID와 Password 유출을 쉽게 하기 위한 과정인 듯 하다.

[그림 24]

이 후 sfc_os.dll 파일을 로딩하는 것을 볼 수 있다.

[그림 25]

GetProcAddress를 통해 sfc_os.dll의 ordinal #5 함수의 주소를 얻어온다. #5번 함수는 SfcFileException 함수로 지정된 파일의 WFP(Windows File Protection) 기능을 1분 동안 해제하는 기능을 한다.

[그림 26]

[그림 27]과 같이 WFP 해제의 대상은 ws2help.dll 파일인 것을 확인할 수 있다.

[그림 27]

정상 ws2help.dll 파일을 같은 위치의 ws3help.dll로 복사한다.

[그림 28]

또한 정상 ws2help.dll 파일을 MoveFileExA 함수를 이용하여 [감염시간].dll로 백업하는 것을 볼 수 있다.

[그림 29]

이 후 [그림 30]과 같이 %tmp%에 생성해 놓은 악성 ws2help.dll 파일을 %system%ws2help.dll로 복사하는 것을 확인할 수 있다.

[그림 30]

DeleteFileA을 호출하여 %tmp%ws2help.dll 파일을 삭제한다.

[그림 31]

이 후 자기 자신 삭제를 위한 배치 파일 생성하며 WinExec를 이용하여 해당 배치 파일을 실행하여 자기 자신은 삭제한다.

[그림 32]

- WinExec : 배치 파일 실행

[그림 33]



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

   

   

   

   

   

   

   

저작자 표시 비영리 변경 금지
신고
Posted by By. PHR34K

티스토리 툴바