자바스크립트 정리 4 (배열)

## 배열

1. 일차원 배열

  1)  형태 (선언)

    - var a = new Array();
    - var a = new Array(10); -- 요소를 10개 가진 배열 선언

    - var a=[1,2,3,4];

  ex)

    <script>
     var a = new Array();
     a[0] = 1;
     a[1] = 2;
     a[2] = 3;
     a[3] = 4;
     alert(a);
    </script>

    - alert(a.length);   // -- 배열의 요소 갯 수를 알수 있다.


[참고]
 1. 자바스크립트 배열은 객체로 취급된다.
 2. 자바스크립트에서 배열은 여러 타입의 데이터가 들어갈 수 있다
 3. 배열로 정의한 변수에 다시 숫자, 문자 등을 할당하면, 배열로 사용할 수 없다.
    
2. 2차원 배열
  1)  형태 (선언)
    - var a = new Array(2);
       a[0] = new Array(4);
       a[1] = new Array(4);

    - var a = new Array(new Array(4), new Array(4));

    - var a = [[1,2,3,4], [5,6,7,8,]];

 

    데이터 저장: a[0][1] = 1;

 

 

 

 

설정

트랙백

댓글

자바스크립트 정리 3 (반복문)

## 반복문

 

1. for 문

  1) 형태: for (초기식; 판별식 ; 증감식) { 반복 실행할 값 }

 

2. while 문
  1) 형태

     - while (판별식) { 반복 실행 할 값 } - 판별식이 거짓이면 끝

     - do{ 반복 실행 값 } while( 판별식 )

 

3. break 문

  1) break;  -- 반복을 끝내고 반복문을 빠져나감

   ex) 
    <script>
      a=1;
      for (i=1;i<100 ;i++ )
        {

          if (a >20) { break }   //-- a 가 24보다 크면 for문 종료
          a = a*i
          alert(a);
        }

    </script>


4. continue문

  1) continue; -- continue; 아래를 실행하지 않고 다음 반복을 시작

   ex) 

     <script>
      a=1;
      for (i=1;i<8;i++ )
      {
        a = a*i
        if (a==24) {continue}   //-- a 가 24면 아래 부분을 생략하고 다시 위로 올라감
        alert(a
      }
   </script>

 

5. label 문
  1) [label명]:

   ex)

    <script>
     s=0;
     bolaven:
     for (i=1;i<10 ;i++ )
     {
       for (j=1;j<10 ;j++ )
       {
        if (s==25)
        {break bolaven;}    //-- label bolaven을 찾아 아래 for을 종료한다
        s= i*j
        document.write(s+" ")
       }
     document.write("<br> ")
     }
    </script>

설정

트랙백

댓글

자바스크립트 정리 2 (조건문)

## 조건 문

 

1. if문 (조건이 참일때와 거짓일때를 나누어 실행)

1.1 형태

  1)  if (조건문) { 참일 때 실행 값 }

   -  조건 부분에는 참이나 거짓을 돌려줄수 있는 상태 판별 문장이 들어가야함

 

  2) if(조건) { 실행 값 }
     else  {거짓일 때 실행값}
  
  3) if(조건) { 실행 값 }
     else if (조건) { 실행 값 }
     else if (조건) { 실행 값 }
     else  {거짓일 때 실행값}

 

2. switch문 (if문 보다 여러 결과를 도출할 때 사용)

2.1 형태 (switch / case문  - 변수와 검사값을 비교하여 같은 값의 실행값으로 감)

  1) switch (변수) {
     case 검사 값1:
             실행 값
             break;  
     case 검사 값2:
             실행 값
             break;         
     case  검사 값3:
            실행 값
            break;         
     case 검사 값4:
            실행 값
            break;     
     }           

          

ex) 테스트를 위한 예제
  <script>
   model = "아이뻐"; ;
   a1="갠역시", a2= "베그", a3= "아이뻐", a4= "럭셔리";
   var pr = 0 ;
   switch(model){
   case a1:

      pr = "200원" ;
      break;
   case a2:
      pr = "150원";
      break; 
   case a3 :
      pr = "100원";
      break;
   case a4 :
      pr = "50원";
      break;
   default :
      pr = "안 파라";
      break;
   }
   alert(pr);
  </script>


 

[참고] if문은 일치 및 다양한 조건검사를 할수있지만, switch문은 일치(===)검사만 가능

