1. 서론
 온라인 게임 핵 악성코드를 유포하는 악성 스크립트가 다수의 국내 사이트에 삽입되어 있음이 확인되었습니다. 침해사고가 발생한 해당 사이트들에는 동일한 악성 스크립트 URL이 삽입되어 있었는데, 어떻게 동일한 악성 스크립트가 삽입되었는지와 삽입된 악성 스크립트는 어떤 취약점을 이용하여 악성코드를 유포시키며 유포된 악성코드는 어떤 목적을 가지고 있는지 살펴보고자 합니다.


2. 다수의 사이트에 악성코드 유포 스크립트가 삽입된 원인
 평일보다 주말에 윈도우 정상 파일을 변조하는 온라인 게임핵 관련 악성코드 관련 문의가 고객들에게 다수 접수된다는 점이 특이하여 해당 사례에 대해 자체적으로 확인한 결과 국내의 다수 사이트 및 블로그에서 동시에 같은 악성 스크립트를 통해 해당 악성코드를 유포하고 있어 조사를 하게 되었습니다.

조사한 결과 모든 사이트의 공통점은 특정 배너광고 업체에서 제공하는 배너 광고를 사용하고 있었으며 해당 배너를 보여주는 스크립트에 악성코드를 유포하는 악성 스크립트가 삽입되어 있었고, 제공된 배너를 사용했던 업체들은 자신들의 사이트들이 자체적으로 취약하지 않았더라도 악성 스크립트가 삽입된 배너에 의해서 악성코드를 유포하는 사이트로 전략했던 것입니다.

지금까지 확인된 악성코드를 유포한 배너광고 업체는 총 3군데 이며, 언급한 내용을 도식화해보면 아래와 같습니다.

[그림 1] 악성코드 유포 경로



3. 실제 사례 분석
 위 3개의 배너 관련 사이트 중 가장 최근에 발견된 것은 구글 애드센스 광고 이용자의 부정 클릭을 방지할 목적으로 서비스하는 사이트 입니다. 해당 코드를 추가한 블로그는 모두 악의적인 스크립트가 추가되어 악성코드를 유포하고 있는 것이 확인 되었습니다.
 
[그림 2] 문제의 ad******.kr 사이트 메인 화면


[그림 3] 악성코드가 삽입된 사이트에 삽입된 관련 스크립트 (ad******.kr)


위 [그림 3]의 스크립트가 실행되면 아래의  악성코드를 유포하는 사이트로 접속을 유도하게 됩니다.


[디코딩 후]
URL : http://ad******.kr/adinfo/mysense.js.html
[표 1] 삽입되는 스크립트 유형 (ad******.kr)



4. 삽입된 스크립트 분석
 이번에는 삽입된 스크립트에 대해 확인해 보도록 하겠습니다. 삽입된 스크립트 페이지에 접속을 하면 아래와 같이 세부 페이지로 접속을 하게 됩니다. 각각의 페이지에 대해서 확인해 보도록 하겠습니다.


http://www.ig***.co.kr/hong/rook.html
    L http://.ig***.co.kr /hong/cool.html
        L http://.ig***.co.kr/hong/i6.htm
        L http://.ig***.co.kr/hong/i7.htm
        L http://.ig***.co.kr/hong/ko1.htm
[표 2] 악성코드 유포 페이지 접속 시 접근하는 URL 경로(변종에 따라 다운로드 파일은 일부 다를 수 있음)


먼저 cool.html 페이지에 대해 간략하게 확인을 해보도록 하겠습니다. 아래는 cool.html 페이지의 일부 코드이며 내용을 보면 UserAgent 값을 확인하여 인터넷 익스플로러 브라우져, 파이어폭스 웹 브라우저등의 취약점이 노출된 시스템에 감염 시키는 것으로 추정됩니다.


즉, 최근 악성코드는 다양한 사용자의 시스템 환경을 먼저 확인한 후 다양한 취약점을 이용하여 악성코드를 감염 시키는 것으로 볼 수 있습니다.

[표 3] cool.html 코드 일부 (변종에 따라 일부 다를 수 있음)


이제 각 페이지 별로 어떤 취약점을 이용하는지에 대해 확인해 보도록 하겠습니다. 먼저 인터넷 익스플로러 6버전을 사용할 경우 접속하는 i6.htm 파일 코드를 보면 아래와 같습니다.

해당 페이지에서 이용하는 취약점은 Microsoft Internet Explorer "iepeers.dll" Use-after-free Vulnerability (MS10-018) 취약점으로 인터넷 익스플로러 관련 취약점 중 가장 최근에 나온 취약점입니다.

