2013년 4월 18일 목요일

Dadong’s JSXX 0.44 VIP 분석 Part 1



q  Gongda Pack ?
1.    History
1)  Dadong’s JSXX 0.XX VIP 내부 공격 코드 중 중국어로 ‘공격’ 을 의미하는 ‘공다(gongda)’ 
   라는 변수명(gondad) 이 상당 부분 사용되는 점을 특징으로 이름이 지어졌으며, Gongda 
   Pack 또는 Gongda Exploit Kit 으로 알려져 있다

2) 2010 Dadong’s JSXX 0.39 VIP 를 시작으로 잠시 등장했던 Dadong’s JSXX 0.41 VIP 
   버전을 지나 Dadong’s JSXX 0.44 VIP 버전이 2012 4월부터 현재까지 등장하고 있다

2.    Gongda Pack 0.44
1) 주석 스크립트 변화 과정
    - Gongda Pack 0.44 주석 스크립트 부분이 변화되는 원인은 고정적인 문자열을 이용한
      패턴탐지를 우회하기 위해 변화되는 것으로 판단된다



[그림 2] Gongda pack 0.44 주석 스크립트 변화 과정


q  Dadongs 0.44 구조

※ 여기서는 Dadongs 0.44의 난독화를 해제하는데 중점을 두겠다 취약점을 이용하는 부분과 문서에서 다루지 않는 부분은 아래의 사이트를 참조하기 바란다
[참고 1] 'GongDa'의 무차별 웹 공격이 시작됐다

1.    전체 구조
  1)     난독화된 Dadong’s 0.44은 아래 그림처럼 크게 3부분으로 나누어 진다

[그림 2] Dadong’s 0.44 전체구조

 ①    번째 부분플래시자바 관련 스크립트 삽입  쿠키 값을 이용하여 중복 실행을 방지하는 부분이다
        ☞ 해당부분은 [참고 1] 상세히 설명되어 있다
 ②    번째 부분난독화된 데이터 부분으로  부분을 복호화하면 실제 공격코드가 된다

 ③    번째 부분난독화된 데이터를 복호화하는 스크립트 부분으로  부분을 중점적으로 분석 한다


2.    복호화 스크립트 정리 ( 번째 부분)
1)     복호화 스크립트에서 불필요한 부분 제거 및 일차원적 난독화 부분에 대해 정리 
[그림 3복호화 부분 스크립트 정리



2)     정리 후 복호화 함수의 구조
         - 보기 어렵게 작성된 부분 및 제거되는 코드를 정리하면 아래 그림처럼 된다

[그림 4복호화 스크립트 정리 결과


3)     이 복호화 부분은 함수변조방지 기술로 묶여져 있기 때문에 위와 같이 정리 후 Key값을 찾아도복호화가 정상적으로 이루어 지지 않는다

q  난독화 풀이

1.    ‘alert’ 이용한 데이터 부분 복호화  
1)     복호화 시 일반적으로 ‘alert’이나 ‘document.write’ 등을 사용하여 실행되는 스크립트를 문자로 확인한다 여기서는 ‘alert’을 이용하여 데이터를 복호화 시도하였다

[그림 6. [그림 5]의 스크립트에서 Key값을 alert으로 복호화 시도]

2)     ‘alert’을 이용한 난독화 결과
         - 복호화 부분의 문자열을 나누었기 때문에 구조가 변화면서 오류가 발생하였다 

[그림 7] 변조방지 기능에 의한 오류 발생

    - 수정된 스크립트부분을 처음 구조와 동일하게 변경 후 실행해도 오류가 발생하였다


3)     복호화 실패 원인
제작자는 복호화를 어렵게 하기 위해 함수를 문자열로 묶어놓았고문자열을 변경할 경우 함수의 변수 값이 변하여 원래 데이터를 얻을 수 없도록 만들었다 (변조방지기능)

             
[그림 8] 변조방지기능의 역할을 하는 부분

4)     해결 방법
값의 길이와 문자를 이용하여 변수를 구하는 부분이 변경되지 않게 하기 위해 [그림 5]의 정리된 복호화 부분 위에 원래 복호화 부분을 추가하여 함수들이 참조할 수 있도록 한다

             

[그림 9] 변조방지를 우회하기 위해 복호화 부분을 추가 삽입



     5)     데이터 복호화 
        - 수정된 복호화 부분을 이용하여 데이터를 복호화 시 공격 스크립트를 확인 할 수 있다
             
[그림 10] 복호화에 성공한 화면