설정

트랙백

댓글

자바스크립트 정리 1 (연산자)

자바스크립트 난독화 공부를 하면서 자바스크립트에 대해 좀 더 공부해보고 싶어졌다 !!

내가 자바스크립트를 공부하면서 새롭게 알았거나, 꼭 알아두어야 하는 것들을 정리해본다.

상식적인 것이나 대부분 알고 있는 내용은 과감히 생략해 본다.  

 

## 자바스크립트란? -> 검색!!

## 기초지식
1. 문장종료: 세미콜론(;)을 사용하여 종료
2. 주석처리: // 한줄 주석 처리, /*   */ 여러줄 주석 처리
3. 변수 선언: var 를 이용하여 선언, 데이터 타입 명시하지 않음. (var 쓰지않아도됨)


## 식별자 (변수의 이름이나 함수의 이름)

1. 대소문자를 구별한다
2. 식별자의 첫글자는 반드시 문자나 _, $로 시작되어야한다 (숫자 X)
3. _, $를 제외한 특수문자는 식별자에 사요할 수 없다
4. var 처럼 키워드는 식별자로 사용할 수 없다


## 연산자

⊙ 피연산자의 갯수에 따른 종류: 단항 연산자, 이항연산자, 삼항 연산자
  ex) 단 항 연산자: i++, i-- ...
  ex) 이 항 연산자: 1+2, 4-3, 12/3 ...
  ex) 삼 항 연산자: (a==b) ? 2:4

 

 연산자의 종류와 우선순위
  - 증감연산자 > 산술연산자 > 비교연산자 > 논리연산자 > 할당연산자

 

1.산술연산자
  - 사칙연산하는 연산자 (+, -, *, %)
  - 더하기(+)는 문자열을 더하기 연산가능하지만 다른 연산자는 할 수 없다  
  ex) 더하기
     1+20= 21, 1+'20'= 120, '1'+'20'=120, '가'+'나'=가나 ..
  ex) 빼기
     1-20=-19, '1'-20=-19, '1'-'20'=-19, '가'-'나'=NaN   
  - 데이터 값이 true이면 숫자 1로, false 이면 숫자 0으로 연산된다.

 

1.1 증가(++)연산자, 감소(--)연산자
  - 전치 증가/감소 (++i): 연산자가 피연산자 앞에 오는 경우 피연산자에 1을 더한 수 값을 돌려준다.
  - 후치 증가/감소 (i++): 연산자가 피연산자 뒤에 오는 경우 피연산자 값을 돌려준 후 1을 증가 시킨다.   
  ex) 전치 증가
    a = 10;
    b = ++a;
    alert(b);  //-- b = 11
    alert(a);  //-- a = 11

 

  ex) 후치 증가
    a = 10;
    b = a++;
    alert(b);  //-- b = 10
    alert(a);  //-- a = 11

 

2.관계 연산자

2.1 동등 연산자(==) 와 일치 연산자(===)
  - 동등연산자: 데이터 타입이 달라도 변환했을 때 같은 값을 가질 수 있으면 true, 데이터값이 다르면 false를 반환
  - 일치연산자: 값뿐만아니라 데이터 타입도 같아야 true를 반환함

  ex) 동등연산자와 일치연산자 비교
    a = 7;
    b = "7";
    alert(a==b);     //-- true 를 반환
    alert(a===b);    //-- false를 반환

 

2.2 비동등 연산자(!=) 와 불일치 연산자 (!==)
  - 피연사잔의 값이 동일할 때 false를 불일치 할 때 true를 나타낸다.
  - 2.2.1과 동일하게 비동등연산자는 데이터 변환을 허용하고, 불일치 연산자는 데이터 타입도 비교한다.

 

2.3 비교연산자(<, >, <=, >=)
  - 두 피연산자를 비교하여 true 또는 false를 반환한다.
  - 숫자 뿐만아니라 문자도 비교 가능하고, 두 데이터의 비교가 불가능 할 경우 항상 false가 반환된다. 
  ex) a = "abc";
      b = "bcd";
      alert(a<b);   //-- true를 반환 (b가 a보다 크다고 인식됨, "가", "나"를 비교하면 "나"를 크다고로 인식함

    => 한번씩 해보세요~

 

3. 논리 연산자

  - && : and 연산자 
  - || : or 연산자
  - ! : NOT 연산자 (피연산자의 값이 true이면 false, false이면 true를 돌려주는 연산자)

 