[표 4] i6.htm 코드 일부


다음은 인터넷 익스플로러 7버전을 이용할 시 접속하는 i7.htm 코드 입니다. 해당 코드 역시 ie6.htm과 마찬가지로 같은 Microsoft Internet Explorer "iepeers.dll" Use-after-free Vulnerability (MS10-018) 취약점을 이용하여 악성코드를 감염 시키고 있습니다.

[표 5] i7.htm 코드 일부


다음은 ko1.htm 페이지의 코드를 확인해 보겠습니다. 해당 페이지는 Adobe Flash 취약점(CVE-2009-1862)을 이용하여 악성코드를 감염 시키고 있습니다.

[표 6] ko1.htm 코드 일부


마지막으로 ko2.htm 페이지의 코드는 아래와 같으며 해당 코드가 이용하는 취약점은 Microsoft Office Web Components (Spreadsheet) ActiveX BOF (MS09-043) 취약점 입니다.


[표 7] ko1.htm 코드 일부


정리를 하자면 아래와 같은 취약점들을 이용하여 악성코드를 감염시키고 있습니다. 모두 가장 최근에 나온 다수의 취약점을 이용하므로 사용자들이 윈도우 보안 패치나 주요 어플리케이션에 대한 보안 패치를 하지 않는다면 쉽게 감염될 것으로 보입니다.


Microsoft Internet Explorer "iepeers.dll" Use-after-free Vulnerability (MS10-018)
Microsoft Office Web Components (Spreadsheet) ActiveX BOF (MS09-043)
Adobe Flash 관련 취약점 (CVE-2009-1862)



5. 악성코드 분석

 앞선 취약점 분석에서 PC에 어떤 취약점이 존재하면 악성코드에 감염되는지 살펴보았고 지금부터 유포된 악성코드에 대해서 분석해 보도록 하겠습니다. 그 전에 유포된 악성코드의 전체적인 구조를 요약해 봤습니다.

[그림 4] 악성코드의 감염 개요 (ad******.kr 사이트)


Exploit 스크립트에 의해서 love.exe가 실행되면 레지스트리에 자신의 값을 추가함으로써 윈도우가 부팅할 때마다 자동 실행되도록 합니다.

love.exe는 윈도우 정상 파일인 imm32.dll를 패치하는 악성코드이며 요즘 이슈를 만드는 악성코드들 중에 하나입니다.

