1. 개 요

Dadong (악성)스크립트는 홈페이지 변조를 통해 악성코드 유포를 위해 많이 사용되는 스크립트의 이름으로 본문을 보면 [그림 1]과 같이 "/*Encrypt By Dadong's JSXX 0.39 VIP*/" 이라는 부분을 확인할 수 있다. 현재는 0.39 버젼이 널리 사용되고 있다.

[그림 1]
Dadong 스크립트의 경우 CVE-2010-0806 취약점을 이용하고 있다. 패치가 나온지 한참된 취약점이지만 아직도 악성 스크립트에서 자주 사용되는 취약점이다.
[CVE-2010-0806 관련 정보]

Dadong 스크립트는 자동으로 악성스크립트를 분석해 주는 Jsunpack(http://jsunpack.jeek.org/dec/go)이나 Wepawet(http://wepawet.iseclab.org/index.php) 등의 사이트에서는 정상적으로 복호화 해주지 못하고 있다. Jsunpack에 돌렸을 경우 [그림 2]와 같이 사용되는 취약점이나 의심되는 스크립트라는 내용이 출력되긴 하지만 최종적으로 다운로드 되는 경로는 출력해내지 못하고 있으며, Wepawet의 경우 [그림 3]과 같이 아무런 결과도 출력하지 못하고 있다.

[그림 2]

[그림 3]

2. 쉘코드 추출

Dadong 스크립트의 구성은 [그림 4]와 같이 htm 파일과 htm이 참고하는 K.js 파일로 구성되어 있다.

[그림 4]

해당 스크립트를 분석하는 가장 쉬운 방법은 가상환경에서 직접 실행하여 어떤 행위가 이루어지는지 보는 것이 가장 빠르고 쉬운 방법일 것이다. 하지만 환경이 준비되지 않았거나, 취약점을 이용하여 실행되는 쉘코드를 얻고 싶을 경우에는 스크립트에 대한 개략적인 분석이 이루어져야 한다.(물론 세부적인 분석을 하면 좋겠지만 그럴 능력도 시간도 되지 않는다. 쉘코드를 얻는 방법과 해당 쉘코드의 동작에 대해서만 분석을 진행할 것이다.)

먼저 쉘코드를 얻는 것을 수월하게 하기 위해 htm 파일이 참고하는 K.js 파일의 내용을 htm의 "<script src="K.Js"></script>" 부분에 대체해준다.

[그림 5]

쉘코드를 얻는 것이 목적이므로 htm 파일의 상단의 불필요한 스크립트들은 제거해준다.

[그림 6]

htm 파일의 하단의 있는 불필요한 function은 제거한다. 실제로 Heap-Spray를 통해 쉘코드를 메모리 상에 기록하는 부분은 [그림 7]과 같다. 따라서 [그림 7]부분에서 쉘코드를 뽑아내야 한다.

[그림 7]

for 문을 통해 메모리상에 오버플로우(?)를 일으키는 부분과 실제 쉘코드를 생성할 것이다. 따라서 "WELaK5+WELaK5+SVjLbem0" 값을 출력해 보면 쉘코드를 얻을 것으로 추정해 볼 수 있다. alert() 함수를 이용하여 출력할 수도 있지만 내용이 너무 많으므로 document.write() 함수를 이용하기로 한다. 최종적으로 [그림 8]과 같이 document.write()를 이용하여 출력을 시도할 것이며, for문 안의 내용은 실행되지 않도록 한다.

[그림 8]

이제 해당 htm 파일을 실제로 실행해보면 IE 상에 [그림 9]와 같이 생성된 쉘코드가 찍히는 것을 확인할 수 있다. 생성된 쉘코드는 Hex 값과 UCS2 값이 섞여 있는 형태로 보이며 적당히 가공(?)을 한 뒤 [그림 10]과 같이 Shellcode2EXE를 이용하여 PE 파일 형태의 쉘코드를 추출하도록 한다.

[그림 9]

[그림 10]

3. 쉘코드 분석

쉘코드를 얻었으므로 OllyDbg를 이용하여 어떤 행위를 하나 분석해본다. OllyDbg를 이용하여 진행을 하다 보면 [그림 11]과 같이 URLDownloadToFile 함수를 이용하여 특정 URL에 있는 파일을 a.exe에 저장하는 것을 볼 수 있다.

[그림 11]
[그림 12]와 같이 다운받은 a.exe 파일의 File Map을 생성한 뒤에 한 바이트씩 이동하면서 '0' 또는 'A2'가 아닐 경우 'A2'로 XOR 연산을 수행한다.

[그림 12]
이후 변경된 값을 다시 a.exe 파일에 WriteFile을 이용해 저장한다.

[그림 13]
이어서 CreateProcessInternalA 함수를 호출하여 a.exe 파일을 실행한다.

[그림 14]
최종적으로 실행되는 a.exe 악성코드는 윈도우의 정상적인 imm32.dll 파일을 교체하는 방식의 온라인 게임 계정 탈취용 악성코드이다.

4. 결 론

정석으로 Dadong Script를 분석한 것은 아니지만 편법을 이용하여 해당 쉘코드를 추출 및 분석해 보았다. 이제는 오래된 취약점이지만 아직도 많은 악성 스크립트에서 사용되고 있으며, 낮은 버젼의 IE를 사용하거나 보안패치를 하지 않아 피해 사례가 많이 접수되고 있다. "귀찮으니 다음에 하지 뭐"하고 패치를 미루는 순간 이미 당신의 PC는 모르는 사이에 감염이 될 것이고 언젠가는 땅을 치고 후회할 것이다. 보안패치 생각보다 귀찮지도 않고 오래 걸리지도 않는 것이므로 제발! 꼭! 했으면 한다.
                                                                                                    +---------------------------------+
                                                                                                    | Infinite Flow..                              |
                                                                                                    | mail : reverseinsight@gmail.com    |
                                                                                                    | Blog : http://sinun.tistory.com       |
                                                                                                    | twitter : @unpacker                      |
                                                                                                    | CISSP                                        |
                                                                                                    +----------------------------------+
저작자 표시 비영리 변경 금지
신고
Posted by By. PHR34K