4 비트 연산자 (2진수에 대한 연산)
  - & : and 연산자
  - | : or 연산자
  - ^ : xor 연산자
  - ~ : NOT 연산자

 

4.1 쉬프트 연산자 (>>, <<, >>>): 방향에 따라 오른쪽, 왼쪽으로 비트를 이동한다.
  - >> 연산자는 오른쪽으로 이동 후 부호 비트에 양수는 0, 음수는 1로 채운다
  - >>> 연산자는 오른쪽으로 이동 후 부호 비트에 무조건 0으로 채운다.

 

5. 할당 연산자
  - a = 11 처럼 a의 변수에 11 이라는 데이터 값을 할당하는 것
  - 종류: +=, -=,*=,%=, >>=, <<=, >>>=, &=, ^= ...

  ex) +=의 사용(더하기 후 할당한다)
    a = 10;
    b = 2;
    b += a;     // b = b + a; 와 동일한 표현이다.
    alert(b);   //--  12 
  
6. 기타연산자
  - 3항 연산자 - [조건] ? [참일때 값] : [거짓일때 값]

 ex) 

      a=4;

      b=5;
      c = (a >= b)?'a>b':'b>a';  //-- a>b 참이면 a>b를 출력하고, 거짓이면 b>a를 출력

      alert(c);                          //-- 출력값: b>a

 

 

  - typeof 연산자: 데이터의 타입을 확인 할 때 사용  
  ex) a = 11;
      alert(typeof(a));   //-- number  (데이터의 타입이 출력됨)
  

 

설정

트랙백

댓글

ck vip EK sample analysis 2

2.1 zip.html 분석

 

요약: zip.html 파일도 tiancai.html 과 동일하게 ck vip exploit kit 으로 난독화 되어있으며풀이과정은

     동일하다

 

[그림 1] zip.html 코드 확인

 

  -  쉘코드 확인을 어렵게 하기 위해 특정 코드를 변수에 대입 (Abqj6 -> %u)

[그림 2] zip.html 디코딩 코드 확인

 

2.1.1 쉘코드 확인방법

  -  쉘코드를 exe 파일 형태로 변경하여 OllyDbg 에서 확인하는 방법

    →  XOR = 0BD, CX = 3B8(952) 루프가 끝나는 시점에 BP 를 걸어 최종 URL 주소 확인 가능 

[그림 3] 변환된 쉘코드 확인

 

  -  위 [그림 3] 방법이 복잡하다면 Malzilla 프로그램을 사용하여 String 부분에 http 값이 있다고 가정하여 Key 값을 찾은 다음 변환 시 최종 URL 주소 확인 가능

[그림 4] Malzilla 프로그램으로 최종 URL 확인

 

2.2  win.html 분석

 

요약: win.html 파일은 내부에 삽입된 코드에 의해 logo.swf 파일이 실행되어 삽입된 쉘코드가

    동작되는 구조이다

 

[그림 5] win.html 코드 확인

 

2.2.1 logo.swf 파일 확인

 

  logo.swf 파일은 압축되어 있으며, 압축 해제 시 파일 용량이 증가한다 [그림 6] 참조

[그림 6] logo.swf 파일 확인

 

  HP 에서 제공하는 SWFScan 프로그램으로 확인결과, _P17 영역에 삽입된 쉘코드가 확인된다

 

[그림 7] SWFScan 프로그램 확인

 

  -  OllyDbg, Malzilla 프로그램에서 확인하는 방법은 위에서 설명한 “2.1.1 쉘코드 확인방법참조

 

[그림 8] 변환된 쉘코드 확인

 

[그림 9] Malzilla 프로그램으로 최종 URL 확인

'Web Exploit Kit > ck vip EK (jsck vip)' 카테고리의 다른 글

ck vip EK sample analysis 1  (0) 2013.11.10
ck vip EK 소개  (0) 2013.11.10

설정

트랙백

댓글

ck vip EK sample analysis 1

q  ck vip exploit kit sample analysis

 

1.     ck vip exploit kit 흐름도

국내 다수의 사이트에서 ck vip exploit kit 으로 제작된 악성링크 삽입이 빈번하게 확인되고 있다

 

[그림 1] ck vip exploit kit 흐름도

 

2.     ck vip exploit kit 난독화 분석

 