imm32.dll은 윈도우의 시스템 파일이고 WFP(Windows File Protection)의 모니터링 대상이므로 s2.exe는 imm32.dll를 패치하기 전에 sfc_os.dll에서 특정 파일에 대해서 1분간 무력화할 수 있는 함수(#5)를 사용하여 imm32.dll에 대해서 WFP를 일시적으로 무력화합니다.

LoadLibraryA() : sfc_os.dll의 ImageBase 얻기
00401C81  |.  68 EC614000   push    004061EC                         ; /FileName = "sfc_os.dll"
00401C86  |.  66:AB         stos    word ptr es:[edi]                ; |
00401C88  |.  FF15 34404000 call    dword ptr [<&KERNEL32.LoadLibrar>; \LoadLibraryA

GetProcAddress() : sfc_os.dll에서 Undocumented API #5의 RVA값 얻기
00401C8E  |.  6A 05         push    5           ; /ProcNameOrOrdinal = #5
00401C90  |.  50            push    eax         |hModule = 76C10000 (sfc_os), sfc_os.dll의 ImageBase
00401C91  |.  FF15 30404000 call    dword ptr [<&KERNEL32.GetProcAdd>; \GetProcAddress

SfcFileException() : imm32.dll에 대해서 1분 동안 윈도우 파일 보호(WFP)기능 무력화
00401CC0  |.  50            push    eax         ; eax = "C:\WINDOWS\system32\imm32.dll")
00401CC1  |.  6A 00         push    0
00401CC3  |.  FFD6          call    esi        ; esi = 76C19496 (sfc_os.#5), SfcFileException()의 RVA
[표 8] imm32.dll에 대해서 WFP(Windows File Protection) 무력화 코드


이후 정상 %SYSTEM%\imm32.dll을 %SYSTEM%\imm32.dll.log로 백업해 두고 패치작업을 수행합니다. 그리고 1분이 경과하면 윈도우에서는 패치된 imm32.dll를 WFP로 보호합니다. 즉 패치된 imm32.dll을 정상 파일로 인식하는 것입니다.

[그림 5] 패치된 imm32.dll의 섹션


[그림 5]에서 보는 것처럼 패치된 imm32.dll에는 .rscmp라는 섹션이 추가되어 있음을 알 수가 있는데 해당 섹션의 기능은 특정 프로세스에서 패치된 imm32.dll을 로딩할 때 게임 핵인 ole.dll도 자동으로 로딩하게 하는 아주 단순한 역할을 합니다.

ole.dll은 특정 온라인 게임 사용자의 계정정보를 탈취하여 특정 URL로 전송하는 역할을 수행합니다. 이번에 유포된 love.exe에 의해서 생성된 ole.dll의 계정정보 탈취대상은 아래와 같습니다.

www.ha*****.com / www.sev*******online.co.kr / *****uls.ha*****.com / www.p*****.com
st*****word= / st****il= / c*****ail= / l****.bin / l****2.bin / d*****.exe / iexplore.exe / ****story.exe
****es.exe / game.exe / launcher.exe
[표 9] 계정정보 탈취 대상 리스트


일반적으로 게임 핵 악성코드에서 탈취한 계정정보를 유출하기 위해서 사용되는 URL은 암호화되어 있습니다. ole.dll에서는 아래 복호화 루틴을 사용하여 암호화된 URL을 복호화합니다.

(변종에 따라 일부 다를 수 있습니다)

00BC1058    56              push    esi
00BC1059    8B7424 08       mov     esi, dword ptr [esp+8]  ; 암호화된 URL의 시작 주소
00BC105D    803E 00         cmp     byte ptr [esi], 0
00BC1060    74 1C           je      short 00BC107E
00BC1062    8A06            mov     al, byte ptr [esi]
00BC1064    837C24 0C 00    cmp     dword ptr [esp+C], 0
00BC1069    50              push    eax
00BC106A    74 07           je      short 00BC1073
00BC106C    E8 8FFFFFFF     call    00BC1000
00BC1071    EB 05           jmp     short 00BC1078
00BC1073    E8 B4FFFFFF     call    00BC102C
00BC1078    8806            mov     byte ptr [esi], al   ; 복호화된 URL이 저장되는 주소
00BC107A    59              pop     ecx
00BC107B    46              inc     esi
00BC107C  ^ EB DF           jmp     short 00BC105D
[표 10] 복호화 루틴



6. V3의 대응현황
현재 V3에서는 아래와 같이 대응 중입니다.

(1) 다운로드 샘플
hxxp://ad******.kr/adinfo/mysense.js.html 에 접근시
-> hxxp://www.ig***.co.kr/hong/rook.html 사이트로 접속유도 후
=-> love.exe 파일 설치
 
(2) 생성파일/진단명
love.exe   (V3 진단명 : Dropper/Onlinegamehack.86016.C 외 다수)
c:\windows\system32\ole.dll   (V3 진단명 : Win-Trojan/Onlinegamehack.57344.AQ 외 다수) 
c:\windows\system32\imm32.dll   (V3 진단명 : Win-Trojan/Patched.BK 외 다수)

위 imm32.dll 관련 악성코드 감염 시 http://core.ahnlab.com/173 게시물을 참고하시어 전용백신으로 조치하시기 바랍니다.



7. 분석 에필로그
이번 사례는 해당 사이트들에 침해사고가 발생하여 악성코드를 유포했던 것이 아니라 실제로는 특정 배너광고 사이트가 침해사고를 당했고 해당 사이트에서 제공하는 배너 컨텐츠에 악성코드를 유포하는 악성 스크립트가 삽입되어 있었음을 확인할 수 있었습니다. 하지만 사용자들은 자신들이 직접 접속한 사이트들에서 악성코드를 유포하는 것으로 오해할 수가 있습니다.

이번 사례와 동일하게 운영되는 사이트는 많을 것이고 배너광고를 제공하는 사이트에 침해사고가 발생하면 해당 배너광고를 사용하는 사이트들에게까지 동시에 영향을 미쳐 마치 다수의 사이트들에서 동시에 침해사고가 발생하여 악성코드가 유포될 수 있는 문제점이 있기에 조심할 필요가 있습니다.

이번에 유포되었던 악성코드에 감염된 PC의 경우, 해당 PC에서 사용하는 보안 업데이트만 잘 되어 있었다면 감염피해는 미연에 방지할 수 있었고 가장 중요하면서 기본이 보안 업데이트라는 것을 알 수가 있었습니다.

끝으로 기업 보안 및 PC관리부서에서는 기업 내 PC에 대해서 보안 업데이트 정책 등 여러 가지 보안정책을 수립하는 것이 필요할 것으로 보입니다.
신고
Posted by 비회원
TAG ,