NOTICE


 CK VIP Exploit Kit 분석 방법에 대해 알아보도록 하겠습니다.


 분석에 사용한 샘플 파일과 분석 도구 정보는 다음과 같습니다.


 - 샘플 파일 정보

 파일 이름

 xx.html

 파일 크기

 14,798 byte

 MD5

 7E5BE35142D6E361E2FCDA7CD746E395


 - 분석 Tool 정보

 파일 이름

파일 이름

Notepad++.exe

 OllyDBG.exe



1. 소스 코드 확인


  xx.html 파일에는 CK VIP 기법으로 난독화 된 스크립트 코드가 삽입되어 있습니다.

※ 아래 코드는 LFU1 변수에 들어있는 문자열과 'a S=4Z("7n"+"7d") ~ 6Y[Q][P](t);' 문자열이 적절히 생략되어 있습니다.



[그림 1.1.] xx.html 파일에 삽입되어 있는 스크립트 확인



2. 난독화 코드 해제


 [그림 1.1.]에서 vHz2, ALYgrt3, HlssUrQp1는 각각 'eval', '@', 'split'을 의미합니다. 


[그림 2.1.] vHz2, ALYgrt3, HlssUrQp1 문자열 수정


 문자열을 적절히 수정하고 보기 쉽게 정리하면 다음과 같습니다.

※ 아래 코드는 LFU1 변수에 들어있는 문자열과 'a S=4Z("7n"+"7d") ~ 6Y[Q][P](t);' 문자열이 적절히 생략되어 있습니다.



[그림 2.2.] xx.html 파일 스크립트 수정


xx.html에 작성 된 스크립트 코드가 매우 복잡해 보일 수 있으나 정리해서 살펴보면 압축되어 있다는 것을 알 수 있습니다. ※ 아래 코드는 'a S=4Z("7n"+"7d") ~ 6Y[Q][P](t);' 문자열이 적절히 생략되어 있습니다.


[그림 2.3.] 스크립트 압축 확인


[그림 2.3.]의 'LFU1[split](@)' 코드에서 LFU1 대신 LFU1변수 데이터 값을 넣습니다. 수정한 값은 다음과 같습니다. 


 LFU1[split](@) → '@@@ ~ BnDz2'.split(@)


 그리고 빨간색 네모 박드에 들어있는 코드의 압축을 해제합니다. 다양한 압축 해제 방법이 있으나 여기에서는 두 가지를 소개하겠습니다. 먼저 eval 함수를 document.write로 수정해 압축을 해제하는 방법이 있습니다. catch(e){...} 코드에서 '{ }' 안에 있는 압축 데이터를 따로 추출해서 'eval' 문자열 대신 'document.write'로 수정하고 html 파일로 저장합니다. 해당 파일을 웹브라우저로 열면 압축이 해제된 코드가 출력됩니다.

 나머지 하나는 자동 Unpacker를 사용하는 방법입니다. 아래 링크로 접속하면 압축된 JavaScript를 자동으로 풀어줍니다. 마찬가지로 catch(e){...} 코드에서 '{ }' 안에 있는 코드를 아래 싸이트의 텍스트 박스에 넣고 'Unpack' 버튼을 누르면 됩니다. 


- JavaScript Unpacker: http://matthewfl.com/unPacker.html


아래 [그림 2.4.]은 압축이 해제된 코드입니다. 계속해서 분석해보도록 하겠습니다.


생 략 -

[그림 2.4.] 스크립트 압축 해제


 KEY 변수 데이터은 t변수에 더해집니다. (t = “….” + KEY + “….”) 그리고 t 변수의 데이터는 nbcode, nbencode, utf8to16 함수 연산으로 변환되어 출력된다. 각 함수들은 [그림 2.4.]에서 생략되어 있으나 'alert(t);' 코드를

'window.document.write(t);'로 수정하고 웹 브라우저에 출력시키면 함수 연산 결과 값을 확인할 수 있습니다.


[그림 2.5.] 'alert(t);' 코드 수정


출력되는 코드는 다음과 같습니다.


- 생 략 -

생 략 -

[그림 2.6.] 연산 결과 출력되는 코드


 소스에 불필요한 코드들을 제외하고 핵심 코드와 그 동작 과정을 살펴보겠습니다. 해당 코드에는 쉘코드가 포함되어 있습니다. 악성 동작을 하는데 핵심적인 역할을 하는 코드는 다음과 같습니다. 


[그림 2.7.] 악성코드 유포 URL 정보


 NBWM 함수 호출 후 리턴되는 omg에는 악성코드 유포 URL에 대한 정보가 저장되어 있습니다. 이 값은 몇 번의 연산 과정을 거쳐 Shell Code로 변환되고 변수 chcode에 저장됩니다. chcode에 저장된 데이터는 XOR로 연산된 값이기 때문에 Shellcode와 더해서 XOR연산을 풀어줘야 합니다. Shellcode에는 XOR 복호화 코드가 포함되어 있습니다.


[그림 2.8.] Shell Code 생성


 chcode가 더해진 Shellcode를 추출해서 16진수 Hex 값으로 변환하고 TEST.exe 파일로 만들어서 분석하겠습니다.  Shell Code 분석 방법은 아래 링크를 참고하시기 바랍니다.


[Shell Code] Shell Code를 .exe 파일로 만들어서 분석하기: http://securityfactory.tistory.com/98



3. Shell Code 분석


 TEST.exe를 OllyDBG.exe에 올려서 분석하다보면 아래 그림과 같이 EAX에 저장된 주소에서 1 Byte씩 읽어와서 0xBC로 XOR 연산하는 것을 확인할 수 있습니다.


[그림 3.1.] 데이터 복호화 과정 – XOR 연산


 그리고 연산 과정이 끝나면 복호화 된 데이터에서 URL 값을 얻을 수 있습니다. 실제 악성 스크립트가 실행됐을 때 해당 URL에서 kbs.exe가 다운, 실행됩니다.


[그림 3.2.] 복호화 완료 – URL 확인


 이상으로 'CK VIP Exploit 분석 방법'에 대한 포스트를 마치도록 하겠습니다.