2.1  /변조 & 중간 경유지 사이트 분석

 

  요약: 국내 사이트가 위/변조되어 [그림 7] 처럼 악성 iframe 코드에 의해 두 군데의 중간 경유지로이동된다. 중간 경유지 사이트에도 동일하게 iframe 코드가 삽입되어 최종 악성코드 유포지 및 중국에 위치한 통계 사이트(xx.51yes.com) 로 이동된다. 최종 악성코드 유포지는 일본으로 확인되며, 문서를 작성하는 기간에도 재현되어 일부 모자이크 처리를 하였다

 

[그림 2] /변조 & 중간 경유지 사이트에 삽입된 iframe 코드

 

[그림 3] 최종 악성코드 유포지 정보

 

 

2.2  tiancai.html 분석

요약: tiancai.html 은 크게 Java 취약점과 MSIE 버전에 따른 SWF, IE 취약점으로 나뉘어져 있다

 

[그림 4] tiancai.html 구조

 

  - 상단부분의 eval 을 포함하고 있는 변수를 alert 으로 변경하여 1차로 디코딩된 코드 확인가능

  - 1차 디코딩된 코드의 하단부분에 중요한 Key(t) 값이 확인되어, alert(t); 를 삽입하여 코드 확인가능

 

[그림 5] tiancai.html 난독화 디코딩 과정

 

  - 디코딩된 코드와 tiancai.html 하단 부분에 삽입된 코드가 결합되어 동작한다.

  - 해당 자바 취약점이 존재하면 ckurl 변수에 난독화 코드로 삽입된 최종 악성파일이 실행된다.

    ckurl 변수에 삽입된 코드 ☞ 디코딩 과정은 [그림 6] 참조 

 

[그림 6] 최종 악성코드 유포지 확인

 

  - ckwm.jpg 파일은 압축된(.jar) 자바 파일이며, 압축을 해제하면 3개의 class 파일이 확인

  * 참고사항: 흐름도에서 확인되는 wmck.jpg 파일은 다운되지 않음 

 

[그림 7] ckwm.jpg 파일 확인

 

  -  ckwmckwmckwmExp.class 파일에 삽입된 코드에 의해 사용자PC %Temp% 경로에 logo.jpg.vbs

  스크립트 파일을 생성 후 동작되어 최종 악성파일이 실행

 

[그림 8] ckwmckwmckwmExp.class 파일 확인

 

 

'Web Exploit Kit > ck vip EK (jsck vip)' 카테고리의 다른 글

ck vip EK sample analysis 2  (3) 2013.11.10
ck vip EK 소개  (0) 2013.11.10

설정

트랙백

댓글

ck vip EK 소개

q  ck vip exploit kit 소개

1.    History

1)  외신에 의하면 ck vip exploit kit 2012 4월 처음 확인되었으며, New Chinese Exploit Pack 이라고 칭하는 곳도 확인된다

2)  ck vip exploit kit Dadong’s 시리즈처럼 주석을 남기는 특징이 있으며, 주석은 다음과 같다

- 주석확인: /*ck vip*/ , /*vip ck*/ , /*jsck vip*/

3)  ck vip exploit kit dean.edwards packer Yszz 시리즈 코드를 응용하여 사용한다

    [그림 1,2] 참조

4)  Yszz 시리즈는 국내 기준으로 2012 5월 초 처음 확인되었으며, 0.1 버전부터 1.6 vip 버전까지 짧은 기간(2012 10월 중순) 동안 지속적으로 등장한 이력이 있다

5)  ck vip exploit kit Net Boom Exploiter kit 을 사용하여 제작된다고 한다 [그림 3] 참조

dean.edwards 정보: http://dean.edwards.name

Yszz 시리즈 정보: http://www.kahusecurity.com/2012/new-chinese-exploit-pack

ck vip exploit kit 정보: http://www.cysecta.com/tag/ck-vip

 

2.    ck vip exploit kit 패턴

1) dean.edwards packer 패턴 확인

    - ck vip exploit kit 코드 내부에 dean.edwards packer 와 유사한 패턴 확인

[그림 1] dean.edwards packer ck vip exploit kit 패턴

2) Yszz 시리즈 패턴 확인

    - Yszz 코드와 dean.edwards packer 로 디코딩한 코드를 비교해보면 유사한 부분이 확인된다

[그림 2] Yszz 특정 패턴

3) ck vip exploit kit 판매 사이트 정보

[그림 3] ck vip exploit kit 판매 사이트

 

'Web Exploit Kit > ck vip EK (jsck vip)' 카테고리의 다른 글

ck vip EK sample analysis 2  (3) 2013.11.10
ck vip EK sample analysis 1  (0) 2013.11.10

설정

트랙백

댓글

영화 Jobs

주저리.. 2013. 11. 8. 04:01

스티브 잡스 Steve Jobs

 

아직도 아이팟 터치를 처음 보았을 때 느꼈었던 놀라움을 기억한다.

소니의 PSP를 처음 보았을 때... 그 이상의 느낌!

 

그 것은.. 감동이라는 생각이 든다.

 

휴대용 기기에 관심이 많았던 나에게 아이팟 터치는 혁신이 었다.

그리고 아이패드...

 

많은 사람들이 스티브 잡스를 존경한다.

그의 괴팍한 성격에 욕을 하는 사람도 많다.

 

하지만 우리 시대에 그는 진정한 영웅이라고 생각한다. 적어도 나에게는 그렇다.

전세계 수많은 사람에게 감동을 줄 수 있는 영웅...

 

그런 그의 영화를 보았다.

'영화가 만들어 지다 말았다' 라거나,

'영화가 사실이라면 잡스는 미친x 이다' 라는 영화평을 본적이 있다.

 

하지만 나는 영화에서 그의 새로운 것에 대한 미친 열정과 노력만 보았다.

그리고 그것이 너무나 멋있어 영화가 끝난 후에도 쉽게 자리를 뜰 수 가 없었다.

 

나는 비록 그를 따라할 자신은 없다.

그런데 가슴속에 무언가가 자꾸 설레게 한다....

설정

트랙백

댓글

Cool EK sample analysis 4

Web Exploit Kit/Cool EK 2013. 11. 2. 22:24

4. EtQZAs.pdf 분석

요약: PDF 취약점을 이용하여 sR5L76pksF.exe 파일을 다운로드 및 실행하는 역할을 한다

 

4.1 PDF 파일에 삽입된 악성스크립트 확인

-       PDFStreamDumper 를 이용하여 PDF 파일에 삽입된 악성스크립트를 확인한다

[그림 28] PDF 파일에 포함된 악성스크립트 확인

-       불필요한 값(보기 어렵게 하기 위해 삽입) 제거 및 스크립트 구성 확인

[그림 29] 악성스크립트 구조

  ①    악성 URL 값을 특정 변수에 저장한 부분

  ②    악성스크립트를 난독화하여 특정 부분에 저장한 부분

  ③    난독화된 악성스크립트를 복호화하는 부분

 

4.2 악성스크립트 복호화 부분 분석

-       복호화 부분은 난독화된 데이터를 복호화 하는 Main 함수 부분과 분석을 어렵게 하기 위해

PDF 환경 변수 등을 사용하는 것이 특징이다.

[그림 30] 복호화 부분 분석

  ①    복호화된 스크립트를 PDF용 자바스크립트 양식인 app.변수에 저장한다

  ②    xfa.host.numpages PDF 파일의 총 페이지수를 의미한다 하지만 스크립트 부분만을 분석하면

  해당부분이 정의되지 않아 정상적으로 복호화가 불가능하다

      ð  어도비리더로 문서를 실행하여 총 페이지수를 확인할 수 있다

  ③    eval 함수를 감추기 위해 문자열의 조합으로 특정변수에 eval(or app.eval)을 저장하여 실행한다

      ð  PDF 에서 alert app.alert 으로 사용한다. 이처럼 PDF 스크립트 분석 시 자바스크립트 분석 환경에

               맞추어 변환해 주어야 정상적인 값을 구할 수 있다

 

▶▶ ① 부분을 alert(aTXAca); 으로 수정하거나, ③ 부분을 수정하면 결과값을 확인할 수 있다

 

         ----------------------------------------------------------------------------------------------------------------------------

  PDF 파일분석 시 Tip

  - PDF에 삽입된 자바스크립트를 분석 시 &lt;, &gt;, &amp;, &qout; 들은 아래처럼 변경해 주어야 한다

                 •        &lt;         <

                 •        &gt;,        >

                 •        &amp;,      “ “ (공백, 스페이스)

                 •        &qout;     

        ----------------------------------------------------------------------------------------------------------------------------

 

4.3 복호화된 스크립트 추가 분석

-       [그림 30] ① 부분을 alert(aTXAca); 변경하여 실행시 아래와 같은 스크립트를 확인할 수 있다

-       Main 함수와 그 안에서 사용되는 값들을 구하는 함수로 이루어져 있으며, [그림 31]에 ① 부분의 변수를 사용한다 (분석 시 ① 부분을 추가해 주어야 한다)

[그림 31] 1차 난독화 해지 시 스크립트 확인

  ①    ①의 JDKPdPCkv 변수는 [그림 31]에 ①에서 정의되어 있는 것으로 악성코드가 존재하는 URL을 저장하고 있다

[그림 32] JDKPdPCkv 변수의 값

  ②    ② 부분은 main함수에 의해 만들어진 값을 hnPgL rawValue 값으로 저장한다

 

▶▶내용요약: shell 변수에 악성코드를 다운로드 하는 코드를 저장 후 오버플로우를 발생시키는

               코드를 추가하여 hnPgL.rawValue로 저장한다

 

[참고]  Malzilla 를 이용하면 shell 변수에 저장된 shellcode를 아래처럼 확인 할 수 있다

[그림 33] malzilla 를 이용한 shellcode 확인

 

-       hnPgL 은 악성스크립트가 삽입되어 있는 Object 부분에 field 값으로 정의되어 있다

[그림 34] hnPgL - field

 

-       PDF 파일을 실행 시 아래 [그림 35] 부분에 의해 악성스크립트에 의해 만들어진 값이 삽입되고

오버플로우가 발생되어 악성코드를 다운로드 한다

ð  해당 부분은 구글링을 통해 알게 된 정보를 참고하여 작성하였고, 잘못된 부분이 있을 수도 있다는 것을 참고하기 바란다

[그림 35] PDF 파일에서 hnPgL

 

PDF 취약점 참고자료: http://ahnlabasec.tistory.com/579 (CVE-2010-0188)

 

 

※ 블로그의 특성상 Coolkit의 난독화 부분에 대해 다루었습니다. Cool EK의 전체 분석 보고서는 제가 활동하는 볼라벤 소모임의 블로그에서 보실 수 있습니다.

- 바로가기: http://thebolaven.tistory.com/entry/13차-문서-Cool-Exploit-Kit-분석

 

  한글때문에 바로가기가 안될 경우 '분석'까지 복사하여서 주소창에 붙여넣기하시면됩니다.

 

 

 

'Web Exploit Kit > Cool EK' 카테고리의 다른 글

Cool EK sample analysis 3  (0) 2013.11.02
Cool EK sample analysis 2  (0) 2013.08.10
Cool EK sample analysis 1  (0) 2013.08.10
Cool EK 소개 (Cool Exploit Kit)  (0) 2013.08.06

설정

트랙백

댓글

Cool EK sample analysis 3

Web Exploit Kit/Cool EK 2013. 11. 2. 21:44

3.1  Pdfx.html 분석

요약: Pdfx.html fnts.html 로 연결(웹폰트취약점) EtQZAs.pdf 파일(PDF취약점)을 다운로드 하는 역활을 하며, Microsoft help 사이트로 위장하는 부분과 악성스크립트 부분으로 이루어져 있다

[그림 16] Pdfx.html 구조

 

[그림 17] Pdfx.html 실행 및 링크 클릭 시 보여지는 화면

 

3.1.1 악성스크립트 부분 분석

-       [그림 18] 의 ① 부분은 현재 페이지에 있는 iframe 내 요소에 접근하기 위해 사용한다

ð  형태: document.getElementById("puykjo").contentWindow.document.getElementById("rhdc");

-       ID‘puykjo’ iframe 에서 ‘rhdc’ 요소의 값을 가져와 ‘bexzpll’ 변수에 저장한다

-       ② 부분에서 ‘bexzpll’ 변수를 parseInt String.fromCharCode 함수를 이용하여 ‘ftgfk’ 변수에

문자열로 저장 후 eval 함수로 실행한다

[그림 18] Pdfx.html 악성스크립트 분석

 

-       Microsoft help 사이트 코드 영역에서 ID‘puykjo’ iframe 을 확인할 수 있다

[그림 19] iframe 확인

 

-       xbje.html 의 코드 확인 시 ‘rhdc’ 요소의 value 값을 확인할 수 있다

[그림 20] xbje.html 코드의 id 확인

 

-       난독화된 데이터 부분과 복호화 스크립트를 정리하면 [그림 21] 과 같다

[그림 21] 간단하게 정리된 악성스크립트

 

-       Pdfx.html 복호화 결과

ð  Iframe 에 의해 fnts.html 이동 및 사용자의 pdf 버전에 의해 EtQZAs.pdf 실행

[그림 22] Pdfx.html 복호화 결과 화면

 

 

3.2  fnts.html 분석

요약: fnts.html IgqaRKnXz.eot 파일을 불러와 div tag :) 값에 폰트를 적용하도록 되어있으며 CVE-2011-3402 취약점을 이용하여 z297U9DAuM.exe 파일을 실행하는 역할을 한다

[그림 23] fnts.html 코드 화면

 ①    웹 폰트 사용시 불러오는 방법 중 하나로 IgqaRKnXz.eot 파일을 불러온다

   ð  Style tag 에서 #으로 기술하면 id로 지정 시 적용된다 (#MRnAKouG 기술)

 ②    Div Tag 에서 style id=’MRnAKouG’ 로 하여 ①에서 불러온 웹폰트를 사용한다

   ð  이 과정에서 조작된 eot 파일에 의해 취약점이 발생한다

 ③    div Tag 의 값으로 웹 페이지에 나타나는 부분이다

   ð  해당 페이지를 실행시키면 아무것도 보이지 않는데 그 이유는 IgqaRKnXz.eot 글꼴에서는’:’ ’)’

      문자가 공백으로 표시되기 때문이다 (IgqaRKnXz.eot 분석내용 참조)

 

 v Web Font 적용 실습 및 정상동작 여부확인 (APM setup 이용)

-       fnts.html url 부분을 네이버에서 무료로 제공하는 나눔고딕 eot 파일로 설정

-       동일한 내용으로 웹폰트가 적용되는 부분과 적용되지 않는 부분을 작성하여 실행

[그림 24] 웹폰트 TEST

 

-       아래의 그림처럼 웹폰트가 정상적으로 적용되는 것을 확인 (위의 글자에 적용된 것이 확인됨)

[그림 25] 웹폰트 TEST 결과 화면

 

3.3  lgqaRknXz.eot 분석

요약: CVE-2011-3402 취약점이 존재한다면, 웹폰트 취약점에 의해 sRSL76pksF.exe 파일을 다운로드 및 실행된다

하지만 샘플에서는 취약점이 존재하지 않아 이로 인한 악성코드 감염은 없었다

lgqaRknXz.eot 파일분석을 시도하였지만, 관련 정보가 부족하여 분석에 어려움을 겪고 있다.

하지만 파일 분석을 위한 힌트를 얻을 수 있었고 분석은 현재 진행이다

 

-       eotinfo 를 이용한 기본 정보 확인 (ubuntu tool 사용)

[그림 26] lgqaRknXz.eot 기본 정보

 

-       lgqaRknXz.eot 웹폰트 적용 시 글꼴 확인

ð  기본 글꼴과 동일하지만 ‘:)’ 이 공백으로 표시되는 것을 확인 할 수 있다. 실제 악성 eot가 적용된

Fnts.html 페이지는 사용자에게 빈 페이지로 보일 것이다 

[그림 27] lgqaRknXz.eot 웹폰트 적용 화면

 

     eot 파일 분석에 관하여

eot 파일 분석을 위해서는 먼저 폰트 파일(ttf)로 변환해야 한다고 한다. 하지만 변환하는 방법은 찾을 수 없었고, 폰트파일은 라이센스가 있기 때문에 웹폰트를 무단으로 ttf 형식으로 변환하여 사용하는 것은 불법행위이기 때문에 내용이 공식적으로 언급이 되지 않은 것 같다

(ttf -> eot 변환 툴은 많음)

그 외 에도 실행 시 iexplore ollyDbg Attach 시켜 변환 알고리즘을 알아내는 방법이 있다.

 

'Web Exploit Kit > Cool EK' 카테고리의 다른 글

Cool EK sample analysis 4  (0) 2013.11.02
Cool EK sample analysis 2  (0) 2013.08.10
Cool EK sample analysis 1  (0) 2013.08.10
Cool EK 소개 (Cool Exploit Kit)  (0) 2013.08.06

설정

트랙백

댓글